Files
Customer/AA/aaxx.sql
Jos Migo fda2b44f75 REME#79164 -- Opzetten nieuwe omgeving Remeha
svn path=/Customer/trunk/; revision=61381
2023-08-06 14:10:56 +00:00

23632 lines
994 KiB
MySQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer generic configuration sql statements for HEYDAY
DEFINE thisfile = 'AAXX.SQL'
DEFINE dbuser = 'AAXX'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
WHENEVER SQLERROR CONTINUE;
---------------------------------------
PROMPT &fcltcusttxt
---------------------------------------
SET DEFINE OFF
@@aa_prs_pack.sql;
--=============================================================================
-- EXPORTFUNCTIES GENERIEK
-------------------------------------------------------------------------------
CREATE OR REPLACE FUNCTION aaxx_exp_escape (a VARCHAR2) RETURN VARCHAR2
AS
BEGIN
RETURN replace(a, '"', '''');
END aaxx_exp_escape;
/
CREATE OR REPLACE FUNCTION aaxx_get_user
RETURN VARCHAR2
AS
v_user VARCHAR2 (20);
BEGIN
v_user := SUBSTR (USER, 1, 4);
-- DWH views komen binnen onder user AAFM. Dan werkt get user niet meer. In dat geval
-- halen we nu de informatie uit de fac_version tabel
IF v_user = 'AAFM' THEN
SELECT UPPER(fac_version_cust)
INTO v_user
FROM fac_version;
END IF;
IF v_user = 'AAAH' THEN RETURN 'AH'; END IF;
IF v_user = 'AAAR' THEN RETURN 'ARCADIS'; END IF;
IF v_user = 'AADS' THEN RETURN 'DSM'; END IF;
IF v_user = 'AAES' THEN RETURN 'ESSENT'; END IF;
IF v_user = 'AAGN' THEN RETURN 'GN'; END IF;
IF v_user = 'AAIT' THEN RETURN 'IT'; END IF;
IF v_user = 'AASA' THEN RETURN 'SABIC'; END IF;
IF v_user = 'ALLR' THEN RETURN 'ALLIANDER'; END IF;
IF v_user = 'CVGZ' THEN RETURN 'VGZ'; END IF;
IF v_user = 'GULU' THEN RETURN 'GUL'; END IF;
IF v_user = 'INLO' THEN RETURN 'INLO'; END IF;
IF v_user = 'NMMS' THEN RETURN 'NMM'; END IF;
IF v_user = 'RABO' THEN RETURN 'RABO'; END IF;
IF v_user = 'REME' THEN RETURN 'REMEHA'; END IF;
IF v_user = 'SMKA' THEN RETURN 'SMKA'; END IF;
RETURN v_user;
END aaxx_get_user;
/
CREATE OR REPLACE FUNCTION aaxx_get_user_sub (p_aaxx_get_user IN VARCHAR2,
p_user_exactcode IN VARCHAR2
) RETURN VARCHAR2
AS
v_user_sub VARCHAR2(60);
BEGIN
IF p_aaxx_get_user = 'INLO' THEN
SELECT UPPER(fud.fac_usrdata_omschr)
INTO v_user_sub
FROM fac_usrtab fut, fac_usrdata fud
WHERE fut.fac_usrtab_key = 81
AND fut.fac_usrtab_key = fud.fac_usrtab_key
AND fud.fac_usrdata_verwijder IS NULL
AND (
fud.fac_usrdata_vervaldatum IS NULL
OR
(fud.fac_usrdata_vervaldatum IS NOT NULL AND TRUNC(fud.fac_usrdata_vervaldatum) > TRUNC(SYSDATE) )
)
AND fud.fac_usrdata_upper = p_user_exactcode
GROUP BY fud.fac_usrdata_omschr ;
ELSE
v_user_sub := NULL;
END IF;
RETURN v_user_sub;
END aaxx_get_user_sub;
/
-- functie om geimporteerde bedragen te converteren naar getallen.
CREATE OR REPLACE FUNCTION aaxx_get_imp_float (f_float VARCHAR2)
RETURN NUMBER
AS
v_komma_pos NUMBER;
v_punt_pos NUMBER;
v_float_text VARCHAR2 (100);
BEGIN
v_punt_pos := INSTR (f_float, '.');
v_komma_pos := INSTR (f_float, ',');
IF v_punt_pos <> 0 AND v_komma_pos <> 0
THEN
IF v_punt_pos > v_komma_pos
THEN
v_float_text := REPLACE (f_float, ',', '');
ELSE
v_float_text := REPLACE (f_float, '.', '');
END IF;
ELSE
v_float_text := f_float;
END IF;
RETURN fac.safe_to_number (REPLACE (v_float_text, ',', '.'));
END;
/
-- view met gegevens over een bestelling en bestelopdracht
CREATE OR REPLACE VIEW aaxx_v_bestelgegevens
AS
SELECT boi.bes_bestelopdr_key,
bes_bestelopdr_id,
sg.ins_discipline_key,
be.mld_adres_key_lev,
be.bes_bestelling_leverdatum,
bo.prs_bedrijf_key
FROM bes_bestelling be,
bes_bestelling_item bi,
bes_bestelopdr bo,
bes_bestelopdr_item boi,
bes_srtdeel sd,
bes_srtgroep sg
WHERE be.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key;
-- View om de exact code van een gebouw te bepalen.
CREATE OR REPLACE VIEW aaxx_v_exact_code_gebouw (
alg_gebouw_key,
exact_code)
AS
SELECT alg_onrgoed_key alg_gebouw_key,
alg_onrgoedkenmerk_waarde exact_code
FROM alg_onrgoedkenmerk kw, alg_kenmerk k
WHERE alg_onrgoed_niveau = 'G'
AND kw.alg_kenmerk_key = k.alg_kenmerk_key
AND k.alg_kenmerk_verwijder IS NULL
AND k.alg_kenmerk_upper = 'CODE EXACT' ;
-- View om de exact code van een district te bepalen.
CREATE OR REPLACE VIEW aaxx_v_exact_code_district
(
alg_district_key,
exact_code
)
AS
SELECT alg_onrgoed_key alg_district_key,
alg_onrgoedkenmerk_waarde exact_code
FROM alg_onrgoedkenmerk kw, alg_kenmerk k
WHERE alg_onrgoed_niveau = 'D'
AND kw.alg_kenmerk_key = k.alg_kenmerk_key
AND k.alg_kenmerk_verwijder IS NULL
AND k.alg_kenmerk_upper = 'CODE EXACT' ;
-- View om de klantcode van een gebouw te bepalen.
-- Vooralsnog specifieke inrichting voor INLO (ticket 57359)
CREATE OR REPLACE VIEW aaxx_v_klantcode_gebouw
(
alg_gebouw_key,
klantcode
)
AS
SELECT g.alg_gebouw_key, fud.fac_usrdata_upper
FROM alg_gebouw g, alg_onrgoedkenmerk k, fac_usrdata fud
WHERE g.alg_gebouw_key = k.alg_onrgoed_key
AND k.alg_onrgoed_niveau = 'G'
AND alg_kenmerk_key = DECODE (aaxx_get_user, 'INLO', 1100, 1100)
AND fac.safe_to_number(k.alg_onrgoedkenmerk_waarde) = fud.fac_usrdata_key;
-- View om de exact code van een gebouw te bepalen op basis van een factuurkey
-- Op dit moment ondersteunen we dit alleen bij opdrachten en contracten
CREATE OR REPLACE VIEW aaxx_v_exact_code_gebouw_fac
(
fin_factuur_key,
exact_code
)
AS
SELECT fin_factuur_key, exact_code
FROM fin_factuur f,
mld_opdr o,
mld_melding m,
alg_v_onroerendgoed og,
aaxx_v_exact_code_gebouw eg
WHERE f.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
AND og.alg_gebouw_key = eg.alg_gebouw_key
UNION ALL
SELECT fin_factuur_key, exact_code
FROM fin_factuur f, cnt_contract_plaats cp, aaxx_v_exact_code_gebouw eg
WHERE f.cnt_contract_key = cp.cnt_contract_key
AND cp.cnt_alg_plaats_key = eg.alg_gebouw_key
AND cp.cnt_alg_plaats_code = 'G'
UNION ALL
SELECT DISTINCT fin_factuur_key, exact_code
FROM fin_factuur f,
aaxx_v_bestelgegevens bg,
mld_adres ma,
aaxx_v_exact_code_gebouw eg,
alg_gebouw g
WHERE f.bes_bestelopdr_key = bg.bes_bestelopdr_key
AND bg.mld_adres_key_lev = ma.mld_adres_key(+)
AND ma.mld_adres_gebouw_ruimte = g.alg_gebouw_code(+)
AND g.alg_gebouw_key = eg.alg_gebouw_key(+);
-- View om de exact code van een district te bepalen op basis van een factuurkey
-- Op dit moment alleen nog voor DSM
CREATE OR REPLACE VIEW aaxx_v_exact_code_district_fac
(
fin_factuur_key,
exact_code
)
AS
SELECT fin_factuur_key, exact_code
FROM fin_factuur f,
mld_opdr o,
mld_melding m,
alg_v_allonrgoed_gegevens og,
alg_locatie l,
aaxx_v_exact_code_district aed
WHERE f.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
AND og.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = aed.alg_district_key
UNION ALL
SELECT fin_factuur_key, exact_code
FROM fin_factuur f,
cnt_contract_plaats cp,
alg_gebouw g,
alg_locatie l,
aaxx_v_exact_code_district aed
WHERE f.cnt_contract_key = cp.cnt_contract_key
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = aed.alg_district_key
AND cp.cnt_alg_plaats_code = 'G'
GROUP BY fin_factuur_key, exact_code
UNION ALL
SELECT fin_factuur_key, exact_code
FROM fin_factuur f,
cnt_contract_plaats cp,
alg_locatie l,
aaxx_v_exact_code_district aed
WHERE f.cnt_contract_key = cp.cnt_contract_key
AND cp.cnt_alg_plaats_key = l.alg_locatie_key
AND l.alg_district_key = aed.alg_district_key
AND cp.cnt_alg_plaats_code = 'L'
GROUP BY fin_factuur_key, exact_code
UNION ALL
SELECT DISTINCT fin_factuur_key, exact_code
FROM fin_factuur f,
aaxx_v_bestelgegevens bg,
mld_adres ma,
aaxx_v_exact_code_district aed,
(SELECT g.alg_gebouw_key, g.alg_gebouw_code, l.alg_district_key
FROM alg_gebouw g, alg_locatie l
WHERE g.alg_locatie_key = l.alg_locatie_key) vg
WHERE f.bes_bestelopdr_key = bg.bes_bestelopdr_key
AND bg.mld_adres_key_lev = ma.mld_adres_key(+)
AND ma.mld_adres_gebouw_ruimte = vg.alg_gebouw_code(+)
AND vg.alg_district_key = aed.alg_district_key(+);
-- View om de klantcode van een gebouw te bepalen op basis van een factuurkey
-- Vooralsnog specifieke inrichting voor INLO (ticket 57359)
CREATE OR REPLACE VIEW aaxx_v_klantcode_gebouw_fac
(
fin_factuur_key,
klantcode
)
AS
SELECT fin_factuur_key, klantcode
FROM fin_factuur f,
mld_opdr o,
mld_melding m,
alg_v_onroerendgoed og,
aaxx_v_klantcode_gebouw kg
WHERE f.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
AND og.alg_gebouw_key = kg.alg_gebouw_key
UNION ALL
SELECT fin_factuur_key, klantcode
FROM fin_factuur f, cnt_contract_plaats cp, aaxx_v_klantcode_gebouw kg
WHERE f.cnt_contract_key = cp.cnt_contract_key
AND cp.cnt_alg_plaats_key = kg.alg_gebouw_key
AND cp.cnt_alg_plaats_code = 'G'
GROUP BY fin_factuur_key, klantcode
UNION ALL
SELECT fin_factuur_key, klantcode
FROM fin_factuur f,
aaxx_v_bestelgegevens bg,
mld_adres ma,
aaxx_v_klantcode_gebouw kg,
alg_gebouw g
WHERE f.bes_bestelopdr_key = bg.bes_bestelopdr_key
AND bg.mld_adres_key_lev = ma.mld_adres_key(+)
AND ma.mld_adres_gebouw_ruimte = g.alg_gebouw_code(+)
AND g.alg_gebouw_key = kg.alg_gebouw_key(+)
GROUP BY fin_factuur_key, klantcode;
-- Hulpview voor financiele interface tbv opdrachttype 'Projectorder' en 'Projectorder (externe uren)'
CREATE OR REPLACE VIEW AAXX_V_PROJECTORDERS_BRON
(
MLD_MELDING_KEY,
MELDING_STATUS,
MLD_OPDR_KEY,
MLD_OPDR_NR,
OPDRACHT_STATUS,
MLD_OPDR_DATUMBEGIN,
MLD_TYPEOPDR_OMSCHRIJVING,
MLD_PROJECT_VOORWAARDEN, -- relatietype voor PR (MA of CP)
MLD_MELDING_OPMERKING,
MLD_PROJECT_OMSCHRIJVING,
MLD_PROJECT_NR,
MLD_PO_NR,
MLD_PO_NR_AFW,
MLD_PROJECTMARGE,
OPDR_PROJECT_INKOOPTARIEF,
OPDR_PROJECT_VERKOOPTARIEF,
PO_NR,
UPLIFT,
TELLER_VK,
INLO_SUBACCOUNT
)
AS
SELECT v.MLD_MELDING_KEY,
v.MELDING_STATUS,
v.MLD_OPDR_KEY,
v.MLD_OPDR_NR,
v.OPDRACHT_STATUS,
v.MLD_OPDR_DATUMBEGIN,
v.MLD_TYPEOPDR_OMSCHRIJVING,
v.MLD_PROJECT_VOORWAARDEN,
v.MLD_MELDING_OPMERKING,
v.MLD_PROJECT_OMSCHRIJVING,
v.MLD_PROJECT_NR,
v.MLD_PO_NR,
v.MLD_PO_NR_AFW,
v.MLD_PROJECTMARGE,
v.OPDR_PROJECT_INKOOPTARIEF,
v.OPDR_PROJECT_VERKOOPTARIEF,
COALESCE (v.mld_po_nr_afw, v.mld_po_nr, 'onbekend')
po_nr,
CASE
WHEN v.mld_typeopdr_omschrijving = 'Projectorder'
AND v.mld_projectmarge IS NOT NULL
THEN
TO_CHAR ((100 + v.mld_projectmarge) / 100)
WHEN v.mld_typeopdr_omschrijving =
'Projectorder (externe uren)'
AND v.opdr_project_inkooptarief IS NOT NULL
AND v.opdr_project_verkooptarief IS NOT NULL
THEN
TO_CHAR (
ROUND (
v.opdr_project_verkooptarief
/ v.opdr_project_inkooptarief,
3))
ELSE
'onbekend'
END
uplift,
(SELECT COUNT (*) + 1 volgnr
FROM ( SELECT fin_verkoopfactuur_c6 ordernummer_klant,
o.mld_melding_key,
vf.fin_verkoopfactuurkop_key
FROM fin_verkoopfactuur vf, mld_opdr o
WHERE vf.fin_verkoopfactuur_refkey = o.mld_opdr_key
AND vf.fin_verkoopfactuur_xmlnode = 'opdracht'
AND vf.fin_verkoopfactuur_c6 IS NOT NULL
AND fin_verkoopfactuur_datum IS NOT NULL
GROUP BY fin_verkoopfactuur_c6,
o.mld_melding_key,
vf.fin_verkoopfactuurkop_key) vk
WHERE vk.mld_melding_key = v.mld_melding_key
AND vk.ordernummer_klant =
COALESCE (v.mld_po_nr_afw, v.mld_po_nr, 'onbekend'))
teller_vk,
(SELECT aaxx_get_user_sub ('INLO', exact_k.klantcode)
FROM alg_v_onroerendgoed onr, aaxx_v_klantcode_gebouw exact_k
WHERE onr.alg_gebouw_key = exact_k.alg_gebouw_key
AND onr.alg_onroerendgoed_keys = v.mld_alg_onroerendgoed_keys)
inlo_subaccount
FROM (SELECT m.mld_melding_key,
m.mld_alg_onroerendgoed_keys,
(SELECT mld_statuses_omschrijving
FROM mld_statuses
WHERE mld_statuses_key = m.mld_melding_status)
melding_status,
o.mld_opdr_key,
sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
mld_opdr_nr,
(SELECT mld_statusopdr_omschrijving
FROM mld_statusopdr
WHERE mld_statusopdr_key = o.mld_statusopdr_key)
opdracht_status,
o.mld_opdr_datumbegin,
ot.mld_typeopdr_omschrijving,
m.mld_melding_opmerking,
TO_CHAR (
(SELECT DISTINCT COALESCE (mld_kenmerkmelding_waarde, '')
FROM mld_kenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE km.mld_melding_key = o.mld_melding_key
AND k.mld_kenmerk_key = km.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerkmelding_verwijder IS NULL
AND k.mld_kenmerk_verwijder IS NULL
AND sk.mld_srtkenmerk_omschrijving = 'Projectnaam'))
mld_project_omschrijving,
TO_CHAR (
(SELECT DISTINCT COALESCE (ud.fac_usrdata_omschr, '')
FROM mld_kenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_usrtab ut,
fac_usrdata ud
WHERE km.mld_melding_key = o.mld_melding_key
AND k.mld_kenmerk_key = km.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerkmelding_verwijder IS NULL
AND k.mld_kenmerk_verwijder IS NULL
AND sk.mld_srtkenmerk_omschrijving =
'Project voorwaarden'
AND ud.fac_usrdata_key =
fac.safe_to_number (
km.mld_kenmerkmelding_waarde)
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND UPPER (ut.fac_usrtab_naam) = 'PR-VOORWAARDEN'))
mld_project_voorwaarden,
sd.ins_srtdiscipline_prefix || m.mld_melding_key
mld_project_nr,
TO_CHAR (
(SELECT DISTINCT COALESCE (mld_kenmerkmelding_waarde, '')
FROM mld_kenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE km.mld_melding_key = o.mld_melding_key
AND k.mld_kenmerk_key = km.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerkmelding_verwijder IS NULL
AND k.mld_kenmerk_verwijder IS NULL
AND sk.mld_srtkenmerk_omschrijving =
'Ordernummer klant'))
mld_po_nr,
TO_CHAR (
(SELECT DISTINCT COALESCE (mld_kenmerkopdr_waarde, '')
FROM mld_kenmerkopdr ko,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND k.mld_kenmerk_key = ko.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND ko.mld_kenmerkopdr_verwijder IS NULL
AND k.mld_kenmerk_verwijder IS NULL
AND sk.mld_srtkenmerk_omschrijving =
'Ordernummer klant'))
mld_po_nr_afw, -- op opdrachtniveau als overrule
fac.safe_to_number (
(SELECT DISTINCT COALESCE (mld_kenmerkmelding_waarde, '')
FROM mld_kenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE km.mld_melding_key = o.mld_melding_key
AND k.mld_kenmerk_key = km.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerkmelding_verwijder IS NULL
AND k.mld_kenmerk_verwijder IS NULL
AND sk.mld_srtkenmerk_omschrijving =
'Projectmarge'))
mld_projectmarge,
fac.safe_to_number (
(SELECT DISTINCT COALESCE (mld_kenmerkopdr_waarde, '')
FROM mld_kenmerkopdr ko,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND k.mld_kenmerk_key = ko.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND ko.mld_kenmerkopdr_verwijder IS NULL
AND k.mld_kenmerk_verwijder IS NULL
AND sk.mld_srtkenmerk_omschrijving = '(Uur)tarief'))
opdr_project_inkooptarief,
fac.safe_to_number (
(SELECT DISTINCT COALESCE (mld_kenmerkopdr_waarde, '')
FROM mld_kenmerkopdr ko,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND k.mld_kenmerk_key = ko.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND ko.mld_kenmerkopdr_verwijder IS NULL
AND k.mld_kenmerk_verwijder IS NULL
AND sk.mld_srtkenmerk_omschrijving =
'Extern (uur)tarief'))
opdr_project_verkooptarief
FROM mld_melding m,
mld_opdr o,
mld_typeopdr ot,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd
WHERE m.mld_melding_key = o.mld_melding_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND LOWER (SUBSTR (ot.mld_typeopdr_omschrijving, 1, 12)) =
'projectorder'
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key) v;
-- Functie om bij facturen met een btw tarief dat verlegd is, voor de verkoopfactuur toch een geldige
-- btw code te genereren. De klant moet namelijk wel BTW betalen.
CREATE OR REPLACE FUNCTION aaxx_get_verkoop_btw_code (p_btwtabelwaarde_key IN NUMBER) RETURN VARCHAR2
AS
v_verlegd NUMBER;
v_perc NUMBER(5,3);
v_code VARCHAR2(10);
v_btwtabel_key NUMBER;
BEGIN
SELECT COALESCE(fin_btwtabelwaarde_verlegd,0),
fin_btwtabelwaarde_perc,
fin_btwtabelwaarde_code,
fin_btwtabel_key
INTO v_verlegd,
v_perc,
v_code,
v_btwtabel_key
FROM fin_btwtabelwaarde
WHERE fin_btwtabelwaarde_key = p_btwtabelwaarde_key;
IF v_verlegd = 1 THEN
IF v_perc = 21 THEN v_code := 5; END IF; -- Bij 21 procent staandaard code 5 teruggeven
IF v_perc = 6 THEN v_code := 2; END IF; -- Bij 6 procent staandaard code 2 teruggeven
END IF;
IF v_verlegd = 0 AND v_code = 40 THEN v_code := 5; -- Ticket INLO#66863 (code 40 intercompany voor vk-interface standaard op 21%)
END IF;
RETURN v_code;
END aaxx_get_verkoop_btw_code;
/
-- script om uurlijks terugkerende scripts aan te roepen. Kan aangeroepen worden vanuit de klantomgeving
-- indien er voor die klant ook specifieke zaken dagelijks geregeld moeten worden.
CREATE OR REPLACE PROCEDURE aaxx_hourly_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
-- vul bij de opdrachten het kenmerk relatietype in voor opdrachten
-- die vandaag aangemaakt zijn. Dit doen we door naar de eerste datum in
-- de tracking te kijken.
-- het kenmerk mag niet al aanwezig zijn.
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key, mld_opdr_key, mld_kenmerkopdr_waarde)
SELECT k.mld_kenmerk_key, o.mld_opdr_key, b.prs_relatietype_key
FROM mld_opdr o,
mld_kenmerk k,
mld_srtkenmerk sk,
prs_bedrijf b
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_omschrijving = 'Relatietype'
AND o.mld_typeopdr_key = k.mld_typeopdr_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND (SELECT TRUNC (MIN (fac_tracking_datum))
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'opdracht'
AND fac_tracking_refkey = o.mld_opdr_key) = TRUNC (SYSDATE)
AND NOT EXISTS
(SELECT mld_kenmerkopdr_key
FROM mld_kenmerkopdr ko
WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key);
-- dit zelfde gaan we nu ook bij contracten doen waar het kenmerk nog niet aanwezig is.
INSERT INTO fac_kenmerkdomein (fac_kenmerkdomein_module,
fac_kenmerkdomein_omschrijving,
fac_kenmerkdomein_objectnaam,
fac_kenmerkdomein_kolomnaam,
fac_kenmerkdomein_kolomtxt,
fac_kenmerkdomein_verval)
SELECT 'CNT',
'PRS_RELATIETYPE',
'PRS_RELATIETYPE',
'PRS_RELATIETYPE_KEY',
'PRS_RELATIETYPE_OMSCHRIJVING',
'PRS_RELATIETYPE_VERWIJDER'
FROM DUAL
WHERE NOT EXISTS
(SELECT fac_kenmerkdomein_key
FROM fac_kenmerkdomein
WHERE fac_kenmerkdomein_module = 'CNT'
AND fac_kenmerkdomein_objectnaam = 'PRS_RELATIETYPE');
INSERT INTO cnt_srtkenmerk (cnt_srtkenmerk_omschrijving, cnt_srtkenmerk_kenmerktype, fac_kenmerkdomein_key)
SELECT 'Relatietype', 'R', fac_kenmerkdomein_key
FROM fac_kenmerkdomein
WHERE fac_kenmerkdomein_module = 'CNT'
AND fac_kenmerkdomein_objectnaam = 'PRS_RELATIETYPE'
AND NOT EXISTS (SELECT cnt_srtkenmerk_key
FROM cnt_srtkenmerk
WHERE cnt_srtkenmerk_omschrijving = 'Relatietype');
INSERT INTO cnt_kenmerk (cnt_srtkenmerk_key,
cnt_srtcontract_key,
cnt_kenmerk_niveau,
cnt_kenmerk_toonbaar,
cnt_kenmerk_volgnummer)
SELECT cnt_srtkenmerk_key,
ins_discipline_key,
'S',
1,
100
FROM cnt_srtkenmerk sk, cnt_discipline d
WHERE cnt_srtkenmerk_omschrijving = 'Relatietype'
AND NOT EXISTS
(SELECT cnt_kenmerk_key
FROM cnt_kenmerk k
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND k.cnt_srtcontract_key = d.ins_discipline_key);
INSERT INTO cnt_kenmerkcontract (cnt_kenmerk_key, cnt_contract_key, cnt_kenmerkcontract_waarde)
SELECT k.cnt_kenmerk_key, c.cnt_contract_key, b.prs_relatietype_key
FROM cnt_contract c,
cnt_kenmerk k,
cnt_srtkenmerk sk,
prs_bedrijf b
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_omschrijving = 'Relatietype'
AND c.ins_discipline_key = k.cnt_srtcontract_key
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_relatietype_key IS NOT NULL
AND NOT EXISTS
(SELECT cnt_kenmerkcontract_key
FROM cnt_kenmerkcontract kc
WHERE kc.cnt_contract_key = c.cnt_contract_key
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key);
-- dit zelfde gaan we nu ook bij bestellingen doen waar het kenmerk nog niet aanwezig is.
INSERT INTO fac_kenmerkdomein (fac_kenmerkdomein_module,
fac_kenmerkdomein_omschrijving,
fac_kenmerkdomein_objectnaam,
fac_kenmerkdomein_kolomnaam,
fac_kenmerkdomein_kolomtxt,
fac_kenmerkdomein_verval)
SELECT 'BES',
'PRS_RELATIETYPE',
'PRS_RELATIETYPE',
'PRS_RELATIETYPE_KEY',
'PRS_RELATIETYPE_OMSCHRIJVING',
'PRS_RELATIETYPE_VERWIJDER'
FROM DUAL
WHERE NOT EXISTS
(SELECT fac_kenmerkdomein_key
FROM fac_kenmerkdomein
WHERE fac_kenmerkdomein_module = 'BES'
AND fac_kenmerkdomein_objectnaam = 'PRS_RELATIETYPE');
INSERT INTO bes_srtkenmerk (bes_srtkenmerk_omschrijving, bes_srtkenmerk_kenmerktype, fac_kenmerkdomein_key)
SELECT 'Relatietype', 'R', fac_kenmerkdomein_key
FROM fac_kenmerkdomein
WHERE fac_kenmerkdomein_module = 'BES'
AND fac_kenmerkdomein_objectnaam = 'PRS_RELATIETYPE'
AND NOT EXISTS (SELECT bes_srtkenmerk_key
FROM bes_srtkenmerk
WHERE bes_srtkenmerk_omschrijving = 'Relatietype');
INSERT INTO bes_kenmerk (bes_srtkenmerk_key,
bes_srtinstallatie_key,
bes_kenmerk_type,
bes_kenmerk_niveau,
bes_kenmerk_toonbaar,
bes_kenmerk_volgnummer)
SELECT bes_srtkenmerk_key,
ins_discipline_key,
'B',
'D',
1,
100
FROM bes_srtkenmerk sk, bes_discipline d
WHERE bes_srtkenmerk_omschrijving = 'Relatietype'
AND NOT EXISTS
(SELECT bes_kenmerk_key
FROM bes_kenmerk k
WHERE k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key
AND k.bes_srtinstallatie_key = d.ins_discipline_key);
INSERT INTO bes_kenmerkbestell (bes_kenmerk_key, bes_bestelling_key, bes_kenmerkbestell_waarde)
SELECT k.bes_kenmerk_key, bi.bes_bestelling_key, bd.prs_relatietype_key
FROM bes_bestelling_item bi,
bes_bestelopdr_item boi,
bes_bestelopdr bo,
bes_kenmerk k,
bes_srtkenmerk sk,
prs_bedrijf bd,
bes_srtdeel sd,
bes_srtgroep sg
WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND bo.prs_bedrijf_key = bd.prs_bedrijf_key
AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key
AND sk.bes_srtkenmerk_omschrijving = 'Relatietype'
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = k.bes_srtinstallatie_key
AND bd.prs_relatietype_key IS NOT NULL
AND NOT EXISTS
(SELECT bes_kenmerkbestell_key
FROM bes_kenmerkbestell kb
WHERE kb.bes_bestelling_key = bi.bes_bestelling_key
AND kb.bes_kenmerk_key = k.bes_kenmerk_key)
GROUP BY k.bes_kenmerk_key, bi.bes_bestelling_key, bd.prs_relatietype_key;
END;
/
-- script om dagelijks terugkerende scripts aan te roepen. Indien er geen klantspecifieke versie is.
CREATE OR REPLACE PROCEDURE aaxx_select_hourly_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
aaxx_hourly_task (p_applname, p_applrun);
END;
/
-- script om dagelijks terugkerende scripts aan te roepen. Kan aangeroepen worden vanuit de klantomgeving
-- indien er voor die klant ook specifieke zaken dagelijks geregeld moeten worden.
CREATE OR REPLACE PROCEDURE aaxx_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
-- job om flexkenmerken bij projectorders in te vullen
IF aaxx_get_user <> 'GUL' THEN
aaxx_select_dwh_set_kenmerken (p_applname, p_applrun);
END IF;
-- job om gebruikers die recentelijk niet ingelogd zijn de rechten te ontnemen.
IF aaxx_get_user = 'ARCADIS' -- AAAR#26433 / weer aangezet AAAR#60481
OR aaxx_get_user = 'DSM'
OR aaxx_get_user = 'SABIC'
OR aaxx_get_user = 'GUL'
OR aaxx_get_user = 'ESSENT' -- AAES#65629
THEN
aaxx_delete_non_active_users (p_applname, p_applrun);
END IF;
-- verwijder key users met ORDBO2 rechten
IF -- aaxx_get_user = 'ARCADIS' AAAR#26433
-- OR
aaxx_get_user = 'AH'
OR aaxx_get_user = 'DSM'
OR aaxx_get_user = 'SABIC'
OR aaxx_get_user = 'GUL'
OR aaxx_get_user = 'NMM'
OR aaxx_get_user = 'RABO'
THEN
aaxx_delete_non_active_key (p_applname, p_applrun);
END IF;
-- Haal de mensen die we zojuist de login hebben ontnomen ook uit de autorisatiegroepen.
DELETE fac_gebruikersgroep gg
WHERE EXISTS
(SELECT p.prs_perslid_key
FROM prs_perslid p
WHERE prs_perslid_oslogin IS NULL
AND prs_perslid_oslogin2 IS NULL
AND p.prs_perslid_key = gg.prs_perslid_key);
-- job om bij to houden welke gebruikers vandaag ingelogd zijn geweest.
aaxx_export_login (p_applname, p_applrun);
-- job om complimenten af te melden.
aaxx_afmelden_complimenten (p_applname, p_applrun);
-- job om ordercorrecties door te voeren.
aaxx_ordercorrecties (p_applname, p_applrun);
END;
/
-- script om dagelijks terugkerende scripts aan te roepen. Indien er geen klantspecifieke versie is.
CREATE OR REPLACE PROCEDURE aaxx_select_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
aaxx_daily_task (p_applname, p_applrun);
END;
/
CREATE OR REPLACE PROCEDURE aaxx_imp_writelog (
p_import_key IN NUMBER,
p_severity IN VARCHAR2,
p_errormsg IN VARCHAR2,
p_errorhint IN VARCHAR2)
AS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
fac.imp_writelog (p_import_key,
p_severity,
SUBSTR(p_errormsg,1,1000),
SUBSTR(p_errorhint,1,1000));
COMMIT;
END;
/
CREATE OR REPLACE PROCEDURE aaxx_add_xml_row_p (
p_bestand IN VARCHAR2,
p_prefix IN VARCHAR2,
p_regel IN VARCHAR2)
AS
v_index NUMBER;
BEGIN
SELECT COALESCE( MAX(fac_rapport_volgnr), 0) + 1
INTO v_index
FROM fac_rapport
WHERE fac_rapport_node = p_bestand;
INSERT INTO fac_rapport (
fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel)
VALUES (p_bestand,
v_index,
p_prefix || p_regel);
END;
/
CREATE OR REPLACE PROCEDURE aaxx_add_xml_element_p (
p_bestand IN VARCHAR2,
p_prefix IN VARCHAR2,
p_tag IN VARCHAR2,
p_value IN VARCHAR2)
AS
BEGIN
aaxx_add_xml_row_p(p_bestand,
p_prefix,
'<' || p_tag || '>'
|| xml.char_to_html(p_value)
|| '</' || p_tag || '>');
END;
/
CREATE OR REPLACE PROCEDURE aaxx_add_xml_row (
p_bestand IN VARCHAR2,
p_regel IN VARCHAR2)
AS
BEGIN
aaxx_add_xml_row_p (p_bestand, NULL, p_regel);
END;
/
CREATE OR REPLACE PROCEDURE aaxx_add_xml_element (
p_bestand IN VARCHAR2,
p_tag IN VARCHAR2,
p_value IN VARCHAR2)
AS
BEGIN
aaxx_add_xml_element_p (p_bestand, NULL, p_tag, p_value);
END;
/
CREATE OR REPLACE FUNCTION aaxx_get_kenmerk (p_module IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_link_key IN NUMBER)
RETURN VARCHAR2
AS
v_kenmerk_type mld_srtkenmerk.mld_srtkenmerk_kenmerktype%TYPE;
v_kenmerk_waarde mld_kenmerkmelding.mld_kenmerkmelding_waarde%TYPE;
v_kenmerkdomein_key fac_kenmerkdomein.fac_kenmerkdomein_key%TYPE;
v_kenmerk_niveau ins_kenmerk.ins_kenmerk_niveau%TYPE;
BEGIN
CASE p_module
WHEN 'MLD'
THEN
SELECT mld_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
km.mld_kenmerkmelding_waarde
INTO v_kenmerk_type,
v_kenmerkdomein_key,
v_kenmerk_waarde
FROM mld_v_aanwezigkenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE km.mld_melding_key = p_link_key
AND km.mld_kenmerk_key = p_kenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
WHEN 'CNT'
THEN
SELECT cnt_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
kc.cnt_kenmerkcontract_waarde
INTO v_kenmerk_type,
v_kenmerkdomein_key,
v_kenmerk_waarde
FROM cnt_kenmerkcontract kc,
cnt_kenmerk k,
cnt_srtkenmerk sk
WHERE kc.cnt_contract_key = p_link_key
AND kc.cnt_kenmerk_key = p_kenmerk_key
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key;
WHEN 'ALG'
THEN
SELECT alg_kenmerk_kenmerktype,
k.fac_kenmerkdomein_key,
aogk.alg_onrgoedkenmerk_waarde
INTO v_kenmerk_type,
v_kenmerkdomein_key,
v_kenmerk_waarde
FROM alg_onrgoedkenmerk aogk, alg_kenmerk k
WHERE aogk.alg_onrgoed_key = p_link_key
AND aogk.alg_kenmerk_key = p_kenmerk_key
AND aogk.alg_kenmerk_key = k.alg_kenmerk_key;
WHEN 'INS'
THEN
SELECT k.ins_kenmerk_niveau
INTO v_kenmerk_niveau
FROM ins_kenmerk k
WHERE ins_kenmerk_key = p_kenmerk_key;
IF v_kenmerk_niveau = 'C' THEN
SELECT sk.ins_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
ikds.ins_kmdeelsrtcontr_waarde
INTO v_kenmerk_type,
v_kenmerkdomein_key,
v_kenmerk_waarde
FROM ins_kmdeelsrtcontr ikds, ins_kenmerk k, ins_srtkenmerk sk
WHERE ikds.ins_deelsrtcontrole_key = p_link_key
AND ikds.ins_kmdeelsrtcontr_verwijder IS NULL
AND ikds.ins_kenmerk_key = p_kenmerk_key
AND ikds.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;
ELSE
SELECT sk.ins_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
ikd.ins_kenmerkdeel_waarde
INTO v_kenmerk_type,
v_kenmerkdomein_key,
v_kenmerk_waarde
FROM ins_kenmerkdeel ikd, ins_kenmerk k, ins_srtkenmerk sk
WHERE ikd.ins_deel_key = p_link_key
AND ikd.ins_kenmerkdeel_verwijder IS NULL
AND ikd.ins_kenmerk_key = p_kenmerk_key
AND ikd.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;
END IF;
END CASE;
RETURN aaxx_get_kenmerkwaarde (v_kenmerk_type,
v_kenmerkdomein_key,
v_kenmerk_waarde);
END;
/
CREATE OR REPLACE FUNCTION aaxx_get_kenmerkwaarde (
p_kenmerk_type VARCHAR2,
p_kenmerkdomein_key NUMBER,
p_kenmerk_waarde VARCHAR2)
RETURN VARCHAR2
AS
v_result VARCHAR2(4000);
BEGIN
IF p_kenmerk_type = 'R' OR p_kenmerk_type = 'S' THEN
v_result := fac.getdomeinwaarde (p_kenmerkdomein_key,
p_kenmerk_waarde);
ELSIF p_kenmerk_type = 'D' THEN
v_result := TO_CHAR (fac.safe_to_date (p_kenmerk_waarde, 'dd-mm-yyyy'), 'yyyy-mm-dd');
ELSE
v_result := p_kenmerk_waarde;
END IF;
return v_result;
END aaxx_get_kenmerkwaarde;
/
CREATE OR REPLACE PROCEDURE aaxx_set_kenmerk(p_module IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_link_key IN NUMBER,
p_kenmerk_waarde IN VARCHAR2,
p_history IN NUMBER)
AS
v_count NUMBER;
v_niveau VARCHAR2 (1);
BEGIN
CASE p_module
WHEN 'PRS'
THEN
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
-- opgeslagen (da's dus redundant..?)
SELECT prs_kenmerk_niveau
INTO v_niveau
FROM prs_kenmerk
WHERE prs_kenmerk_key = p_kenmerk_key;
SELECT COUNT ( * )
INTO v_count
FROM prs_kenmerklink
WHERE prs_link_key = p_link_key
AND prs_kenmerk_key = p_kenmerk_key
AND prs_kenmerklink_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE prs_kenmerklink
WHERE prs_link_key = p_link_key
AND prs_kenmerk_key = p_kenmerk_key
AND prs_kenmerklink_verwijder IS NULL;
ELSE
UPDATE prs_kenmerklink
SET prs_kenmerklink_waarde = p_kenmerk_waarde
WHERE prs_link_key = p_link_key
AND prs_kenmerk_key = p_kenmerk_key
AND prs_kenmerklink_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO prs_kenmerklink (prs_kenmerk_key,
prs_link_key,
prs_kenmerklink_niveau,
prs_kenmerklink_waarde)
VALUES (p_kenmerk_key,
p_link_key,
v_niveau,
p_kenmerk_waarde);
END IF;
END IF;
WHEN 'ALG'
THEN
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
-- opgeslagen (da's dus redundant..?)
SELECT alg_kenmerk_niveau
INTO v_niveau
FROM alg_kenmerk
WHERE alg_kenmerk_key = p_kenmerk_key;
SELECT COUNT ( * )
INTO v_count
FROM alg_onrgoedkenmerk
WHERE alg_onrgoed_key = p_link_key
AND alg_kenmerk_key = p_kenmerk_key
AND alg_onrgoedkenmerk_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE alg_onrgoedkenmerk
WHERE alg_onrgoed_key = p_link_key
AND alg_kenmerk_key = p_kenmerk_key
AND alg_onrgoedkenmerk_verwijder IS NULL;
ELSE
UPDATE alg_onrgoedkenmerk
SET alg_onrgoedkenmerk_waarde = p_kenmerk_waarde
WHERE alg_onrgoed_key = p_link_key
AND alg_kenmerk_key = p_kenmerk_key
AND alg_onrgoedkenmerk_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO alg_onrgoedkenmerk (alg_kenmerk_key,
alg_onrgoed_key,
alg_onrgoed_niveau,
alg_onrgoedkenmerk_waarde)
VALUES (p_kenmerk_key,
p_link_key,
v_niveau,
p_kenmerk_waarde);
END IF;
END IF;
WHEN 'MLD'
THEN
-- melding- of opdrachtkenmerk?
SELECT mld_kenmerk_niveau
INTO v_niveau
FROM mld_kenmerk
WHERE mld_kenmerk_key = p_kenmerk_key;
CASE v_niveau
WHEN 'O'
THEN
SELECT COUNT ( * )
INTO v_count
FROM mld_kenmerkopdr
WHERE mld_opdr_key = p_link_key
AND mld_kenmerk_key = p_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE mld_kenmerkopdr
WHERE mld_opdr_key = p_link_key
AND mld_kenmerk_key = p_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL;
ELSE
UPDATE mld_kenmerkopdr
SET mld_kenmerkopdr_waarde = p_kenmerk_waarde
WHERE mld_opdr_key = p_link_key
AND mld_kenmerk_key = p_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key,
mld_opdr_key,
mld_kenmerkopdr_waarde)
VALUES (p_kenmerk_key,
p_link_key,
p_kenmerk_waarde);
END IF;
END IF;
WHEN 'S'
THEN
SELECT COUNT ( * )
INTO v_count
FROM mld_kenmerkmelding
WHERE mld_melding_key = p_link_key
AND mld_kenmerk_key = p_kenmerk_key
AND mld_kenmerkmelding_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE mld_kenmerkmelding
WHERE mld_melding_key = p_link_key
AND mld_kenmerk_key = p_kenmerk_key
AND mld_kenmerkmelding_verwijder IS NULL;
ELSE
UPDATE mld_kenmerkmelding
SET mld_kenmerkmelding_waarde = p_kenmerk_waarde
WHERE mld_melding_key = p_link_key
AND mld_kenmerk_key = p_kenmerk_key
AND mld_kenmerkmelding_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO mld_kenmerkmelding (mld_kenmerk_key,
mld_melding_key,
mld_kenmerkmelding_waarde)
VALUES (p_kenmerk_key,
p_link_key,
p_kenmerk_waarde);
END IF;
END IF;
END CASE;
WHEN 'RES'
THEN
-- melding- of opdrachtkenmerk?
SELECT res_kenmerk_niveau
INTO v_niveau
FROM res_kenmerk
WHERE res_kenmerk_key = p_kenmerk_key;
CASE v_niveau
WHEN 'A'
THEN
SELECT COUNT ( * )
INTO v_count
FROM res_kenmerkwaarde
WHERE res_rsv_ruimte_key = p_link_key
AND res_kenmerk_key = p_kenmerk_key
AND res_kenmerkwaarde_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE res_kenmerkwaarde
WHERE res_rsv_ruimte_key = p_link_key
AND res_kenmerk_key = p_kenmerk_key
AND res_kenmerkwaarde_verwijder IS NULL;
ELSE
UPDATE res_kenmerkwaarde
SET res_kenmerkreservering_waarde = p_kenmerk_waarde
WHERE res_rsv_ruimte_key = p_link_key
AND res_kenmerk_key = p_kenmerk_key
AND res_kenmerkwaarde_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO res_kenmerkwaarde (res_kenmerk_key,
res_rsv_ruimte_key,
res_kenmerkreservering_waarde)
VALUES (p_kenmerk_key,
p_link_key,
p_kenmerk_waarde);
END IF;
END IF;
-- Voorlopig alleen op ruimte niveau.
END CASE;
WHEN 'FIN'
THEN
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
-- opgeslagen (da's dus redundant..?)
SELECT fin_kenmerk_type
INTO v_niveau
FROM fin_kenmerk
WHERE fin_kenmerk_key = p_kenmerk_key;
IF v_niveau = 'F'
THEN
SELECT COUNT ( * )
INTO v_count
FROM fin_kenmerkfactuur
WHERE fin_factuur_key = p_link_key
AND fin_kenmerk_key = p_kenmerk_key
AND fin_kenmerkfactuur_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE fin_kenmerkfactuur
WHERE fin_factuur_key = p_link_key
AND fin_kenmerk_key = p_kenmerk_key
AND fin_kenmerkfactuur_verwijder IS NULL;
ELSE
UPDATE fin_kenmerkfactuur
SET fin_kenmerkfactuur_waarde = p_kenmerk_waarde
WHERE fin_factuur_key = p_link_key
AND fin_kenmerk_key = p_kenmerk_key
AND fin_kenmerkfactuur_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO fin_kenmerkfactuur (fin_kenmerk_key,
fin_factuur_key,
fin_kenmerkfactuur_waarde)
VALUES (p_kenmerk_key,
p_link_key,
p_kenmerk_waarde);
END IF;
END IF;
ELSE
-- Kenmerk bij factuurregel
SELECT COUNT ( * )
INTO v_count
FROM fin_kenmerkfactregel
WHERE fin_factuurregel_key = p_link_key
AND fin_kenmerk_key = p_kenmerk_key
AND fin_kenmerkfactregel_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE fin_kenmerkfactregel
WHERE fin_factuurregel_key = p_link_key
AND fin_kenmerk_key = p_kenmerk_key
AND fin_kenmerkfactregel_verwijder IS NULL;
ELSE
UPDATE fin_kenmerkfactregel
SET fin_kenmerkfactregel_waarde = p_kenmerk_waarde
WHERE fin_factuurregel_key = p_link_key
AND fin_kenmerk_key = p_kenmerk_key
AND fin_kenmerkfactregel_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO fin_kenmerkfactregel (fin_kenmerk_key,
fin_factuurregel_key,
fin_kenmerkfactregel_waarde)
VALUES (p_kenmerk_key,
p_link_key,
p_kenmerk_waarde);
END IF;
END IF;
END IF;
END CASE;
END;
/
CREATE OR REPLACE FUNCTION aaxx_get_NEN2767_kenmerkwaarde (p_melding_key IN NUMBER, p_srtkenmerk_code IN VARCHAR2)
RETURN VARCHAR2
AS
v_kenmerkwaarde MLD_KENMERKMELDING.MLD_KENMERKMELDING_WAARDE%TYPE;
BEGIN
SELECT mld_kenmerkmelding_waarde
INTO v_kenmerkwaarde
FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_code = p_srtkenmerk_code
AND km.mld_melding_key = p_melding_key;
RETURN v_kenmerkwaarde;
EXCEPTION WHEN NO_DATA_FOUND
THEN
RETURN NULL;
END;
/
CREATE OR REPLACE FUNCTION aaxx_get_NEN2767_instelling (p_instelling IN VARCHAR2)
RETURN NUMBER
AS
v_usrdata_prijs NUMBER;
BEGIN
SELECT ud.fac_usrdata_prijs
INTO v_usrdata_prijs
FROM fac_usrdata ud, fac_usrtab ut
WHERE ud.fac_usrtab_key = ut.fac_usrtab_key
AND ut.fac_usrtab_naam = '$PlatoNEN2727'
AND ud.fac_usrdata_code = p_instelling
AND ud.fac_usrdata_verwijder IS NULL;
RETURN v_usrdata_prijs;
END;
/
CREATE OR REPLACE FUNCTION aaxx_get_cnt_cont_plaats_index (p_contract_plaats_key number
)
RETURN NUMBER
AS
CURSOR c (c_cnt_contract_key number)
IS
SELECT cnt_contract_plaats_key
FROM cnt_contract_plaats
WHERE cnt_contract_key = c_cnt_contract_key
ORDER BY cnt_contract_plaats_key;
v_contract_key NUMBER (10);
v_index NUMBER (10);
BEGIN
v_index := 1;
SELECT cnt_contract_key
INTO v_contract_key
FROM cnt_contract_plaats
WHERE cnt_contract_plaats_key = p_contract_plaats_key;
FOR rec IN c(v_contract_key)
LOOP
IF rec.cnt_contract_plaats_key = p_contract_plaats_key
THEN
RETURN (v_index);
END IF;
v_index := v_index + 1;
END LOOP;
END;
/
CREATE OR REPLACE FUNCTION aaxx_get_dep_code (p_prs_kostenplaats_nr VARCHAR2) RETURN VARCHAR2
AS
v_result VARCHAR2(100);
BEGIN
v_result := 'Onbekend - ' || p_prs_kostenplaats_nr;
BEGIN
SELECT prs_afdeling_upper
INTO v_result
FROM prs_v_aanwezigafdeling a, prs_kostenplaats k
WHERE niveau = 1
AND a.prs_kostenplaats_key = k.prs_kostenplaats_key
AND k.prs_kostenplaats_nr = p_prs_kostenplaats_nr;
RETURN v_result;
EXCEPTION WHEN NO_DATA_FOUND
THEN
BEGIN
SELECT prs_afdeling_upper
INTO v_result
FROM prs_v_aanwezigafdeling a, prs_kostenplaats k
WHERE niveau = 2
AND a.prs_kostenplaats_key = k.prs_kostenplaats_key
AND k.prs_kostenplaats_nr = p_prs_kostenplaats_nr;
RETURN v_result;
EXCEPTION WHEN OTHERS
THEN
RETURN v_result;
END;
END;
END aaxx_get_dep_code;
/
-- zoek naar de afdelingscode van het hoogste niveau afdeling
CREATE OR REPLACE FUNCTION aaxx_get_top_dep_code (p_prs_kostenplaats_nr VARCHAR2) RETURN VARCHAR2
AS
CURSOR c IS
SELECT ta.prs_afdeling_naam
FROM prs_kostenplaats kp,
prs_afdeling a,
prs_v_afdeling_boom ab,
prs_afdeling ta
WHERE kp.prs_kostenplaats_key = a.prs_kostenplaats_key
AND a.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = ta.prs_afdeling_key
AND kp.prs_kostenplaats_nr = p_prs_kostenplaats_nr
ORDER BY COALESCE(a.prs_afdeling_verwijder, sysdate) DESC;
v_result VARCHAR2(100);
BEGIN
v_result := 'Onbekend - ' || p_prs_kostenplaats_nr;
BEGIN
FOR rec IN C
LOOP
BEGIN
RETURN rec.prs_afdeling_naam;
END;
END LOOP;
RETURN v_result;
EXCEPTION WHEN OTHERS THEN
RETURN v_result;
END;
END aaxx_get_top_dep_code;
/
-- zoek naar de bedrijf_key van het hoogste niveau afdeling
CREATE OR REPLACE FUNCTION aaxx_get_top_bedrijf_key (p_prs_kostenplaats_nr VARCHAR2) RETURN NUMBER
AS
CURSOR c IS
SELECT ta.prs_afdeling_naam, ta.prs_bedrijf_key
FROM prs_kostenplaats kp,
prs_afdeling a,
prs_v_afdeling_boom ab,
prs_afdeling ta
WHERE kp.prs_kostenplaats_key = a.prs_kostenplaats_key
AND a.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = ta.prs_afdeling_key
AND kp.prs_kostenplaats_nr = p_prs_kostenplaats_nr
ORDER BY COALESCE(a.prs_afdeling_verwijder, sysdate) DESC;
v_result NUMBER;
BEGIN
v_result := NULL;
BEGIN
FOR rec IN C
LOOP
BEGIN
RETURN rec.prs_bedrijf_key;
END;
END LOOP;
RETURN v_result;
EXCEPTION WHEN OTHERS THEN
RETURN v_result;
END;
END aaxx_get_top_bedrijf_key;
/
-- zoek naar de kostenplaats_key van het hoogste niveau afdeling
CREATE OR REPLACE FUNCTION aaxx_get_top_kpn_key (p_prs_kostenplaats_key NUMBER) RETURN VARCHAR2
AS
CURSOR c IS
SELECT ta.prs_kostenplaats_key
FROM prs_afdeling a,
prs_v_afdeling_boom ab,
prs_afdeling ta
WHERE p_prs_kostenplaats_key = a.prs_kostenplaats_key
AND a.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = ta.prs_afdeling_key
ORDER BY COALESCE(a.prs_afdeling_verwijder, sysdate) DESC;
v_result NUMBER;
BEGIN
v_result := NULL;
BEGIN
FOR rec IN C
LOOP
BEGIN
RETURN rec.prs_kostenplaats_key;
END;
END LOOP;
RETURN v_result;
EXCEPTION WHEN OTHERS THEN
RETURN v_result;
END;
END aaxx_get_top_kpn_key;
/
-- zoek naar de kostenplaats_nr van het hoogste niveau afdeling
CREATE OR REPLACE FUNCTION aaxx_get_top_kpn_nr (p_prs_kostenplaats_key NUMBER) RETURN VARCHAR2
AS
CURSOR c IS
SELECT ta.prs_kostenplaats_key
FROM prs_afdeling a,
prs_v_afdeling_boom ab,
prs_afdeling ta
WHERE p_prs_kostenplaats_key = a.prs_kostenplaats_key
AND a.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = ta.prs_afdeling_key
ORDER BY COALESCE(a.prs_afdeling_verwijder, sysdate) DESC;
v_result VARCHAR2(30);
BEGIN
v_result := NULL;
BEGIN
FOR rec IN C
LOOP
BEGIN
-- RETURN rec.prs_kostenplaats_key;
SELECT kp.prs_kostenplaats_nr
INTO v_result
FROM prs_kostenplaats kp
WHERE kp.prs_kostenplaats_key = rec.prs_kostenplaats_key ;
END;
END LOOP;
RETURN v_result;
EXCEPTION WHEN OTHERS THEN
RETURN v_result;
END;
END aaxx_get_top_kpn_nr;
/
-- Zoek bovenliggende afdelingsniveau 1 en de daarbij vastgelegde kostenplaats bij kenmerkwaarde-veld 'Kostenplaats'
-- Nieuwe structuur voor interface voor bepaling DEBITEUR voor SMKA (zie ticket 57797)
CREATE OR REPLACE FUNCTION aaxx_get_top_afdeling_kpkenm (p_prs_kostenplaats_key VARCHAR2) RETURN VARCHAR2
AS
CURSOR c IS
SELECT kp.prs_kostenplaats_nr
FROM prs_kenmerklink km,
prs_kostenplaats kp,
(SELECT kp.prs_kostenplaats_key,
a.prs_afdeling_key,
ab.prs_afdeling_key1
FROM prs_afdeling a, prs_v_afdeling_boom ab, prs_kostenplaats kp
WHERE a.prs_afdeling_key = ab.prs_afdeling_key
AND a.prs_kostenplaats_key = p_prs_kostenplaats_key
AND prs_afdeling_verwijder IS NULL) v
WHERE km.prs_link_key = v.prs_afdeling_key1
AND km.prs_kenmerklink_niveau = 'A'
AND km.prs_kenmerklink_waarde = kp.prs_kostenplaats_key
AND km.prs_kenmerk_key = 1000 ;
v_result VARCHAR2(100);
BEGIN
v_result := '';
BEGIN
FOR rec IN C
LOOP
BEGIN
RETURN rec.prs_kostenplaats_nr;
END;
END LOOP;
RETURN v_result;
EXCEPTION WHEN OTHERS THEN
RETURN v_result;
END;
END aaxx_get_top_afdeling_kpkenm;
/
-- zoek naar de afdelingscode van het <20><>n na hoogste niveau afdeling
CREATE OR REPLACE FUNCTION aaxx_get_lev2_dep_code (p_prs_kostenplaats_nr VARCHAR2) RETURN VARCHAR2
AS
v_result VARCHAR2(100);
BEGIN
v_result := 'Onbekend - ' || p_prs_kostenplaats_nr;
BEGIN
SELECT ta.prs_afdeling_naam
INTO v_result
FROM prs_kostenplaats kp,
prs_afdeling a,
prs_v_afdeling_boom ab,
prs_afdeling ta
WHERE kp.prs_kostenplaats_key = a.prs_kostenplaats_key
AND a.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key2 = ta.prs_afdeling_key
AND kp.prs_kostenplaats_nr = p_prs_kostenplaats_nr;
RETURN v_result;
EXCEPTION WHEN OTHERS THEN
RETURN v_result;
END;
END aaxx_get_lev2_dep_code;
/
CREATE OR REPLACE FUNCTION aaxx_bestelling_items (bes_key IN NUMBER)
RETURN VARCHAR2
IS
lret VARCHAR2 (512);
lfirst NUMBER;
llast NUMBER;
CURSOR items
IS
SELECT TO_CHAR (bi.bes_bestelling_item_aantal)
|| 'x '
|| s.bes_srtdeel_omschrijving /* lcl.x()?*/
|| ' ('
|| s.bes_srtdeel_eenheid
|| ') ' besitemdsc
FROM bes_bestelling_item bi, bes_srtdeel s
WHERE bi.bes_srtdeel_key = s.bes_srtdeel_key
AND bi.bes_bestelling_key = bes_key;
BEGIN
lret := NULL;
lfirst := 0;
llast := 0;
FOR besitem_rec IN items
LOOP
IF lfirst = 0
THEN
BEGIN
lret := besitem_rec.besitemdsc;
lfirst := 1;
END;
ELSE
IF llast = 0
THEN
IF LENGTH (lret) + LENGTH (besitem_rec.besitemdsc) < (512 - 5)
THEN
lret := lret || CHR (10) || besitem_rec.besitemdsc;
ELSE
lret := lret || CHR (10) || '...';
llast := 1;
END IF;
END IF;
END IF;
END LOOP;
RETURN lret;
END;
/
CREATE OR REPLACE PROCEDURE aaxx_delete_non_active_users (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
UPDATE prs_perslid p
SET prs_perslid_oslogin = NULL,
prs_perslid_oslogin2 = NULL
WHERE prs_perslid_verwijder IS NULL
AND (prs_perslid_oslogin IS NOT NULL OR prs_perslid_oslogin2 IS NOT NULL)
AND ( SYSDATE - prs_perslid_aanmaak > 90
AND ( prs_perslid_login IS NULL
OR SYSDATE - prs_perslid_login > 90
)
)
AND NOT EXISTS
(SELECT fac_groep_omschrijving
FROM fac_gebruikersgroep gg, fac_groep g
WHERE p.prs_perslid_key = gg.prs_perslid_key
AND gg.fac_groep_key = g.fac_groep_key
AND UPPER(g.fac_groep_omschrijving) LIKE '%EXTENDED LOGIN%'
AND SYSDATE - prs_perslid_login < 276)
AND NOT EXISTS
( SELECT fac_tracking_refkey
FROM fac_tracking t, fac_srtnotificatie sn
WHERE fac_tracking_refkey = p.prs_perslid_key
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'PRSUPD'
AND SYSDATE - t.fac_tracking_datum < 90)
AND NOT EXISTS
( SELECT prs_afdeling_key
FROM prs_afdeling a
WHERE a.prs_afdeling_key = p.prs_afdeling_key
AND (a.prs_afdeling_omschrijving = 'AAFM' OR a.prs_afdeling_naam = 'HEYDAY'))
AND SUBSTR(COALESCE(prs_perslid_oslogin, 'Q'), 1, 1) <> '_'
AND NOT EXISTS
( SELECT prs_srtperslid_key
FROM prs_srtperslid ps
WHERE ps.prs_srtperslid_key = p.prs_srtperslid_key
AND prs_srtperslid_verwijder IS NULL
AND UPPER (ps.prs_srtperslid_omschrijving) = 'LEV AFMELDSCHERM');
END;
/
CREATE OR REPLACE PROCEDURE aaxx_delete_non_active_key (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
UPDATE prs_perslid p
SET prs_perslid_oslogin = NULL,
prs_perslid_oslogin2 = NULL
WHERE prs_perslid_verwijder IS NULL
AND (prs_perslid_oslogin IS NOT NULL OR prs_perslid_oslogin2 IS NOT NULL)
AND ( SYSDATE - prs_perslid_aanmaak > 30
AND ( prs_perslid_login IS NULL
OR SYSDATE - prs_perslid_login > 30
)
)
AND EXISTS
( SELECT gg.fac_groep_key
FROM fac_gebruikersgroep gg, fac_groeprechten gr, fac_functie f
WHERE f.fac_functie_key = gr.fac_functie_key
AND f.fac_functie_code = 'WEB_EXTORD'
AND gr.fac_groep_key = gg.fac_groep_key
AND gg.prs_perslid_key = p.prs_perslid_key)
AND NOT EXISTS
( SELECT fac_tracking_refkey
FROM fac_tracking t, fac_srtnotificatie sn
WHERE fac_tracking_refkey = p.prs_perslid_key
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'PRSUPD'
AND SYSDATE - t.fac_tracking_datum < 30)
AND NOT EXISTS
( SELECT prs_afdeling_key
FROM prs_afdeling a
WHERE a.prs_afdeling_key = p.prs_afdeling_key
AND (a.prs_afdeling_omschrijving = 'AAFM' OR a.prs_afdeling_naam = 'HEYDAY'))
AND SUBSTR(COALESCE(prs_perslid_oslogin, 'Q'), 1, 1) <> '_'
AND NOT EXISTS
( SELECT prs_srtperslid_key
FROM prs_srtperslid ps
WHERE ps.prs_srtperslid_key = p.prs_srtperslid_key
AND prs_srtperslid_verwijder IS NULL
AND UPPER (ps.prs_srtperslid_omschrijving) = 'LEV AFMELDSCHERM');
END;
/
CREATE OR REPLACE VIEW aaxx_v_noti_non_active_users
(
sender,
receiver,
text,
code,
fac_srtnotificatie_key,
key,
xkey,
xemail,
xmobile
)
AS
SELECT NULL sender,
prs_perslid_key receiver,
'Uw account voor FACILITOR is bijna verlopen. ' text,
'CUST05' code,
NULL fac_srtnotificatie_key,
p.prs_perslid_key key,
NULL xkey,
NULL xemail,
NULL xmobile
FROM prs_perslid p
WHERE p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL
AND TRUNC (p.prs_perslid_login) = TRUNC (SYSDATE - 90 + 7)
AND NOT EXISTS
(SELECT prs_afdeling_key
FROM prs_afdeling a
WHERE a.prs_afdeling_key = p.prs_afdeling_key
AND (a.prs_afdeling_omschrijving = 'AAFM' OR a.prs_afdeling_naam = 'HEYDAY'))
AND SUBSTR (prs_perslid_oslogin, 1, 1) <> '_'
AND NOT EXISTS
( SELECT prs_srtperslid_key
FROM prs_srtperslid ps
WHERE ps.prs_srtperslid_key = p.prs_srtperslid_key
AND prs_srtperslid_verwijder IS NULL
AND UPPER (ps.prs_srtperslid_omschrijving) = 'LEV AFMELDSCHERM');
CREATE OR REPLACE PROCEDURE aaxx_export_login (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
INSERT INTO aaxx_perslid_login
(prs_perslid_key, login_datum)
(SELECT prs_perslid_key, prs_perslid_login
FROM prs_perslid
WHERE TRUNC (prs_perslid_login) = TRUNC (SYSDATE));
END;
/
-- Job om meldingen onder de vakgroeptype AA Complimenten binnen de SLA automatisch af te melden
-- Hierbij wordt in de afhandeling de afmeldtekst gebruikt die standaard geconfigureerd staat.
CREATE OR REPLACE PROCEDURE aaxx_afmelden_complimenten (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR c
IS
SELECT m.*, a.mld_afmeldtekst_omschrijving
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd,
mld_afmeldtekst a
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_prefix = 'AA'
AND a.mld_ins_discipline_key = std.mld_ins_discipline_key
AND a.mld_stdmelding_key IS NULL
AND m.mld_melding_status IN (2, 3, 4)
AND m.mld_melding_einddatum_std < SYSDATE + 1;
BEGIN
FOR rec in c
LOOP
BEGIN
UPDATE mld_melding
SET mld_melding_opmerking = rec.mld_afmeldtekst_omschrijving
WHERE mld_melding_key = rec.mld_melding_key;
-- Als status is nieuw of te accepteren dan eerst op geaccepteerd zetten.
IF rec.mld_melding_status = 2 OR rec.mld_melding_status = 3
THEN
mld.setmeldingstatus(rec.mld_melding_key, 4, NULL);
END IF;
-- nu de status op afgemeld zetten.
mld.setmeldingstatus(rec.mld_melding_key, 5, NULL);
END;
END LOOP;
END;
/
-- Correcties op meldingen/opdrachten/facturen bestaan uit aanpassingen in de kostenplaats
-- of standaardmelding (kostensoort). De originele opdracht is dan al verwerkt en naar Exact
-- gehaald. Daar willen we niet aan gaan zitten knutselen.
-- Daarom kan aan een melding die ingelegd is op een verkeerde stdmelding of kostenplaats
-- een vervolgmelding (Ordercorrectie) gekoppeld worden. Deze ordercorrectiemelding heeft
-- flexvelden voor de nieuwe kostenplaats en nieuwe stdmelding. Onderstaande procedure
-- maakt nu een nieuwe structuur van melding/opdrach(en)/factuur(en) aan die gelijk is aan
-- de structuur van de originele melding maar met de tegenboeking (negatieve bedragen). Als
-- tweede wordt dezelfde structuur nog een keer aangemaakt voor de correctiemelding. Deze
-- structuur bevat de originele bedragen maar bevat de nieuwe kostenplaats en/of stdmelding.
-- Correctiemeldingen worden pas uitgevoerd op het moment dat ze afgemeld zijn. Aan het
-- einde van deze procedure wordt de correctiemelding op afgerond gezet zodat deze niet
-- nogmaals uitgevoerd wordt.
CREATE OR REPLACE PROCEDURE aaxx_ordercorrecties (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR c
IS
SELECT m.mld_melding_start_key,
m.mld_melding_key,
COALESCE (
(SELECT fac.safe_to_number (km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = m.mld_melding_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_upper = 'NIEUWE KOSTENPLAATS'),
m_org.prs_kostenplaats_key)
nieuwe_kostenplaats,
COALESCE (
(SELECT fac.safe_to_number (km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = m.mld_melding_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_upper = 'NIEUWE MELDING'),
m_org.prs_kostenplaats_key)
nieuwe_melding
FROM mld_melding m, mld_stdmelding std, mld_melding m_org
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_stdmelding_omschrijving = 'Ordercorrecties'
AND m.mld_melding_start_key = m_org.mld_melding_key
AND m.mld_melding_status = 5
AND m.mld_melding_afgerond = 0;
CURSOR c_o (c_melding_key NUMBER)
IS
SELECT *
FROM mld_opdr
WHERE mld_melding_key = c_melding_key;
CURSOR c_f (c_opdr_key NUMBER)
IS
SELECT *
FROM fin_factuur
WHERE mld_opdr_key = c_opdr_key AND fin_factuur_verwijder IS NULL;
CURSOR c_fr (c_factuur_key NUMBER)
IS
SELECT *
FROM fin_factuurregel
WHERE fin_factuur_key = c_factuur_key;
v_melding_tegenb_key NUMBER;
v_opdr_tegenb_key NUMBER;
v_factuur_tegenb_key NUMBER;
v_factuurregel_tegenb_key NUMBER;
v_melding_cor_key NUMBER;
v_opdr_cor_key NUMBER;
v_factuur_cor_key NUMBER;
v_factuurregel_cor_key NUMBER;
BEGIN
FOR rec IN c
LOOP
BEGIN
-- Maak een tegenboeking aan met dezelfde stdmelding/kostenplaats
SELECT mld_s_mld_melding_key.NEXTVAL
INTO v_melding_tegenb_key
FROM DUAL;
INSERT INTO mld_melding (mld_melding_key,
mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_omschrijving,
mld_melding_opmerking,
mld_stdmelding_key,
mld_melding_status,
mld_kosten_klant,
mld_melding_document,
prs_kostenplaats_key,
prs_perslid_key,
mld_adres_key,
mld_melding_ordernr,
mld_melding_spoed,
mld_melding_onderwerp,
mld_melding_start_key)
SELECT v_melding_tegenb_key,
mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
SUBSTR (
'Tegenboeking'
|| CHR (10)
|| mld_melding_omschrijving,
1,
4000),
SUBSTR (
'Tegenboeking'
|| CHR (10)
|| mld_melding_opmerking,
1,
4000),
mld_stdmelding_key,
2,
mld_kosten_klant,
mld_melding_document,
prs_kostenplaats_key,
prs_perslid_key,
mld_adres_key,
mld_melding_ordernr,
mld_melding_spoed,
SUBSTR ('Tegenboeking: ' || mld_melding_onderwerp, 1, 60),
mld_melding_key
FROM mld_melding
WHERE mld_melding_key = rec.mld_melding_start_key;
fac.trackaction ('MLDNEW',
v_melding_tegenb_key,
NULL,
NULL,
NULL);
mld.setmeldingstatus (v_melding_tegenb_key, 4, NULL);
-- Maak een correctie melding aan met de nieuwe stdmelding en nieuwe kostenplaats
SELECT mld_s_mld_melding_key.NEXTVAL
INTO v_melding_cor_key
FROM DUAL;
INSERT INTO mld_melding (mld_melding_key,
mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_omschrijving,
mld_melding_opmerking,
mld_stdmelding_key,
mld_melding_status,
mld_kosten_klant,
mld_melding_document,
prs_kostenplaats_key,
prs_perslid_key,
mld_adres_key,
mld_melding_ordernr,
mld_melding_spoed,
mld_melding_onderwerp,
mld_melding_start_key)
SELECT v_melding_cor_key,
mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
SUBSTR (
'Correctie melding'
|| CHR (10)
|| mld_melding_omschrijving,
1,
4000),
SUBSTR (
'Correctie melding'
|| CHR (10)
|| mld_melding_opmerking,
1,
4000),
rec.nieuwe_melding,
2,
mld_kosten_klant,
mld_melding_document,
rec.nieuwe_kostenplaats,
prs_perslid_key,
mld_adres_key,
mld_melding_ordernr,
mld_melding_spoed,
SUBSTR ('Correctie: ' || mld_melding_onderwerp, 1, 60),
mld_melding_key
FROM mld_melding
WHERE mld_melding_key = rec.mld_melding_start_key;
fac.trackaction ('MLDNEW',
v_melding_cor_key,
NULL,
NULL,
NULL);
mld.setmeldingstatus (v_melding_cor_key, 4, NULL);
DBMS_OUTPUT.put_line (
'Originele melding_key:' || rec.mld_melding_start_key);
FOR rec_o IN c_o (rec.mld_melding_start_key)
LOOP
BEGIN
DBMS_OUTPUT.put_line (
'Originele opdracht_key:' || rec_o.mld_opdr_key);
-- Maak voor iedere opdracht onder de originele melding een tegenboekingsopdracht aan.
SELECT mld_s_mld_opdr_key.NEXTVAL
INTO v_opdr_tegenb_key
FROM DUAL;
DBMS_OUTPUT.put_line (
'Tegenboeking opdracht_key:' || v_opdr_tegenb_key);
INSERT INTO mld_opdr (mld_opdr_key,
mld_opdr_module,
mld_melding_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_uitvoerende_keys,
mld_typeopdr_key,
mld_statusopdr_key,
mld_standaardopdr_key,
mld_opdr_omschrijving,
mld_opdr_datumbegin,
mld_opdr_dagen,
mld_opdr_einddatum,
mld_opdr_werkzaamheden,
mld_opdr_uren,
mld_opdr_materiaal,
mld_opdr_kosten,
prs_kostenplaats_key,
mld_opdr_ordernr,
mld_opdr_contactpersoon,
mld_opdr_bedrijfopdr_volgnr,
mld_opdr_teverzenden,
mld_opdr_uurloon,
prs_perslid_key,
prs_contactpersoon_key,
mld_opdr_opmerking_fiat,
fac_activiteit_key,
mld_opdr_opmerking,
cnt_contract_key,
cnt_contract_dienst_key,
mld_opdr_plandatum,
mld_opdr_id)
SELECT v_opdr_tegenb_key,
mld_opdr_module,
v_melding_tegenb_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_uitvoerende_keys,
mld_typeopdr_key,
5, -- toegekend
mld_standaardopdr_key,
mld_opdr_omschrijving,
mld_opdr_datumbegin,
mld_opdr_dagen,
mld_opdr_einddatum,
mld_opdr_werkzaamheden,
0,
0,
-1 * mld_opdr_kosten,
prs_kostenplaats_key,
mld_opdr_ordernr,
mld_opdr_contactpersoon,
mld_opdr_bedrijfopdr_volgnr,
NULL, -- mld_opdr_teverzenden
mld_opdr_uurloon,
prs_perslid_key,
prs_contactpersoon_key,
mld_opdr_opmerking_fiat,
fac_activiteit_key,
SUBSTR (
'Tegenboeking'
|| CHR (10)
|| mld_opdr_opmerking,
1,
4000),
cnt_contract_key,
cnt_contract_dienst_key,
mld_opdr_plandatum,
mld_opdr_id
FROM mld_opdr
WHERE mld_opdr_key = rec_o.mld_opdr_key;
fac.trackaction ('ORDNEW',
v_opdr_tegenb_key,
NULL,
NULL,
NULL);
-- Maak voor iedere opdracht onder de originele melding een correctieopdracht aan.
SELECT mld_s_mld_opdr_key.NEXTVAL
INTO v_opdr_cor_key
FROM DUAL;
DBMS_OUTPUT.put_line (
'Correctie opdracht_key:' || v_opdr_cor_key);
INSERT INTO mld_opdr (mld_opdr_key,
mld_opdr_module,
mld_melding_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_uitvoerende_keys,
mld_typeopdr_key,
mld_statusopdr_key,
mld_standaardopdr_key,
mld_opdr_omschrijving,
mld_opdr_datumbegin,
mld_opdr_dagen,
mld_opdr_einddatum,
mld_opdr_werkzaamheden,
mld_opdr_uren,
mld_opdr_materiaal,
mld_opdr_kosten,
prs_kostenplaats_key,
mld_opdr_ordernr,
mld_opdr_contactpersoon,
mld_opdr_bedrijfopdr_volgnr,
mld_opdr_teverzenden,
mld_opdr_uurloon,
prs_perslid_key,
prs_contactpersoon_key,
mld_opdr_opmerking_fiat,
fac_activiteit_key,
mld_opdr_opmerking,
cnt_contract_key,
cnt_contract_dienst_key,
mld_opdr_plandatum,
mld_opdr_id)
SELECT v_opdr_cor_key,
mld_opdr_module,
v_melding_cor_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_uitvoerende_keys,
mld_typeopdr_key,
5, -- toegekend
mld_standaardopdr_key,
mld_opdr_omschrijving,
mld_opdr_datumbegin,
mld_opdr_dagen,
mld_opdr_einddatum,
mld_opdr_werkzaamheden,
mld_opdr_uren,
mld_opdr_materiaal,
mld_opdr_kosten,
rec.nieuwe_kostenplaats,
mld_opdr_ordernr,
mld_opdr_contactpersoon,
mld_opdr_bedrijfopdr_volgnr,
NULL, -- mld_opdr_teverzenden
mld_opdr_uurloon,
prs_perslid_key,
prs_contactpersoon_key,
mld_opdr_opmerking_fiat,
fac_activiteit_key,
SUBSTR (
'Correctie'
|| CHR (10)
|| mld_opdr_opmerking,
1,
4000),
cnt_contract_key,
cnt_contract_dienst_key,
mld_opdr_plandatum,
mld_opdr_id
FROM mld_opdr
WHERE mld_opdr_key = rec_o.mld_opdr_key;
fac.trackaction ('ORDNEW',
v_opdr_cor_key,
NULL,
NULL,
NULL);
FOR rec_f IN c_f (rec_o.mld_opdr_key)
LOOP
BEGIN
DBMS_OUTPUT.put_line (
'Originele factuur_key:' || rec_f.fin_factuur_key);
-- Maak voor iedere factuur onder de originele opdracht een tegenboekingsfactuur aan.
SELECT fin_s_fin_factuur_key.NEXTVAL
INTO v_factuur_tegenb_key
FROM DUAL;
DBMS_OUTPUT.put_line (
'Tegenboekingsfactuur_key:' || v_factuur_tegenb_key);
INSERT INTO fin_factuur (fin_factuur_key,
mld_opdr_key,
fin_factuur_nr,
fin_factuur_totaal,
fin_factuur_totaal_btw,
prs_perslid_key_user,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_debiteur_nr,
prs_kostensoort_key,
fin_factuur_opmerking,
fin_factuur_statuses_key)
SELECT v_factuur_tegenb_key,
v_opdr_tegenb_key,
fin_factuur_nr,
-1 * fin_factuur_totaal,
-1 * fin_factuur_totaal_btw,
prs_perslid_key_user,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_debiteur_nr,
prs_kostensoort_key,
SUBSTR (
'Tegenboeking'
|| CHR (10)
|| fin_factuur_opmerking,
1,
4000),
6 -- goedgekeurd
FROM fin_factuur
WHERE fin_factuur_key = rec_f.fin_factuur_key;
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
SELECT v_factuur_tegenb_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur
WHERE fin_factuur_key = rec_f.fin_factuur_key;
fac.trackaction ('FINNEW',
v_factuur_tegenb_key,
NULL,
NULL,
NULL);
-- Maak voor iedere factuur onder de originele opdracht een correctiefactuur aan.
SELECT fin_s_fin_factuur_key.NEXTVAL
INTO v_factuur_cor_key
FROM DUAL;
DBMS_OUTPUT.put_line (
'Correctie factuur_key:' || v_factuur_cor_key);
INSERT INTO fin_factuur (fin_factuur_key,
mld_opdr_key,
fin_factuur_nr,
fin_factuur_totaal,
fin_factuur_totaal_btw,
prs_perslid_key_user,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_debiteur_nr,
prs_kostensoort_key,
fin_factuur_opmerking,
fin_factuur_statuses_key)
SELECT v_factuur_cor_key,
v_opdr_cor_key,
fin_factuur_nr,
fin_factuur_totaal,
fin_factuur_totaal_btw,
prs_perslid_key_user,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_debiteur_nr,
(SELECT COALESCE (std.prs_kostensoort_key,
d.prs_kostensoort_key)
FROM mld_stdmelding std,
ins_tab_discipline d
WHERE std.mld_ins_discipline_key =
d.ins_discipline_key
AND std.mld_stdmelding_key =
rec.nieuwe_melding),
SUBSTR (
'Correctie'
|| CHR (10)
|| fin_factuur_opmerking,
1,
4000),
6 -- goedgekeurd
FROM fin_factuur
WHERE fin_factuur_key = rec_f.fin_factuur_key;
fac.trackaction ('FINNEW',
v_factuur_cor_key,
NULL,
NULL,
NULL);
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
SELECT v_factuur_cor_key,
fin_kenmerk_key,
fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur
WHERE fin_factuur_key = rec_f.fin_factuur_key;
FOR rec_fr IN c_fr (rec_f.fin_factuur_key)
LOOP
BEGIN
DBMS_OUTPUT.put_line('Originele factuurregel_key:'
|| rec_fr.fin_factuurregel_key);
-- Maak voor iedere factuurregel onder de originele factuur een tegenboekings factuurregel aan.
SELECT fin_s_fin_factuurregel_key.NEXTVAL
INTO v_factuurregel_tegenb_key
FROM DUAL;
DBMS_OUTPUT.put_line('Tegenboekings factuurregel_key:'
|| v_factuurregel_tegenb_key);
INSERT INTO fin_factuurregel (fin_factuurregel_key,
fin_factuur_key,
fin_factuurregel_nr,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_factuurregel_omschrijving,
fin_factuurregel_referentie,
fin_btwtabelwaarde_key,
prs_kostensoort_key)
SELECT v_factuurregel_tegenb_key,
v_factuur_tegenb_key,
fin_factuurregel_nr,
-1 * fin_factuurregel_totaal,
-1 * fin_factuurregel_btw,
fin_factuurregel_omschrijving,
fin_factuurregel_referentie,
fin_btwtabelwaarde_key,
prs_kostensoort_key
FROM fin_factuurregel
WHERE fin_factuurregel_key =
rec_fr.fin_factuurregel_key;
-- Maak voor iedere factuurregel onder de originele factuur een correctie factuurregel aan.
SELECT fin_s_fin_factuurregel_key.NEXTVAL
INTO v_factuurregel_cor_key
FROM DUAL;
DBMS_OUTPUT.put_line('Correctie factuurregel_key:'
|| v_factuurregel_cor_key);
INSERT INTO fin_factuurregel (fin_factuurregel_key,
fin_factuur_key,
fin_factuurregel_nr,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_factuurregel_omschrijving,
fin_factuurregel_referentie,
fin_btwtabelwaarde_key,
prs_kostensoort_key)
SELECT v_factuurregel_cor_key,
v_factuur_cor_key,
fin_factuurregel_nr,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_factuurregel_omschrijving,
fin_factuurregel_referentie,
fin_btwtabelwaarde_key,
(SELECT COALESCE (
std.prs_kostensoort_key,
d.prs_kostensoort_key)
FROM mld_stdmelding std,
ins_tab_discipline d
WHERE std.mld_ins_discipline_key =
d.ins_discipline_key
AND std.mld_stdmelding_key =
rec.nieuwe_melding)
FROM fin_factuurregel
WHERE fin_factuurregel_key =
rec_fr.fin_factuurregel_key;
END;
END LOOP;
END;
END LOOP;
-- set opdrachtstatus op technisch gereed
mld.setopdrachtstatus (v_opdr_tegenb_key, 6, NULL);
mld.setopdrachtstatus (v_opdr_cor_key, 6, NULL);
END;
END LOOP;
-- zet meldingstatus op technisch gereed
mld.updatemeldingstatus (v_melding_tegenb_key, 1, NULL);
mld.updatemeldingstatus (v_melding_cor_key, 1, NULL);
-- zet de status van de correctiemelding op afgerond zodat deze niet opnieuw verwerkt wordt.
UPDATE mld_melding
SET mld_melding_afgerond = 1
WHERE mld_melding_key = rec.mld_melding_key;
END;
END LOOP;
END;
/
-- view om stdmeldingen als suggest bij kenmerk te tonen.
CREATE OR REPLACE VIEW aaxx_v_stdmelding_gegevens
AS
SELECT sd.ins_srtdiscipline_key,
ins_srtdiscipline_prefix,
ins_srtdiscipline_omschrijving,
ins_discipline_key,
ins_discipline_omschrijving,
mld_stdmelding_key,
mld_stdmelding_omschrijving,
ins_discipline_omschrijving || '/' || mld_stdmelding_omschrijving
discstd,
mld_stdmelding_verwijder
FROM ins_tab_discipline d, ins_srtdiscipline sd, mld_stdmelding std
WHERE sd.ins_srtdiscipline_key = d.ins_srtdiscipline_key
AND d.ins_discipline_key = std.mld_ins_discipline_key;
--=============================================================================
-- EXPORTFUNCTIES Reserveringen NoShow.
-- Exportfunctie moet voor de putorders van de betreffende klant gescheduled worden.
-- 10 minuten na aanvang wordt bij no_show een noshow reminder gestuurd
-- 15 minuten na aanvang wordt de reservering als noshow aangemerkt en
-- wordt de ruimte vrijgegeven.
-------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE aaxx_select_noshow_reminder (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
CURSOR c (
c_srtnotificatie_key NUMBER)
IS
SELECT DISTINCT rrr.res_rsv_ruimte_host_key,
rr.res_ruimte_nr,
pf.prs_perslid_naam_full,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_key
FROM cad_v_thema_srtruimtesensor s,
res_v_rsv_ruimte_2_alg_ruimte r2a,
res_rsv_ruimte rrr,
res_ruimte rr,
prs_v_perslid_fullnames pf
WHERE waarde = 'NoShow'
AND res_rsv_ruimte_host_key = pf.prs_perslid_key
AND s.alg_ruimte_key = r2a.alg_ruimte_key
AND r2a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND r2a.res_ruimte_key = rr.res_ruimte_key
AND SYSDATE BETWEEN rrr.res_rsv_ruimte_van
AND rrr.res_rsv_ruimte_tot
AND rrr.res_rsv_ruimte_van < SYSDATE - 1 / (24 * 6) -- verder dan tien minuten
AND rrr.res_rsv_ruimte_van > SYSDATE - 2 / (24 * 6) -- niet verder dan twintig minuten
AND NOT EXISTS
(SELECT fac_tracking_key
FROM fac_tracking t
WHERE t.fac_srtnotificatie_key = c_srtnotificatie_key
AND fac_tracking_refkey = rrr.res_rsv_ruimte_key);
CURSOR c2 (
c_srtnotificatie_key NUMBER)
IS
SELECT DISTINCT r2a.res_rsv_ruimte_key
FROM cad_v_thema_srtruimtesensor s, res_v_rsv_ruimte_2_alg_ruimte r2a
WHERE waarde = 'NoShow' AND s.alg_ruimte_key = r2a.alg_ruimte_key
AND SYSDATE BETWEEN r2a.res_rsv_ruimte_van
AND r2a.res_rsv_ruimte_tot
AND r2a.res_rsv_ruimte_van < SYSDATE - 1 / (24 * 4) -- verder dan een kwartier
AND r2a.res_rsv_ruimte_van > SYSDATE - 2 / (24 * 4) -- niet verder dan een half uur
AND EXISTS
(SELECT fac_tracking_key
FROM fac_tracking t
WHERE t.fac_srtnotificatie_key = c_srtnotificatie_key
AND fac_tracking_refkey = r2a.res_rsv_ruimte_key);
v_srtnotificatie_key NUMBER;
BEGIN
SELECT fac_srtnotificatie_key
INTO v_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'CUST06'; -- herinnering noshow
FOR rec IN c (v_srtnotificatie_key)
LOOP
BEGIN
fac.putnotificationsrtprio (
NULL,
rec.res_rsv_ruimte_host_key,
'CUST06',
rec.res_reservering_key,
'No-show waarschuwing reservering ' || rec.res_ruimte_nr,
2, -- mail
NULL, -- geen specifiek mail adres
NULL, -- geen specifiek mobile nummer
rec.res_rsv_ruimte_key,
1, -- hoge prioriteit
NULL);
fac.trackaction (
'#CUST06',
rec.res_rsv_ruimte_key,
NULL,
NULL,
'No-show waarschuwing verzonden naar: '
|| rec.prs_perslid_naam_full);
END;
END LOOP;
FOR rec IN c2 (v_srtnotificatie_key)
LOOP
BEGIN
UPDATE res_rsv_ruimte
SET res_rsv_ruimte_bezoekers_shown = 0,
res_rsv_ruimte_tot =
GREATEST (
res_rsv_ruimte_van,
LEAST (res_rsv_ruimte_tot, TRUNC (SYSDATE, 'MI')))
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
UPDATE res_rsv_deel
SET res_rsv_deel_tot =
LEAST (
res_rsv_deel_tot,
(SELECT res_rsv_ruimte_tot
FROM res_rsv_ruimte
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key))
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
fac.trackaction ('RESNOS',
rec.res_rsv_ruimte_key,
NULL,
NULL,
NULL);
END;
END LOOP;
COMMIT;
END;
/
-- hulpview - om mareon-factuurverwerking zo efficient mogelijk te laten lopen registreert men vanaf dec-2022 of men bij verkeerde facturen mareon-helpdesk of leverancier om actie/aanpassing vraagt
CREATE OR REPLACE VIEW aaxx_v_fin_factuur_retour
(
fin_factuur_key,
fin_factuur_nr,
referentie_facilitor,
fin_factuur_aanmaak,
fin_factuur_verwijder,
fin_factuur_status,
fin_factuur_retour_lev,
fin_factuur_retour_lev_reden,
fin_factuur_retour_mar,
fin_factuur_retour_mar_reden,
prs_bedrijf_naam
)
AS
SELECT f.fin_factuur_key,
f.fin_factuur_nr,
v.referentie_facilitor,
v.fin_factuur_aanmaak,
f.fin_factuur_verwijder,
v.fin_factuur_status,
v.fin_factuur_retour_lev,
v.fin_factuur_retour_lev_reden,
v.fin_factuur_retour_mar,
v.fin_factuur_retour_mar_reden,
COALESCE (b_c.prs_bedrijf_naam,
COALESCE (b_o.prs_bedrijf_naam, b_b.prs_bedrijf_naam))
prs_bedrijf_naam
FROM fin_factuur f,
( SELECT fin_factuur_key,
COALESCE (opdr_id, contract_id, bestel_id)
referentie_facilitor,
fin_factuur_aanmaak,
fin_factuur_retour_lev,
fin_factuur_retour_lev_reden,
fin_factuur_status,
fin_factuur_retour_mar,
fin_factuur_retour_mar_reden
FROM aaxx_v_dwh_fin_factuur
GROUP BY fin_factuur_key,
COALESCE (opdr_id, contract_id, bestel_id),
fin_factuur_aanmaak,
fin_factuur_status,
fin_factuur_retour_lev,
fin_factuur_retour_lev_reden,
fin_factuur_retour_mar,
fin_factuur_retour_mar_reden) v,
mld_opdr o,
cnt_contract c,
bes_bestelopdr bo,
prs_bedrijf b_o,
prs_bedrijf b_c,
prs_bedrijf b_b
WHERE v.fin_factuur_key = f.fin_factuur_key
AND f.mld_opdr_key = o.mld_opdr_key(+)
AND f.cnt_contract_key = c.cnt_contract_key(+)
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
AND bo.prs_bedrijf_key = b_b.prs_bedrijf_key(+)
AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
AND (v.fin_factuur_retour_lev = 1 OR v.fin_factuur_retour_mar = 1);
--=============================================================================
-- EXPORTFUNCTIES PROJECTUREN
--=============================================================================
-- Basisgegevens van door te belasten opdrachturen
-- (uurtarief van opdracht, anders van persoon)
-- Keys: 7 (Project) uren (opdrachttype)
-- 14 Type project (eigen tabel)
-- 15 Rekening courant (eigen tabel)
-- 55 Projectnaam (kenmerksoort)
-- 186 Type project (flex opdracht)
-- 187 Verrekenen met (flex opdracht)
-- 188 Uurtarief (flex opdracht)
-- 189 ProjectKPN uit AD (flex opdracht)
-- 2 ProjectKPN uit AD (flex perslid)
-- 3 AAFM Personeelsnummber (flex perslid)
-- 6 Uurtarief intern (flex perslid)
CREATE OR REPLACE VIEW aaxx_v_exact_uren_gegevens
AS
SELECT m.mld_melding_key,
o.mld_opdr_key,
o.mld_opdr_bedrijfopdr_volgnr,
vt.ins_srtdiscipline_prefix,
vt.ins_srtdiscipline_prefix || m.mld_melding_key meldingnr,
vt.ins_srtdiscipline_prefix || m.mld_melding_key || '/'
|| o.mld_opdr_bedrijfopdr_volgnr opdrachtnr,
pn.mld_kenmerkmelding_waarde projectnaam,
tp.fac_usrdata_code projecttype_code,
tp.fac_usrdata_omschr projecttype_omschr,
DECODE (aaxx_get_user,
'SABIC', DECODE (
(SELECT l.alg_locatie_key
FROM alg_locatie l
WHERE l.alg_locatie_key = m.mld_alg_locatie_key
AND m.mld_melding_key = o.mld_melding_key),
101, -- Bergen op Zoom BOZ
'00601000',
102, -- Raamsdonksveer RDV
'00601000',
121, -- Genk AASA#66258
'00602000',
'00600000'),
kpn.prs_kostenplaats_nr)
prs_kostenplaats_nr,
kpo.mld_kenmerkopdr_waarde projectkpn_opdr,
kpp.prs_kenmerklink_waarde projectkpn_perslid,
rc.fac_usrdata_code rek_courant,
o.mld_statusopdr_key,
so.mld_statusopdr_omschrijving,
ap.prs_perslid_key,
DECODE (aaxx_get_user,
'IT', prs_perslid_nr,
pnp.prs_kenmerklink_waarde)
aafm_perslid_nr,
akpn.prs_kostenplaats_nr afdkpn,
o.mld_opdr_uren,
ou.mld_opdr_uren_key,
ou.mld_opdr_uren_datum,
ou.mld_opdr_uren_status,
lx.fac_locale_xsl_tekst uren_status_tekst,
ou.mld_opdr_uren_besteed,
ou.mld_opdr_uren_opmerking,
fac.safe_To_Number(ut.mld_kenmerkopdr_waarde) uurtarief_opdr,
DECODE (UPPER(tp.fac_usrdata_omschr), 'INTERN INTERIM MANAGEMENT PROJECT DIRECT - DIRECT', fac.safe_to_number(uti.prs_kenmerklink_waarde),
ap.prs_perslid_uurloon) uurtarief_perslid
FROM mld_melding m,
mld_stdmelding sm,
mld_discipline vg,
ins_srtdiscipline vt,
prs_kostenplaats kpn,
mld_opdr o,
mld_statusopdr so,
prs_perslid ap,
prs_v_aanwezigafdeling aa,
prs_kostenplaats akpn,
mld_opdr_uren ou,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key IN
(SELECT mld_kenmerk_key FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 55
AND mld_kenmerk_verwijder IS NULL) ) pn, -- projectnaam
(SELECT * FROM mld_kenmerkopdr WHERE mld_kenmerk_key = 187) vm, -- verrekenen met
(SELECT * FROM fac_usrdata WHERE fac_usrtab_key = 15) rc, -- rekening courant
(SELECT * FROM mld_kenmerkopdr WHERE mld_kenmerk_key = 186) ep, -- type project
(SELECT * FROM fac_usrdata WHERE fac_usrtab_key = 14) tp, -- type project
(SELECT * FROM mld_kenmerkopdr WHERE mld_kenmerk_key = 189) kpo, -- projectkpn (opdr)
(SELECT * FROM prs_kenmerklink WHERE prs_kenmerk_key = 2) kpp, -- projectkpn (perslid)
(SELECT * FROM prs_kenmerklink WHERE prs_kenmerk_key = 6) uti, -- uurtarief intern (perslid)
(SELECT * FROM mld_kenmerkopdr WHERE mld_kenmerk_key = 188) ut, -- uurtarief (opdracht)
(SELECT * FROM fac_locale_xsl WHERE fac_locale_xsl_lang = 'NL') lx, -- locale-strings
(SELECT * FROM prs_kenmerklink WHERE prs_kenmerk_key = 3) pnp -- personeelsnummer (perslid)
WHERE o.mld_typeopdr_key = 7
AND m.mld_melding_key = o.mld_melding_key
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND vg.ins_discipline_key = sm.mld_ins_discipline_key
AND vt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
AND pn.mld_melding_key(+) = m.mld_melding_key
AND so.mld_statusopdr_key = o.mld_statusopdr_key
AND kpn.prs_kostenplaats_key = o.prs_kostenplaats_key
AND vm.mld_opdr_key(+) = o.mld_opdr_key
AND rc.fac_usrdata_key(+) = fac.safe_To_Number(vm.mld_kenmerkopdr_waarde)
AND ep.mld_opdr_key(+) = o.mld_opdr_key
AND tp.fac_usrdata_key(+) = fac.safe_To_Number(ep.mld_kenmerkopdr_waarde)
AND kpo.mld_opdr_key(+) = o.mld_opdr_key
AND kpp.prs_link_key(+) = o.mld_uitvoerende_keys
AND uti.prs_link_key(+) = o.mld_uitvoerende_keys
AND pnp.prs_link_key(+) = o.mld_uitvoerende_keys
AND ut.mld_opdr_key(+) = o.mld_opdr_key
AND ap.prs_perslid_key = o.mld_uitvoerende_keys
AND aa.prs_afdeling_key = ap.prs_afdeling_key
AND akpn.prs_kostenplaats_key(+) = aa.prs_kostenplaats_key
AND ou.mld_opdr_key = o.mld_opdr_key
AND lx.fac_locale_xsl_label = 'lcl_mld_uren_status_'||ou.mld_opdr_uren_status;
-- Van fac_rapport naar exportbestand (XML)
CREATE OR REPLACE VIEW aaxx_v_export_exact_uren_xml (
result,
result_order
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = SUBSTR ('EXACT_UREN', 1, 12);
-- Exportregels (XML-structuur) in fac_rapport
CREATE OR REPLACE PROCEDURE aaxx_select_exact_uren_xml (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_kpnprefix IN VARCHAR2
)
AS
-- Status 3 = Goedgekeurd
CURSOR c
IS
SELECT *
FROM aaxx_v_exact_uren_gegevens
WHERE mld_opdr_uren_status = 3
AND prs_kostenplaats_nr LIKE p_kpnprefix||'%'
AND (aaxx_get_user <> 'IT' OR ins_srtdiscipline_prefix = 'PR')
ORDER BY mld_opdr_uren_datum, opdrachtnr;
v_order_count NUMBER;
v_amount_sum NUMBER(10,2);
v_count NUMBER;
v_bestand VARCHAR2(12);
BEGIN
v_order_count := 0;
v_amount_sum := 0;
v_count := 0;
v_bestand := SUBSTR(p_applname, 1, 12);
-- Eerst opruiming
DELETE FROM imp_log
WHERE imp_log_applicatie = p_applname;
DELETE fac_rapport
WHERE fac_rapport_node = v_bestand;
DELETE aaxx_exp_uren
WHERE COALESCE(administratie, 'GEEN') = COALESCE(p_kpnprefix, 'GEEN');
-- header
aaxx_add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
aaxx_add_xml_row (v_bestand, '<eExact>');
aaxx_add_xml_row (v_bestand, '<GLEntries>');
FOR rec IN c
LOOP
BEGIN
aaxx_add_xml_row (v_bestand, '<GLEntry>');
aaxx_add_xml_row (v_bestand, '<Journal code="24" type="M"/>');
aaxx_add_xml_row (v_bestand, '<FinEntryLine>');
aaxx_add_xml_element (v_bestand, 'Date', TO_CHAR(rec.mld_opdr_uren_datum, 'yyyy-mm-dd') );
aaxx_add_xml_row (v_bestand, '<GLAccount code="' || rec.projecttype_code || '"/>');
aaxx_add_xml_element (v_bestand, 'Description', rec.projectnaam);
aaxx_add_xml_row (v_bestand, '<Costcenter code="' || rec.prs_kostenplaats_nr || '"/>');
aaxx_add_xml_row (v_bestand, '<Resource number="'|| rec.aafm_perslid_nr ||'"/>');
aaxx_add_xml_row (v_bestand, '<Project code="' || rec.meldingnr || '" type="I" status="A">');
aaxx_add_xml_element (v_bestand, 'Description', rec.projectnaam);
aaxx_add_xml_row (v_bestand, '</Project>');
aaxx_add_xml_element (v_bestand, 'Quantity', TO_CHAR(rec.mld_opdr_uren_besteed) );
aaxx_add_xml_row (v_bestand, '<Amount>');
aaxx_add_xml_row (v_bestand, '<Currency code="EUR"/>');
aaxx_add_xml_element (v_bestand, 'Debit', TO_CHAR(rec.mld_opdr_uren_besteed*COALESCE(rec.uurtarief_opdr, rec.uurtarief_perslid) ) );
aaxx_add_xml_element (v_bestand, 'Credit', '0');
aaxx_add_xml_row (v_bestand, '</Amount>');
aaxx_add_xml_row (v_bestand, '<FinReferences>');
aaxx_add_xml_element (v_bestand, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') );
aaxx_add_xml_row (v_bestand, '</FinReferences>');
aaxx_add_xml_row (v_bestand, '</FinEntryLine>');
IF COALESCE(rec.uurtarief_opdr, rec.uurtarief_perslid) IS NULL
THEN
fac.writelog (p_applname, 'W', 'Geen uurtarief voor persoon nr ' || rec.aafm_perslid_nr, '');
END IF;
v_amount_sum := v_amount_sum + rec.mld_opdr_uren_besteed*COALESCE(rec.uurtarief_opdr, COALESCE(rec.uurtarief_perslid, 0));
aaxx_add_xml_row (v_bestand, '<FinEntryLine>');
aaxx_add_xml_row (v_bestand, '<GLAccount code="'||rec.rek_courant||'"/>');
aaxx_add_xml_element (v_bestand, 'Description', rec.projectnaam);
--aaxx_add_xml_row (v_bestand, '<Costcenter code="' || coalesce(rec.projectkpn_opdr, rec.projectkpn_perslid) || '"/>');
IF (SUBSTR (rec.rek_courant, 1, 1) = '2' OR aaxx_get_user = 'SABIC') -- Begint met '2'!
THEN
aaxx_add_xml_row (v_bestand, '<Costcenter code="' || rec.prs_kostenplaats_nr || '"/>');
ELSE
aaxx_add_xml_row (v_bestand, '<Costcenter code="' || coalesce(rec.projectkpn_opdr, rec.projectkpn_perslid) || '"/>');
END IF;
aaxx_add_xml_row (v_bestand, '<Resource number="'|| rec.aafm_perslid_nr ||'"/>');
aaxx_add_xml_row (v_bestand, '<Project code="' || rec.meldingnr || '" type="I" status="A">');
aaxx_add_xml_element (v_bestand, 'Description', rec.projectnaam);
aaxx_add_xml_row (v_bestand, '</Project>');
aaxx_add_xml_element (v_bestand, 'Quantity', '-'||TO_CHAR(rec.mld_opdr_uren_besteed) );
aaxx_add_xml_row (v_bestand, '<Amount>');
aaxx_add_xml_row (v_bestand, '<Currency code="EUR"/>');
aaxx_add_xml_element (v_bestand, 'Debit', '0');
aaxx_add_xml_element (v_bestand, 'Credit', TO_CHAR(rec.mld_opdr_uren_besteed*COALESCE(rec.uurtarief_opdr, rec.uurtarief_perslid)) );
aaxx_add_xml_row (v_bestand, '</Amount>');
aaxx_add_xml_row (v_bestand, '<FinReferences>');
aaxx_add_xml_element (v_bestand, 'DocumentDate', SYSDATE);
aaxx_add_xml_row (v_bestand, '</FinReferences>');
aaxx_add_xml_row (v_bestand, '</FinEntryLine>');
aaxx_add_xml_row (v_bestand, '</GLEntry>');
END;
INSERT INTO aaxx_exp_uren
(mld_opdr_uren_key, administratie)
VALUES
(rec.mld_opdr_uren_key, p_kpnprefix);
v_order_count := v_order_count + 1;
END LOOP;
aaxx_add_xml_row (v_bestand, '</GLEntries>');
aaxx_add_xml_row (v_bestand, '</eExact>');
fac.writelog (p_applname, 'S', 'Exact export uitgevoerd. Aantal regels: ' || v_order_count || ' Totaal bedrag: ' || v_amount_sum, '');
END;
/
-- AAIT#22483: kenmerken van urenopdrachten vullen vanuit personeelsgegevens,
-- t.b.v. DWH-views
CREATE OR REPLACE PROCEDURE aaxx_select_dwh_set_kenmerken (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_aanduiding VARCHAR2 (100);
CURSOR c_flex
IS
SELECT 'PR'||o.mld_melding_key||'/'||o.mld_opdr_bedrijfopdr_volgnr opdrachtnr,
o.mld_opdr_key,
kpo.mld_kenmerkopdr_waarde projectkpn_opdr,
kpp.prs_kenmerklink_waarde projectkpn_perslid,
ut.mld_kenmerkopdr_waarde uurtarief_opdr,
DECODE (UPPER(tp.fac_usrdata_omschr),
'INTERN INTERIM MANAGEMENT PROJECT DIRECT - DIRECT', fac.safe_to_number(uti.prs_kenmerklink_waarde),
ap.prs_perslid_uurloon) uurtarief_perslid
FROM mld_opdr o,
prs_v_aanwezigperslid ap,
(SELECT *
FROM mld_kenmerkopdr
WHERE mld_kenmerk_key = 189) kpo, -- projectkpn (opdr)
(SELECT *
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 2) kpp, -- projectkpn (perslid)
(SELECT *
FROM mld_kenmerkopdr
WHERE mld_kenmerk_key = 188) ut, -- uurtarief (opdracht)
(SELECT mld_opdr_key, fac_usrdata_omschr
FROM fac_usrdata ud, mld_kenmerkopdr ko
WHERE ud.fac_usrtab_key = 14
AND ko.mld_kenmerk_key = 186
AND ud.fac_usrdata_key = fac.safe_To_Number(ko.mld_kenmerkopdr_waarde)
) tp, -- type project
(SELECT prs_link_key prs_perslid_key, prs_kenmerklink_waarde
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 6) uti -- uurtarief intern (perslid)
WHERE o.mld_typeopdr_key = 7 -- (Project) uren
AND kpo.mld_opdr_key(+) = o.mld_opdr_key
AND ut.mld_opdr_key(+) = o.mld_opdr_key
AND tp.mld_opdr_key(+) = o.mld_opdr_key
AND kpp.prs_link_key = o.mld_uitvoerende_keys
AND ap.prs_perslid_key = o.mld_uitvoerende_keys
AND ap.prs_perslid_key = uti.prs_perslid_key(+);
BEGIN
-- Project-KPN en uurtarief vastleggen
FOR rec IN c_flex
LOOP
BEGIN
v_aanduiding := rec.opdrachtnr;
IF (rec.projectkpn_opdr IS NULL)
THEN
IF (rec.projectkpn_perslid IS NULL)
THEN
fac.writelog (p_applname,
'W',
v_aanduiding||': Geen project-KPN bekend!',
'');
ELSE
aaxx_set_kenmerk('MLD', 189, rec.mld_opdr_key, rec.projectkpn_perslid, 0);
END IF;
END IF;
IF (rec.uurtarief_opdr IS NULL)
THEN
IF(rec.uurtarief_perslid IS NULL)
THEN
fac.writelog (p_applname,
'W',
v_aanduiding||': Geen uurtarief bekend!',
'');
ELSE
aaxx_set_kenmerk('MLD', 188, rec.mld_opdr_key, rec.uurtarief_perslid, 0);
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error '||oracle_err_num||'/'||oracle_err_mes||')';
fac.writelog (p_applname,
'E',
v_aanduiding || ': ' || v_errormsg,
'');
END;
END LOOP;
END aaxx_select_dwh_set_kenmerken;
/
-- Ge<47>xporteerde uren op Verwerkt zetten en uurtarief + kostenplaats vastleggen bij
-- opdracht (kopi<70>ren van perslid).
-- AAIT#26399: Naast het op Verwerkt zetten van de kostenboekingen tevens voor
-- AAIT#35694: ALLEEN de uren op '5130976', '5101200', '4130976', '4370901', '4370904', '0100024' en '4130990') de tegenboeking aanmaken/opslaan!
---- Onder INLO#75512 is dit aangevuld met 5130996 (keuzeoptie 'implementatie')
---- Let op: Als er voor een nieuw project-rekeningnr een dekking/tegenboeking aangemaakt moet worden in aaxx_exp_uren_dekking dan moet
---- dit bij de maandelijkse verwerking in AAIT aangevuld worden op de zogenaamde coveringcode (zie aait_select_uren_dekking_xml)
CREATE OR REPLACE PROCEDURE aaxx_export_verwerk_exact_uren (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2,
p_kpnprefix IN VARCHAR2
)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_count NUMBER;
v_logdate DATE;
BEGIN
v_logdate := SYSDATE;
-- Goedgekeurde en ge<67>xporteerde urenregistraties op verwerkt zetten.
-- Status 4 = Verwerkt
UPDATE mld_opdr_uren
SET mld_opdr_uren_status = 4
WHERE mld_opdr_uren_key IN
(SELECT mld_opdr_uren_key
FROM aaxx_exp_uren
WHERE COALESCE (administratie, 'GEEN') =
COALESCE (p_kpnprefix, 'GEEN'));
-- Goedgekeurde improductieve uren op verwerkt zetten.
-- Status 3 = Goedgekeurd
-- Status 4 = Verwerkt
UPDATE mld_opdr_uren
SET mld_opdr_uren_status = 4
WHERE mld_impropdr_key IS NOT NULL AND mld_opdr_uren_status = 3;
COMMIT;
-- AAIT#26399: Van de hierboven verwerkte/geexporteerde uren wordt voor de
-- regels op gedefinieerde projecten (hardgecodeerd!) tot slot
-- nog een dekkingsregel aangemaakt.
-- Het leverende account wordt bepaald door het gedeelte achter
-- de slash ('/') in de 'Rek. Courant'-eigen tabel!
INSERT INTO aaxx_exp_uren_dekking (aanmaak,
mld_opdr_uren_key,
mld_opdr_uren_datum,
projecttype,
rek_courant,
kostenplaats,
perslid_nr,
projectcode,
projectnaam,
uren_besteed,
uurtarief,
lev_account)
SELECT SYSDATE,
ug.mld_opdr_uren_key,
ug.mld_opdr_uren_datum,
SUBSTR (ug.projecttype_code, 1, 10),
SUBSTR (ug.rek_courant, 1, 10),
SUBSTR (COALESCE (ug.projectkpn_opdr, ug.projectkpn_perslid), 1 , 30),
SUBSTR (ug.aafm_perslid_nr, 1, 30),
SUBSTR (ug.meldingnr, 1, 20),
SUBSTR (ug.projectnaam, 1, 30),
ug.mld_opdr_uren_besteed,
COALESCE (ug.uurtarief_opdr, ug.uurtarief_perslid),
COALESCE (
SUBSTR (
TRIM(SUBSTR (ud.fac_usrdata_omschr,
INSTR (ud.fac_usrdata_omschr, '/') + 1)),
1,
30
),
'XXX'
)
FROM aaxx_exp_uren u, aaxx_v_exact_uren_gegevens ug, fac_usrdata ud
WHERE COALESCE (u.administratie, 'GEEN') =
COALESCE (p_kpnprefix, 'GEEN')
AND u.mld_opdr_uren_key = ug.mld_opdr_uren_key
AND ug.projecttype_code IN ('5130976', '5101200', '4130976', '4370901', '4370904', '0100024', '4130990', '5130996')
AND TRIM (ug.rek_courant) = TRIM (ud.fac_usrdata_code)
AND ud.fac_usrtab_key = 15 -- Rek. Courant-tabel
AND SUBSTR (ud.fac_usrdata_code, 1, 1) = '2' -- Begint met '2'!
AND ud.fac_usrdata_verwijder IS NULL
AND NOT EXISTS
(SELECT 1
FROM aaxx_exp_uren_dekking
WHERE mld_opdr_uren_key = ug.mld_opdr_uren_key);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('UREN',
'E',
v_errormsg,
'');
END;
/
--=============================================================================
-- EXPORTFUNCTIES BUNDEL_CATERING
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_export_bundel_catering (
result,
result_order
)
AS
SELECT REPLACE(REPLACE('RES'
|| ';'
|| SYSDATE
|| ';'
|| SUBSTR (prs_kostenplaats_nr, 1, 30)
|| ';'
|| SUBSTR (prs_kostenplaats_omschrijving, 1, 60)
|| ';'
|| SUBSTR (prs_kostensoort_oms, 1, 60)
|| ';'
|| rra.res_rsv_artikel_aantal || ' * ' || ra.res_artikel_omschrijving
|| ';'
|| to_char(rra.res_rsv_artikel_prijs)
|| ';'
|| to_char(ra.res_artikel_inkoopprijs)
|| ';'
|| rra.res_rsv_artikel_key
,CHR (13), ''), CHR (10), '<ret>'), res_rsv_artikel_key
FROM res_rsv_ruimte rrr,
res_rsv_artikel rra,
res_artikel ra,
ins_tab_discipline d,
prs_kostensoort ks,
prs_kostenplaats k
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_rsv_artikel_verwijder IS NULL
AND rra.res_status_bo_key = 5
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = d.ins_discipline_key
AND d.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key
AND NVL (rra.res_rsv_artikel_levering,
TO_DATE ('20070101', 'yyyymmdd')
) <
TO_DATE ( TO_CHAR (SYSDATE, 'yyyy')
|| TO_CHAR (SYSDATE, 'mm')
|| '01',
'yyyymmdd'
);
-- Procedure om alle geexporteerde facturen naar status verwerkt te zetten.
CREATE OR REPLACE PROCEDURE aaxx_export_bundel_catering (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
c_catmld_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE := MLD_T_UITVOERTIJD(2, 'D');
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_laatste_export DATE;
v_mld_melding_key NUMBER;
v_prs_bedrijf_key NUMBER;
v_prs_kostenplaats_key NUMBER;
v_mld_opdr_bedrijfopdr_volgnr NUMBER;
v_aanvrager NUMBER;
v_mld_workorder_key NUMBER;
BEGIN
-- Volgens mij (AEG) wordt deze niet meer gebruikt.
-- JM: Klopt. In geval BUNDEL_CATERING wordt dit opgezet in de CUST (zie AASA en INLO bijv.)
COMMIT;
END;
/
--=============================================================================
-- EXPORTFUNCTIES BUDGET TRACKER
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_export_budget_tracker (result, result_order)
AS
SELECT '"nummer";' ||
'"datum";' ||
'"status";' ||
'"laatste_actie";' ||
'"vakgroeptype";' ||
'"vakgroep";' ||
'"kostensoort_code";' ||
'"kostensoort_omschrijving";' ||
'"financiele_waarde";' ||
'"kostensoortgroep_omschrijving";' ||
'"melding";' ||
'"omschrijving";' ||
'"organisatie";' ||
'"naam";' ||
'"kostenplaats";' ||
'"kostenplaats_omschrijving";' ||
'"plaats";' ||
'"locatie";' ||
'"gebouw";' ||
'"code_exact";' ||
'"opdracht_status";' ||
'"uitvoerende";' ||
'"contactpersoon";' ||
'"uren";' ||
'"uurloon";' ||
'"materiaal";' ||
'"kosten";' ||
'"gefactureerd"', 0
FROM dual
UNION ALL
SELECT REPLACE(REPLACE( '"'
|| nummer
|| '";"'
|| datum
|| '";"'
|| status
|| '";"'
|| laatste_actie
|| '";"'
|| vakgroeptype
|| '";"'
|| vakgroep
|| '";"'
|| kostensoort_code
|| '";"'
|| kostensoort_omschrijving
|| '";"'
|| financiele_waarde
|| '";"'
|| kostensoortgroep_omschrijving
|| '";"'
|| melding
|| '";"'
|| aaxx_exp_escape (omschrijving)
|| '";"'
|| organisatie
|| '";"'
|| naam
|| '";"'
|| kostenplaats
|| '";"'
|| kostenplaats_omschrijving
|| '";"'
|| plaats
|| '";"'
|| locatie
|| '";"'
|| gebouw
|| '";"'
|| code_exact
|| '";"'
|| opdracht_status
|| '";"'
|| uitvoerende
|| '";"'
|| contactpersoon
|| '";"'
|| uren
|| '";"'
|| uurloon
|| '";"'
|| materiaal
|| '";"'
|| kosten
|| '";"'
|| gefactureerd
|| '"',CHR (13), ''), CHR (10), '<ret>'),
1
FROM (SELECT m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr nummer,
TO_CHAR (o.mld_opdr_datumbegin, 'DD-MM-YYYY HH24:MI') datum,
(SELECT mld_statusopdr_omschrijving
FROM mld_statusopdr s
WHERE o.mld_statusopdr_key = s.mld_statusopdr_key)
status,
TO_CHAR (mld.getopdrachtstatusdate (o.mld_opdr_key, mld_statusopdr_key)
, 'DD-MM-YYYY HH24:MI'
)
laatste_actie,
sd.ins_srtdiscipline_prefix vakgroeptype,
md.ins_discipline_omschrijving vakgroep,
COALESCE (kstd.prs_kostensoort_oms, kvg.prs_kostensoort_oms)
kostensoort_code,
COALESCE (kstd.prs_kostensoort_opmerking,
kvg.prs_kostensoort_opmerking
)
kostensoort_omschrijving,
COALESCE (kstd.prs_kostensoort_refcode,
kvg.prs_kostensoort_refcode
)
financiele_waarde,
(SELECT prs_kostensoortgrp_oms FROM prs_kostensoortgrp ksg
WHERE ksg.prs_kostensoortgrp_key = COALESCE (kstd.prs_kostensoortgrp_key, kvg.prs_kostensoortgrp_key)) kostensoortgroep_omschrijving,
std.mld_stdmelding_omschrijving melding,
SUBSTR (REPLACE (mld_melding_omschrijving,
CHR (13) || CHR (10),
'<ret>'
),
1,
2000
)
omschrijving,
(SELECT d.prs_afdeling_naam
FROM prs_v_afdeling d
WHERE p.prs_afdeling_key = d.prs_afdeling_key)
organisatie,
p.prs_perslid_naam
|| DECODE (NVL (p.prs_perslid_voorletters, ''),
'', '',
', ' || p.prs_perslid_voorletters)
|| DECODE (NVL (p.prs_perslid_tussenvoegsel, ''),
'', '',
' ' || p.prs_perslid_tussenvoegsel)
|| DECODE (NVL (p.prs_perslid_voornaam, ''),
'', '',
' (' || p.prs_perslid_voornaam || ')')
naam,
(SELECT k.prs_kostenplaats_nr
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key)
kostenplaats,
(SELECT k.prs_kostenplaats_omschrijving
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key)
kostenplaats_omschrijving,
(SELECT alg_locatie_code
FROM alg_locatie l
WHERE m.mld_alg_locatie_key = l.alg_locatie_key)
|| (SELECT CASE COALESCE(G.alg_gebouw_code, '')
WHEN '' THEN '' ELSE '-' || G.alg_gebouw_code
END
|| CASE COALESCE(G.alg_verdieping_code, '')
WHEN '' THEN '' ELSE '-' || G.alg_verdieping_code
END
|| CASE COALESCE(G.alg_ruimte_nr, '')
WHEN '' THEN '' ELSE '-' || G.alg_ruimte_nr
END
FROM alg_v_allonrgoed_gegevens g
WHERE m.mld_alg_onroerendgoed_keys = g.alg_onroerendgoed_keys) plaats,
alg_locatie_code locatie,
alg_gebouw_code gebouw,
COALESCE ((SELECT exact_code
FROM aaxx_v_exact_code_gebouw ogk
WHERE ogk.alg_gebouw_key = v.alg_gebouw_key)
, v.alg_gebouw_code)
code_exact,
(SELECT mld_statusopdr_omschrijving
FROM mld_statusopdr so
WHERE o.mld_statusopdr_key = so.mld_statusopdr_key)
opdracht_status,
COALESCE ( (SELECT prs_bedrijf_naam
FROM prs_bedrijf b
WHERE o.mld_uitvoerende_keys = prs_bedrijf_key),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all
WHERE o.mld_uitvoerende_keys = prs_perslid_key)
)
uitvoerende,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE o.prs_perslid_key = pf.prs_perslid_key)
contactpersoon,
replace(to_char (o.mld_opdr_uren, '999999990.99'), '.', ',') uren,
replace(to_char (o.mld_opdr_uurloon, '999999990.99'), '.', ',') uurloon,
replace(to_char (o.mld_opdr_materiaal, '999999990.99'), '.', ',') materiaal,
replace(to_char (o.mld_opdr_kosten, '999999990.99'), '.', ',') kosten,
COALESCE ( (SELECT trim(to_char (SUM (f.fin_factuur_totaal), '999999990.99'))
FROM aaxx_v_aanwezigfactuur f
WHERE f.mld_opdr_key = o.mld_opdr_key), '0'
)
gefactureerd
FROM mld_melding m,
mld_discipline md,
ins_srtdiscipline sd,
alg_v_allonrgoed_gegevens v,
alg_locatie l,
alg_district di,
prs_perslid p,
mld_opdr o,
mld_stdmelding std,
prs_kostensoort kstd,
prs_kostensoort kvg
WHERE m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND l.alg_district_key = di.alg_district_key(+)
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)
AND m.mld_alg_onroerendgoed_keys = v.alg_onroerendgoed_keys(+)
AND m.prs_perslid_key = p.prs_perslid_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = md.ins_discipline_key
AND m.mld_melding_key = o.mld_melding_key
AND std.prs_kostensoort_key = kstd.prs_kostensoort_key(+)
AND md.prs_kostensoort_key = kvg.prs_kostensoort_key(+)
UNION ALL
SELECT cnt_contract_nummer_intern,
TO_CHAR (c.cnt_contract_looptijd_van, 'DD-MM-YYYY HH24:MI') datum,
DECODE (SIGN (cnt_contract_looptijd_van - SYSDATE),
1,
'Toekomst',
-1,
DECODE (SIGN (cnt_contract_looptijd_tot - SYSDATE),
1,
'Actueel',
-1,
'Verlopen'
)
)
status,
TO_CHAR (c.cnt_contract_looptijd_tot, 'DD-MM-YYYY HH24:MI')
laatste_actie,
'Contract' vakgroeptype,
d.ins_discipline_omschrijving vakgroep,
k.prs_kostensoort_oms kostensoort_code,
k.prs_kostensoort_opmerking kostensoort_omschrijving,
k.prs_kostensoort_refcode financiele_waarde,
(SELECT prs_kostensoortgrp_oms FROM prs_kostensoortgrp ksg
WHERE ksg.prs_kostensoortgrp_key = k.prs_kostensoortgrp_key) kostensoortgroep_omschrijving,
c.cnt_contract_omschrijving melding,
SUBSTR (REPLACE (cnt_contract_document, CHR (13) || CHR (10), '<ret>'),
1,
2000
)
omschrijving,
prs_afdeling_naam organisatie,
p.prs_perslid_naam
|| DECODE (NVL (p.prs_perslid_voorletters, ''),
'', '',
', ' || p.prs_perslid_voorletters)
|| DECODE (NVL (p.prs_perslid_tussenvoegsel, ''),
'', '',
' ' || p.prs_perslid_tussenvoegsel)
|| DECODE (NVL (p.prs_perslid_voornaam, ''),
'', '',
' (' || p.prs_perslid_voornaam || ')')
naam,
kp.prs_kostenplaats_nr kostenplaats,
kp.prs_kostenplaats_omschrijving kostenplaats_omschrijving,
alg_locatie_code || '-' || alg_gebouw_code plaats,
alg_locatie_code locatie,
alg_gebouw_code gebouw,
COALESCE ((SELECT exact_code
FROM aaxx_v_exact_code_gebouw ogk
WHERE ogk.alg_gebouw_key = g.alg_gebouw_key)
, g.alg_gebouw_code)
code_exact,
'-' opdracht_status,
prs_bedrijf_naam uitvoerende,
'-' contactpersoon,
'0' uren,
'0' uurloon,
'0' materiaal,
COALESCE ( trim(to_char (DECODE (cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht)
* c.cnt_contract_kosten), '999999990.99'))
,
'0'
)
kosten,
COALESCE ( trim(to_char (DECODE (cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht)
* (SELECT SUM(fin_factuur_totaal)
FROM aaxx_v_aanwezigfactuur f
WHERE f.cnt_contract_key = c.cnt_contract_key
)), '999999990.99'))
,
'0'
)
gefactureerd
FROM cnt_contract c,
cnt_discipline d,
cnt_contract_plaats cp,
prs_bedrijf b,
prs_kostensoort k,
prs_kostenplaats kp,
prs_afdeling a,
prs_perslid p,
alg_locatie l,
alg_gebouw g,
prs_contactpersoon cop,
(SELECT cnt_contract_key,
SUM (cnt_contract_plaats_gewicht) cnt_contract_plaats_gewicht
FROM cnt_contract_plaats
GROUP BY cnt_contract_key) cnt_gew,
(SELECT cp.cnt_contract_plaats_key, alg_locatie_key, alg_gebouw_key
FROM alg_v_allonroerendgoed aog, cnt_contract_plaats cp
WHERE aog.alg_type = cp.cnt_alg_plaats_code
AND aog.alg_onroerendgoed_keys = cp.cnt_alg_plaats_key) cog
WHERE c.cnt_contract_key = cp.cnt_contract_key(+)
AND c.cnt_contract_key = cnt_gew.cnt_contract_key(+)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.ins_discipline_key = d.ins_discipline_key
AND d.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND c.prs_afdeling_key_eig = a.prs_afdeling_key
AND c.prs_perslid_key_beh = p.prs_perslid_key
AND cp.cnt_contract_plaats_key = cog.cnt_contract_plaats_key(+)
AND c.prs_contactpersoon_key = cop.prs_contactpersoon_key(+)
AND cog.alg_locatie_key = l.alg_locatie_key(+)
AND cog.alg_gebouw_key = g.alg_gebouw_key(+)
AND cnt_contract_verwijder IS NULL
);
--=============================================================================
-- EXPORTFUNCTIES MJB
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_mjb_assets
AS
SELECT ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
sd.ins_srtdeel_omschrijving,
d.ins_deel_omschrijving,
d.ins_deel_opmerking,
l.alg_locatie_code,
d.alg_gebouw_upper,
d.alg_verdieping_code,
d.alg_ruimte_nr,
d.ins_deel_aantal,
aaxx_get_kenmerk (
'INS',
(SELECT ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Plaats'
AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_verwijder IS NULL),
d.ins_deel_key)
plaats,
aaxx_get_kenmerk (
'INS',
(SELECT ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Bouwjaar'
AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_verwijder IS NULL),
d.ins_deel_key)
bouwjaar,
aaxx_get_kenmerk (
'INS',
(SELECT ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Capaciteit'
AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_verwijder IS NULL),
d.ins_deel_key)
capaciteit,
aaxx_get_kenmerk (
'INS',
(SELECT ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.INS_SRTKENMERK_OMSCHRIJVING =
'Datum laatste asset survey'
AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_verwijder IS NULL),
d.ins_deel_key)
laatste_survey,
aaxx_get_kenmerk (
'INS',
(SELECT ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Fabricaat'
AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_verwijder IS NULL),
d.ins_deel_key)
fabricaat,
aaxx_get_kenmerk (
'INS',
(SELECT ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Gewenste Conditie'
AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_verwijder IS NULL),
d.ins_deel_key)
gewenste_conditie,
id.ins_deel_mjb_score1
huidige_conditie,
aaxx_get_kenmerk (
'INS',
(SELECT ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Kritische asset'
AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_verwijder IS NULL),
d.ins_deel_key)
kritische_asset,
aaxx_get_kenmerk (
'INS',
(SELECT ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.INS_SRTKENMERK_OMSCHRIJVING =
'Referentienummer leverancier'
AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_verwijder IS NULL),
d.ins_deel_key)
referentie_leverancier,
aaxx_get_kenmerk (
'INS',
(SELECT ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Type'
AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_verwijder IS NULL),
d.ins_deel_key)
type_asset,
aaxx_get_kenmerk (
'INS',
(SELECT ins_kenmerk_key
FROM ins_kenmerk k, ins_srtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND sk.INS_SRTKENMERK_OMSCHRIJVING = 'Eenheid'
AND k.INS_SRTINSTALLATIE_KEY = d.ins_discipline_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_verwijder IS NULL),
d.ins_deel_key)
eenheid,
COALESCE(g.alg_gebouw_vervaldatum, d.ins_deel_vervaldatum) vervaldatum,
g.alg_gebouw_vervaldatum vervaldatum_gebouw,
d.ins_deel_vervaldatum vervaldatum_object,
d.ins_deel_key
FROM ins_v_deel_gegevens d,
ins_srtdeel sd,
alg_locatie l,
alg_gebouw g,
ins_deel id
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND d.alg_locatie_key = l.alg_locatie_key
AND d.alg_gebouw_key = g.alg_gebouw_key
AND d.ins_deel_key = id.ins_deel_key
AND id.ins_deel_verwijder IS NULL
AND UPPER(d.ins_discipline_omschrijving) = 'GEBOUWOBJECTEN';
-- Basislijst voor Assetmanagement - Start opstellen nieuwe begroting mjob + als checklist bij upload mjob-excel naar facilitor
CREATE OR REPLACE VIEW AAXX_V_MJB_TAKEN
(
INS_SRTCONTROLE_KEY,
INS_DEEL_KEY,
OBJECTIDENTIFICATIE,
OMSCHRIJVING,
CATEGORIE,
TAAKOMSCHRIJVING,
GROEP,
PRIORITEIT,
PERCENTAGE,
TAAKOPMERKING_X,
KOSTEN_MATERIAAL,
DIENST,
BEDRIJF,
PERIODE_EENHEID,
PERIODE_FREQUENCY,
CYCLUS_STARTDATUM,
TAAK_KERENGERUND,
STATUS_LAATST_GERUNDE_TAAK,
INS_DEELSRTCONTROLE_KEY,
PLANDATUM,
MJOB_DOORGESCHOVEN,
GEPLAND_OP,
GEPLAND_DOOR,
INBEHANDELING,
INBEHANDELING_DOOR,
BEHANDELAAR_OPTAAK,
GEREEDDATUM,
ACTIE_VEREIST,
TAAKAFHANDELING,
AFGEMELD,
AFGEMELD_DOOR,
VERWERKT,
VERWERKT_DOOR,
UITVOERDATUM_ORIGINEEL,
TELAAT,
FREEZE_JAAR,
KOSTEN_MATERIAAL_FREEZE,
OPMERKING,
FILTERDATUM_GEREED,
CYLCUS_VOLGENDE_DATUM,
CYCLUS_EINDDATUM,
EINDATUM_GEBOUW,
EINDDATUM_OBJECT,
EINDDATUM_OBJECTTAAK,
EINDDATUM_BASISTAAK,
FILTER_VERVALLEN,
LOCATIE,
GEBOUW,
MJOB
)
AS
SELECT x.ins_srtcontrole_key,
x.ins_deel_key,
d.ins_deel_omschrijving
objectidentificatie,
d.ins_deel_opmerking
omschrijving,
di.ins_discipline_omschrijving
categorie,
sc.ins_srtcontrole_omschrijving
taakomschrijving,
COALESCE (ins_srtcontroledl_xcp_groep, sc.ins_srtcontrole_groep)
groep,
sc.ins_srtcontrole_level
prioriteit,
COALESCE(ins_srtcontroledl_xcp_perc, sc.ins_srtcontrole_percentage)
percentage,
x.ins_srtcontroledl_xcp_opmerk
taakopmerking_X,
COALESCE (ins_srtcontroledl_xcp_materia, sc.ins_srtcontrole_materiaal)
kosten_materiaal,
prs_dienst_omschrijving
Dienst,
(SELECT LISTAGG (b.prs_bedrijf_naam, ',')
WITHIN GROUP (ORDER BY b.prs_bedrijf_naam)
AS bedrijf
FROM prs_bedrijf b, prs_bedrijfdienstlocatie bdl
WHERE pd.prs_dienst_key = bdl.prs_dienst_key
AND bdl.prs_bedrijf_key = b.prs_bedrijf_key
AND ( bdl.alg_gebouw_key = d.alg_gebouw_key
OR bdl.alg_locatie_key = d.alg_locatie_key))
Bedrijf,
DECODE (COALESCE (ins_srtcontroledl_xcp_eenheid, sc.ins_srtcontrole_eenheid),
4, 'J',
3, 'M',
2, 'W',
1, 'D')
periode_eenheid,
COALESCE(ins_srtcontroledl_xcp_periode, sc.ins_srtcontrole_periode)
periode_frequency,
ins_srtcontroledl_xcp_startdat
AS cyclus_startdatum,
(SELECT COUNT (dc.ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole dc
WHERE dc.ins_deel_key = d.ins_deel_key
AND dc.ins_srtcontrole_key = x.ins_srtcontrole_key)
taak_kerengerund,
v.status_laatst_gerunde_taak,
v.ins_deelsrtcontrole_key,
v.plandatum,
CASE WHEN v.mjob_doorgeschoven IS NOT NULL THEN TO_CHAR(v.ins_deelsrtcontrole_freezedate,'yyyy') ELSE NULL END mjob_doorgeschoven,
v.gepland_op,
v.gepland_door,
v.inbehandeling,
v.inbehandeling_door,
v.behandelaar_optaak,
v.gereeddatum,
v.actie_vereist,
v.taakafhandeling,
v.afgemeld,
v.afgemeld_door,
v.verwerkt,
v.verwerkt_door,
v.uitvoerdatum_origineel,
v.telaat,
v.jaar_freeze,
v.kosten_materiaal_freeze,
v.opmerking,
v.filterdatum_gereed,
CASE WHEN dip.ctr_disc_params_ismjob = 1 AND v.status_laatst_gerunde_taak = 'Voltooid' AND v.ins_controlemode_success = 0 THEN TO_DATE('01-01-' || v.freeze_year_facilitor, 'DD-MM-YYYY')
WHEN dip.ctr_disc_params_ismjob = 1 AND v.status_laatst_gerunde_taak = 'Ingepland' THEN
fac.nextcyclusdate (v.plandatum, -- datum
COALESCE (ins_srtcontroledl_xcp_eenheid, sc.ins_srtcontrole_eenheid), -- intervalmode = 1
COALESCE (ins_srtcontroledl_xcp_eenheid, sc.ins_srtcontrole_eenheid), -- eenheid jaar = 4
COALESCE(ins_srtcontroledl_xcp_periode, sc.ins_srtcontrole_periode), -- p_periode
COALESCE(ins_srtcontroledl_xcp_bits, sc.ins_srtcontrole_bits), -- x.ins_srtcontrole_bits,
1, -- step = 1
1) -- mjob = 1
WHEN dip.ctr_disc_params_ismjob = 1 AND v.status_laatst_gerunde_taak = 'In behandeling' THEN
fac.nextcyclusdate (v.ins_deelsrtcontrole_freezedate, -- datum
COALESCE (ins_srtcontroledl_xcp_eenheid, sc.ins_srtcontrole_eenheid), -- intervalmode = 1
COALESCE (ins_srtcontroledl_xcp_eenheid, sc.ins_srtcontrole_eenheid), -- eenheid jaar = 4
COALESCE(ins_srtcontroledl_xcp_periode, sc.ins_srtcontrole_periode), -- p_periode
COALESCE(ins_srtcontroledl_xcp_bits, sc.ins_srtcontrole_bits), -- x.ins_srtcontrole_bits,
1, -- step = 1
1) -- mjob = 1
ELSE fac.nextcyclusdatedeel (d.ins_deel_key, sc.ins_srtcontrole_key,1)
END
cylcus_volgende_datum,
COALESCE(g.alg_gebouw_vervaldatum, d.ins_deel_vervaldatum, x.ins_srtcontroledl_xcp_eind, sc.ins_srtcontrole_eind)
AS cyclus_einddatum,
g.alg_gebouw_vervaldatum,
d.ins_deel_vervaldatum,
x.ins_srtcontroledl_xcp_eind,
sc.ins_srtcontrole_eind,
CASE WHEN g.alg_gebouw_vervaldatum IS NULL AND d.ins_deel_vervaldatum IS NULL AND x.ins_srtcontroledl_xcp_eind IS NULL AND sc.ins_srtcontrole_eind IS NULL
THEN 'actueel'
WHEN COALESCE(g.alg_gebouw_vervaldatum, TO_DATE('31-12-3000', 'DD-MM-YYYY')) <= TRUNC(SYSDATE)
OR COALESCE(d.ins_deel_vervaldatum, TO_DATE('31-12-3000', 'DD-MM-YYYY')) <= TRUNC(SYSDATE)
OR COALESCE(x.ins_srtcontroledl_xcp_eind, sc.ins_srtcontrole_eind, TO_DATE('31-12-3000', 'DD-MM-YYYY')) <= TRUNC(SYSDATE)
THEN 'vervallen - verleden'
WHEN COALESCE(g.alg_gebouw_vervaldatum, TO_DATE('31-12-3000', 'DD-MM-YYYY')) > TRUNC(SYSDATE)
AND COALESCE(d.ins_deel_vervaldatum, TO_DATE('31-12-3000', 'DD-MM-YYYY')) > TRUNC(SYSDATE)
AND COALESCE(x.ins_srtcontroledl_xcp_eind, sc.ins_srtcontrole_eind, TO_DATE('31-12-3000', 'DD-MM-YYYY')) > TRUNC(SYSDATE)
THEN 'vervallen - toekomst'
ELSE 'nog bepalen'
END
filter_vervallen,
l.alg_locatie_omschrijving,
g.alg_gebouw_code||'-'||g.alg_gebouw_naam,
dip.ctr_disc_params_ismjob
FROM ins_srtcontrole sc,
ins_srtcontroledl_xcp x,
ins_v_deel_gegevens d,
alg_locatie l,
alg_gebouw g,
ins_tab_discipline di,
ctr_disc_params dip,
prs_dienst pd,
( SELECT dc.ins_deelsrtcontrole_key,
dc.ins_deel_key,
dc.ins_srtcontrole_key,
DECODE (dc.ins_deelsrtcontrole_status,
0, 'Ingepland',
2, 'In behandeling',
5, 'Afgemeld',
6, 'Voltooid')
status_laatst_gerunde_taak,
dc.ins_deelsrtcontrole_plandatum
plandatum,
'<geen tracking van..>'
gepland_op,
'<geen tracking van..>'
gepland_door,
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCBE'
AND fac_tracking_refkey =
dc.ins_deelsrtcontrole_key)
inbehandeling,
(SELECT p.prs_perslid_voornaam
|| ' '
|| p.prs_perslid_naam
FROM fac_srtnotificatie sn,
fac_tracking ft,
prs_perslid p
WHERE ft.prs_perslid_key = p.prs_perslid_key
AND ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCBE'
AND ft.fac_tracking_refkey =
dc.ins_deelsrtcontrole_key)
inbehandeling_door,
(SELECT p.prs_perslid_voornaam
|| ' '
|| p.prs_perslid_naam
FROM prs_perslid p
WHERE prs_perslid_key = dc.prs_perslid_key)
behandelaar_optaak,
dc.ins_deelsrtcontrole_datum
gereeddatum,
CASE
WHEN dc.ins_deelsrtcontrole_status = 5 THEN 'Ja'
WHEN dc.ins_deelsrtcontrole_status = 6 THEN 'Nee'
ELSE ''
END
actie_vereist,
CASE
WHEN cm.ins_controlemode_success = 1
THEN
ins_controlemode_oms || ' - Succes'
WHEN cm.ins_controlemode_success = 0
THEN
ins_controlemode_oms || ' - Geen succes'
ELSE
NULL
END
taakafhandeling,
cm.ins_controlemode_success,
fac.getsetting('mjb_freeze_year')
freeze_year_facilitor,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCAF'
AND ft.fac_tracking_refkey =
dc.ins_deelsrtcontrole_key)
afgemeld,
(SELECT p.prs_perslid_voornaam
|| ' '
|| p.prs_perslid_naam
FROM fac_srtnotificatie sn,
fac_tracking ft,
prs_perslid p
WHERE ft.prs_perslid_key = p.prs_perslid_key
AND ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCAF'
AND fac_tracking_refkey =
dc.ins_deelsrtcontrole_key)
afgemeld_door,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCVE'
AND ft.fac_tracking_refkey =
dc.ins_deelsrtcontrole_key)
verwerkt,
(SELECT p.prs_perslid_voornaam
|| ' '
|| p.prs_perslid_naam
FROM fac_srtnotificatie sn,
fac_tracking ft,
prs_perslid p
WHERE ft.prs_perslid_key = p.prs_perslid_key
AND ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCVE'
AND fac_tracking_refkey =
dc.ins_deelsrtcontrole_key)
verwerkt_door,
dc.ins_deelsrtcontrole_datum_org
uitvoerdatum_origineel,
CASE
WHEN dc.ins_deelsrtcontrole_status in (5,6)
AND COALESCE(dc.ins_deelsrtcontrole_plandatum, dc.ins_deelsrtcontrole_datum_org) < dc.ins_deelsrtcontrole_datum THEN 'Ja'
WHEN dc.ins_deelsrtcontrole_status in (5,6)
AND COALESCE(dc.ins_deelsrtcontrole_plandatum, dc.ins_deelsrtcontrole_datum_org) >= dc.ins_deelsrtcontrole_datum THEN 'Nee'
ELSE ''
END telaat,
TO_CHAR(dc.ins_deelsrtcontrole_freezedate, 'yyyy')
jaar_freeze,
dc.ins_deelsrtcontrole_freezecost
kosten_materiaal_freeze,
dc.ins_deelsrtcontrole_opmerking
opmerking,
CASE
WHEN dc.ins_deelsrtcontrole_status = 5
THEN
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCAF'
AND ft.fac_tracking_refkey =
dc.ins_deelsrtcontrole_key)
WHEN dc.ins_deelsrtcontrole_status = 6
THEN
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCVE'
AND ft.fac_tracking_refkey =
dc.ins_deelsrtcontrole_key)
ELSE
NULL
END
filterdatum_gereed,
(SELECT max(ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCUP'
AND instr(lower(ft.fac_tracking_oms),'freeze datum:')>0
AND ft.fac_tracking_refkey =
dc.ins_deelsrtcontrole_key)
mjob_doorgeschoven,
dc.ins_deelsrtcontrole_freezedate
FROM ins_deelsrtcontrole dc, ins_controlemode cm
WHERE dc.ins_deelsrtcontrole_key =
(SELECT MAX (dc2.ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole dc2
WHERE dc2.ins_deel_key = dc.ins_deel_key
AND dc2.ins_srtcontrole_key =
dc.ins_srtcontrole_key)
AND dc.ins_controlemode_key = cm.ins_controlemode_key(+)
ORDER BY dc.ins_deel_key, dc.ins_srtcontrole_key) v
WHERE sc.ins_srtcontrole_key = x.ins_srtcontrole_key
AND x.ins_deel_key = d.ins_deel_key
AND sc.ctr_discipline_key = di.ins_discipline_key
AND di.ins_discipline_key = dip.ctr_ins_discipline_key
AND sc.prs_dienst_key = pd.prs_dienst_key(+)
AND UPPER (d.ins_discipline_omschrijving) = 'GEBOUWOBJECTEN'
AND x.ins_deel_key = v.ins_deel_key(+)
AND x.ins_srtcontrole_key = v.ins_srtcontrole_key(+)
AND d.alg_locatie_key = l.alg_locatie_key
AND d.alg_gebouw_key = g.alg_gebouw_key
AND sc.ins_srtcontrole_key IN (SELECT i.ins_srtcontrole_key FROM ins_v_defined_inspect i WHERE i.ins_deel_key = d.ins_deel_key)
ORDER BY d.ins_deel_omschrijving ;
-- AAGN#76391 - MJOB-taken en controle op de gekoppelde M-meldingen
CREATE OR REPLACE VIEW AAXX_V_MJB_TAKEN_MLD
(
INS_DEEL_KEY,
OBJECTIDENTIFICATIE,
OMSCHRIJVING,
CATEGORIE,
TAAKOMSCHRIJVING,
DIENST,
BEDRIJF,
FREEZE_JAAR,
STATUS_LAATST_GERUNDE_TAAK,
INS_DEELSRTCONTROLE_KEY,
KOSTEN_MATERIAAL_FREEZE,
LOCATIE,
GEBOUW,
MJOB,
MLD_MELDING_KEY,
MLD_MELDING_NR,
MLD_HOOFDMELDING_NR,
MELDING_SORT,
MLD_MELDING_BEHANDELAAR,
MLD_MELDING_STATUS,
MARKERING_STATUS
-- AANTAL OFFERTES + STATUS
-- AANTAL OPDRACHTEN + STATUS
-- KOSTEN OPDRACHTEN
)
AS
SELECT v.ins_deel_key,
v.objectidentificatie,
v.omschrijving,
v.categorie,
v.taakomschrijving,
v.dienst,
v.bedrijf,
v.freeze_jaar,
v.status_laatst_gerunde_taak,
v.ins_deelsrtcontrole_key,
v.kosten_materiaal_freeze,
v.locatie,
v.gebouw,
v.mjob,
m.mld_melding_key,
m.mld_melding_nr,
m.mld_hoofdmelding_nr,
m.melding_sort,
m.behandelaar,
m.status,
m.markering_status
FROM aaxx_v_mjb_taken v,
(SELECT mo.ins_deelsrtcontrole_key,
m.mld_melding_key,
v.mld_statuses_omschrijving
status,
sd.ins_srtdiscipline_prefix || TO_CHAR(m.mld_melding_key)
mld_melding_nr,
COALESCE (TO_CHAR(m.mld_melding_mldgroup_key), '-')
mld_hoofdmelding_nr,
COALESCE(m.mld_melding_mldgroup_key, m.mld_melding_key) melding_sort,
m.mld_melding_datum,
m.mld_melding_einddatum,
p.prs_perslid_naam_full
behandelaar,
(CASE WHEN m.mld_melding_flag>0 THEN Lcl.L('lcl_mld_flag' || m.mld_melding_flag)
ELSE ''
END) markering_status
FROM mld_melding m, mld_melding_object mo, alg_locatie l,mld_stdmelding sm, mld_discipline d, ins_srtdiscipline sd, mld_statuses v, prs_v_perslid_fullnames p
WHERE m.mld_melding_status = v.mld_statuses_key
AND m.mld_melding_key = mo.mld_melding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.mld_melding_behandelaar_key = p.prs_perslid_key(+)
) m
WHERE v.mjob = 1
AND v.ins_deelsrtcontrole_key = m.ins_deelsrtcontrole_key
ORDER BY m.melding_sort DESC ;
CREATE OR REPLACE VIEW aaxx_v_mjb_gebreken
AS
SELECT d.ins_deel_omschrijving objectomschrijving,
sd.ins_srtdeel_omschrijving objectsoortomschrijving,
mld_melding_datum datum,
disc.ins_discipline_omschrijving vakgroep,
sm.mld_stdmelding_omschrijving stdmeldingomschrijving,
(SELECT DECODE(substr(ud.fac_usrdata_code,1,1), 'G', 1, 'S', 2, 'E', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ERNST'))) ernst,
(SELECT SUBSTR(ud.fac_usrdata_code,1,1) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'INTENSITEIT'))) intensiteit,
(SELECT SUBSTR(ud.fac_usrdata_volgnr,1,1) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'OMVANG'))) omvang,
(SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT1'))) aspectwaardeVG,
(SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT2'))) aspectwaardeCH,
(SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT3'))) aspectwaardeGB,
(SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT4'))) aspectwaardeTV,
(SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT5'))) aspectwaardeTK,
(SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT6'))) aspectwaardeBE,
(SELECT DECODE(ud.fac_usrdata_code,'NVT', NULL, 'Gering', 1, 'Matig', 2, 'Sterk', 3) FROM fac_usrdata ud WHERE fac_usrdata_key = FAC.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'ASPECT7'))) aspectwaardeEN,
mld_melding_omschrijving opmerking,
aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'CONDITIESCORE') cond,
aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'PRIORITEITSCORE') prio,
p.prs_perslid_email inspecteur,
aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'FOTONAAM') fotonaam,
fac.safe_to_number(aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'KOSTEN')) kosten,
NULL vervaldatum,
m.mld_melding_einddatum datum_gepland,
(select mld_kenmerk_waarde from aaxx_v_dwh_kenmerk_melding where mld_melding_id = m.mld_melding_key and mld_kenmerk_omschrijving = 'Dienst') dienst,
(select mld_kenmerk_waarde from aaxx_v_dwh_kenmerk_melding where mld_melding_id = m.mld_melding_key and mld_kenmerk_omschrijving = 'Taakgroep') taakgroep,
aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'GEADVISEERDSTARTJAAR') geadviseerd_startjaar,
aaxx_get_NEN2767_kenmerkwaarde(m.mld_melding_key, 'DATUMGEREEDINSPECTEUR') datum_gereed_inspecteur,
m.mld_melding_key,
s.mld_statuses_omschrijving status,
p.prs_perslid_naam || ' (' || p.prs_perslid_voornaam || ')' aanvrager,
CASE WHEN m.mld_melding_behandelaar_key IS NOT NULL THEN bh.prs_perslid_naam || ' (' || bh.prs_perslid_voornaam || ')' ELSE ''
END behandelaar
FROM mld_melding m,
mld_stdmelding sm,
mld_discipline disc,
mld_melding_object mo,
ins_deel d,
ins_srtdeel sd,
prs_perslid p,
mld_statuses s,
prs_perslid bh
WHERE disc.ins_srtdiscipline_key = FAC.getSetting('cnd_gebreken_srtdisc_key')
AND sm.mld_stdmelding_code <> 'GEEN'
AND disc.ins_discipline_verwijder IS NULL
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sm.mld_ins_discipline_key = disc.ins_discipline_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND mo.mld_melding_key = m.mld_melding_key
AND mo.mld_melding_object_verwijder IS NULL
AND d.ins_deel_key = mo.ins_deel_key
AND m.prs_perslid_key = p.prs_perslid_key
AND m.mld_melding_behandelaar_key = bh.prs_perslid_key (+)
AND m.mld_melding_key >=
COALESCE (
(SELECT MAX (gg.mld_melding_key)
FROM (SELECT gg2.ins_deel_key,
gg2.mld_melding_key,
m.mld_melding_status
FROM (SELECT d.ins_deel_key,
MAX (m.mld_melding_key) mld_melding_key
FROM mld_melding m,
mld_melding_object mo,
ins_deel d,
mld_stdmelding std
WHERE m.mld_stdmelding_key =
std.mld_stdmelding_key
AND std.mld_stdmelding_code = 'GEEN'
AND mo.mld_melding_key =
m.mld_melding_key
AND mo.mld_melding_object_verwijder
IS NULL
AND d.ins_deel_key = mo.ins_deel_key
GROUP BY d.ins_deel_key)
gg2,
mld_melding m
WHERE m.mld_melding_key = gg2.mld_melding_key) gg
WHERE gg.ins_deel_key = d.ins_deel_key),
m.mld_melding_key)
AND m.mld_melding_status = s.mld_statuses_key
AND m.mld_melding_status in (0,2,3,4,7,99) -- Alleen lopende zaken
;
CREATE OR REPLACE VIEW AAXX_V_MJB_PRIJSLIJST
(
INS_DEEL_KEY,
OBJECTIDENTIFICATIE,
INS_DEEL_AANTAL,
EENHEID,
OMSCHRIJVING,
FABRICAAT,
TYPE_ASSET,
CAPACITEIT,
BOUWJAAR,
PLAATS,
CATEGORIE,
TAAKOMSCHRIJVING,
GROEP,
PRIORITEIT,
PERCENTAGE,
TAAKOPMERKING_X,
DIENST,
BEDRIJF,
PERIODE_EENHEID,
PERIODE_FREQUENCY,
CYCLUS_STARTDATUM,
CYLCUS_VOLGENDE_DATUM,
LOCATIE,
KOSTEN_PERUITVOER,
KOSTEN_PERJAAR
)
AS
SELECT v1.ins_deel_key,
v1.objectidentificatie,
v2.ins_deel_aantal,
v2.eenheid,
v1.omschrijving,
v2.fabricaat,
v2.type_asset,
v2.capaciteit,
v2.bouwjaar,
v2.plaats,
v1.categorie,
v1.taakomschrijving,
v1.groep,
v1.prioriteit,
v1.percentage,
v1.taakopmerking_x,
v1.dienst,
v1.bedrijf,
v1.periode_eenheid,
v1.periode_frequency,
v1.cyclus_startdatum,
v1.cylcus_volgende_datum,
v1.locatie,
v1.kosten_materiaal
* v2.ins_deel_aantal
* (COALESCE (v1.percentage, 100) / 100)
kosten_peruitvoer,
CASE
WHEN v1.periode_eenheid = 'J'
THEN
(1 / v1.periode_frequency)
* v1.kosten_materiaal
* v2.ins_deel_aantal
* (COALESCE (v1.percentage, 100) / 100)
WHEN v1.periode_eenheid = 'M'
THEN
(12 / v1.periode_frequency)
* v1.kosten_materiaal
* v2.ins_deel_aantal
* (COALESCE (v1.percentage, 100) / 100)
WHEN v1.periode_eenheid = 'W'
THEN
(52 / v1.periode_frequency)
* v1.kosten_materiaal
* v2.ins_deel_aantal
* (COALESCE (v1.percentage, 100) / 100)
WHEN v1.periode_eenheid = 'D'
THEN
(365 / v1.periode_frequency)
* v1.kosten_materiaal
* v2.ins_deel_aantal
* (COALESCE (v1.percentage, 100) / 100)
ELSE
v1.kosten_materiaal
* v2.ins_deel_aantal
* (COALESCE (v1.percentage, 100) / 100)
END
kosten_perjaar
FROM aaxx_v_mjb_taken v1, aaxx_v_mjb_assets v2
WHERE v1.ins_deel_key = v2.ins_deel_key
AND (v2.vervaldatum IS NULL OR TRUNC(SYSDATE) < TRUNC(v2.vervaldatum) ) ;
--=============================================================================
-- EXPORTFUNCTIES DATAWAREHOUSE
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_PRS_BEDRIJF
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_prs_bedrijf
(
prs_bedrijf_key,
prs_bedrijf_naam,
prs_bedrijf_naam_upper,
prs_bedrijf_post_adres,
prs_bedrijf_post_postcode,
prs_bedrijf_post_plaats,
prs_bedrijf_post_land,
prs_bedrijf_bezoek_adres,
prs_bedrijf_bezoek_postcode,
prs_bedrijf_bezoek_plaats,
prs_bedrijf_bezoek_land,
prs_bedrijf_telefoon,
prs_bedrijf_fax,
prs_bedrijf_telefoon2,
prs_bedrijf_contact_persoon,
prs_bedrijf_contact_telefoon,
prs_bedrijf_contact_fax,
prs_bedrijf_opmerking,
prs_bedrijf_opmerking2,
prs_bedrijf_uurloon,
prs_leverancier_nr,
prs_overeenkomst_nr,
prs_overeenkomst_datum,
prs_bedrijf_aanmaak,
prs_bedrijf_verwijder,
prs_bedrijf_leverancier,
prs_bedrijf_uitvoerende,
prs_bedrijf_contract,
prs_bedrijf_intern,
prs_bedrijf_huurder,
prs_bedrijf_email,
prs_bedrijf_ingids,
prs_relatietype
)
AS
SELECT prs_bedrijf_key,
prs_bedrijf_naam,
prs_bedrijf_naam_upper,
prs_bedrijf_post_adres,
prs_bedrijf_post_postcode,
prs_bedrijf_post_plaats,
prs_bedrijf_post_land,
prs_bedrijf_bezoek_adres,
prs_bedrijf_bezoek_postcode,
prs_bedrijf_bezoek_plaats,
prs_bedrijf_bezoek_land,
prs_bedrijf_telefoon,
prs_bedrijf_fax,
prs_bedrijf_telefoon2,
prs_bedrijf_contact_persoon,
prs_bedrijf_contact_telefoon,
prs_bedrijf_contact_fax,
prs_bedrijf_opmerking,
prs_bedrijf_opmerking2,
prs_bedrijf_uurloon,
prs_leverancier_nr,
prs_overeenkomst_nr,
prs_overeenkomst_datum,
prs_bedrijf_aanmaak,
prs_bedrijf_verwijder,
prs_bedrijf_leverancier,
prs_bedrijf_uitvoerende,
prs_bedrijf_contract,
prs_bedrijf_intern,
prs_bedrijf_huurder,
prs_bedrijf_email,
prs_bedrijf_ingids,
prs_relatietype_omschrijving
FROM prs_bedrijf b, prs_relatietype rt
WHERE prs_bedrijf_verwijder IS NULL
AND b.prs_relatietype_key = rt.prs_relatietype_key(+);
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_PRS_BEDRIJFADRES
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_prs_bedrijfadres
(
prs_bedrijf_key,
prs_bedrijfadres_type,
opdrachttype,
prs_bedrijfadres_url,
prs_bedrijfadres_ordermode,
prs_bedrijfadres_certificate,
prs_bedrijfadres_xsl,
prs_fixed_attach,
prs_send_flex,
alg_district_omschrijving,
alg_locatie_code,
prs_perslid_naam,
prs_perslid_key,
prs_bedrijfadres_expire
)
AS
SELECT prs_bedrijf_key,
DECODE (prs_bedrijfadres_type,
'C', 'Contracten',
'O', 'Opdrachten',
'B', 'Bestellingen',
'Anders?')
TYPE,
DECODE (
prs_bedrijfadres_type,
'O',
COALESCE (t.mld_typeopdr_omschrijving,
'Geen/Overige opdrachten'),
'N.v.t'
)
Opdrachttype,
prs_bedrijfadres_url,
prs_bedrijfadres_ordermode,
prs_bedrijfadres_certificate,
prs_bedrijfadres_xsl,
prs_bedrijfadres_attachfile prs_fixed_attach,
DECODE (
prs_bedrijfadres_flexfiles,
0,
DECODE (
(SELECT COALESCE (fac_setting_pvalue, fac_setting_default)
FROM fac_setting
WHERE LOWER (fac_setting_name) = 'puo_order_flexfiles'),
0,
'Nee',
'Ja'
),
1,
'Ja',
'Nee'
)
prs_send_flex,
d.alg_district_omschrijving,
l.alg_locatie_code,
pf.prs_perslid_naam_full,
pf.prs_perslid_key,
ba.prs_bedrijfadres_lockexpire
FROM prs_bedrijfadres ba, mld_typeopdr t, alg_locatie l, alg_district d, prs_v_perslid_fullnames_all pf
WHERE ba.mld_typeopdr_key = t.mld_typeopdr_key(+)
AND ba.alg_locatie_key = l.alg_locatie_key(+)
AND ba.alg_district_key = d.alg_district_key(+)
AND ba.prs_bedrijfadres_lockuser_key = prs_perslid_key(+);
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_PRS_AFDELING
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_prs_afdeling
(
prs_afdeling_parent_naam,
prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_afdeling_code,
prs_kostenplaats_nr,
prs_afdeling_verwijder,
prs_bedrijf_naam,
niveau
)
AS
SELECT ap.prs_afdeling_naam,
a.prs_afdeling_naam,
a.prs_afdeling_omschrijving,
a1.prs_afdeling_naam afdeling_code,
k.prs_kostenplaats_nr,
a.prs_afdeling_verwijder,
prs_bedrijf_naam,
niveau
FROM prs_v_afdeling a,
prs_kostenplaats k,
prs_bedrijf b,
prs_afdeling ap,
prs_afdeling a1
WHERE a.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND a.prs_bedrijf_key = b.prs_bedrijf_key(+)
AND a.prs_afdeling_parentkey = ap.prs_afdeling_key(+)
AND a.prs_afdeling_key = a1.prs_afdeling_key
AND ap.prs_afdeling_verwijder IS NULL;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_PRS_PERSOON
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_prs_perslid
(
prs_perslid_key,
prs_afdeling_naam,
prs_perslid_naam,
prs_perslid_tussenvoegsel,
prs_perslid_voornaam,
prs_perslid_full,
prs_perslid_login,
prs_perslid_nr,
prs_perslid_telefoon,
prs_perslid_email,
prs_perslid_lastlogin,
prs_perslid_aanmaak,
prs_perslid_verwijder,
prs_perslid_laatstgezien,
prs_perslid_bezetdatum
)
AS
SELECT p.prs_perslid_key,
a.prs_afdeling_naam,
p.prs_perslid_naam,
p.prs_perslid_tussenvoegsel,
p.prs_perslid_voornaam,
pf.prs_perslid_naam_full,
p.prs_perslid_oslogin,
p.prs_perslid_nr,
p.prs_perslid_telefoonnr,
p.prs_perslid_email,
p.prs_perslid_login,
p.prs_perslid_aanmaak,
p.prs_perslid_verwijder,
CASE
WHEN ( p.alg_onroerendgoed_type = 'G'
OR p.alg_onroerendgoed_type = 'V'
OR p.alg_onroerendgoed_type = 'R')
THEN
(SELECT og.alg_gebouw_naam
FROM alg_v_allonrgoed_gegevens og
WHERE og.alg_onroerendgoed_keys =
p.alg_onroerendgoed_keys)
WHEN (p.alg_onroerendgoed_type = 'L')
THEN
(SELECT alg_locatie_omschrijving
FROM alg_locatie
WHERE alg_locatie_key = alg_onroerendgoed_keys)
END
laatst_gezien,
p.prs_perslid_bezetdatum
FROM prs_perslid p, prs_afdeling a, prs_v_perslid_fullnames_all pf
WHERE a.prs_afdeling_key = p.prs_afdeling_key
AND p.prs_perslid_key = pf.prs_perslid_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_FAC_GROEPRECHTEN
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_fac_groeprechten
(
prs_perslid_naam,
prs_perslid_key,
prs_perslid_login,
fac_functie_code,
fac_functie_omschrijving,
fac_functie_module,
ins_discipline_omschrijving,
fac_groep_omschrijving,
orgr,
orgw,
algr,
algw
)
AS
SELECT -- GROEPEN MET DISCIPLINES
p.prs_perslid_naam,
gg.prs_perslid_key,
p.prs_perslid_oslogin,
f.fac_functie_code,
f.fac_functie_omschrijving,
f.fac_functie_module,
(CASE
WHEN ins_srtdiscipline_prefix IS NULL THEN ''
ELSE ins_srtdiscipline_prefix || '-'
END)
|| ins_discipline_omschrijving
omschrijving,
gr.fac_groep_omschrijving,
g.fac_gebruiker_prs_level_read orgr,
g.fac_gebruiker_prs_level_write orgw,
g.fac_gebruiker_alg_level_read algr,
g.fac_gebruiker_alg_level_write algw
FROM fac_groeprechten g,
fac_gebruikersgroep gg,
prs_v_aanwezigperslid p,
fac_functie f,
ins_srtdiscipline isd,
ins_tab_discipline a,
fac_groep gr
WHERE g.ins_discipline_key = a.ins_discipline_key
AND g.fac_groep_key = gr.fac_groep_key
AND p.prs_perslid_key = gg.prs_perslid_key
AND gg.fac_groep_key = gr.fac_groep_key
AND isd.ins_srtdiscipline_key(+) = a.ins_srtdiscipline_key
AND f.fac_functie_key = g.fac_functie_key
AND f.fac_functie_discipline = 1
AND ins_discipline_verwijder IS NULL
UNION ALL -- GROEPEN ZONDER DISCIPLINES
SELECT p.prs_perslid_naam,
p.prs_perslid_key,
p.prs_perslid_oslogin,
f.fac_functie_code,
f.fac_functie_omschrijving,
f.fac_functie_module,
NULL,
gr.fac_groep_omschrijving,
g.fac_gebruiker_prs_level_read orgr,
g.fac_gebruiker_prs_level_write orgw,
g.fac_gebruiker_alg_level_read algr,
g.fac_gebruiker_alg_level_write algw
FROM fac_groeprechten g,
fac_functie f,
fac_gebruikersgroep gg,
prs_v_aanwezigperslid p,
fac_groep gr
WHERE fac_functie_module <> 'LAN'
AND fac_functie_discipline = 0
AND g.fac_functie_key = f.fac_functie_key
AND g.fac_groep_key = gg.fac_groep_key
AND gg.fac_groep_key = gr.fac_groep_key
AND p.prs_perslid_key = gg.prs_perslid_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_PRS_KOSTENPLAATS
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_prs_kostenplaats
(
prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_kostenplaats_budgethouder,
prs_kostenplaats_extern,
prs_kostenplaatsgrp_oms,
prs_kostenplaats_aanmaak,
prs_kostenplaats_verwijder
)
AS
SELECT k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving,
pf.prs_perslid_naam_full,
k.prs_kostenplaats_extern,
kg.prs_kostenplaatsgrp_oms,
k.prs_kostenplaats_aanmaak,
k.prs_kostenplaats_verwijder
FROM prs_kostenplaats k, prs_v_perslid_fullnames_all pf, prs_kostenplaatsgrp kg
WHERE k.prs_perslid_key = pf.prs_perslid_key(+)
AND k.prs_kostenplaatsgrp_key = kg.prs_kostenplaatsgrp_key(+);
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_PRS_KOSTENSOORT
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_prs_kostensoort
(
prs_kostensoort_code,
prs_kostensoort_omschrijving,
prs_kostensoort_fin_waarde,
prs_kostensoortgroep,
prs_kostensoort_aanmaak,
prs_kostensoort_altcode
)
AS
SELECT k.prs_kostensoort_oms,
k.prs_kostensoort_opmerking,
k.prs_kostensoort_refcode,
(SELECT prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg
WHERE ksg.prs_kostensoortgrp_key = k.prs_kostensoortgrp_key),
k.prs_kostensoort_aanmaak,
k.prs_kostensoort_altcode
FROM prs_kostensoort k;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_PRS_KENMERK_PRS
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_prs
(
prs_link_key,
prs_kenmerk_niveau,
prs_kenmerk_omschrijving,
prs_kenmerk_waarde
)
AS
SELECT prs_link_key,
prs_kenmerk_niveau,
prs_kenmerk_omschrijving,
aaxx_get_kenmerkwaarde (k.prs_kenmerk_kenmerktype,
k.fac_kenmerkdomein_key,
kl.prs_kenmerklink_waarde)
FROM prs_kenmerklink kl, prs_kenmerk k
WHERE kl.prs_kenmerk_key = k.prs_kenmerk_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_CNT_ALGEMEEN
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_cnt_contract
(
contract_key,
internnr,
externnr,
mantelcontract_key,
beschrijving,
contractsoort,
typecontract,
versie,
status,
ingangsdatum,
rappeldatum,
opzegdatum,
einddatum,
aanmaakdatum,
verwijderdatum,
eigenaar,
verantwoordelijk_manager,
beheerder,
uitvoerder,
kostenplaats,
termijnbedrag,
contractbedrag,
volgnummer,
locatie_code,
gebouw_code,
gebouw_kosten,
gebouw_gefactureerd,
gebouw_gefactureerd_incl,
gebouw_gefactureerdverwerkt
)
AS
SELECT c.cnt_contract_key,
cnt_contract_nummer_intern
|| '.'
|| COALESCE (cnt_contract_versie, '0'),
cnt_contract_nummer,
cnt_contract_mantel_key,
cnt_contract_omschrijving,
d.ins_discipline_omschrijving,
tc.cnt_typecontract_omschrijving,
COALESCE (c.cnt_contract_versie, '0'),
DECODE (
c.cnt_contract_status,
0, DECODE (fac.getsetting ('cnt_contract_approval'),
1, lcl.l ('lcl_cnt_active_approval'),
lcl.l ('lcl_cnt_active_approval')), -- lcl_cnt_active
1, lcl.l ('lcl_cnt_inactive'),
2, lcl.l ('lcl_cnt_new'),
3, lcl.l ('lcl_cnt_forapproval'))
status,
cnt_contract_looptijd_van,
cnt.cnt_getrappeldatum (c.cnt_contract_key),
cnt.cnt_getopzegdatum (c.cnt_contract_key),
c.cnt_contract_looptijd_tot,
c.cnt_contract_aanmaak,
c.cnt_contract_verwijder,
a.prs_afdeling_naam,
pf2.prs_perslid_naam_full,
pf.prs_perslid_naam_full,
prs_bedrijf_naam,
kp.prs_kostenplaats_nr,
coalesce (cnt_contract_termijnkosten, 0),
cnt_contract_kosten,
aaxx_get_cnt_cont_plaats_index (cp.cnt_contract_plaats_key),
alg_locatie_code,
g.alg_gebouw_code,
ROUND (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
0,
COALESCE (
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht)
* c.cnt_contract_kosten,
0)),
2),
ROUND (
COALESCE (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht))
* fin.fin_factuur_totaal,
0),
2) gg,
ROUND (
COALESCE (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht))
* (fin.fin_factuur_totaal + fin.fin_factuur_totaal_incl),
0),
2) ggib,
ROUND (
COALESCE (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht))
* finv.fin_factuur_totaal,
0),
2)
FROM cnt_contract c,
cnt_discipline d,
cnt_disc_params cd,
cnt_typecontract tc,
(SELECT cnt_contract_plaats_gewicht,
cnt_contract_plaats_key,
cnt_contract_key,
cnt_alg_plaats_key,
cnt_alg_plaats_code
FROM cnt_contract_plaats
WHERE cnt_contract_plaats_verwijder IS NULL) cp,
prs_bedrijf b,
prs_kostensoort k,
prs_kostenplaats kp,
prs_afdeling a,
prs_v_perslid_fullnames_all pf2,
prs_v_perslid_fullnames_all pf,
alg_locatie l,
alg_gebouw g,
( SELECT cnt_contract_key,
SUM (fin_factuurregel_totaal) fin_factuur_totaal, SUM(fin_factuurregel_btw) fin_factuur_totaal_incl
FROM aaxx_v_aanwezigfactuur f, fin_factuurregel fr
WHERE f.fin_factuur_key = fr.fin_factuur_key
GROUP BY cnt_contract_key) fin,
( SELECT cnt_contract_key,
SUM (fin_factuurregel_totaal) fin_factuur_totaal
FROM aaxx_v_aanwezigfactuur f, fin_factuurregel fr
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.fin_factuur_statuses_key = 7 -- verwerkt
GROUP BY cnt_contract_key) finv,
( SELECT cnt_contract_key,
SUM (cnt_contract_plaats_gewicht)
cnt_contract_plaats_gewicht
FROM cnt_contract_plaats
WHERE cnt_contract_plaats_verwijder IS NULL
GROUP BY cnt_contract_key) cnt_gew,
(SELECT cp.cnt_contract_plaats_key, alg_locatie_key, alg_gebouw_key
FROM alg_v_allonroerendgoed aog, cnt_contract_plaats cp
WHERE aog.alg_type = cp.cnt_alg_plaats_code
AND aog.alg_onroerendgoed_keys = cp.cnt_alg_plaats_key) cog
WHERE c.cnt_contract_key = cp.cnt_contract_key(+)
AND c.cnt_contract_key = cnt_gew.cnt_contract_key(+)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_key = cd.cnt_ins_discipline_key
AND cd.cnt_srtcontract_type = tc.cnt_typecontract_key
AND cd.cnt_srtcontract_type <> 6 -- Mantelcontracten worden (vooralsnog) uitgesloten AALB#28095
AND d.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND c.prs_afdeling_key_eig = a.prs_afdeling_key
AND c.prs_perslid_key_beh = pf.prs_perslid_key
AND c.prs_perslid_key_eig = pf2.prs_perslid_key(+)
AND cp.cnt_contract_plaats_key = cog.cnt_contract_plaats_key(+)
AND cog.alg_locatie_key = l.alg_locatie_key(+)
AND cog.alg_gebouw_key = g.alg_gebouw_key(+)
AND c.cnt_contract_key = fin.cnt_contract_key(+)
AND c.cnt_contract_key = finv.cnt_contract_key(+);
CREATE OR REPLACE VIEW AAXX_V_DWH_CNT_CONTRACT_SCOPE
(
CNT_CONTRACT_PLAATS_KEY,
CNT_CONTRACT_KEY,
EXTERNNR,
INTERNNR,
FIN_FACTUUR_KEY,
FACTUUR_BOEKMAAND,
GEBOUW_CODE,
GEBOUW_BEDRAG,
GEBOUW_GEFACTUREERD_INCL,
GEBOUW_GEFACTUREERDVERWERKT,
FACTUURSCHEMA_BOEKMAAND,
GEBOUW_GEFACTUREERD_SCHEMA
)
AS
SELECT cp.cnt_contract_plaats_key,
c.cnt_contract_key,
cnt_contract_nummer externnr,
cnt_contract_nummer_intern
|| '.'
|| COALESCE (cnt_contract_versie, '0')
internnr,
f.fin_factuur_key,
f.fin_factuur_boekmaand factuur_boekmaand,
gc.alg_gebouw_code gebouw_code,
ROUND (
cp.cnt_contract_plaats_gewicht
/ (SELECT DECODE (SUM (cp2.cnt_contract_plaats_gewicht),
0, 1,
SUM (cp2.cnt_contract_plaats_gewicht))
FROM cnt_contract_plaats cp2
WHERE cp2.cnt_contract_key = cp.cnt_contract_key)
* fin_factuurregel_totaal,
4)
gebouw_bedrag,
ROUND (
COALESCE (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht))
* (fin.fin_factuur_totaal + fin.fin_factuur_totaal_incl),
0),
4)
gebouw_gefactureerd_incl,
ROUND (
COALESCE (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht))
* finv.fin_factuur_totaal,
0),
4)
gebouw_gefactureerdverwerkt,
cfs.cnt_factuurschema_boekmaand,
ROUND (
COALESCE (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht))
* (cfs.fin_factuur_totaal),
NULL),
4)
gebouw_gefcatureerd_schema
FROM fin_factuur f,
fin_factuurregel fr,
fin_btwtabelwaarde btw,
cnt_contract c,
(SELECT c.cnt_contract_key,
cnt_factuurschema_boekmaand,
fin_factuur_totaal
FROM ( SELECT SUM (fin_factuur_totaal) fin_factuur_totaal,
SUM (fin_factuurregel_btw) fin_factuur_totaal_incl,
cfs.cnt_factuurschema_boekmaand,
cfs.cnt_contract_key
FROM aaxx_v_aanwezigfactuur f,
fin_factuurregel fr,
cnt_factuurschema cfs
WHERE f.fin_factuur_boekmaand =
cfs.cnt_factuurschema_boekmaand
AND f.fin_factuur_key = fr.fin_factuur_key
AND f.cnt_contract_key = cfs.cnt_contract_key
AND f.fin_factuur_verwijder IS NULL
GROUP BY cfs.cnt_factuurschema_boekmaand,
cfs.cnt_contract_key) cs1,
cnt_contract c
WHERE c.cnt_contract_key = cs1.cnt_contract_key(+)) cfs,
(SELECT *
FROM cnt_contract_plaats
WHERE cnt_alg_plaats_code = 'G') cp,
alg_gebouw gc,
( SELECT cnt_contract_key,
SUM (cnt_contract_plaats_gewicht)
cnt_contract_plaats_gewicht
FROM cnt_contract_plaats
WHERE cnt_contract_plaats_verwijder IS NULL
GROUP BY cnt_contract_key) cnt_gew,
( SELECT cnt_contract_key,
SUM (fin_factuurregel_totaal) fin_factuur_totaal
FROM aaxx_v_aanwezigfactuur f, fin_factuurregel fr
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.fin_factuur_statuses_key = 7 -- verwerkt
GROUP BY cnt_contract_key) finv,
( SELECT cnt_contract_key,
SUM (fin_factuurregel_totaal) fin_factuur_totaal,
SUM (fin_factuurregel_btw) fin_factuur_totaal_incl
FROM aaxx_v_aanwezigfactuur f, fin_factuurregel fr
WHERE f.fin_factuur_key = fr.fin_factuur_key
GROUP BY cnt_contract_key) fin
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.cnt_contract_key = cp.cnt_contract_key
AND f.cnt_contract_key = c.cnt_contract_key
AND cp.cnt_alg_plaats_key = gc.alg_gebouw_key(+)
AND f.cnt_contract_key = cnt_gew.cnt_contract_key
AND f.cnt_contract_key = finv.cnt_contract_key(+)
AND f.cnt_contract_key = fin.cnt_contract_key(+)
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key(+)
AND c.cnt_contract_key = cfs.cnt_contract_key
AND (f.fin_factuur_boekmaand = cfs.cnt_factuurschema_boekmaand
OR cfs.cnt_factuurschema_boekmaand IS NULL);
CREATE OR REPLACE VIEW aaxx_v_dwh_cnt_contract_mantel
(
cnt_contract_key,
internnr,
externnr,
beschrijving,
contractsoort,
typecontract,
versie,
status,
ingangsdatum,
rappeldatum,
opzegdatum,
einddatum,
aanmaakdatum,
verwijderdatum,
eigenaar,
beheerder,
beheerder_key,
uitvoerder,
kostenplaats,
termijnbedrag,
contractbedrag,
soort_overeenkomst,
omvang_contractduur,
commodity,
omschrijving_optie_verlenging,
tijdstip_facturatie,
indexering_tijdens_periode,
datum_van_indexering,
kortingsafspraken,
kortingsafspraak,
opmerking_cm_bijzonderheden,
contract_met_leverancier,
contracteigenaar,
indexeringsformule_afspraak,
besparing,
betalingsafspraak,
betalingstermijn,
link_contract,
omvang_contract_pj,
max_indexering,
link_prijzenblad,
pct_besparing_pj,
rappeltermijn_indexering,
link_overig
)
AS
SELECT cnt_contract_key,
cnt_contract_nummer_intern
|| '.'
|| COALESCE (cnt_contract_versie, '0'),
cnt_contract_nummer,
cnt_contract_omschrijving,
d.ins_discipline_omschrijving,
tc.cnt_typecontract_omschrijving,
COALESCE (c.cnt_contract_versie, '0'),
DECODE (c.cnt_contract_status, '1', 'Gesloten', 'Open'),
cnt_contract_looptijd_van,
cnt.cnt_getrappeldatum (c.cnt_contract_key),
cnt.cnt_getopzegdatum (c.cnt_contract_key),
c.cnt_contract_looptijd_tot,
c.cnt_contract_aanmaak,
c.cnt_contract_verwijder,
a.prs_afdeling_naam,
prs_perslid_naam_full,
pf.prs_perslid_key,
prs_bedrijf_naam,
kp.prs_kostenplaats_nr,
cnt_contract_termijnkosten,
cnt_contract_kosten,
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'SOORT OVEREENKOMST'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'OMVANG CONTRACTDUUR'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'COMMODITY'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper =
'OMSCHRIJVING OPTIE CONTRACTVERLENGING'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'TIJDSTIP FACTURATIE'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper =
'INDEXERING TIJDENS CONTRACTPERIODE'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'DATUM VAN INDEXERING'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'KORTINGSAFSPRAKEN'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'KORTINGSAFSPRAAK'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'OPMERKING CM/ BIJZONDERHEDEN'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'CONTRACT MET LEVERANCIER'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'CONTRACTEIGENAAR'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper =
'INDEXERINGSFORMULE/ -AFSPRAAK'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'BESPARING'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'BETALINGSAFSPRAAK'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'BETALINGSTERMIJN'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'LINK CONTRACT'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'OMVANG CONTRACT P/J'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'MAX. INDEXERING'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'LINK PRIJZENBLAD'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = '% BESPARING P/J'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'RAPPELTERMIJN INDEXERING'),
c.cnt_contract_key),
aaxx_get_kenmerk (
'CNT',
(SELECT MAX (cnt_kenmerk_key)
FROM cnt_kenmerk k, cnt_srtkenmerk sk
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND sk.cnt_srtkenmerk_upper = 'LINK OVERIG'),
c.cnt_contract_key)
FROM cnt_contract c,
cnt_discipline d,
cnt_disc_params cd,
cnt_typecontract tc,
prs_bedrijf b,
prs_kostensoort k,
prs_kostenplaats kp,
prs_afdeling a,
prs_v_perslid_fullnames_all pf
WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_key = cd.cnt_ins_discipline_key
AND cd.cnt_srtcontract_type = tc.cnt_typecontract_key
AND d.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND c.prs_afdeling_key_eig = a.prs_afdeling_key
AND c.prs_perslid_key_beh = pf.prs_perslid_key
AND tc.cnt_typecontract_key = 6;
CREATE OR REPLACE VIEW aaxx_v_dwh_cnt_factuurschema
(
internnr,
externnr,
contractsoort,
kostenplaats,
volgnummer,
locatie_code,
gebouw_code,
verdeelperiode,
termijnbedrag,
gebouwkosten
)
AS
SELECT cnt_contract_nummer_intern
|| '.'
|| COALESCE (cnt_contract_versie, '0')
internnr,
cnt_contract_nummer externnr,
cd.ins_discipline_omschrijving contractsoort,
kp.prs_kostenplaats_nr kostenplaats,
aaxx_get_cnt_cont_plaats_index (cp.cnt_contract_plaats_key)
volgnummer,
alg_locatie_code locatie_code,
g.alg_gebouw_code gebouw_code,
cf.cnt_factuurschema_boekmaand verdeelperiode,
cf.cnt_factuurschema_bedrag termijnbedrag,
ROUND (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
0,
COALESCE (
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht)
* cf.cnt_factuurschema_bedrag,
0)),
2)
gebouwkosten
FROM cnt_contract c,
cnt_discipline cd,
cnt_factuurschema cf,
prs_kostenplaats kp,
alg_locatie l,
alg_gebouw g,
(SELECT cnt_contract_plaats_gewicht,
cnt_contract_plaats_key,
cnt_contract_key,
cnt_alg_plaats_key,
cnt_alg_plaats_code
FROM cnt_contract_plaats
WHERE cnt_contract_plaats_verwijder IS NULL) cp,
( SELECT cnt_contract_key,
SUM (cnt_contract_plaats_gewicht)
cnt_contract_plaats_gewicht
FROM cnt_contract_plaats
WHERE cnt_contract_plaats_verwijder IS NULL
GROUP BY cnt_contract_key) cnt_gew,
(SELECT cp.cnt_contract_plaats_key, alg_locatie_key, alg_gebouw_key
FROM alg_v_allonroerendgoed aog, cnt_contract_plaats cp
WHERE aog.alg_type = cp.cnt_alg_plaats_code
AND aog.alg_onroerendgoed_keys = cp.cnt_alg_plaats_key) cog
WHERE c.ins_discipline_key = cd.ins_discipline_key
AND c.cnt_contract_verwijder IS NULL
AND c.cnt_contract_key = cp.cnt_contract_key(+)
AND c.cnt_contract_key = cnt_gew.cnt_contract_key(+)
AND cp.cnt_contract_plaats_key = cog.cnt_contract_plaats_key(+)
AND cog.alg_locatie_key = l.alg_locatie_key(+)
AND cog.alg_gebouw_key = g.alg_gebouw_key(+)
AND cf.cnt_contract_key = c.cnt_contract_key
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+);
CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_contract
(
CNT_CONTRACT_KEY,
CNT_KENMERK_OMSCHRIJVING,
CNT_KENMERK_WAARDE
)
AS
SELECT cnt_contract_key,
sk.cnt_srtkenmerk_omschrijving,
aaxx_get_kenmerkwaarde (sk.cnt_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
kc.cnt_kenmerkcontract_waarde)
FROM cnt_kenmerk k, cnt_srtkenmerk sk, cnt_kenmerkcontract kc
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_FIN_FACTUUR
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_fin_factuur
(
fin_factuur_key,
fin_factuur_nr,
fin_factuur_totaal_btw,
opdr_id,
contract_id,
bestel_id,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_debiteur_nr,
kostensoort,
fin_factuur_datumfiat_ok,
fin_factuur_datumfiat_nok,
fin_factuur_fiat_user,
fin_factuur_opmerking,
fin_factuur_datum_export,
fin_factuur_status,
fin_factuur_aanmaak,
fin_factuur_verwerkt,
fin_factuur_verwijder,
fin_factuur_badgeid,
invoerder,
invoerder_key,
fin_factuurregel_nr,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_factuurregel_btw_perc,
uplift,
incl_uplift,
fin_factuurregel_omschrijving,
fin_factuurregel_referentie,
fin_btwtabelwaarde_code,
fin_btwtabelwaarde_oms,
fin_factuur_bron,
fin_factuur_bron_mareon,
fin_factuur_boekstuknr,
fin_factuur_verzamelfactuur,
fin_factuur_controle,
fin_factuur_controle_ok,
fin_factuur_retour_lev,
fin_factuur_retour_lev_reden,
fin_factuur_retour_mar,
fin_factuur_retour_mar_reden,
fin_factuur_flag,
fin_factuur_flag_oms
)
AS
SELECT f.fin_factuur_key,
f.fin_factuur_nr,
f.fin_factuur_totaal_btw,
(SELECT mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr
FROM mld_opdr
WHERE mld_opdr_key = f.mld_opdr_key),
(SELECT cc.cnt_contract_nummer_intern
|| '.'
|| COALESCE (cc.cnt_contract_versie, '0')
FROM cnt_contract cc
WHERE cc.cnt_contract_key = f.cnt_contract_key),
(SELECT bes_bestelopdr_id
FROM bes_bestelopdr
WHERE bes_bestelopdr_key = f.bes_bestelopdr_key),
f.fin_factuur_datum,
f.fin_factuur_boekmaand,
f.fin_factuur_debiteur_nr,
(SELECT prs_kostensoort_oms
FROM prs_kostensoort
WHERE prs_kostensoort_key = f.prs_kostensoort_key),
fac.gettrackingdate ('FINFOK', f.fin_factuur_key),
fac.gettrackingdate ('FINFNO', f.fin_factuur_key),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key =
fac.gettrackinguserkey ('FINFOK', f.fin_factuur_key)),
f.fin_factuur_opmerking,
fac.gettrackingdate ('FINVER', f.fin_factuur_key),
(SELECT fin_factuur_statuses_omschr
FROM fin_factuur_statuses s
WHERE s.fin_factuur_statuses_key = f.fin_factuur_statuses_key),
COALESCE (fac.gettrackingdate ('FINNEW', f.fin_factuur_key),
fin_factuur_datum),
fac.gettrackingdate ('FINVER', f.fin_factuur_key),
fin_factuur_verwijder,
TO_CHAR (fac.gettrackingdate ('FINVER', f.fin_factuur_key),
'yyyymmdd'),
fac.gettrackinguserkey ('FINNEW', f.fin_factuur_key) invoerder,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key =
fac.gettrackinguserkey ('FINNEW', f.fin_factuur_key))
invoerder_key,
fr.fin_factuurregel_nr,
fr.fin_factuurregel_totaal,
ROUND (fr.fin_factuurregel_btw, 2),
btw.fin_btwtabelwaarde_perc,
uplift,
uplift * fr.fin_factuurregel_totaal,
fr.fin_factuurregel_omschrijving,
fr.fin_factuurregel_referentie,
btw.fin_btwtabelwaarde_code,
btw.fin_btwtabelwaarde_oms,
DECODE (f.fin_factuur_bron,
0, lcl.l ('lcl_fin_source_manual'),
1, lcl.l ('lcl_fin_source_excel'),
2, lcl.l ('lcl_fin_source_mail'),
'Onbekend') factuurbron,
(SELECT 'mareon'
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_tracking_refkey = f.fin_factuur_key
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'factuur'
AND sn.fac_srtnotificatie_code = 'FINUPD'
AND INSTR(ft.fac_tracking_oms, 'Factuur geimporteerd vanuit Mareon')>0) fin_factuur_bron_mareon,
(SELECT fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur fk, fin_kenmerk k
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_verwijder IS NULL
AND UPPER (fin_kenmerk_omschrijving) = 'BOEKSTUKNUMMER'
AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_boekstuknr,
(SELECT fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur fk, fin_kenmerk k
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_verwijder IS NULL
AND UPPER (fin_kenmerk_omschrijving) = 'VERZAMELFACTUUR?'
AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_verzamelfactuur,
(SELECT fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur fk, fin_kenmerk k
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_verwijder IS NULL
AND UPPER (fin_kenmerk_omschrijving) = 'EXTRA CONTROLE?'
AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_controle,
(SELECT fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur fk, fin_kenmerk k
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_verwijder IS NULL
AND UPPER (fin_kenmerk_omschrijving) = 'GECONTROLEERD'
AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_controle_ok,
(SELECT fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur fk, fin_kenmerk k
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_verwijder IS NULL
AND UPPER (fin_kenmerk_omschrijving) = 'RETOUR LEVERANCIER'
AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_retour_lev,
flx.getdomeinwaarde ((SELECT fac_kenmerkdomein_key FROM fac_kenmerkdomein WHERE fac_kenmerkdomein_upper = 'RETOUR - LEVERANCIER'), flx.getflex ('FIN', COALESCE((SELECT fin_kenmerk_key FROM fin_kenmerk WHERE fin_kenmerk_upper = 'RETOUR LEVERANCIER - REDEN'),0), f.fin_factuur_key))
fin_factuur_retour_lev_reden,
(SELECT fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur fk, fin_kenmerk k
WHERE fk.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_verwijder IS NULL
AND UPPER (fin_kenmerk_omschrijving) = 'RETOUR MAREON-HELPDESK'
AND fk.fin_factuur_key = f.fin_factuur_key) fin_factuur_retour_mar,
flx.getdomeinwaarde ((SELECT fac_kenmerkdomein_key FROM fac_kenmerkdomein WHERE fac_kenmerkdomein_upper = 'RETOUR - MAREON HELPDESK'), flx.getflex ('FIN', COALESCE((SELECT fin_kenmerk_key FROM fin_kenmerk WHERE fin_kenmerk_upper = 'RETOUR MAREON HELPDESK - REDEN'),0), f.fin_factuur_key))
fin_factuur_retour_mar_reden,
f.fin_factuur_flag,
(CASE
WHEN f.fin_factuur_flag>0 THEN Lcl.L('lcl_fin_flag' || f.fin_factuur_flag)
ELSE ''
END) fin_factuur_flag_oms
FROM fin_factuur f,
fin_factuurregel fr,
fin_btwtabelwaarde btw,
(SELECT f2.fin_factuur_key, uplift
FROM aaxx_imp_uplift u,
prs_bedrijf b,
prs_kostensoort ks,
fin_factuur f2,
mld_opdr o,
cnt_contract c
WHERE u.prs_leverancier_nr = b.prs_leverancier_nr
AND f2.mld_opdr_key = o.mld_opdr_key(+)
AND f2.cnt_contract_key = c.cnt_contract_key(+)
AND COALESCE (o.mld_uitvoerende_keys,
c.cnt_prs_bedrijf_key) =
b.prs_bedrijf_key
AND UPPER (u.prs_kostensoort_oms) =
ks.prs_kostensoort_upper
AND f2.prs_kostensoort_key = ks.prs_kostensoort_key
AND soort_order =
DECODE (o.mld_opdr_key, NULL, 'CO', 'WO')
AND f2.fin_factuur_boekmaand =
u.jaar || '-' || LTRIM (TO_CHAR (u.maand, '00')))
UP
WHERE f.fin_factuur_key = fr.fin_factuur_key(+)
AND f.fin_factuur_key = UP.fin_factuur_key(+)
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key(+);
CREATE OR REPLACE VIEW aaxx_v_dwh_fin_factuur_vk
(
fin_factuurrun_key, -- Interne key van de verkooprun
fin_factuurrun_nr, -- Omschrijving van de verkooprun = BOEKJAAR + Datum run
fin_factuur_nr, -- Referentie verkoopfactuur = Datum + Verplichtingsref (opdr, cnt, bestlopdr)
fin_factuur_totaal, -- Totaal verkoopfactuur (excl btw)
opdr_id,
contract_id,
bestel_id,
fin_factuur_datum,
fin_factuur_boekmaand,
fin_factuur_debiteur_nr,
kostensoort,
prs_kostensoortgrp_oms, -- Referentie, omschrijving van de verkoopfactuur
fin_factuur_datum_export,
fin_factuur_status,
fin_factuur_aanmaak,
fin_factuur_verwerkt,
fin_factuur_verwijder, -- NULL want verwijderactie niet mogelijk voor verkoopfacturen
fin_factuur_badgeid,
invoerder, -- NULL want verkoopfactuur wordt automatisch bij draaien inkooprun aangemaakt
invoerder_key, -- Idem
fin_factuurregel_key, -- Interne key van de aangemaakte verkoopregel
fin_factuurregel_totaal, -- Regelbedrag (exl btw)
fin_factuurregel_btw,
fin_factuurregel_btw_perc,
fin_factuurregel_omschrijving,
fin_factuurregel_referentie, -- Exact code van het gebouw. Is kenmerk van gebouw
fin_btwtabelwaarde_code,
fin_btwtabelwaarde_oms,
fin_factuur_bron,
fin_factuur_boekstuknr, -- NULL, nvt voor verkoopfacturen
fin_verkoopfactuur_c4 -- Deze wordt gebruikt in RABO om 'Verkoopfactuur_VASTVAR' te vullen
)
AS
SELECT vf.fin_verkoopfactuurkop_key,
vfk.fin_verkoopfactuurkop_id,
vf.fin_verkoopfactuur_id fin_factuur_nr,
(SELECT sum(fin_verkoopfactuur_bedrag) FROM fin_verkoopfactuur vf2 WHERE vf2.fin_verkoopfactuur_refkey = vf.fin_verkoopfactuur_refkey AND vf2.fin_verkoopfactuurkop_key = vf.fin_verkoopfactuurkop_key)
fin_factuur_totaal,
CASE WHEN vf.fin_verkoopfactuur_xmlnode='opdracht'
THEN
(SELECT mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr
FROM mld_opdr
WHERE mld_opdr_key = vf.fin_verkoopfactuur_refkey)
ELSE NULL END opdr_id,
CASE WHEN vf.fin_verkoopfactuur_xmlnode='contract'
THEN
(SELECT cc.cnt_contract_nummer_intern || '.' || COALESCE (cc.cnt_contract_versie, '0')
FROM cnt_contract cc
WHERE cc.cnt_contract_key = vf.fin_verkoopfactuur_refkey)
ELSE NULL END contract_id,
CASE WHEN vf.fin_verkoopfactuur_xmlnode='bestelopdr'
THEN
(SELECT b.bes_bestelopdr_id
FROM bes_bestelopdr b
WHERE b.bes_bestelopdr_key = vf.fin_verkoopfactuur_refkey)
ELSE NULL END bestel_id,
vf.fin_verkoopfactuur_aanmaak fin_factuur_datum,
vf.fin_verkoopfactuur_maand fin_factuur_boekmaand,
vf.prs_debiteur_naam fin_factuur_debiteur_nr,
vf.prs_kostensoort_oms,
vf.prs_kostensoortgrp_oms prs_kostensoortgrp_oms,
vf.fin_verkoopfactuur_datum fin_factuur_datum_export,
CASE WHEN vf.fin_verkoopfactuur_datum IS NULL THEN 'nog verwerken' ELSE 'verwerkt' END
fin_factuur_status,
vf.fin_verkoopfactuur_aanmaak,
vf.fin_verkoopfactuur_datum,
NULL fin_factuur_verwijder,
TO_CHAR (vf.fin_verkoopfactuur_datum,'yyyymmdd') badgeid,
NULL invoerder,
NULL invoerder_key,
vf.fin_verkoopfactuur_key,
fin_verkoopfactuur_bedrag fin_factuurregel_totaal,
ROUND((btw.fin_btwtabelwaarde_perc/100) * fin_verkoopfactuur_bedrag,2) fin_factuurregel_btw,
btw.fin_btwtabelwaarde_perc,
fin_verkoopfactuur_omschr fin_factuuregel_omschrijving,
fin_verkoopfactuur_c1 fin_factuurregel_referentie,
btw.fin_btwtabelwaarde_code,
btw.fin_btwtabelwaarde_oms,
'interface' factuurbron,
NULL fin_factuur_boekstuknr,
CASE WHEN vf.fin_verkoopfactuur_c4 IS NULL THEN 'nee'
WHEN vf.fin_verkoopfactuur_c4 = 'Verkoopfactuur_VASTVAR' THEN 'ja'
ELSE 'anders' END
vast_variabel_opdracht
FROM fin_verkoopfactuur vf,
fin_verkoopfactuurkop vfk,
fin_btwtabelwaarde btw
WHERE vf.fin_verkoopfactuurkop_key = vfk.fin_verkoopfactuurkop_key
AND vf.fin_btwtabelwaarde_code = btw.fin_btwtabelwaarde_code
ORDER BY vf.fin_verkoopfactuur_refkey, vf.fin_verkoopfactuur_key ;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_MLD_STDMELDING
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_mld_stdmelding
AS
SELECT mld_stdmelding_key,
'https://' || (SELECT LOWER(fac_version_cust) FROM fac_version) || '.facilitor.nl/appl/mld/mld_melding.asp?mld_defaultstdmelding=' || mld_stdmelding_key || CHR(38) || 'role=fe' || CHR(38) || 'sso=HEYDAY' link,
(SELECT fac_version_cust FROM fac_version)
account,
ins_srtdiscipline_omschrijving,
vak.ins_discipline_omschrijving,
mld_stdmelding_omschrijving,
std.mld_stdmelding_t_uitvoertijd.tijdsduur
|| DECODE (std.mld_stdmelding_t_uitvoertijd.eenheid,
'U', ' Uren',
'D', ' Dagen',
'')
mld_stdmelding_t_uitvoertijd,
mld_stdmeldinggroep_naam,
pks.prs_kostensoort_oms,
mld_stdmelding_vervaldatum,
DECODE (mld_stdmelding_notfrontend, 1, 'ja', 'nee')
mld_stdmelding_notfrontend,
mld_stdmelding_kanverwijzen,
DECODE (alg_onrgoed_niveau,
'R', 'ruimte',
'V', 'verdieping',
'G', 'gebouw',
'L', 'locatie')
alg_onrgoed_niveau,
DECODE (mld_disc_params_notify,
0, 'Nooit',
1, 'Altijd',
2, 'Afhankelijk van melding',
'Onbekend')
mld_disc_params_notify,
DECODE (mld_stdmelding_planbaar, 1, 'ja', 'nee')
mld_stdmelding_planbaar,
DECODE (mld_stdmelding_freetext,
0, 'onzichtbaar',
2, 'verplicht',
'optioneel')
mld_stdmelding_freetext,
NULL
ins_srtinst_verplicht,
mld_stdmelding_hint,
DECODE (mld_stdmelding_autoorder, 1, 'ja', 'nee')
mld_stdmelding_autoorder,
DECODE (mld_stdmelding_vereisdienst, 1, 'ja', 'nee')
mld_stdmelding_vereisdienst,
ot.mld_typeopdr_omschrijving
standaard_opdrachttype,
mld_stdmelding_opdrtypevast,
std.mld_stdmelding_t_accepttijd.tijdsduur
|| DECODE (std.mld_stdmelding_t_accepttijd.eenheid,
'U', ' Uren',
'D', ' Dagen',
'')
mld_stdmelding_t_accepttijd,
std.mld_stdmelding_t_uitvtijd_pr1.tijdsduur
|| DECODE (std.mld_stdmelding_t_uitvtijd_pr1.eenheid,
'U', ' Uren',
'D', ' Dagen',
'')
mld_stdmelding_t_uitvtijd_pr1,
std.mld_stdmelding_t_uitvtijd_pr2.tijdsduur
|| DECODE (std.mld_stdmelding_t_uitvtijd_pr2.eenheid,
'U', ' Uren',
'D', ' Dagen',
'')
mld_stdmelding_t_uitvtijd_pr2,
std.mld_stdmelding_t_uitvtijd_pr4.tijdsduur
|| DECODE (std.mld_stdmelding_t_uitvtijd_pr4.eenheid,
'U', ' Uren',
'D', ' Dagen',
'')
mld_stdmelding_t_uitvtijd_pr4
FROM mld_stdmelding std,
mld_stdmeldinggroep smg,
mld_discipline vak,
ins_srtdiscipline srt,
prs_kostensoort pks,
prs_dienst d,
mld_disc_params dp,
mld_typeopdr ot,
bes_discipline bd
WHERE std.mld_stdmelding_verwijder IS NULL
AND std.mld_ins_discipline_key = vak.ins_discipline_key
AND vak.ins_discipline_verwijder IS NULL
AND vak.ins_srtdiscipline_key = srt.ins_srtdiscipline_key
AND srt.ins_srtdiscipline_verwijder IS NULL
AND std.prs_kostensoort_key = pks.prs_kostensoort_key(+)
AND std.prs_dienst_key = d.prs_dienst_key(+)
AND std.mld_typeopdr_key = ot.mld_typeopdr_key(+)
AND std.mld_stdmeldinggroep_key = smg.mld_stdmeldinggroep_key(+)
AND bd.ins_discipline_key(+) = std.bes_ins_discipline_key
AND vak.ins_discipline_key = dp.mld_ins_discipline_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_MLD_ALGEMEEN
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_mld_melding
(
mld_melding_key,
meldingnummer,
extern_nr,
meldbron,
mld_melding_start_key,
alg_district_omschrijving,
locatie,
locatie_omschrijving,
alg_locatie_key,
onrgoed_key,
gebouw,
gebouw_naam,
gebouw_key,
verdieping,
verdieping_key,
ruimtenr,
ruimte_omschrijving,
ruimte_key,
melding_ordernr,
kostensoortgroep,
kostensoort,
kostenplaats,
kostenplaats_oms,
melder,
prs_perslid_key,
afdeling,
afdeling_omschrijving,
prs_bedrijf_key,
invoerder,
invoerder_key,
behandelaar,
behandelaar_key,
soortmelding,
ins_discipline_key,
ins_srtdiscipline_prefix,
productgroep,
subproductgroep,
subproductgroepgroep,
status,
sla_werkdgn,
plan_uitvoertijd,
datum,
datumfilter,
plan_einddatum,
prioriteit,
ingezien,
geaccepteerd,
afgemeld,
verwerkt, -- nieuw
doorlooptijd_werkdgn,
acceptoptijd,
uitvoeringoptijd_sla,
uitvoeringoptijd_afspraak,
onderwerp,
omschrijving,
opmerking,
mld_melding_parentkey,
tevredenheid,
tevredenheid_opm,
object_omschrijving,
geplande_actie,
opdracht_key,
opdracht_volgnummer,
opdracht_type,
opdracht_status,
opdracht_duur_gepland,
opdracht_datum,
opdracht_einddatum,
opdracht_plandatum,
opdracht_verzonden,
opdracht_geaccepteerd,
opdracht_afgemeld,
opdracht_verwerkt, -- nieuw
opdracht_doorlooptijd,
opdracht_omschrijving,
opdracht_opmerking,
opdracht_uitvoerende,
opdracht_contract,
opdracht_behandelaar,
opdracht_behandelaar_key,
opdracht_uren,
opdracht_uren_besteed,
opdracht_correctie,
opdracht_materiaal,
opdracht_uurtarief,
opdracht_kosten,
opdracht_kostenplaats,
opdracht_kostenplaats_oms,
deelsrtcontrole_key
)
AS
SELECT m.mld_melding_key,
TO_CHAR (m.mld_melding_key) meldingnummer,
m.mld_melding_externnr,
mld_meldbron_omschrijving meldbron,
m.mld_melding_start_key,
alg_district_omschrijving,
alg_locatie_code locatie,
alg_locatie_omschrijving locatie_omschrijving,
l.alg_locatie_key,
m.mld_alg_onroerendgoed_keys,
og.alg_gebouw_code gebouw,
og.alg_gebouw_naam gebouw_naam,
og.alg_gebouw_key,
og.alg_verdieping_code verdieping,
og.alg_verdieping_key,
og.alg_ruimte_nr ruimte,
og.alg_ruimte_omschrijving ruimte_omschrijving,
og.alg_ruimte_key,
m.mld_melding_ordernr melding_ordernr,
(SELECT ksg.prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg, prs_kostensoort ks
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key
AND ks.prs_kostensoort_key =
(SELECT COALESCE (sm.prs_kostensoort_key,
disc.prs_kostensoort_key)
FROM mld_stdmelding sm, mld_discipline disc
WHERE sm.mld_ins_discipline_key =
disc.ins_discipline_key
AND sm.mld_stdmelding_key =
s.mld_stdmelding_key))
kostensoortgroep,
(SELECT ks.prs_kostensoort_oms
FROM prs_kostensoort ks
WHERE ks.prs_kostensoort_key =
(SELECT COALESCE (sm.prs_kostensoort_key,
disc.prs_kostensoort_key)
FROM mld_stdmelding sm, mld_discipline disc
WHERE sm.mld_ins_discipline_key =
disc.ins_discipline_key
AND sm.mld_stdmelding_key =
s.mld_stdmelding_key))
kostensoort,
(SELECT k.prs_kostenplaats_nr
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key)
kostenplaats,
(SELECT k.prs_kostenplaats_omschrijving
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key)
kostenplaats_oms,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = m.prs_perslid_key)
melder,
m.prs_perslid_key,
(SELECT prs_afdeling_naam
FROM prs_afdeling afd, prs_perslid pp
WHERE afd.prs_afdeling_key = pp.prs_afdeling_key
AND pp.prs_perslid_key = m.prs_perslid_key)
afdeling,
(SELECT prs_afdeling_omschrijving
FROM prs_afdeling afd, prs_perslid pp
WHERE afd.prs_afdeling_key = pp.prs_afdeling_key
AND pp.prs_perslid_key = m.prs_perslid_key)
afdeling_omschrijving,
(SELECT prs_bedrijf_key
FROM prs_v_afdeling pva, prs_perslid pp
WHERE pva.prs_afdeling_key = pp.prs_afdeling_key
AND pp.prs_perslid_key = m.prs_perslid_key)
prs_bedrijf_key,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key =
mld.getmeldinguser (m.mld_melding_key))
invoerder,
fac.gettrackinguserkey ('MLDNEW', m.mld_melding_key),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all
WHERE prs_perslid_key = m.mld_melding_behandelaar_key),
m.mld_melding_behandelaar_key,
sd.ins_srtdiscipline_omschrijving soortmelding,
md.ins_discipline_key ins_discipline_key,
ins_srtdiscipline_prefix ins_srtdiscipline_prefix,
md.ins_discipline_omschrijving productgroep,
s.mld_stdmelding_omschrijving subproductgroep,
(SELECT smg.mld_stdmeldinggroep_naam
FROM mld_stdmeldinggroep smg
WHERE smg.mld_stdmeldinggroep_key = s.mld_stdmeldinggroep_key)
subproductgroepgroep,
(SELECT DECODE (
COALESCE (par.mld_melding_status,
m.mld_melding_status),
4,
DECODE (o.mld_opdr_key,
NULL, mld_statuses_omschrijving,
'Niet opgelost'),
mld_statuses_omschrijving
)
FROM mld_statuses sta
WHERE sta.mld_statuses_key =
COALESCE (par.mld_melding_status,
m.mld_melding_status))
status,
COALESCE (
par.sla_werkdgn,
aaxx.count_work_days (m.mld_melding_datum,
m.mld_melding_einddatum)
)
sla_werkdgn,
COALESCE (
par.plan_uitvoertijd,
DECODE (m.mld_melding_t_uitvoertijd.eenheid,
'U', TO_NUMBER (NULL),
m.mld_melding_t_uitvoertijd.tijdsduur)
)
plan_uitvoertijd, -- Altijd in dagen; anders NULL!
COALESCE (par.mld_melding_datum, m.mld_melding_datum) datum,
m.mld_melding_datum datumfilter,
COALESCE (par.mld_melding_einddatum, m.mld_melding_einddatum)
plan_einddatum,
DECODE(mld_melding_spoed, 1, 'Kritiek', 2, 'Hoog', 3, 'Normaal', 4, 'Laag', 'Onbekend') prioritieit,
mld.getmeldingstatusdate (m.mld_melding_key, 3) ingezien,
mld.getmeldingstatusdate (m.mld_melding_key, 4) geaccepteerd,
COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1))
afgemeld,
fac.gettrackingdate ('MLDVER', m.mld_melding_key) verwerkt,
aaxx.count_work_days_incltime (
m.mld_melding_datum,
COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1),
SYSDATE)
)
doorlooptijd_werkdgn,
CASE
WHEN mld_melding_acceptdatum_std <
COALESCE (
fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
COALESCE (
fac.gettrackingdate ('MLDACP',
m.mld_melding_key),
SYSDATE
)
)
THEN
0
ELSE
1
END
acceptoptijd,
CASE
WHEN s.mld_stdmelding_slabewaken = 0
OR m.mld_melding_indult = 1
THEN
NULL
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NOT NULL
THEN
1
ELSE
CASE
-- vooralsnog WHEN mld.getactualuitvoer(m.mld_melding_key).tijdsduur <
-- te traag m.mld_melding_t_uitvoertijd.tijdsduur + m.mld_melding_t_respijt.tijdsduur
WHEN m.mld_melding_einddatum_std >
COALESCE (
fac.gettrackingdate ('MLDAFM',
m.mld_melding_key),
SYSDATE
)
THEN
1
ELSE
0
END
END
uitvoeringoptijd_sla,
CASE
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NOT NULL
THEN
1
ELSE
CASE
WHEN m.mld_melding_einddatum >
COALESCE (
fac.gettrackingdate ('MLDAFM',
m.mld_melding_key),
SYSDATE
)
THEN
1
ELSE
0
END
END
uitvoeringoptijd_afspraak,
m.mld_melding_onderwerp,
m.mld_melding_omschrijving omschrijving,
m.mld_melding_opmerking opmerking,
m.mld_melding_parentkey,
m.mld_melding_satisfaction,
m.mld_melding_satisfaction_op,
(SELECT MAX (ins_deel_omschrijving)
FROM ins_deel id, mld_melding_object mo
WHERE mo.mld_melding_key = m.mld_melding_key
AND mo.ins_deel_key = id.ins_deel_key)
object_omschrijving,
DECODE (
INSTR (mld_melding_opmerking, 'Automatisch gegenereerd door'),
1,
'yes',
'no')
geplande_actie,
o.mld_opdr_key,
o.mld_opdr_bedrijfopdr_volgnr opdracht_volgnummer,
(SELECT mld_typeopdr_omschrijving
FROM mld_typeopdr t
WHERE o.mld_typeopdr_key = t.mld_typeopdr_key)
opdracht_type,
(SELECT REPLACE (mld_statusopdr_omschrijving,
'Uitgegeven',
'Toegekend')
mld_statusopdr_omschrijving
FROM mld_statusopdr sta
WHERE sta.mld_statusopdr_key = o.mld_statusopdr_key)
opdracht_status,
aaxx.count_work_days (o.mld_opdr_datumbegin,
o.mld_opdr_einddatum)
opdracht_duur_gepland,
o.mld_opdr_datumbegin opdracht_datum,
o.mld_opdr_einddatum opdracht_einddatum,
o.mld_opdr_plandatum opdracht_plandatum,
o.mld_opdr_verzonden opdracht_verzonden,
fac.gettrackingdate ('ORDACP', o.mld_opdr_key)
opdracht_geaccepteerd,
mld.getopdrachtstatusdate (o.mld_opdr_key, 6) opdracht_afgemeld,
fac.gettrackingdate ('ORDVER', mld_opdr_key) opdracht_verwerkt,
aaxx.count_work_days (
o.mld_opdr_datumbegin,
mld.getopdrachtstatusdate (o.mld_opdr_key, 6)
)
opdracht_doorlooptijd,
o.mld_opdr_omschrijving opdracht_omschrijving,
o.mld_opdr_opmerking opdracht_opmerking,
(SELECT naam
FROM mld_v_uitvoerende u
WHERE u.mld_uitvoerende_key = o.mld_uitvoerende_keys)
opdracht_uitvoerende,
NULL opdracht_contract,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all
WHERE prs_perslid_key = o.prs_perslid_key)
behandelaar,
o.prs_perslid_key opdracht_contactpersoon,
DECODE (mld_statusopdr_key, 1, 0, 2, 0, -- afgewezen, niet akkoord
o.mld_opdr_uren)
opdracht_uren,
(SELECT COUNT (mld_opdr_uren_besteed)
FROM mld_opdr_uren ou
WHERE ou.mld_opdr_key = o.mld_opdr_key
AND mld_opdr_uren_status IN (3, -- goedgekeurd
4) -- verwerkt
)
uren_besteed,
DECODE (
mld_statusopdr_key,
1,
0,
2,
0,
o.mld_opdr_kosten
- o.mld_opdr_materiaal
- (o.mld_opdr_uren * o.mld_opdr_uurloon)
)
opdracht_correctie,
DECODE (mld_statusopdr_key, 1, 0, 2, 0, o.mld_opdr_materiaal)
opdracht_materiaal,
DECODE (mld_statusopdr_key, 1, 0, 2, 0, o.mld_opdr_uurloon)
opdracht_uurtarief,
DECODE (mld_statusopdr_key, 1, 0, 2, 0, o.mld_opdr_kosten)
opdracht_kosten,
(SELECT k.prs_kostenplaats_nr
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key)
opdracht_kostenplaats,
(SELECT k.prs_kostenplaats_omschrijving
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key)
opdracht_kostenplaats_oms,
(SELECT min(ins_deelsrtcontrole_key) FROM mld_melding_object mo WHERE mo.mld_melding_key = m.mld_melding_key AND mo.ins_deelsrtcontrole_key IS NOT NULL) -- NOG HERZIEN. In 2023.2 kunnen er meerdere taken aan 1 melding gekoppeld worden. Heyday moet nog aangeven hoe ze dit nu gebruiken en hoe dit aangepast moet worden..
deelsrtcontrole_key
FROM mld_melding m,
mld_meldbron mb,
mld_stdmelding s,
alg_locatie l,
alg_district d,
alg_v_allonrgoed_gegevens og,
mld_discipline md,
ins_srtdiscipline sd,
mld_opdr o,
(SELECT mld_melding_key,
mld_melding_status,
mld_melding_datum,
mld_melding_einddatum,
aaxx.count_work_days (m.mld_melding_datum,
m.mld_melding_einddatum)
sla_werkdgn,
DECODE (m.mld_melding_t_uitvoertijd.eenheid,
'U', TO_NUMBER (NULL),
m.mld_melding_t_uitvoertijd.tijdsduur)
plan_uitvoertijd
FROM mld_melding m
WHERE mld_melding_key IN
(SELECT mld_melding_parentkey
FROM mld_melding
WHERE mld_melding_parentkey IS NOT NULL)) par
WHERE s.mld_stdmelding_key = m.mld_stdmelding_key
AND m.mld_meldbron_key = mb.mld_meldbron_key
AND m.fac_activiteit_key IS NULL
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
AND md.ins_discipline_key = s.mld_ins_discipline_key
AND l.alg_district_key = d.alg_district_key(+)
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
AND m.mld_melding_key = o.mld_melding_key(+)
AND m.mld_melding_parentkey = par.mld_melding_key(+)
UNION ALL
SELECT cnt_contract_key,
cnt_contract_nummer_intern
|| '.'
|| COALESCE (cnt_contract_versie, '0'),
TO_CHAR(NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
kg.prs_kostensoortgrp_oms,
prs_kostensoort_oms,
kp.prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_perslid_naam_full,
c.prs_perslid_key_beh,
prs_afdeling_naam,
prs_afdeling_omschrijving,
a.prs_bedrijf_key,
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
'Contract',
c.ins_discipline_key,
'C',
d.ins_discipline_omschrijving,
TO_CHAR (NULL),
TO_CHAR (NULL),
DECODE (cnt_contract_status,
1, 'Gesloten', DECODE (SIGN (cnt_contract_looptijd_van - SYSDATE),
1, 'Toekomst',
-1, DECODE (SIGN (cnt_contract_looptijd_tot - SYSDATE),
1, 'Actueel',
-1, 'Verlopen'))),
TO_NUMBER (NULL),
TO_NUMBER (NULL), -- Altijd in dagen; anders NULL!
TO_DATE (NULL),
TO_DATE (NULL),
TO_DATE (NULL),
TO_CHAR (NULL), -- prioriteit
TO_DATE (NULL),
TO_DATE (NULL),
TO_DATE (NULL),
TO_DATE (NULL), -- datum verwerkt
TO_NUMBER (NULL),
TO_NUMBER (NULL), -- acceptoptijd
TO_NUMBER (NULL), -- uitvoeringoptijd_sla
TO_NUMBER (NULL), -- uitvoeringoptijd_afspraak
TO_CHAR (NULL), -- Onderwerp
c.cnt_contract_document,
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL), -- tevredenheid
TO_CHAR (NULL), -- Opmering bij tevredenheid
TO_CHAR (NULL), -- object omschrijving
TO_CHAR (NULL), -- geplande actie
TO_NUMBER (NULL),
1,
'Contract Order',
DECODE (SIGN (cnt_contract_looptijd_tot - SYSDATE),
1,
'Uitgegeven',
-1,
'Afgemeld'),
TO_NUMBER (NULL),
TO_DATE (NULL),
TO_DATE (NULL),
TO_DATE (NULL),
TO_DATE (NULL),
TO_DATE (NULL),
TO_DATE (NULL),
TO_DATE (NULL), -- opdracht verwerkt
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
b.prs_bedrijf_naam,
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
c.cnt_contract_uurloon,
c.cnt_contract_kosten,
kp.prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
NULL deelsrtcontrole_key
FROM cnt_contract c,
cnt_disc_params cd,
ins_tab_discipline d,
prs_kostensoort ks,
prs_kostensoortgrp kg,
prs_kostenplaats kp,
prs_v_perslid_fullnames_all pf,
prs_v_afdeling a,
prs_bedrijf b
WHERE c.ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_key = cd.cnt_ins_discipline_key
AND cd.cnt_srtcontract_type <> 6 -- Mantelcontracten worden (vooralsnog) uitgesloten AALB#28095
AND d.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND ks.prs_kostensoortgrp_key = kg.prs_kostensoortgrp_key(+)
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND c.prs_perslid_key_beh = pf.prs_perslid_key
AND c.prs_afdeling_key_eig = a.prs_afdeling_key(+)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.cnt_contract_verwijder IS NULL
UNION ALL
SELECT bes_bestelling_key,
TO_CHAR (bestelaanvraagnr),
TO_CHAR(NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
alg_district_omschrijving,
alg_locatie_code,
alg_locatie_omschrijving,
alg_locatie_key,
alg_gebouw_key,
alg_gebouw_code,
alg_gebouw_naam,
alg_gebouw_key,
TO_CHAR (NULL), -- verdieping
TO_NUMBER (NULL),
TO_CHAR (NULL), -- ruimte_nr
TO_CHAR (NULL), -- ruimte_omschrijving
TO_NUMBER (NULL),
bes_bestelling_ordernr,
kostensoortgroep,
kostensoort,
kpn,
kpn_omschrijving,
besteller,
prs_perslid_key_best,
afdeling_code,
afdeling_omschrijving,
prs_bedrijf_key,
invoerder,
invoerder_key,
TO_CHAR (NULL), -- Naam van de behandelaar
TO_NUMBER (NULL), -- Key van de behandelaar
'Bestelling',
ins_discipline_key,
'BE',
ins_discipline_omschrijving,
TO_CHAR (NULL), -- stdmelding
kostensoortgroep,
status,
sla_tijd,
sla_tijd, -- Altijd in dagen; anders NULL!
besteldatum,
besteldatum,
TO_DATE (NULL),
TO_CHAR (NULL), -- prioriteit
TO_DATE (NULL), -- datum ingezien
acceptatie_datum,
ontvangen_datum,
TO_DATE (NULL), -- datum verwerkt
doorlooptijd_werkdgn,
TO_NUMBER (NULL), -- acceptoptijd
TO_NUMBER (NULL), -- uitvoeringoptijd_sla
TO_NUMBER (NULL), -- uitvoeringoptijd_afspraak
TO_CHAR (NULL), -- onderwerp
omschrijving,
TO_CHAR (NULL), -- opmerking
TO_NUMBER (NULL),
bes_bestelling_satisfaction, -- tevredenheid
bes_bestelling_satisfaction_op, -- opmerking bij tevredenheid
TO_CHAR (NULL), -- object omschrijving
TO_CHAR (NULL), -- geplande actie
bes_bestelopdr_key,
opdr_volgnr,
'Purchase Order',
opdr_status,
DECODE (opdr_volgnr, NULL, TO_NUMBER (NULL), sla_tijd),
opdr_datum, -- opdr datum
TO_DATE (NULL), -- opdr_einddatum
TO_DATE (NULL), -- opdr plandatum
verzonden_datum,
TO_DATE (NULL), -- opdr geaccepteerd
opdr_ontv_datum,
TO_DATE (NULL), -- datum opdracht verwerkt
DECODE (opdr_volgnr,
NULL, TO_NUMBER (NULL),
doorlooptijd_werkdgn),
opdr_omschrijving,
bes_bestelopdr_opmerking,
leverancier,
TO_NUMBER (NULL), -- contract
TO_CHAR (NULL), -- behandelaar
TO_NUMBER (NULL), -- behandelaar_key
TO_NUMBER (NULL), -- uren
TO_NUMBER (NULL), -- uren_besteed
TO_NUMBER (NULL), -- correctie
TO_NUMBER (NULL), -- materiaal
TO_NUMBER (NULL), -- uurtarief
-- Indien de laatste factuur ontvangen is en de status van de factuur is goedgekeurd
-- of verwerkt zal het bedrag uit de factuur gebruikt worden.
COALESCE (
(SELECT DECODE (SUM (laatste_factuur),
0, TO_NUMBER (NULL),
SUM (fin_factuurregel_totaal))
FROM aaxx_v_factuur_gegevens g
WHERE g.bes_bestelopdr_key = b.bes_bestelopdr_key
AND g.fin_factuur_statuses_key >= 6),
opdr_kosten
)
opdr_kosten,
DECODE (opdr_volgnr, NULL, TO_CHAR (NULL), kpn),
DECODE (opdr_volgnr, NULL, TO_CHAR (NULL), kpn_omschrijving),
NULL deelsrtcontrole_key
FROM (SELECT b.bes_bestelling_key bes_bestelling_key,
b.bes_bestelling_key bestelaanvraagnr,
di.alg_district_omschrijving,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
l.alg_locatie_key,
g.alg_gebouw_code,
g.alg_gebouw_naam,
g.alg_gebouw_key,
b.bes_bestelling_ordernr,
b.bes_bestelling_datum besteldatum,
b.bes_bestelling_satisfaction,
b.bes_bestelling_satisfaction_op,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = p.prs_perslid_key)
besteller,
p.prs_perslid_key prs_perslid_key_best,
(SELECT MAX (prs_perslid_naam_full)
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key =
COALESCE (
fac.gettrackinguserkey (
'BESNEW',
b.bes_bestelling_key
),
fac.gettrackinguserkey (
'BESAP2',
b.bes_bestelling_key
)
))
invoerder,
COALESCE (
fac.gettrackinguserkey ('BESNEW',
b.bes_bestelling_key),
fac.gettrackinguserkey ('BESAP2',
b.bes_bestelling_key)
)
invoerder_key,
fac.gettrackingdate ('BESACP', b.bes_bestelling_key)
acceptatie_datum,
fac.gettrackingdate ('BESOTV', b.bes_bestelling_key)
ontvangen_datum,
aaxx_bestelling_items (b.bes_bestelling_key)
omschrijving,
(SELECT ksg.prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg, prs_kostensoort ks
WHERE ksg.prs_kostensoortgrp_key =
ks.prs_kostensoortgrp_key
AND ks.prs_kostensoort_key =
d.prs_kostensoort_key)
kostensoortgroep,
(SELECT ks.prs_kostensoort_oms
FROM prs_kostensoort ks
WHERE ks.prs_kostensoort_key =
d.prs_kostensoort_key)
kostensoort,
k.prs_kostenplaats_nr kpn,
k.prs_kostenplaats_omschrijving kpn_omschrijving,
a.prs_afdeling_naam afdeling_code,
a.prs_afdeling_omschrijving afdeling_omschrijving,
d.ins_discipline_key,
d.ins_discipline_omschrijving,
b.bes_bestelling_leverdatum afleverdatum,
aaxx.count_work_days (
b.bes_bestelling_datum,
NVL (
fac.gettrackingdate ('BESOTV',
b.bes_bestelling_key),
SYSDATE
)
)
doorlooptijd_werkdgn,
NVL (
(SELECT bdp.bes_disc_params_leverdagen
FROM bes_disc_params bdp
WHERE d.ins_discipline_key =
bdp.bes_ins_discipline_key),
0
)
sla_tijd,
(SELECT bes_bestellingstatuses_omschr
FROM bes_bestellingstatuses bs
WHERE bs.bes_bestellingstatuses_key =
b.bes_bestelling_status)
status,
(SELECT b.prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key)
leverancier,
(SELECT bes_bestelopdrstatuses_omschr
FROM bes_bestelopdrstatuses bs
WHERE bs.bes_bestelopdrstatuses_key =
bo.bes_bestelopdr_status)
opdr_status,
bo.bes_bestelopdr_key,
fac.safe_to_number(SUBSTR (
bo.bes_bestelopdr_id,
INSTR (bo.bes_bestelopdr_id, '/')
+ 1
))
opdr_volgnr,
bo.bes_bestelopdr_datum opdr_datum,
fac.gettrackingdate ('BES2SN', bo.bes_bestelopdr_key)
verzonden_datum,
fac.gettrackingdate ('BES2AF', bo.bes_bestelopdr_key)
opdr_ontv_datum,
bes.bestelopdr_tooltip (bo.bes_bestelopdr_key)
opdr_omschrijving,
bes_bestelopdr_opmerking,
DECODE (
bes_bestelopdr_status,
8,
0, -- geannuleerd
(SELECT SUM(bes_bestelopdr_item_aantal
* COALESCE (
bes_bestelopdr_item_inkprijs,
bes_bestelopdr_item_prijs
))
FROM bes_bestelopdr_item boi
WHERE boi.bes_bestelopdr_key =
bo.bes_bestelopdr_key)
)
opdr_kosten,
bo.prs_bedrijf_key
FROM bes_bestelling b,
prs_perslid p,
prs_kostenplaats k,
prs_afdeling a,
mld_adres ma,
bes_bestelopdr bo,
ins_tab_discipline d,
alg_gebouw g,
alg_locatie l,
alg_district di,
(SELECT DISTINCT
bes_bestelling_key, bes_bestelopdr_key
FROM bes_bestelling_item bi,
bes_bestelopdr_item boi
WHERE bi.bes_bestelopdr_item_key =
boi.bes_bestelopdr_item_key) bes_opdr,
(SELECT DISTINCT
bes_bestelling_key, ins_discipline_key
FROM bes_bestelling_item bi,
bes_srtdeel sd,
bes_srtgroep sg
WHERE bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key)
cat,
( SELECT mld_adres_key, MAX (alg_gebouw_key) alg_gebouw_key
FROM (SELECT ma.mld_adres_key,
DECODE (
aaxx_get_user,
'AH',
DECODE (ma.mld_adres_key,
101, 280,
alg_gebouw_key),
alg_gebouw_key)
alg_gebouw_key
FROM alg_gebouw g FULL OUTER JOIN mld_adres ma
ON g.mld_adres_key = ma.mld_adres_key)
WHERE alg_gebouw_key IS NOT NULL
GROUP BY mld_adres_key) adr_geb
WHERE b.prs_perslid_key = p.prs_perslid_key
AND b.prs_kostenplaats_key = k.prs_kostenplaats_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND b.mld_adres_key_lev = ma.mld_adres_key
AND b.bes_bestelling_key =
bes_opdr.bes_bestelling_key(+)
AND bes_opdr.bes_bestelopdr_key =
bo.bes_bestelopdr_key(+)
AND ma.alg_locatie_key = l.alg_locatie_key(+)
AND l.alg_district_key = di.alg_district_key(+)
AND b.bes_bestelling_key = cat.bes_bestelling_key
AND cat.ins_discipline_key = d.ins_discipline_key
AND ma.mld_adres_key = adr_geb.mld_adres_key(+)
AND adr_geb.alg_gebouw_key = g.alg_gebouw_key(+)) b;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_MLD_KENM_MLD
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_melding
(
mld_melding_id,
mld_kenmerk_omschrijving,
mld_kenmerk_waarde
)
AS
SELECT mld_melding_key,
sk.mld_srtkenmerk_omschrijving,
aaxx_get_kenmerkwaarde (sk.mld_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
km.mld_kenmerkmelding_waarde)
FROM mld_kenmerk k, mld_srtkenmerk sk, mld_kenmerkmelding km
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_MLD_KENM_OPD
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_opdracht
(
mld_opdr_id,
mld_kenmerk_omschrijving,
mld_kenmerk_waarde
)
AS
SELECT mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr,
sk.mld_srtkenmerk_omschrijving,
aaxx_get_kenmerkwaarde (sk.mld_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
ko.mld_kenmerkopdr_waarde)
FROM mld_kenmerk k,
mld_srtkenmerk sk,
mld_kenmerkopdr ko,
mld_opdr o
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND ko.mld_opdr_key = o.mld_opdr_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_RES_ALGEMEEN
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_res_reservering
(
res_reservering_key,
res_rsv_ruimte_key,
nummer,
res_omschrijving,
res_opmerking,
res_ruimte_naam,
invoerdatum,
datum,
gastheer,
gastheer_key,
contact,
contact_key,
invoerder,
invoerder_key,
kostensoortgroep,
kostensoort,
kpn,
kpn_omschrijving,
prs_bedrijf_key,
afdeling_code,
afdeling_omschrijving,
district_omschrijving,
alg_locatie_key,
locatie,
locatie_omschrijving,
gebouw,
gebouw_omschrijving,
verdieping,
ruimte,
ruimte_key,
opstelling,
no_show,
shown_bezoekers,
mandaat,
personeelsnr,
werkplek,
ins_discipline_key,
catalogus_ins_discipline_key,
catalogus,
reserveerbare_ruimte,
bezoekers,
van,
tot,
duur,
status,
status_fo,
activiteit,
kosten_ruimte,
tevredenheid,
tevredenheid_opm,
voorziening_ins_discipline_key,
voorziening_catalogus,
voorziening_product,
voorziening_totaalprijs,
voorziening_van,
voorziening_tot,
voorziening_aantal,
voorziening_prijs,
voorziening_inkoopprijs,
voorziening_btw,
voorziening_afgemeld,
mld_opdr_key,
mld_opdr_id,
reservering_verwijder
)
AS
SELECT res.res_reservering_key,
rrr.res_rsv_ruimte_key,
res.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_omschrijving,
rrr.res_rsv_ruimte_opmerking,
rr.res_ruimte_nr,
COALESCE (rrr.res_rsv_ruimte_aanmaak, voorz.van),
COALESCE (rrr.res_rsv_ruimte_van, voorz.van),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_host_key),
rrr.res_rsv_ruimte_host_key,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_contact_key),
rrr.res_rsv_ruimte_contact_key,
(SELECT prs_perslid_naam_full
FROM fac_tracking t,
fac_srtnotificatie sn,
prs_v_perslid_fullnames_all pf
WHERE sn.fac_srtnotificatie_code = 'RESNEW'
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND t.prs_perslid_key = pf.prs_perslid_key
AND fac_tracking_refkey = rrr.res_rsv_ruimte_key),
(SELECT prs_perslid_key
FROM fac_tracking t, fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_code = 'RESNEW'
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND fac_tracking_refkey = rrr.res_rsv_ruimte_key),
(SELECT ksg.prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg, prs_kostensoort ks
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key
AND ks.prs_kostensoort_key =
(SELECT disc.prs_kostensoort_key
FROM res_discipline disc
WHERE disc.ins_discipline_key =
COALESCE (
voorz.ins_discipline_key,
(SELECT ins_discipline_key
FROM ins_tab_discipline d,
res_ruimte_opstelling ro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key =
ro.res_ruimte_opstel_key
AND ro.res_ruimte_key =
rr.res_ruimte_key
AND rr.res_discipline_key =
d.ins_discipline_key))))
kostensoortgroep,
(SELECT ks.prs_kostensoort_oms
FROM prs_kostensoort ks
WHERE ks.prs_kostensoort_key =
(SELECT disc.prs_kostensoort_key
FROM res_discipline disc
WHERE disc.ins_discipline_key =
COALESCE (
voorz.ins_discipline_key,
(SELECT ins_discipline_key
FROM ins_tab_discipline d,
res_ruimte_opstelling ro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key =
ro.res_ruimte_opstel_key
AND ro.res_ruimte_key =
rr.res_ruimte_key
AND rr.res_discipline_key =
d.ins_discipline_key))))
kostensoort,
k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving,
(SELECT prs_bedrijf_key
FROM prs_v_afdeling pva
WHERE pva.prs_afdeling_key = a.prs_afdeling_key),
a.prs_afdeling_naam,
a.prs_afdeling_omschrijving,
(SELECT d.alg_district_omschrijving
FROM alg_district d,
alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE d.alg_district_key = l.alg_district_key
AND l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT l.alg_locatie_key
FROM alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_locatie_code
FROM alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_locatie_omschrijving
FROM alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_gebouw_code
FROM alg_gebouw g, alg_verdieping v, alg_ruimte r
WHERE g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_gebouw_naam
FROM alg_gebouw g, alg_verdieping v, alg_ruimte r
WHERE g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_verdieping_code
FROM alg_verdieping v, alg_ruimte r
WHERE v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_ruimte_nr
FROM alg_ruimte r
WHERE r.alg_ruimte_key = r2a.alg_ruimte_key),
r2a.alg_ruimte_key,
r2a.opstelling,
rrr.res_rsv_ruimte_noshow,
rrr.res_rsv_ruimte_bezoekers_shown,
NVL ( (SELECT pr.fac_profiel_limiet
FROM fac_profiel pr
WHERE p.fac_profiel_key = pr.fac_profiel_key), 0),
prs_perslid_nr,
wp2.prs_werkplek_aanduiding,
COALESCE (
voorz.ins_discipline_key,
(SELECT ins_discipline_key
FROM ins_tab_discipline d,
res_ruimte_opstelling ro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = d.ins_discipline_key)),
(SELECT ins_discipline_key
FROM ins_tab_discipline d,
res_ruimte_opstelling ro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = d.ins_discipline_key),
(SELECT ins_discipline_omschrijving
FROM ins_tab_discipline d,
res_ruimte_opstelling ro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = d.ins_discipline_key),
DECODE (rrr.alg_ruimte_key, NULL, 'Ja', 'Nee'),
rrr.res_rsv_ruimte_bezoekers,
rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
NVL ( (rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24, 0),
(SELECT res_status_bo_omschrijving
FROM res_status_bo rs
WHERE rs.res_status_bo_key =
COALESCE (voorz.res_status_bo_key,
rrr.res_status_bo_key)),
(SELECT res_status_fo_omschrijving
FROM res_status_fo rs2
WHERE rs2.res_status_fo_key = rrr.res_status_fo_key
),
(SELECT res_activiteit_omschrijving
FROM res_activiteit ra
WHERE ra.res_activiteit_key = rrr.res_activiteit_key),
(SELECT res.getruimteprijs(rrr.res_rsv_ruimte_key) from dual),
rrr.res_rsv_ruimte_satisfaction,
rrr.res_rsv_ruimte_satisfaction_op,
voorz.ins_discipline_key,
voorz.catalogus,
voorz.product,
voorz.totaalprijs,
voorz.van,
voorz.tot,
voorz.aantal,
voorz.prijs,
voorz.inkoopprijs,
voorz.btw,
voorz.afgemeld,
o.mld_opdr_key,
o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr,
res_rsv_ruimte_verwijder
FROM res_rsv_ruimte rrr,
res_reservering res,
prs_kostenplaats k,
prs_perslid p,
prs_afdeling a,
res_ruimte_opstelling rro,
res_ruimte rr,
mld_opdr o,
( SELECT res_rsv_ruimte_key,
MAX (o.res_opstelling_omschrijving) opstelling,
MAX (ra.alg_ruimte_key) alg_ruimte_key
FROM res_rsv_ruimte r,
res_ruimte_opstelling ro,
res_opstelling o,
res_ruimte rr,
res_alg_ruimte ra
WHERE r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND ro.res_opstelling_key = o.res_opstelling_key
AND rr.res_ruimte_key = ra.res_ruimte_key
AND res_alg_ruimte_verwijder IS NULL
GROUP BY res_rsv_ruimte_key
UNION ALL
SELECT res_rsv_ruimte_key, '' opstelling, alg_ruimte_key
FROM res_rsv_ruimte
WHERE alg_ruimte_key IS NOT NULL) r2a,
(SELECT rrd.res_rsv_ruimte_key res_rsv_ruimte_key,
d.ins_deel_omschrijving product,
rrd.res_status_bo_key,
DECODE (
rd.res_deel_prijs_vast,
1,
NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs),
(rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van)
* 24
* NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs))
totaalprijs,
rrd.res_rsv_deel_van van,
rrd.res_rsv_deel_tot tot,
(rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24 aantal,
NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs) prijs,
NULL inkoopprijs,
NULL btw,
res_rsv_deel_afgemeld afgemeld,
c.ins_discipline_key ins_discipline_key,
c.ins_discipline_omschrijving catalogus,
TO_NUMBER(NULL) mld_opdr_key
FROM res_rsv_deel rrd,
res_deel rd,
ins_deel d,
ins_tab_discipline c
WHERE rrd.res_deel_key = rd.res_deel_key
AND d.ins_deel_key = rd.res_ins_deel_key
AND rrd.res_rsv_ruimte_key IS NOT NULL
AND c.ins_discipline_key = rd.res_discipline_key
UNION ALL
SELECT rra.res_rsv_ruimte_key res_rsv_ruimte_key,
ra.res_artikel_omschrijving product,
rra.res_status_bo_key,
NVL (rra.res_rsv_artikel_prijs,
rra.res_rsv_artikel_aantal * res_artikel_prijs)
totaalprijs,
rra.res_rsv_artikel_levering van,
NULL tot,
rra.res_rsv_artikel_aantal aantal,
NVL (
rra.res_rsv_artikel_prijs / rra.res_rsv_artikel_aantal,
res_artikel_prijs)
prijs,
res_artikel_inkoopprijs inkoopprijs,
res_artikel_btw btw,
res_rsv_artikel_afgemeld afgemeld,
c.ins_discipline_key ins_discipline_key,
c.ins_discipline_omschrijving catalogus,
bc.mld_opdr_key
FROM res_rsv_artikel rra,
res_artikel ra,
ins_tab_discipline c,
aaxx_bundel_catering_ref bc
WHERE rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = c.ins_discipline_key
AND rra.res_rsv_artikel_key = bc.res_rsv_artikel_key(+)) voorz,
( SELECT pw.prs_perslid_key,
MIN (prs_werkplek_aanduiding)
|| DECODE (COUNT ( * ), 1, '', '...')
prs_werkplek_aanduiding
FROM prs_v_werkplek_gegevens wp, prs_perslidwerkplek pw
WHERE wp.prs_werkplek_key = pw.prs_werkplek_key
GROUP BY pw.prs_perslid_key) wp2
WHERE rrr.res_reservering_key = res.res_reservering_key
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)
AND rro.res_ruimte_key = rr.res_ruimte_key(+)
AND rrr.res_rsv_ruimte_key = r2a.res_rsv_ruimte_key(+)
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND rrr.res_rsv_ruimte_key = voorz.res_rsv_ruimte_key(+)
AND voorz.mld_opdr_key = o.mld_opdr_key(+)
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND wp2.prs_perslid_key(+) = p.prs_perslid_key
AND (rrr.res_ruimte_opstel_key IS NOT NULL
OR voorz.res_rsv_ruimte_key IS NOT NULL)
;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_RES_KENMERK
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_reservering
(
nummer,
kenmerk_omschrijving,
kenmerk_waarde,
reservering_verwijder
)
AS
SELECT
dwhres.nummer,
sk.res_srtkenmerk_omschrijving,
aaxx_get_kenmerkwaarde (sk.res_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
kw.res_kenmerkreservering_waarde),
dwhres.reservering_verwijder
FROM res_kenmerk k,
res_srtkenmerk sk,
res_kenmerkwaarde kw,
aaxx_v_dwh_res_reservering dwhres
WHERE dwhres.res_rsv_ruimte_key = kw.res_rsv_ruimte_key
AND kw.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = sk.res_srtkenmerk_key ;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_BES_ALGEMEEN
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_bes_bestelling
(
bes_bestelling_key,
bestelaanvraagnr,
besteldatum,
besteller,
invoerder,
kostensoortgroep,
kostensoort,
kpn,
kpn_omschrijving,
prs_bedrijf_key,
afdeling_code,
afdeling_omschrijving,
alg_locatie_key,
locatie_code,
district_omschijving,
afleveradres,
mandaat,
personeelsnr,
werkplek,
ins_discipline_key,
catalogus,
groep,
afleverdatum,
doorlooptijd_werkdgn,
sla_tijd,
productcode,
prijs,
inkoopprijs,
status,
gefiatteerddoor,
tevredenheid,
tevredenheid_opm,
bestelopdrachtnummer,
leverancier,
aantal,
itemprijs,
iteminkoopprijs,
productomschrijving,
itemposnr
)
AS
SELECT b.bes_bestelling_key bes_bestelling_key,
b.bes_bestelling_key bestelaanvraagnr,
b.bes_bestelling_datum besteldatum,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = p.prs_perslid_key)
besteller,
(SELECT MAX (prs_perslid_naam_full)
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key =
COALESCE(fac.gettrackinguserkey ('BESNEW', b.bes_bestelling_key), fac.gettrackinguserkey ('BESAP2', b.bes_bestelling_key)))
invoerder,
(SELECT ksg.prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg, prs_kostensoort ks
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key
AND ks.prs_kostensoort_key =
(SELECT disc.prs_kostensoort_key
FROM bes_discipline disc
WHERE disc.ins_discipline_key = d.ins_discipline_key))
kostensoortgroep,
(SELECT ks.prs_kostensoort_oms
FROM prs_kostensoort ks
WHERE ks.prs_kostensoort_key =
(SELECT disc.prs_kostensoort_key
FROM bes_discipline disc
WHERE disc.ins_discipline_key = d.ins_discipline_key))
kostensoort,
k.prs_kostenplaats_nr kpn,
k.prs_kostenplaats_omschrijving kpn_omschrijving,
(SELECT prs_bedrijf_key
FROM prs_v_afdeling pva
WHERE pva.prs_afdeling_key = a.prs_afdeling_key)
prs_bedrijf_key,
a.prs_afdeling_naam afdeling_code,
a.prs_afdeling_omschrijving afdeling_omschrijving,
ma.alg_locatie_key alg_locatie_key,
(SELECT alg_locatie_code
FROM alg_locatie l
WHERE l.alg_locatie_key = ma.alg_locatie_key)
locatie_code,
(SELECT alg_district_omschrijving
FROM alg_locatie l, alg_district d
WHERE l.alg_district_key = d.alg_district_key
AND l.alg_locatie_key = ma.alg_locatie_key)
district_omschijving,
ma.mld_adres_naam afleveradres,
NVL ( (SELECT pr.fac_profiel_limiet
FROM fac_profiel pr
WHERE p.fac_profiel_key = pr.fac_profiel_key), 0)
mandaat,
prs_perslid_nr personeelsnr,
wp2.prs_werkplek_aanduiding werkplek,
d.ins_discipline_key ins_discipline_key,
d.ins_discipline_omschrijving catalogus,
sg.bes_srtgroep_omschrijving groep,
b.bes_bestelling_leverdatum afleverdatum,
TO_CHAR(aaxx.count_work_days (
b.bes_bestelling_datum,
NVL (
fac.gettrackingdate ('BESOTV', b.bes_bestelling_key),
SYSDATE)))
doorlooptijd_werkdgn,
NVL ( (SELECT bdp.bes_disc_params_leverdagen
FROM bes_disc_params bdp
WHERE d.ins_discipline_key = bdp.bes_ins_discipline_key),
0)
sla_tijd,
sd.bes_srtdeel_nr productcode,
DECODE(bes_bestelling_status,
8,0, -- geannuleerd
bi.bes_bestelling_item_prijs * bi.bes_bestelling_item_aantal) prijs,
DECODE(bes_bestelling_status,
8,0, -- geannuleerd
NVL (bi.bes_bestelling_item_inkprijs, bi.bes_bestelling_item_prijs)
* bi.bes_bestelling_item_aantal)
inkoopprijs,
(SELECT bes_bestellingstatuses_omschr
FROM bes_bestellingstatuses bs
WHERE bs.bes_bestellingstatuses_key = b.bes_bestelling_status)
status,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = b.bes_bestelling_fiat_user)
gefiatteerddoor,
b.bes_bestelling_satisfaction,
b.bes_bestelling_satisfaction_op,
bo.bes_bestelopdr_id bestelopdrachtnummer,
(SELECT b.prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key)
leverancier,
bi.bes_bestelling_item_aantal aantal,
DECODE (bes_bestelling_status,
8, 0, -- geannuleerd
bi.bes_bestelling_item_prijs) itemprijs,
DECODE (bes_bestelling_status,
8,0, -- geannuleerd
NVL (bi.bes_bestelling_item_inkprijs, bi.bes_bestelling_item_prijs))
iteminkoopprijs,
sd.bes_srtdeel_omschrijving productomschrijving,
boi.bes_bestelopdr_item_posnr itemposnr
FROM bes_bestelling b,
prs_perslid p,
prs_kostenplaats k,
prs_afdeling a,
mld_adres ma,
( SELECT pw.prs_perslid_key,
MIN (prs_werkplek_aanduiding)
|| DECODE (COUNT ( * ), 1, '', '...')
prs_werkplek_aanduiding
FROM prs_v_werkplek_gegevens wp, prs_perslidwerkplek pw
WHERE wp.prs_werkplek_key = pw.prs_werkplek_key
GROUP BY pw.prs_perslid_key) wp2,
bes_bestelling_item bi,
bes_bestelopdr_item boi,
bes_bestelopdr bo,
bes_srtdeel sd,
bes_srtgroep sg,
ins_tab_discipline d
WHERE b.prs_perslid_key = p.prs_perslid_key
AND b.prs_kostenplaats_key = k.prs_kostenplaats_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND b.mld_adres_key_lev = ma.mld_adres_key
AND wp2.prs_perslid_key(+) = p.prs_perslid_key
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key(+)
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = d.ins_discipline_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_BES_KENMERK
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_bestelling
(
nummer,
kenmerk_omschrijving,
kenmerk_waarde
)
AS
SELECT kb.bes_bestelling_key,
sk.bes_srtkenmerk_omschrijving,
aaxx_get_kenmerkwaarde (sk.bes_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
bes_kenmerkbestell_waarde)
FROM bes_kenmerk k,
bes_srtkenmerk sk,
fac_kenmerkdomein fkd,
bes_kenmerkbestell kb
WHERE kb.bes_kenmerk_key = k.bes_kenmerk_key
AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_BEZ_BEZOEKERS
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_bez_bezoekers
(
bezoekers_key,
afspraak_begin,
afspraak_ontvangen,
ontvangen_door,
afspraak_eind,
afspraak_afgemeld,
afgemeld_door,
contactpersoon,
gastheer,
locatie,
gebouw,
verdieping,
ruimte,
actie,
opmerking,
parkeerplaats,
ingevoerd_door,
ingevoerd,
res_rsv_ruimte_key,
reservering,
bezoeker,
bedrijf
)
AS
SELECT b.bez_bezoekers_key,
a.bez_afspraak_datum,
bez_bezoekers_done,
bezdon.prs_perslid_key,
bez_afspraak_eind,
bez_bezoekers_out,
bezout.prs_perslid_key,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = a.bez_afspraak_contact_key)
contact,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = a.bez_afspraak_host_key)
HOST,
alg_locatie_code || '-' || alg_locatie_omschrijving,
(SELECT alg_gebouw_upper || '-' || alg_gebouw_naam
FROM alg_gebouw g
WHERE g.alg_gebouw_key = og.alg_gebouw_key)
gebouw,
(SELECT alg_verdieping_volgnr
FROM alg_verdieping v
WHERE v.alg_verdieping_key = og.alg_verdieping_key)
verdieping,
(SELECT alg_ruimte_nr || '-' || alg_ruimte_omschrijving
FROM alg_ruimte r
WHERE r.alg_ruimte_key = og.alg_ruimte_key)
ruimte,
(SELECT bez_actie_omschrijving
FROM bez_actie ac
WHERE ac.bez_actie_key = a.bez_actie_key)
actie,
a.bez_afspraak_opmerking opmerking,
(SELECT MAX (ins_deel_omschrijving)
FROM res_v_aanwezigrsv_deel rrd, res_deel rd, ins_deel d
WHERE rrd.bez_bezoekers_key = b.bez_bezoekers_key
AND rrd.res_deel_key = rd.res_deel_key
AND rd.res_ins_deel_key = d.ins_deel_key)
parkeer,
bezmut.prs_perslid_key,
bezmut.fac_tracking_datum,
a.res_rsv_ruimte_key res_rsv_ruimte_key,
(SELECT rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
FROM res_rsv_ruimte rrr
WHERE rrr.res_rsv_ruimte_key = a.res_rsv_ruimte_key)
reservering_nummer,
b.bez_afspraak_naam,
b.bez_afspraak_bedrijf
FROM bez_bezoekers b,
bez_afspraak a,
alg_v_onroerendgoed og,
alg_locatie l,
(SELECT fac_tracking_refkey, prs_perslid_key
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'BEZDON'
AND NOT EXISTS
(SELECT fac_tracking_refkey
FROM fac_tracking t2
WHERE t2.fac_srtnotificatie_key =
t.fac_srtnotificatie_key
AND t2.fac_tracking_refkey = t.fac_tracking_refkey
AND t2.fac_tracking_key > t.fac_tracking_key))
bezdon,
(SELECT fac_tracking_refkey, prs_perslid_key
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'BEZOUT'
AND NOT EXISTS
(SELECT fac_tracking_refkey
FROM fac_tracking t2
WHERE t2.fac_srtnotificatie_key =
t.fac_srtnotificatie_key
AND t2.fac_tracking_refkey = t.fac_tracking_refkey
AND t2.fac_tracking_key > t.fac_tracking_key))
bezout,
(SELECT fac_tracking_refkey, prs_perslid_key, fac_tracking_datum
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'BEZMUT'
AND NOT EXISTS
(SELECT fac_tracking_refkey
FROM fac_tracking t2
WHERE t2.fac_srtnotificatie_key =
t.fac_srtnotificatie_key
AND t2.fac_tracking_refkey = t.fac_tracking_refkey
AND t2.fac_tracking_key > t.fac_tracking_key))
bezmut
WHERE b.bez_afspraak_key = a.bez_afspraak_key
AND a.alg_onrgoed_keys = og.alg_onroerendgoed_keys(+)
AND a.alg_locatie_key = l.alg_locatie_key(+)
AND b.bez_bezoekers_key = bezdon.fac_tracking_refkey(+)
AND b.bez_bezoekers_key = bezout.fac_tracking_refkey(+)
AND a.bez_afspraak_key = bezmut.fac_tracking_refkey(+);
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_ALG_ONRGOED
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_alg_onrgoed
(
alg_onroerendgoed_keys,
alg_onroerendgoed_code,
alg_onroerendgoed_omschrijving,
alg_onroerendgoed_aanmaak,
alg_onroerendgoed_verwijder,
alg_type,
alg_regio_key,
alg_regio_omschrijving,
alg_district_key,
alg_district_omschrijving,
alg_locatie_key,
alg_locatie_code,
alg_locatie_omschrijving,
alg_locatie_bezoek_adres,
alg_locatie_bezoek_postcode,
alg_locatie_bezoek_plaats,
alg_terreinsector_key,
alg_terreinsector_code,
alg_terreinsector_naam,
alg_gebouw_key,
alg_gebouw_code,
alg_gebouw_naam,
alg_gebouw_verantwoordelijke,
alg_gebouw_verantwoordelijke2,
alg_gebouw_mjb_score1,
alg_gebouw_bvo,
alg_gebouw_bez,
alg_gebouw_werkdagen,
alg_gebouw_beginuur,
alg_gebouw_einduur,
alg_gebouw_functie,
alg_gebouw_x,
alg_gebouw_y,
alg_verdieping_key,
alg_verdieping_code,
alg_verdieping_omschrijving,
alg_ruimte_key,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_ruimte_m2,
alg_ruimte_m2_alt1,
alg_ruimte_m2_alt2,
dienstniveau_niveau,
dienstniveau,
alg_srtruimte_omschrijving,
prs_afdeling_upper
)
AS
SELECT alg_onroerendgoed_keys,
DECODE (alg_type,
'T', alg_terreinsector_code,
'G', alg_gebouw_code,
'V', alg_verdieping_code,
'R', alg_ruimte_nr)
code,
DECODE (alg_type,
'T', alg_terreinsector_naam,
'G', alg_gebouw_naam,
'V', alg_verdieping_omschrijving,
'R', alg_ruimte_omschrijving)
omschrijving,
DECODE (alg_type,
'T', alg_terreinsector_aanmaak,
'G', alg_gebouw_aanmaak,
'V', alg_verdieping_aanmaak,
'R', alg_ruimte_aanmaak)
aanmaak,
DECODE (alg_type,
'T', alg_terreinsector_verwijder,
'G', alg_gebouw_verwijder,
'V', COALESCE(alg_verdieping_verwijder, alg_gebouw_verwijder),
'R', COALESCE(alg_ruimte_verwijder, alg_verdieping_verwijder, alg_gebouw_verwijder)
)verwijder,
aog.alg_type,
r.alg_regio_key,
r.alg_regio_omschrijving,
d.alg_district_key,
d.alg_district_omschrijving,
l.alg_locatie_key,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
l.alg_locatie_adres,
l.alg_locatie_postcode,
l.alg_locatie_plaats,
t.alg_terreinsector_key,
t.alg_terreinsector_code,
t.alg_terreinsector_naam,
g.alg_gebouw_key,
g.alg_gebouw_code,
g.alg_gebouw_naam,
g.prs_perslid_key_verantw,
g.prs_perslid_key_verantw2,
g.alg_gebouw_mjb_score1,
(SELECT SUM (alg_ruimte_bruto_vloeropp) alg_gebouw_bvo
FROM alg_ruimte r, alg_verdieping v
WHERE v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_verwijder IS NULL
AND v.alg_gebouw_key = g.alg_gebouw_key)
alg_gebouw_bvo,
alg_gebouw_bez,
alg_gebouw_werkdagen,
DECODE (
alg_gebouw_beginuur,
NULL,
TO_CHAR (NULL),
0,
TO_CHAR (NULL),
TO_CHAR (TRUNC (alg_gebouw_beginuur)) || ':'
|| TO_CHAR (
(alg_gebouw_beginuur - TRUNC (alg_gebouw_beginuur)) * 60,
'FM00'))
alg_gebouw_beginuur,
DECODE (
alg_gebouw_einduur,
NULL,
TO_CHAR (NULL),
0,
TO_CHAR (NULL),
TO_CHAR (TRUNC (alg_gebouw_einduur)) || ':'
|| TO_CHAR (
(alg_gebouw_einduur - TRUNC (alg_gebouw_einduur)) * 60,
'FM00'))
alg_gebouw_einduur,
(SELECT alg_srtgebouw_omschrijving
FROM alg_srtgebouw sg
WHERE sg.alg_srtgebouw_key = g.alg_srtgebouw_key)
alg_gebouw_functie,
alg_gebouw_x,
alg_gebouw_y,
v.alg_verdieping_key,
v.alg_verdieping_code,
v.alg_verdieping_omschrijving,
ru.alg_ruimte_key,
ru.alg_ruimte_nr,
ru.alg_ruimte_omschrijving,
ru.alg_ruimte_bruto_vloeropp,
ru.alg_ruimte_opp_alt1,
ru.alg_ruimte_opp_alt2,
CASE
WHEN mdr.mld_dienstniveau_omschr IS NOT NULL THEN 'R'
WHEN mdv.mld_dienstniveau_omschr IS NOT NULL THEN 'V'
WHEN mdg.mld_dienstniveau_omschr IS NOT NULL THEN 'G'
WHEN mdl.mld_dienstniveau_omschr IS NOT NULL THEN 'L'
END
dienstniveau_gevuld,
COALESCE (mdr.mld_dienstniveau_omschr,
mdv.mld_dienstniveau_omschr,
mdg.mld_dienstniveau_omschr,
mdl.mld_dienstniveau_omschr)
dienstniveau,
sru.alg_srtruimte_omschrijving,
afd.prs_afdeling_upper
FROM alg_v_allonroerendgoed aog,
mld_dienstniveau mdr,
mld_dienstniveau mdv,
mld_dienstniveau mdg,
mld_dienstniveau mdl,
alg_ruimte ru,
alg_verdieping v,
alg_terreinsector t,
alg_gebouw g,
alg_locatie l,
alg_district d,
alg_regio r,
alg_srtruimte sru,
(SELECT ra.alg_ruimte_key, a.prs_afdeling_upper
FROM prs_ruimteafdeling ra, prs_v_afdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key) afd
WHERE aog.alg_gebouw_key = g.alg_gebouw_key(+)
AND aog.alg_terreinsector_key = t.alg_terreinsector_key(+)
AND aog.alg_verdieping_key = v.alg_verdieping_key(+)
AND aog.alg_ruimte_key = ru.alg_ruimte_key(+)
AND g.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND d.alg_regio_key = r.alg_regio_key
AND ru.mld_dienstniveau_key = mdr.mld_dienstniveau_key(+)
AND v.mld_dienstniveau_key = mdv.mld_dienstniveau_key(+)
AND g.mld_dienstniveau_key = mdg.mld_dienstniveau_key(+)
AND l.mld_dienstniveau_key = mdl.mld_dienstniveau_key(+)
AND ru.alg_srtruimte_key = sru.alg_srtruimte_key (+)
AND ru.alg_ruimte_key = afd.alg_ruimte_key (+)
UNION ALL
SELECT TO_NUMBER (NULL),
alg_locatie_code,
alg_locatie_omschrijving,
l.alg_locatie_aanmaak,
l.alg_locatie_verwijder,
'L',
r.alg_regio_key,
alg_regio_omschrijving,
d.alg_district_key,
alg_district_omschrijving,
l.alg_locatie_key,
alg_locatie_code,
alg_locatie_omschrijving,
alg_locatie_adres,
alg_locatie_postcode,
alg_locatie_plaats,
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL), -- alg_gebouw_bvo,
TO_NUMBER (NULL), -- alg_gebouw_bez,
TO_NUMBER (NULL), -- alg_gebouw_werkdagen,
TO_CHAR (NULL), -- alg_gebouw_beginuur,
TO_CHAR (NULL), -- alg_gebouw_einduur,
TO_CHAR (NULL), -- alg_gebouw_functie,
TO_NUMBER (NULL), -- alg_gebouw_x,
TO_NUMBER (NULL), -- alg_gebouw_y,
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
'L',
md.mld_dienstniveau_omschr,
TO_CHAR (NULL),
TO_CHAR (NULL)
FROM alg_locatie l,
alg_district d,
alg_regio r,
mld_dienstniveau md
WHERE l.alg_district_key = d.alg_district_key
AND d.alg_regio_key = r.alg_regio_key
AND l.mld_dienstniveau_key = md.mld_dienstniveau_key(+)
UNION ALL
SELECT TO_NUMBER (NULL),
TO_CHAR (NULL),
alg_district_omschrijving,
d.alg_district_aanmaak,
d.alg_district_verwijder,
'D',
r.alg_regio_key,
alg_regio_omschrijving,
d.alg_district_key,
alg_district_omschrijving,
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL), -- alg_gebouw_bvo,
TO_NUMBER (NULL), -- alg_gebouw_bez,
TO_NUMBER (NULL), -- alg_gebouw_werkdagen,
TO_CHAR (NULL), -- alg_gebouw_beginuur,
TO_CHAR (NULL), -- alg_gebouw_einduur,
TO_CHAR (NULL), -- alg_gebouw_functie,
TO_NUMBER (NULL), -- alg_gebouw_x,
TO_NUMBER (NULL), -- alg_gebouw_y,
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL)
FROM alg_district d, alg_regio r
WHERE d.alg_regio_key = r.alg_regio_key
UNION ALL
SELECT TO_NUMBER (NULL),
TO_CHAR (NULL),
alg_regio_omschrijving,
r.alg_regio_aanmaak,
r.alg_regio_verwijder,
'R',
r.alg_regio_key,
alg_regio_omschrijving,
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL), -- alg_gebouw_bvo,
TO_NUMBER (NULL), -- alg_gebouw_bez,
TO_NUMBER (NULL), -- alg_gebouw_werkdagen,
TO_CHAR (NULL), -- alg_gebouw_beginuur,
TO_CHAR (NULL), -- alg_gebouw_einduur,
TO_CHAR (NULL), -- alg_gebouw_functie,
TO_NUMBER (NULL), -- alg_gebouw_x,
TO_NUMBER (NULL), -- alg_gebouw_y,
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL)
FROM alg_regio r;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_ALG_KENMERK
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_onrgoed
(
alg_onrgoed_key,
alg_kenmerk_niveau,
alg_kenmerk_omschrijving,
alg_kenmerk_waarde
)
AS
SELECT aog.alg_onrgoed_key,
k.alg_kenmerk_niveau,
k.alg_kenmerk_omschrijving,
aaxx_get_kenmerkwaarde (k.alg_kenmerk_kenmerktype,
k.fac_kenmerkdomein_key,
aog.alg_onrgoedkenmerk_waarde)
FROM alg_kenmerk k, alg_onrgoedkenmerk aog
WHERE k.alg_kenmerk_key = aog.alg_kenmerk_key
AND aog.alg_onrgoedkenmerk_verwijder IS NULL;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_INS_SENSOR_STATUS
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_ins_sensor_status
(
ruimte_key,
sensor_id,
tijdstip_aan,
tijdstip_uit
)
AS
SELECT d.ins_alg_ruimte_key,
d.ins_deel_omschrijving,
h.ins_deel_statedate,
h.uit
FROM (SELECT h.*,
LEAD (ins_deel_statedate)
OVER (PARTITION BY ins_deel_key ORDER BY ins_deel_statedate)
AS uit
FROM ins_deel_state_history h) h,
ins_srtdeel sd,
ins_deel d
WHERE h.ins_deel_key = d.ins_deel_key
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND h.ins_deel_state = '1'
ORDER BY d.ins_alg_ruimte_key, h.ins_deel_statedate;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_INSPECTIE
-------------------------------------------------------------------------------
-- Zie ticket 63820. Betreft DWH-view_2.0. Dit is afgeleide van de AAXX_V_DWH_INSPECTIE.
-- Bedoeling:
---- Deze view hanteert men nu eerst voor Gemeente Nijmegen om o.a. de gewenste Dashboards mee te realiseren.
---- Indien dit gereed is dan zou de oude AAXX-view vervangen moeten gaan worden door deze.
CREATE OR REPLACE VIEW aaxx_v_dwh_inspectie_2
(
taakcategorie,
taaksoort,
taakmodus,
ismjob,
taakopties,
uitvoer_aantal,
deelsrtcontrole_key,
deelsrtcontrole_key_vorig,
deel_key,
deel_omschrijving,
srtcontrole_key,
srtcontrole_info,
srtcontrole_niveau,
srtcontrole_omschrijving,
srtcontrole_opmerking,
srtcontrole_periode,
srtcontrole_eenheid, -- Eenheid (jaar, maand, week, dag) op basistaak
srtcontrole_level, -- prioriteit basistaak
srtcontrole_percentage,
srtcontrole_start,
srtcontrole_eind,
srtcontrole_groep,
uitvoer_x, -- De x-ste uitvoer
status, -- Is status van de uitvoerende taak (ingepland, in behandeling, afgemeld, voltooid)
deelsrtcontrole_datum, -- Voor Uitvoertaak de coalesce(Uitvoerdatum, Plandatum of Startdatum)
-- Voor Basistaak indien geen geschiedenis, StartdatumTaak (of indien leeg ins_deel_datum)
----- en indien wel geschiedenis dan NextCyclus op basis van (uitvoerdatum, plandatum, FreezeDate ivm MJOB) laatste/hudige taak.
mjob_doorgeschoven,
uitvoerdatum_gepland,
uitvoerdatum_inbehandeling,
uitvoerdatum_gereed,
succes,
actie_vereist,
afmeld_datum, -- Afgemeld op (= gereed/voltooid met vervolgactie..)
verwerk_datum, -- Verwerkt op (= voltooid zonder vervolgactie / vervolgactie voltooid)
uitvoerdatum_origineel, -- Datum waarop uitvoertaak uitgevoerd zou moeten worden
respijt,
deelsrtcontrole_status, -- Voor uitvoertaak, de beoordeling Te laat of op Tijd (op basis coalesce(plandatum, originele uitvoerdatum)
-- Voor basistaak indicatie of de nog te starten taak al opgestart had moeten worden
cycli_dagen, -- VorigeUitvoerdatum MINUS deze uitvoerdatum
srtcontrole_materiaal,
controlemode_omschrijving,
controlemode_opmerking,
deelsrtcontrole_opmerking,
prs_perslid_key,
gecontroleerd_door,
taak_categorie,
dienst,
prs_bedrijf_key
)
AS
SELECT
cd.ins_discipline_omschrijving,
CASE
WHEN cdp.ctr_disc_params_controle_type = 1
THEN
lcl.l ('lcl_ins_srtcontrole_insp')
WHEN cdp.ctr_disc_params_controle_type = 2
THEN
lcl.l ('lcl_ins_srtcontrole_repl')
WHEN cdp.ctr_disc_params_controle_type = 3
THEN
lcl.l ('lcl_ins_srtcontrole_cert')
END
taaksoort,
CASE
WHEN sc.ins_srtcontrole_mode = 0
THEN
lcl.l ('lcl_ins_srtcontrole_moment')
ELSE
lcl.l ('lcl_ins_srtcontrole_interval')
END
taak_modus,
cdp.ctr_disc_params_ismjob ismjob,
sc.ins_srtcontrole_options taakopties,
(SELECT COUNT (dc2.ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole dc2
WHERE dc2.ins_deel_key = d.ins_deel_key
AND dc2.ins_srtcontrole_key = x.ins_srtcontrole_key)
uitvoer_aantal,
dc.ins_deelsrtcontrole_key,
dcp.ins_deelsrtcontrole_key_vorige deelsrtcontrole_key_vorig,
d.ins_deel_key,
d.ins_deel_omschrijving,
sc.ins_srtcontrole_key,
sc.ins_srtcontrole_info,
sc.ins_srtcontrole_niveau,
sc.ins_srtcontrole_omschrijving,
COALESCE (x.ins_srtcontroledl_xcp_opmerk, sc.ins_srtcontrole_opmerking) ins_srtcontrole_opmerking,
COALESCE (x.ins_srtcontroledl_xcp_periode, sc.ins_srtcontrole_periode) ins_srtcontrole_periode,
DECODE (
COALESCE (x.ins_srtcontroledl_xcp_eenheid, sc.ins_srtcontrole_eenheid),
0,
'Uurlijks',
1,
'Dagelijks',
2,
'Wekelijks',
3,
'Maandelijks',
4,
'Jaarlijks',
'Onbekend')
ins_srtcontrole_eenheid,
sc.ins_srtcontrole_level, -- prioriteit
COALESCE (x.ins_srtcontroledl_xcp_perc, sc.ins_srtcontrole_percentage) ins_srtcontrole_percentage,
x.ins_srtcontroledl_xcp_startdat,
COALESCE (x.ins_srtcontroledl_xcp_eind, ins_srtcontrole_eind) ins_srtcontrole_eind,
COALESCE (x.ins_srtcontroledl_xcp_groep, ins_srtcontrole_groep) ins_srtcontrole_groep,
(SELECT count(*)+1
FROM ins_deelsrtcontrole dc2
WHERE dc2.ins_deelsrtcontrole_key < dc.ins_deelsrtcontrole_key
AND dc2.ins_deel_key = dc.ins_deel_key
AND dc2.ins_srtcontrole_key = dc.ins_srtcontrole_key
AND dc2.ins_scenario_key = dc.ins_scenario_key) uitvoer_x,
DECODE (dc.ins_deelsrtcontrole_status,
0, 'Ingepland',
2, 'In behandeling',
5, 'Afgemeld',
6, 'Voltooid') status,
COALESCE(dc.ins_deelsrtcontrole_datum, dc.ins_deelsrtcontrole_plandatum, tr.datum_inbehandeling) ins_deelsrtcontrole_datum,
CASE
WHEN tr.mjob_doorgeschoven IS NOT NULL
THEN
TO_CHAR (dc.ins_deelsrtcontrole_freezedate, 'yyyy')
ELSE
NULL
END mjob_doorgeschoven,
dc.ins_deelsrtcontrole_plandatum
uitvoerdatum_gepland,
tr.datum_inbehandeling
uitvoerdatum_inbehandeling,
dc.ins_deelsrtcontrole_datum
uitvoerdatum_gereed,
(SELECT CASE
WHEN cm.ins_controlemode_success = 1 THEN 'ja' ELSE 'nee'
END
FROM ins_controlemode cm
WHERE cm.ins_controlemode_key = dc.ins_controlemode_key)
succes,
CASE
WHEN dc.ins_deelsrtcontrole_status = 5 THEN 'ja'
WHEN dc.ins_deelsrtcontrole_status = 6 THEN 'nee'
ELSE ''
END
actie_vereist,
tr.datum_afgemeld
afmeld_datum, -- Afgemeld op (= gereed/voltooid met vervolgactie..)
tr.datum_verwerkt
verwerk_datum, -- Verwerkt op (= voltooid zonder vervolgactie / vervolgactie voltooid)
dc.ins_deelsrtcontrole_datum_org
uitvoerdatum_origineel,
CASE
WHEN dc.ins_deelsrtcontrole_plandatum IS NOT NULL
AND dc.ins_deelsrtcontrole_plandatum > dc.ins_deelsrtcontrole_datum_org THEN 'respijt'
ELSE ''
END NN_respijt,
CASE
WHEN dc.ins_deelsrtcontrole_status in (5,6)
AND COALESCE(dc.ins_deelsrtcontrole_plandatum, dc.ins_deelsrtcontrole_datum_org) < dc.ins_deelsrtcontrole_datum THEN 'Te laat'
WHEN dc.ins_deelsrtcontrole_status in (5,6)
AND COALESCE(dc.ins_deelsrtcontrole_plandatum, dc.ins_deelsrtcontrole_datum_org) >= dc.ins_deelsrtcontrole_datum THEN 'Op tijd'
ELSE ''
END NN_ins_deelsrtcontrole_status,
CASE
WHEN dc.ins_deelsrtcontrole_status in (5,6) THEN
dc.ins_deelsrtcontrole_datum - COALESCE(dcp.ins_deelsrtcontrole_datum, x.ins_srtcontroledl_xcp_startdat, d.ins_deel_aanmaak)
ELSE NULL
END NN_cycli_dagen,
COALESCE (COALESCE(ins_deelsrtcontrole_freezecost, ins_srtcontroledl_xcp_materia), sc.ins_srtcontrole_materiaal) srtcontrole_materiaal,
cm.ins_controlemode_oms,
cm.ins_controlemode_opmerking,
dc.ins_deelsrtcontrole_opmerking,
dc.prs_perslid_key,
pf.prs_perslid_naam_full,
cd.ins_discipline_omschrijving,
pd.prs_dienst_omschrijving,
(SELECT max(b.prs_bedrijf_key)
FROM prs_bedrijf b, prs_bedrijfdienstlocatie bdl
WHERE pd.prs_dienst_key = bdl.prs_dienst_key
AND bdl.prs_bedrijf_key = b.prs_bedrijf_key
AND ( bdl.alg_gebouw_key = d.alg_gebouw_key
OR bdl.alg_locatie_key = d.alg_locatie_key)) prs_bedrijf_key
FROM ins_deelsrtcontrole dc,
ins_v_deel_gegevens d,
ins_srtcontrole sc,
prs_dienst pd,
alg_locatie l,
alg_gebouw g,
ins_controlemode cm,
ins_srtcontroledl_xcp x,
prs_v_perslid_fullnames_all pf,
ctr_discipline cd,
ctr_disc_params cdp,
(SELECT
v.ins_deelsrtcontrole_key,
v.ins_deelsrtcontrole_key_vorige,
dcv.ins_deelsrtcontrole_datum,
dcv.ins_controlemode_key,
dcv.ins_deelsrtcontrole_status
FROM (SELECT dc.ins_deelsrtcontrole_key,
dc.ins_deel_key,
dc.ins_srtcontrole_key,
(SELECT MAX (dc2.ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole dc2
WHERE dc2.ins_deelsrtcontrole_key < dc.ins_deelsrtcontrole_key
AND dc2.ins_deel_key = dc.ins_deel_key
AND dc2.ins_srtcontrole_key = dc.ins_srtcontrole_key
AND dc2.ins_scenario_key = dc.ins_scenario_key)
AS ins_deelsrtcontrole_key_vorige
FROM ins_deelsrtcontrole dc,
ins_srtcontroledl_xcp x,
ins_srtcontrole sc
WHERE dc.ins_deel_key = x.ins_deel_key
AND dc.ins_srtcontrole_key = x.ins_srtcontrole_key
AND x.ins_srtcontrole_key = sc.ins_srtcontrole_key) v,
ins_deelsrtcontrole dcv
WHERE v.ins_deelsrtcontrole_key_vorige = dcv.ins_deelsrtcontrole_key) dcp, -- dc_previous
(SELECT dc.ins_deelsrtcontrole_key,
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCBE'
AND fac_tracking_refkey = dc.ins_deelsrtcontrole_key) datum_inbehandeling,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCAF'
AND ft.fac_tracking_refkey = dc.ins_deelsrtcontrole_key) datum_afgemeld,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCVE'
AND ft.fac_tracking_refkey =dc.ins_deelsrtcontrole_key) datum_verwerkt,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCUP'
AND instr(lower(ft.fac_tracking_oms),'freeze datum:')>0
AND ft.fac_tracking_refkey =dc.ins_deelsrtcontrole_key) mjob_doorgeschoven
FROM ins_deelsrtcontrole dc ) tr
WHERE dc.ins_deel_key = d.ins_deel_key
AND dc.ins_srtcontrole_key = sc.ins_srtcontrole_key
AND dc.ins_controlemode_key = cm.ins_controlemode_key(+)
AND dc.prs_perslid_key = pf.prs_perslid_key(+)
AND sc.ctr_discipline_key = cd.ins_discipline_key
AND cd.ins_discipline_key = cdp.ctr_ins_discipline_key
AND x.ins_srtcontrole_key = sc.ins_srtcontrole_key(+)
AND x.ins_deel_key = d.ins_deel_key(+)
AND sc.prs_dienst_key = pd.prs_dienst_key(+)
AND d.alg_locatie_key = l.alg_locatie_key AND d.alg_gebouw_key = g.alg_gebouw_key
AND dc.ins_deelsrtcontrole_key = dcp.ins_deelsrtcontrole_key (+)
AND dc.ins_deelsrtcontrole_key = tr.ins_deelsrtcontrole_key (+)
UNION ALL
-- Controledefinities ook opmenen. Dus zonder dat er een resultaat record is.
-- Controles met een periode van 0 worden uitgesloten omdat dit geen daadwerkelijk ingeplande of in te plannen controles zijn.
SELECT
cd.ins_discipline_omschrijving,
CASE
WHEN cdp.ctr_disc_params_controle_type = 1
THEN
lcl.l ('lcl_ins_srtcontrole_insp')
WHEN cdp.ctr_disc_params_controle_type = 2
THEN
lcl.l ('lcl_ins_srtcontrole_repl')
WHEN cdp.ctr_disc_params_controle_type = 3
THEN
lcl.l ('lcl_ins_srtcontrole_cert')
END
taaksoort,
CASE
WHEN sc.ins_srtcontrole_mode = 0
THEN
lcl.l ('lcl_ins_srtcontrole_moment')
ELSE
lcl.l ('lcl_ins_srtcontrole_interval')
END
taak_modus,
cdp.ctr_disc_params_ismjob ismjob,
sc.ins_srtcontrole_options taakopties,
(SELECT COUNT (dc2.ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole dc2
WHERE dc2.ins_deel_key = xcp.ins_deel_key
AND dc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key)
uitvoer_aantal,
NULL ins_deelsrtcontrole_key,
(SELECT MAX (dc2.ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole dc2
WHERE dc2.ins_deel_key = xcp.ins_deel_key
AND dc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key
)
deelsrtcontrole_key_vorig,
xcp.ins_deel_key,
d.ins_deel_omschrijving,
sc.ins_srtcontrole_key,
xcp.ins_srtcontrole_info,
ins_srtcontrole_niveau,
xcp.ins_srtcontrole_omschrijving,
xcp.ins_srtcontrole_opmerking,
xcp.ins_srtcontrole_periode,
DECODE (xcp.ins_srtcontrole_eenheid,
0, 'Uurlijks',
1, 'Dagelijks',
2, 'Wekelijks',
3, 'Maandelijks',
4, 'Jaarlijks',
'Onbekend')
ins_srtcontrole_eenheid,
xcp.ins_srtcontrole_level, -- prioriteit
xcp.ins_srtcontroledl_xcp_perc,
xcp.ins_srtcontroledl_xcp_startdat,
xcp.ins_srtcontroledl_xcp_eind,
xcp.ins_srtcontroledl_xcp_groep,
0 uitvoer_x,
NULL status,
CASE WHEN v.ins_deelsrtcontrole_key IS NULL THEN
COALESCE (
ins_srtcontroledl_xcp_startdat,
fac.nextcyclusdatedeel (xcp.ins_deel_key,
xcp.ins_srtcontrole_key,
1))
WHEN v.ins_deelsrtcontrole_key IS NOT NULL AND v.ins_controlemode_success = 0 AND cdp.ctr_disc_params_ismjob = 1 THEN
-- Als mjob taak afhandeling niet succesvol heeft (= niet uitgevoerd), dan wordt deze in Facilitor voor nieuwe freeze-jaar opgenomen/voorgesteld. Nemen we ook zo op in deze dwh-view
(SELECT TO_DATE ('01-01-' || fac_setting_pvalue, 'dd-MM-yyyy') FROM fac_setting WHERE fac_setting_name = 'mjb_freeze_year')
ELSE
fac.nextcyclusdate (v.datum_uitvoer, xcp.ins_srtcontrole_mode, xcp.ins_srtcontrole_eenheid, xcp.ins_srtcontrole_periode, xcp.ins_srtcontrole_bits,1,cdp.ctr_disc_params_ismjob)
END ins_deelsrtcontrole_datum,
NULL
mjob_doorgeschoven,
NULL
uitvoerdatum_gepland,
NULL
uitvoerdatum_inbehandeling,
NULL
uitvoerdatum_gereed,
NULL
succes,
NULL
actie_vereist,
NULL
afmeld_datum,
NULL
verwerk_datum,
NULL
uitvoerdatum_origineel,
NULL
respijt,
CASE WHEN v.ins_deelsrtcontrole_key IS NULL THEN
DECODE (
SIGN(
COALESCE (ins_srtcontroledl_xcp_startdat, fac.nextcyclusdatedeel (xcp.ins_deel_key, xcp.ins_srtcontrole_key, 1))
- SYSDATE),
-1,
'Te laat',
'')
WHEN v.ins_deelsrtcontrole_key IS NOT NULL AND v.ins_controlemode_success = 0 AND cdp.ctr_disc_params_ismjob = 1 THEN
DECODE (
SIGN(
(SELECT TO_DATE ('01-01-' || fac_setting_pvalue, 'dd-MM-yyyy') FROM fac_setting WHERE fac_setting_name = 'mjb_freeze_year')
- SYSDATE),
-1,
'Te laat',
'')
ELSE
DECODE (
SIGN( (fac.nextcyclusdate (v.datum_uitvoer, xcp.ins_srtcontrole_mode, xcp.ins_srtcontrole_eenheid, xcp.ins_srtcontrole_periode, xcp.ins_srtcontrole_bits,1,cdp.ctr_disc_params_ismjob))
- SYSDATE),
-1,
'Te laat',
'')
END ins_deelsrtcontrole_status,
NULL cycli_dagen,
xcp.ins_srtcontrole_materiaal,
NULL ins_controlemode_oms,
NULL ins_controlemode_opmerking,
NULL ins_deelsrtcontrole_opmerking,
NULL prs_perslid_key,
NULL prs_perslid_naam_full,
cd.ins_discipline_omschrijving,
pd.prs_dienst_omschrijving,
(SELECT max(b.prs_bedrijf_key)
FROM prs_bedrijf b, prs_bedrijfdienstlocatie bdl
WHERE pd.prs_dienst_key = bdl.prs_dienst_key
AND bdl.prs_bedrijf_key = b.prs_bedrijf_key
AND ( bdl.alg_gebouw_key = d.alg_gebouw_key
OR bdl.alg_locatie_key = d.alg_locatie_key)) prs_bedrijf_key
FROM ins_v_defined_inspect_xcp xcp,
ins_v_deel_gegevens d,
ins_srtcontrole sc,
prs_dienst pd,
alg_locatie l,
alg_gebouw g,
ctr_discipline cd,
ctr_disc_params cdp,
(SELECT dc.ins_deelsrtcontrole_key,
dc.ins_deel_key,
dc.ins_srtcontrole_key,
dc.ins_controlemode_key,
cm.ins_controlemode_success,
dc.ins_deelsrtcontrole_freezedate,
COALESCE(dc.ins_deelsrtcontrole_datum,
DECODE(xcp.ctr_ismjob, 1, COALESCE(dc.ins_deelsrtcontrole_freezedate, dc.ins_deelsrtcontrole_plandatum),
COALESCE(dc.ins_deelsrtcontrole_plandatum, tr.datum_inbehandeling)
)) datum_uitvoer
FROM ins_deelsrtcontrole dc, ins_v_defined_inspect_xcp xcp, ins_controlemode cm,
(SELECT dc.ins_deelsrtcontrole_key,
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'INSCBE'
AND fac_tracking_refkey = dc.ins_deelsrtcontrole_key) datum_inbehandeling
FROM ins_deelsrtcontrole dc ) tr
WHERE dc.ins_deelsrtcontrole_key = (SELECT max(ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole dc2
WHERE dc2.ins_deel_key = dc.ins_deel_key
AND dc2.ins_srtcontrole_key = dc.ins_srtcontrole_key)
AND dc.ins_srtcontrole_key = xcp.ins_srtcontrole_key AND dc.ins_deel_key = xcp.ins_deel_key
AND dc.ins_deelsrtcontrole_key = tr.ins_deelsrtcontrole_key
AND dc.ins_controlemode_key = cm.ins_controlemode_key(+)
) v
WHERE xcp.ins_deel_key = d.ins_deel_key
AND xcp.ins_srtcontrole_key = sc.ins_srtcontrole_key
AND xcp.ins_srtcontrole_periode <> 0
AND sc.ctr_discipline_key = cd.ins_discipline_key
AND cd.ins_discipline_key = cdp.ctr_ins_discipline_key
AND sc.prs_dienst_key = pd.prs_dienst_key(+)
AND d.alg_locatie_key = l.alg_locatie_key AND d.alg_gebouw_key = g.alg_gebouw_key
AND xcp.ins_deel_key = v.ins_deel_key (+) AND xcp.ins_srtcontrole_key = v.ins_srtcontrole_key (+) ;
CREATE OR REPLACE VIEW aaxx_v_dwh_inspectie
(
deelsrtcontrole_key,
deel_key,
deel_omschrijving,
srtcontrole_info,
srtcontrole_niveau,
srtcontrole_omschrijving,
srtcontrole_opmerking,
srtcontrole_periode,
srtcontrole_eenheid,
srtcontrole_level, -- prioriteit
srtcontrole_percentage,
srtcontrole_start,
srtcontrole_eind,
srtcontrole_groep,
deelsrtcontrole_datum,
deelsrtcontrole_gepland,
deelsrtcontrole_status,
deelsrtcontrole_status_next,
srtcontrole_materiaal,
controlemode_omschrijving,
controlemode_opmerking,
deelsrtcontrole_opmerking,
prs_perslid_key,
gecontroleerd_door,
taak_categorie,
dienst,
prs_bedrijf_key,
status,
uitvoerdatum
)
AS
SELECT dc.ins_deelsrtcontrole_key,
d.ins_deel_key,
d.ins_deel_omschrijving,
sc.ins_srtcontrole_info,
sc.ins_srtcontrole_niveau,
sc.ins_srtcontrole_omschrijving,
COALESCE (x.ins_srtcontroledl_xcp_opmerk, sc.ins_srtcontrole_opmerking) ins_srtcontrole_opmerking,
COALESCE (x.ins_srtcontroledl_xcp_periode, sc.ins_srtcontrole_periode) ins_srtcontrole_periode,
DECODE (
COALESCE (x.ins_srtcontroledl_xcp_eenheid, sc.ins_srtcontrole_eenheid),
0,
'Uurlijks',
1,
'Dagelijks',
2,
'Wekelijks',
3,
'Maandelijks',
4,
'Jaarlijks',
'Onbekend')
ins_srtcontrole_eenheid,
sc.ins_srtcontrole_level, -- prioriteit
COALESCE (x.ins_srtcontroledl_xcp_perc, sc.ins_srtcontrole_percentage) ins_srtcontrole_percentage,
x.ins_srtcontroledl_xcp_startdat,
COALESCE (x.ins_srtcontroledl_xcp_eind, ins_srtcontrole_eind) ins_srtcontrole_eind,
COALESCE (x.ins_srtcontroledl_xcp_groep, ins_srtcontrole_groep) ins_srtcontrole_groep,
ins_deelsrtcontrole_datum,
(SELECT MAX (dc2.ins_deelsrtcontrole_datum)
+ sc.ins_srtcontrole_periode
FROM ins_deelsrtcontrole dc2
WHERE dc2.ins_deelsrtcontrole_datum <
dc.ins_deelsrtcontrole_datum
AND dc2.ins_deel_key = dc.ins_deel_key
AND dc2.ins_srtcontrole_key = dc.ins_srtcontrole_key
AND dc2.ins_controlemode_key = dc.ins_controlemode_key)
ins_deelsrtcontrole_gepland,
(SELECT DECODE (
SIGN( MAX (dc2.ins_deelsrtcontrole_datum)
+ sc.ins_srtcontrole_periode
- dc.ins_deelsrtcontrole_datum),
-1,
'Te laat',
'Op tijd')
FROM ins_deelsrtcontrole dc2
WHERE dc2.ins_deelsrtcontrole_datum <
dc.ins_deelsrtcontrole_datum
AND dc2.ins_deel_key = dc.ins_deel_key
AND dc2.ins_srtcontrole_key = dc.ins_srtcontrole_key
AND dc2.ins_controlemode_key = dc.ins_controlemode_key)
ins_deelsrtcontrole_status,
(SELECT DECODE (
COUNT ( * ),
0,
DECODE (
SIGN( (dc.ins_deelsrtcontrole_datum
+ sc.ins_srtcontrole_periode)
- SYSDATE),
-1,
'Te laat',
''))
status_fut
FROM ins_deelsrtcontrole dc2
WHERE dc2.ins_deelsrtcontrole_datum >
dc.ins_deelsrtcontrole_datum
AND dc2.ins_deel_key = dc.ins_deel_key
AND dc2.ins_srtcontrole_key = dc.ins_srtcontrole_key
AND dc2.ins_controlemode_key = dc.ins_controlemode_key)
ins_deelsrtcontrole_next,
COALESCE (COALESCE(ins_deelsrtcontrole_freezecost, ins_srtcontroledl_xcp_materia), sc.ins_srtcontrole_materiaal) srtcontrole_materiaal,
cm.ins_controlemode_oms,
cm.ins_controlemode_opmerking,
dc.ins_deelsrtcontrole_opmerking,
dc.prs_perslid_key,
pf.prs_perslid_naam_full,
cd.ins_discipline_omschrijving,
pd.prs_dienst_omschrijving,
(SELECT max(b.prs_bedrijf_key)
FROM prs_bedrijf b, prs_bedrijfdienstlocatie bdl
WHERE pd.prs_dienst_key = bdl.prs_dienst_key
AND bdl.prs_bedrijf_key = b.prs_bedrijf_key
AND ( bdl.alg_gebouw_key = d.alg_gebouw_key
OR bdl.alg_locatie_key = d.alg_locatie_key)) prs_bedrijf_key,
DECODE (dc.ins_deelsrtcontrole_status,
0, 'Ingepland',
2, 'In behandeling',
5, 'Afgemeld',
6, 'Voltooid') status,
dc.ins_deelsrtcontrole_datum
FROM ins_deelsrtcontrole dc,
ins_v_deel_gegevens d,
ins_srtcontrole sc,
prs_dienst pd,
alg_locatie l,
alg_gebouw g,
ins_controlemode cm,
ins_srtcontroledl_xcp x,
prs_v_perslid_fullnames_all pf,
ctr_discipline cd
WHERE dc.ins_deel_key = d.ins_deel_key
AND dc.ins_srtcontrole_key = sc.ins_srtcontrole_key
AND dc.ins_controlemode_key = cm.ins_controlemode_key(+)
AND dc.prs_perslid_key = pf.prs_perslid_key(+)
AND sc.ctr_discipline_key = cd.ins_discipline_key
AND x.ins_srtcontrole_key = sc.ins_srtcontrole_key(+)
AND x.ins_deel_key = d.ins_deel_key(+)
AND sc.prs_dienst_key = pd.prs_dienst_key(+)
AND d.alg_locatie_key = l.alg_locatie_key AND d.alg_gebouw_key = g.alg_gebouw_key
UNION ALL
-- Controledefinities ook opmenen. Dus zonder dat er een resultaat record is.
-- Controles met een periode van 0 worden uitgesloten omdat dit geen daadwerkelijk ingeplande of in te plannen controles zijn.
SELECT NULL ins_deelsrtcontrole_key,
xcp.ins_deel_key,
d.ins_deel_omschrijving,
xcp.ins_srtcontrole_info,
ins_srtcontrole_niveau,
xcp.ins_srtcontrole_omschrijving,
xcp.ins_srtcontrole_opmerking,
xcp.ins_srtcontrole_periode,
DECODE (xcp.ins_srtcontrole_eenheid,
0, 'Uurlijks',
1, 'Dagelijks',
2, 'Wekelijks',
3, 'Maandelijks',
4, 'Jaarlijks',
'Onbekend')
ins_srtcontrole_eenheid,
xcp.ins_srtcontrole_level, -- prioriteit
xcp.ins_srtcontroledl_xcp_perc,
xcp.ins_srtcontroledl_xcp_startdat,
xcp.ins_srtcontroledl_xcp_eind,
xcp.ins_srtcontroledl_xcp_groep,
DECODE (
(SELECT COUNT ( * )
FROM ins_deelsrtcontrole dsc
WHERE dsc.ins_deel_key = d.ins_deel_key
AND dsc.ins_srtcontrole_key = xcp.ins_srtcontrole_key),
0,
COALESCE (
ins_srtcontroledl_xcp_startdat,
fac.nextcyclusdatedeel (xcp.ins_deel_key,
xcp.ins_srtcontrole_key,
1)),
fac.nextcyclusdatedeel (d.ins_deel_key,
xcp.ins_srtcontrole_key,
1))
ins_deelsrtcontrole_datum,
NULL ins_deelsrtcontrole_gepland,
DECODE (
SIGN(DECODE (
(SELECT COUNT ( * )
FROM ins_deelsrtcontrole dsc
WHERE dsc.ins_deel_key = d.ins_deel_key
AND dsc.ins_srtcontrole_key =
xcp.ins_srtcontrole_key),
0,
COALESCE (
ins_srtcontroledl_xcp_startdat,
fac.nextcyclusdatedeel (xcp.ins_deel_key,
xcp.ins_srtcontrole_key,
1)),
fac.nextcyclusdatedeel (d.ins_deel_key,
xcp.ins_srtcontrole_key,
1))
- SYSDATE),
-1,
'Te laat',
'Op tijd')
ins_deelsrtcontrole_status,
NULL ins_deelsrtcontrole_next,
xcp.ins_srtcontrole_materiaal,
NULL ins_controlemode_oms,
NULL ins_controlemode_opmerking,
NULL ins_deelsrtcontrole_opmerking,
NULL prs_perslid_key,
NULL prs_perslid_naam_full,
cd.ins_discipline_omschrijving,
pd.prs_dienst_omschrijving,
(SELECT max(b.prs_bedrijf_key)
FROM prs_bedrijf b, prs_bedrijfdienstlocatie bdl
WHERE pd.prs_dienst_key = bdl.prs_dienst_key
AND bdl.prs_bedrijf_key = b.prs_bedrijf_key
AND ( bdl.alg_gebouw_key = d.alg_gebouw_key
OR bdl.alg_locatie_key = d.alg_locatie_key)) prs_bedrijf_key,
NULL status,
NULL ins_deelsrtcontrole_datum
FROM ins_v_defined_inspect_xcp xcp,
ins_v_deel_gegevens d,
ins_srtcontrole sc,
prs_dienst pd,
alg_locatie l,
alg_gebouw g,
ctr_discipline cd
WHERE xcp.ins_deel_key = d.ins_deel_key
AND xcp.ins_srtcontrole_key = sc.ins_srtcontrole_key
AND xcp.ins_srtcontrole_periode <> 0
AND sc.ctr_discipline_key = cd.ins_discipline_key
AND sc.prs_dienst_key = pd.prs_dienst_key(+)
AND d.alg_locatie_key = l.alg_locatie_key AND d.alg_gebouw_key = g.alg_gebouw_key ;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_INS_OBJECT
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_ins_object
(
ins_deel_key,
identificatie,
beschrijving,
discipline_omschrijving,
groep_omschrijving,
objectsoort_omschrijving,
objectsoort_code,
registratiedatum,
vervaldatum,
koppel_type,
plaats_eigenaar,
regio_key,
district_key,
locatie_key,
gebouw_key,
terreinsector_key,
verdieping_key,
ruimte_key,
werkplek_key,
afdeling_key,
perslid_key,
beheerder,
actief,
hoeveelheid,
conditie,
prioriteit
)
AS
SELECT ins_deel_key,
ins_deel_omschrijving identificatie,
ins_deel_opmerking beschrijving,
ins_discipline_omschrijving discipline_omschrijving,
ins_srtgroep_omschrijving groep_omschrijving,
ins_srtdeel_omschrijving objectsoort_omschrijving,
ins_srtdeel_code objectsoort_code,
ins_deel_aanmaak registratiedatum,
ins_deel_vervaldatum vervaldatum,
'Afdeling' koppel_type,
(SELECT d.prs_afdeling_omschrijving
FROM prs_v_afdeling d
WHERE prs_afdeling_key =
COALESCE (ins_alg_ruimte_key_org, ins_alg_ruimte_key))
plaats_eigenaar,
NULL alg_regio_key,
NULL alg_district_key,
NULL alg_locatie_key,
NULL alg_gebouw_key,
NULL terreinsector_key,
NULL alg_verdieping_key,
NULL alg_ruimte_key,
NULL prs_werkplek_key,
COALESCE (ins_alg_ruimte_key_org, ins_alg_ruimte_key) prs_afdeling_key,
NULL prs_perslid_key,
pf1.prs_perslid_naam_full beheerder,
ins_deel_actief,
ins_deel_aantal,
ins_deel_mjb_score1,
ins_deel_mjb_score2
FROM ins_v_aanwezigdeel d,
ins_v_aanwezigsrtdeel srt,
ins_v_aanwezigsrtgroep sg,
ins_v_aanwezigdiscipline disc,
prs_v_perslid_fullnames_all pf1,
prs_v_afdeling_boom pb
WHERE srt.ins_srtdeel_key = d.ins_srtdeel_key
AND sg.ins_srtgroep_key = srt.ins_srtgroep_key
AND sg.ins_discipline_key = disc.ins_discipline_key
AND prs_perslid_key_beh = pf1.prs_perslid_key(+)
AND d.ins_alg_ruimte_key = pb.prs_afdeling_key
AND d.ins_deel_module = 'INS'
AND d.ins_deel_parent_key IS NULL
AND COALESCE (ins_alg_ruimte_type_org, ins_alg_ruimte_type) = 'A'
UNION
SELECT ins_deel_key,
ins_deel_omschrijving,
ins_deel_opmerking,
ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_omschrijving,
ins_srtdeel_code,
ins_deel_aanmaak,
ins_deel_vervaldatum,
'Persoon',
COALESCE (pf2.prs_perslid_naam_full, 'onbekend') eigenaar,
NULL alg_regio_key,
NULL alg_district_key,
NULL alg_locatie_key,
NULL alg_gebouw_key,
NULL terreinsector_key,
NULL alg_verdieping_key,
NULL alg_ruimte_key,
NULL prs_werkplek_key,
NULL prs_afdeling_key,
COALESCE (ins_alg_ruimte_key_org, ins_alg_ruimte_key) prs_perslid_key,
pf1.prs_perslid_naam_full,
ins_deel_actief,
ins_deel_aantal,
ins_deel_mjb_score1,
ins_deel_mjb_score2
FROM ins_v_aanwezigdeel d,
ins_v_aanwezigsrtdeel srt,
ins_v_aanwezigsrtgroep sg,
ins_v_aanwezigdiscipline disc,
prs_v_perslid_fullnames_all pf1,
prs_v_perslid_fullnames_all pf2
WHERE srt.ins_srtdeel_key = d.ins_srtdeel_key
AND sg.ins_srtgroep_key = srt.ins_srtgroep_key
AND sg.ins_discipline_key = disc.ins_discipline_key
AND prs_perslid_key_beh = pf1.prs_perslid_key(+)
AND d.ins_deel_module = 'INS'
AND d.ins_deel_parent_key IS NULL
AND COALESCE (ins_alg_ruimte_type_org, ins_alg_ruimte_type) = 'P'
AND pf2.prs_perslid_key(+) =
COALESCE (ins_alg_ruimte_key_org, ins_alg_ruimte_key)
UNION
SELECT ins_deel_key,
ins_deel_omschrijving,
ins_deel_opmerking,
ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_omschrijving,
ins_srtdeel_code,
ins_deel_aanmaak,
ins_deel_vervaldatum,
DECODE (o.alg_onroerendgoed_type,
'R',
'Ruimte',
'T',
'Terrein',
'W',
'Werkplek'),
o.alg_plaatsaanduiding || ' ('
|| DECODE (
o.alg_onroerendgoed_type,
'R',
(SELECT r.alg_ruimte_omschrijving
FROM alg_ruimte r
WHERE r.alg_ruimte_key = d.ins_alg_ruimte_key),
'T',
(SELECT t.alg_terreinsector_naam
FROM alg_terreinsector t
WHERE t.alg_terreinsector_key = d.ins_alg_ruimte_key),
'W',
(SELECT r.alg_ruimte_omschrijving
FROM alg_ruimte r, prs_werkplek w
WHERE r.alg_ruimte_key = w.prs_alg_ruimte_key
AND w.prs_werkplek_key = d.ins_alg_ruimte_key)
)
|| ')'
eigenaar,
di.alg_regio_key alg_regio_key,
l.alg_district_key alg_district_key,
o.alg_locatie_key alg_locatie_key,
o.alg_gebouw_key alg_gebouw_key,
o.alg_terreinsector_key terreinsector_key,
o.alg_verdieping_key alg_verdieping_key,
o.alg_ruimte_key alg_ruimte_key,
o.prs_werkplek_key alg_werkplek_key,
NULL prs_afdeling_key,
NULL prs_perslid_key,
pf1.prs_perslid_naam_full,
ins_deel_actief,
ins_deel_aantal,
ins_deel_mjb_score1,
ins_deel_mjb_score2
FROM ins_v_aanwezigdeel d,
ins_v_aanwezigsrtdeel srt,
ins_v_aanwezigsrtgroep sg,
ins_v_aanwezigdiscipline disc,
prs_v_perslid_fullnames_all pf1,
ins_v_alg_overzicht o,
alg_locatie l,
alg_district di
WHERE srt.ins_srtdeel_key = d.ins_srtdeel_key
AND sg.ins_srtgroep_key = srt.ins_srtgroep_key
AND sg.ins_discipline_key = disc.ins_discipline_key
AND prs_perslid_key_beh = pf1.prs_perslid_key(+)
AND d.ins_deel_module = 'INS'
AND d.ins_deel_parent_key IS NULL
AND COALESCE (ins_alg_ruimte_type_org, ins_alg_ruimte_type) IN
('T', 'R', 'W')
AND o.alg_onroerendgoed_keys =
COALESCE (ins_alg_ruimte_key_org, ins_alg_ruimte_key)
AND o.alg_onroerendgoed_type =
COALESCE (ins_alg_ruimte_type_org, ins_alg_ruimte_type)
AND o.alg_locatie_key = d.ins_alg_locatie_key
AND o.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = di.alg_district_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_INS_KENMERK_OBJECT
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_object
(
deel_key,
ins_kenmerk_omschrijving,
ins_kenmerk_waarde
)
AS
SELECT ins_deel_key deel_key,
srt.ins_srtkenmerk_omschrijving kenmerk_omschrijving,
aaxx_get_kenmerkwaarde (srt.ins_srtkenmerk_kenmerktype,
srt.fac_kenmerkdomein_key,
kd.ins_kenmerkdeel_waarde)
kenmerk_waarde
FROM ins_kenmerkdeel kd, ins_kenmerk k, ins_srtkenmerk srt
WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key
AND srt.ins_srtkenmerk_key = k.ins_srtkenmerk_key
AND ins_kenmerkdeel_verwijder IS NULL;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_KENMERK_INSPECTIE
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_kenmerk_inspectie
(
deelsrtcontrole_key,
ins_kenmerk_omschrijving,
ins_kenmerk_waarde
)
AS
SELECT ins_deelsrtcontrole_key deelsrtcontrole_key,
srt.ins_srtkenmerk_omschrijving kenmerk_omschrijving,
aaxx_get_kenmerkwaarde (srt.ins_srtkenmerk_kenmerktype,
srt.fac_kenmerkdomein_key,
kds.ins_kmdeelsrtcontr_waarde)
kenmerk_waarde
FROM ins_kmdeelsrtcontr kds, ins_kenmerk k, ins_srtkenmerk srt
WHERE kds.ins_kenmerk_key = k.ins_kenmerk_key
AND srt.ins_srtkenmerk_key = k.ins_srtkenmerk_key
AND ins_kmdeelsrtcontr_verwijder IS NULL;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_UREN
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_uren
(
mld_opdr_id,
prs_perslid_key,
datum,
uren_besteed,
uren_opmerking,
uren_status
)
AS
SELECT ug.mld_melding_key || '/' || ug.mld_opdr_bedrijfopdr_volgnr,
ug.prs_perslid_key,
ug.mld_opdr_uren_datum,
ug.mld_opdr_uren_besteed,
ug.mld_opdr_uren_opmerking,
REPLACE(ug.uren_status_tekst, '&'||'nbsp;', ' ') uren_status_tekst
FROM aaxx_v_exact_uren_gegevens ug;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_UREN_IMPROD
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_uren_improd
(
prs_perslid_key,
code_improductief,
omschr_improductief,
datum,
uren_besteed,
uren_opmerking,
uren_status
)
AS
SELECT ou.prs_perslid_key,
io.mld_impropdr_code,
io.mld_impropdr_omschrijving,
ou.mld_opdr_uren_datum,
ou.mld_opdr_uren_besteed,
ou.mld_opdr_uren_opmerking,
REPLACE(lx.fac_locale_xsl_tekst, '&'||'nbsp;', ' ') fac_locale_xsl_tekst
FROM mld_opdr_uren ou,
mld_impropdr io,
(SELECT *
FROM fac_locale_xsl
WHERE fac_locale_xsl_lang = 'NL') lx
WHERE ou.mld_impropdr_key = io.mld_impropdr_key
AND lx.fac_locale_xsl_label =
'lcl_mld_uren_status_' || ou.mld_opdr_uren_status;
-------------------------------------------------------------------------------
-- DATAWAREHOUSE - DWH_TRACKING
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_tracking
AS
SELECT t.fac_tracking_refkey ref_key,
sn.fac_srtnotificatie_xmlnode soort,
t.fac_tracking_datum datum,
-- specifieke actiecodes zijn bepaald bij mareon-factuurverwerking (FIN_FACTUR_MARX) en zijn vastgelegd op Z:\Project\Implementaties\Customers\AAXX\DOC\Mareon_Factuurverwerking (ticket AAIT#75826)
CASE WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Deze factuur is ingeboekt terwijl de Opdracht al op VERWERKT staat') > 0 THEN 'FINA01'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Hetzelfde factuur-nummer is al eerder geregistreerd op deze Opdracht') > 0 THEN 'FINA02'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND t.fac_tracking_oms = 'CONTROLE - Bedrag van gekoppelde verplichting is 0,- euro' THEN 'FINA03'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Bedrag van gekoppelde verplichting is 0,- euro en er is een REDEN ingevuld') > 0 THEN 'FINA04'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Credit geboekt op Opdracht/Bestelling') > 0 THEN 'FINA05'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Credit geboekt op Contract in voorgaande periode') > 0 THEN 'FINA06'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Verdeelperiode voor Contract kan niet goed bepaald worden en is dus niet weggeschreven') > 0 THEN 'FINA07'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Betreft factuur op Contract uit vorig boekjaar') > 0 THEN 'FINA08'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Contract is op factuur zonder versie-nummer weergegeven; hoogste versienr is gekoppeld') > 0 THEN 'FINA09'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Contract met gebroken boekjaar en dus (nog) geen automatische bepaling verdeelperiode') > 0 THEN 'FINA10'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Dit betreft een verzamelfactuur') > 0 THEN 'FINA11'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'PDF opslaan voor SABIC GENK') > 0 THEN 'FINA12'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Contract CF en 90% al gefactureerd in voorgaande periode') > 0 THEN 'FINA13'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Factuur incompleet i.v.m. ontbrekende orderreferentie (vanuit scanning)') > 0 THEN 'FINA14'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Betreft D-categorie factuur!') > 0 THEN 'FINA15'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Leveranciersnummer ontbreekt op leverancierskaart') > 0 THEN 'FINA16'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Contract met gebroken boekjaar (check verdeelperiode)') > 0 THEN 'FINA17'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Gecontroleerd: (leeg) --> 1') > 0 THEN 'FINAOK'
ELSE fac_srtnotificatie_code
END
actiecode,
t.fac_tracking_oms omschrijving,
t.prs_perslid_key prs_perslid_key
FROM fac_tracking t,
fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode IS NOT NULL;
-------------------------------------------------------------------------------
-- DATAWAREHOUSE - DWH_FAQ
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_faq
AS
SELECT f.fac_faq_key,
(SELECT fac_version_cust FROM fac_version)
fac_version_cust,
'https://' || LOWER( (SELECT fac_version_cust FROM fac_version)) || '.facilitor.nl/appl/mld/mld_melding.asp?mld_defaultstdmelding=' || std.mld_stdmelding_key ||chr(38) || 'role=fe' ||chr(38) || 'sso=HEYDAY' link,
'https://' || LOWER( (SELECT fac_version_cust FROM fac_version)) || '.facilitor.nl/appl/fac/fac_faq.asp?faq_key=' || f.fac_faq_key ||chr(38) || 'role=bo' ||chr(38) || 'sso=HEYDAY' faq_link,
fac_faq_question,
fac_faq_answer,
f.fac_faq_source,
f.fac_faq_datum,
sd.ins_srtdiscipline_prefix
|| '-'
|| d.ins_discipline_omschrijving
ins_discipline_omschrijving,
std.mld_stdmelding_key,
std.mld_stdmelding_omschrijving,
DECODE (alg_type, NULL, 'Locatie', 'G', 'Gebouw', '')
alg_scope,
aogg.alg_onroerendgoed_omschrijving,
l.alg_locatie_omschrijving,
l.alg_locatie_code,
COALESCE (aogg.alg_gebouw_naam, aogg.alg_terreinsector_naam)
alg_gebouwterrein_naam,
COALESCE (aogg.alg_gebouw_code, aogg.alg_terreinsector_code)
alg_gebouwterrein_code,
aogg.alg_verdieping_code,
aogg.alg_ruimte_nr,
DECODE (f.fac_faq_level,
1, 'Zelfservice',
2, 'Professionals',
3, 'Zelfservice en Professionals')
fac_faq_level,
fac_faq_hint,
fac_faq_url,
pf.prs_perslid_naam_full
prs_perslid_key_mut
FROM fac_faq f,
mld_stdmeldingfaq s,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd,
alg_algfaq a,
alg_v_onroerendgoed_gegevens aogg,
alg_locatie l,
prs_v_perslid_fullnames_all pf
WHERE f.fac_faq_key = s.fac_faq_key
AND s.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND a.fac_faq_key = f.fac_faq_key
AND a.alg_locatie_key = l.alg_locatie_key(+)
AND a.alg_onroerendgoed_keys = aogg.alg_onroerendgoed_keys(+)
AND f.prs_perslid_key = pf.prs_perslid_key(+);
-------------------------------------------------------------------------------
-- DATAWAREHOUSE - DWH_FAQ2 Kennisbankitems per vakgroepen en locaties
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW AAXX_V_DWH_FAQ2
(
KENNISBANKSLEUTEL,
VRAAG,
ANTWOORD,
BRON,
DATUM,
URL,
LAATS_GEWIJZIGD,
LOCATIE_SCOPE,
ONTROERENDGOED_OMSCHR,
LOCATIE,
LOCATIE_CODE,
GEBOUW_NAAM,
TERREIN_CODE,
VEDRIEPING_CODE,
RUIMTE_NR,
KENNISBANK_NIVEAU,
KENNISBANK_HINT,
KENNISBANK_URL,
VAKGROEP
)
AS
SELECT f.fac_faq_key,
f.fac_faq_question,
f.fac_faq_answer,
f.fac_faq_source,
f.fac_faq_datum,
'https://'
|| LOWER ((SELECT fac_version_cust FROM fac_version))
|| '.facilitor.nl/appl/fac/fac_faq.asp?faq_key='
|| f.fac_faq_key
|| CHR (38)
|| 'role=bo'
|| CHR (38)
|| 'sso=1',
pf.PRS_PERSLID_NAAM_FULL,
DECODE (alg_type, NULL, 'Locatie', 'G', 'Gebouw', '')
alg_scope,
aogg.alg_onroerendgoed_omschrijving,
l.alg_locatie_omschrijving,
l.alg_locatie_code,
COALESCE (aogg.alg_gebouw_naam, aogg.alg_terreinsector_naam)
alg_gebouwterrein_naam,
COALESCE (aogg.alg_gebouw_code, aogg.alg_terreinsector_code)
alg_gebouwterrein_code,
aogg.alg_verdieping_code,
aogg.alg_ruimte_nr,
DECODE (f.fac_faq_level,
1, 'Zelfservice',
2, 'Professionals',
3, 'Zelfservice en Professionals')
fac_faq_level,
fac_faq_hint,
fac_faq_url,
sd.ins_srtdiscipline_prefix
|| '-'
|| d.ins_discipline_omschrijving
ins_discipline_omschrijving
FROM fac_faq f,
prs_v_perslid_fullnames_all pf,
alg_algfaq a,
alg_v_onroerendgoed_gegevens aogg,
alg_locatie l,
mld_stdmeldingfaq s,
ins_tab_discipline d,
ins_srtdiscipline sd
WHERE f.fac_faq_key = s.fac_faq_key (+)
AND s.ins_discipline_key = d.ins_discipline_key (+)
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key (+)
AND f.fac_faq_key = a.fac_faq_key (+)
AND a.alg_locatie_key = l.alg_locatie_key(+)
AND a.alg_onroerendgoed_keys = aogg.alg_onroerendgoed_keys(+)
AND f.prs_perslid_key = pf.prs_perslid_key(+)
ORDER BY f.fac_faq_key;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_BUDGET_TRACKER
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_budget_tracker
(
nummer,
datum,
status,
laatste_actie,
vakgroeptype,
vakgroep,
kostensoort_code,
kostensoort_omschrijving,
financiele_waarde,
kostensoortgroep_omschrijving,
melding,
omschrijving,
organisatie,
naam,
kostenplaats,
kostenplaats_omschrijving,
plaats,
locatie,
gebouw,
code_exact,
opdracht_status,
uitvoerende,
contactpersoon,
uren,
uurloon,
materiaal,
kosten,
gefactureerd
)
AS
SELECT m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr nummer,
o.mld_opdr_datumbegin datum,
(SELECT mld_statusopdr_omschrijving
FROM mld_statusopdr s
WHERE o.mld_statusopdr_key = s.mld_statusopdr_key)
status,
mld.getopdrachtstatusdate (o.mld_opdr_key, mld_statusopdr_key)
laatste_actie,
sd.ins_srtdiscipline_prefix vakgroeptype,
md.ins_discipline_omschrijving vakgroep,
COALESCE (kstd.prs_kostensoort_oms, kvg.prs_kostensoort_oms)
kostensoort_code,
COALESCE (kstd.prs_kostensoort_opmerking,
kvg.prs_kostensoort_opmerking)
kostensoort_omschrijving,
COALESCE (kstd.prs_kostensoort_refcode,
kvg.prs_kostensoort_refcode)
financiele_waarde,
(SELECT prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg
WHERE ksg.prs_kostensoortgrp_key =
COALESCE (kstd.prs_kostensoortgrp_key,
kvg.prs_kostensoortgrp_key))
kostensoortgroep_omschrijving,
std.mld_stdmelding_omschrijving melding,
mld_melding_omschrijving omschrijving,
(SELECT d.prs_afdeling_naam
FROM prs_v_afdeling d
WHERE p.prs_afdeling_key = d.prs_afdeling_key)
organisatie,
p.prs_perslid_naam
|| DECODE (NVL (p.prs_perslid_voorletters, ''),
'', '',
', ' || p.prs_perslid_voorletters)
|| DECODE (NVL (p.prs_perslid_tussenvoegsel, ''),
'', '',
' ' || p.prs_perslid_tussenvoegsel)
|| DECODE (NVL (p.prs_perslid_voornaam, ''),
'', '',
' (' || p.prs_perslid_voornaam || ')')
naam,
(SELECT k.prs_kostenplaats_nr
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key)
kostenplaats,
(SELECT k.prs_kostenplaats_omschrijving
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key)
kostenplaats_omschrijving,
(SELECT alg_locatie_code
FROM alg_locatie l
WHERE m.mld_alg_locatie_key = l.alg_locatie_key)
|| (SELECT CASE COALESCE (g.alg_gebouw_code, '')
WHEN '' THEN ''
ELSE '-' || g.alg_gebouw_code
END
|| CASE COALESCE (g.alg_verdieping_code, '')
WHEN '' THEN ''
ELSE '-' || g.alg_verdieping_code
END
|| CASE COALESCE (g.alg_ruimte_nr, '')
WHEN '' THEN ''
ELSE '-' || g.alg_ruimte_nr
END
FROM alg_v_allonrgoed_gegevens g
WHERE m.mld_alg_onroerendgoed_keys = g.alg_onroerendgoed_keys)
plaats,
alg_locatie_code locatie,
alg_gebouw_code gebouw,
COALESCE ( (SELECT exact_code
FROM aaxx_v_exact_code_gebouw ogk
WHERE ogk.alg_gebouw_key = v.alg_gebouw_key),
v.alg_gebouw_code)
code_exact,
(SELECT mld_statusopdr_omschrijving
FROM mld_statusopdr so
WHERE o.mld_statusopdr_key = so.mld_statusopdr_key)
opdracht_status,
COALESCE ( (SELECT prs_bedrijf_naam
FROM prs_bedrijf b
WHERE o.mld_uitvoerende_keys = prs_bedrijf_key),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all
WHERE o.mld_uitvoerende_keys = prs_perslid_key))
uitvoerende,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE o.prs_perslid_key = pf.prs_perslid_key)
contactpersoon,
o.mld_opdr_uren uren,
o.mld_opdr_uurloon uurloon,
o.mld_opdr_materiaal materiaal,
o.mld_opdr_kosten kosten,
COALESCE ( (SELECT SUM (f.fin_factuur_totaal)
FROM aaxx_v_aanwezigfactuur f
WHERE f.mld_opdr_key = o.mld_opdr_key), 0)
gefactureerd
FROM mld_melding m,
mld_discipline md,
ins_srtdiscipline sd,
alg_v_allonrgoed_gegevens v,
alg_locatie l,
alg_district di,
prs_perslid p,
mld_opdr o,
mld_stdmelding std,
prs_kostensoort kstd,
prs_kostensoort kvg
WHERE m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND l.alg_district_key = di.alg_district_key(+)
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)
AND m.mld_alg_onroerendgoed_keys = v.alg_onroerendgoed_keys(+)
AND m.prs_perslid_key = p.prs_perslid_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = md.ins_discipline_key
AND m.mld_melding_key = o.mld_melding_key
AND std.prs_kostensoort_key = kstd.prs_kostensoort_key(+)
AND md.prs_kostensoort_key = kvg.prs_kostensoort_key(+)
UNION ALL
SELECT cnt_contract_nummer_intern,
c.cnt_contract_looptijd_van,
DECODE (
SIGN (cnt_contract_looptijd_van - SYSDATE),
1,
'Toekomst',
-1,
DECODE (SIGN (cnt_contract_looptijd_tot - SYSDATE),
1, 'Actueel',
-1, 'Verlopen'))
status,
c.cnt_contract_looptijd_tot laatste_actie,
'Contract' vakgroeptype,
d.ins_discipline_omschrijving vakgroep,
k.prs_kostensoort_oms kostensoort_code,
k.prs_kostensoort_opmerking kostensoort_omschrijving,
k.prs_kostensoort_refcode financiele_waarde,
(SELECT prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg
WHERE ksg.prs_kostensoortgrp_key = k.prs_kostensoortgrp_key)
kostensoortgroep_omschrijving,
c.cnt_contract_omschrijving melding,
SUBSTR (
REPLACE (cnt_contract_document, CHR (13) || CHR (10), '<ret>'),
1,
2000)
omschrijving,
prs_afdeling_naam organisatie,
p.prs_perslid_naam
|| DECODE (NVL (p.prs_perslid_voorletters, ''),
'', '',
', ' || p.prs_perslid_voorletters)
|| DECODE (NVL (p.prs_perslid_tussenvoegsel, ''),
'', '',
' ' || p.prs_perslid_tussenvoegsel)
|| DECODE (NVL (p.prs_perslid_voornaam, ''),
'', '',
' (' || p.prs_perslid_voornaam || ')')
naam,
kp.prs_kostenplaats_nr kostenplaats,
kp.prs_kostenplaats_omschrijving kostenplaats_omschrijving,
alg_locatie_code || '-' || alg_gebouw_code plaats,
alg_locatie_code locatie,
alg_gebouw_code gebouw,
COALESCE ( (SELECT exact_code
FROM aaxx_v_exact_code_gebouw ogk
WHERE ogk.alg_gebouw_key = g.alg_gebouw_key),
g.alg_gebouw_code)
code_exact,
'-' opdracht_status,
prs_bedrijf_naam uitvoerende,
'-' contactpersoon,
0 uren,
0 uurloon,
0 materiaal,
COALESCE (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht)
* c.cnt_contract_kosten),
0)
kosten,
COALESCE (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht)
* (SELECT SUM (fin_factuur_totaal)
FROM aaxx_v_aanwezigfactuur f
WHERE f.cnt_contract_key = c.cnt_contract_key)),
0)
gefactureerd
FROM cnt_contract c,
cnt_discipline d,
cnt_contract_plaats cp,
prs_bedrijf b,
prs_kostensoort k,
prs_kostenplaats kp,
prs_afdeling a,
prs_perslid p,
alg_locatie l,
alg_gebouw g,
prs_contactpersoon cop,
( SELECT cnt_contract_key,
SUM (cnt_contract_plaats_gewicht)
cnt_contract_plaats_gewicht
FROM cnt_contract_plaats
GROUP BY cnt_contract_key) cnt_gew,
(SELECT cp.cnt_contract_plaats_key, alg_locatie_key, alg_gebouw_key
FROM alg_v_allonroerendgoed aog, cnt_contract_plaats cp
WHERE aog.alg_type = cp.cnt_alg_plaats_code
AND aog.alg_onroerendgoed_keys = cp.cnt_alg_plaats_key) cog
WHERE c.cnt_contract_key = cp.cnt_contract_key(+)
AND c.cnt_contract_key = cnt_gew.cnt_contract_key(+)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.ins_discipline_key = d.ins_discipline_key
AND d.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND c.prs_afdeling_key_eig = a.prs_afdeling_key
AND c.prs_perslid_key_beh = p.prs_perslid_key
AND cp.cnt_contract_plaats_key = cog.cnt_contract_plaats_key(+)
AND c.prs_contactpersoon_key = cop.prs_contactpersoon_key(+)
AND cog.alg_locatie_key = l.alg_locatie_key(+)
AND cog.alg_gebouw_key = g.alg_gebouw_key(+)
AND cnt_contract_verwijder IS NULL;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_SEARCH_RESULTS
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_gui_counter
(
fac_gui_counter_key,
fac_gui_counter_group,
fac_gui_counter_info,
fac_gui_counter_refkey,
fac_gui_counter_choice,
fac_gui_counter_result,
fac_gui_counter_date,
prs_perslid_key,
prs_perslid_naam_full
)
AS
SELECT fgc.fac_gui_counter_key,
fgc.fac_gui_counter_group,
fgc.fac_gui_counter_info,
fgc.fac_gui_counter_refkey,
choice.fac_gui_counter_info fac_gui_counter_choice,
result.fac_gui_counter_info fac_gui_counter_result,
fac_gui_counter_date,
fgc.prs_perslid_key,
prs_perslid_naam_full
FROM fac_gui_counter fgc,
prs_v_perslid_fullnames pf,
(SELECT fac_gui_counter_refkey, fac_gui_counter_info
FROM fac_gui_counter fgc
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchchoice') choice,
(SELECT fac_gui_counter_refkey, fac_gui_counter_info
FROM fac_gui_counter fgc
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchresult') result
WHERE fac_gui_counter_group = 'search'
AND fgc.fac_gui_counter_info IS NOT NULL
AND fgc.prs_perslid_key = pf.prs_perslid_key
AND choice.fac_gui_counter_refkey(+) = fgc.fac_gui_counter_key
AND result.fac_gui_counter_refkey(+) = fgc.fac_gui_counter_key
UNION ALL
SELECT fgc.fac_gui_counter_key,
fgc.fac_gui_counter_group,
fac_usrrap_omschrijving,
fgc.fac_gui_counter_refkey,
NULL,
NULL,
fac_gui_counter_date,
fgc.prs_perslid_key,
prs_perslid_naam_full
FROM fac_gui_counter fgc, prs_v_perslid_fullnames pf, fac_usrrap fr
WHERE fgc.fac_gui_counter_group = 'report'
AND fgc.prs_perslid_key = pf.prs_perslid_key(+)
AND fr.fac_usrrap_key(+) = fgc.fac_gui_counter_refkey
UNION ALL
SELECT fgc.fac_gui_counter_key,
fgc.fac_gui_counter_group,
COALESCE (fac_menu_altlabel, lcl.l (fac_menuitems_label)),
fgc.fac_gui_counter_refkey,
NULL,
NULL,
fac_gui_counter_date,
fgc.prs_perslid_key,
prs_perslid_naam_full
FROM fac_gui_counter fgc,
prs_v_perslid_fullnames pf,
fac_menu m,
fac_menuitems mi
WHERE fgc.fac_gui_counter_group = 'menu'
AND fgc.prs_perslid_key = pf.prs_perslid_key(+)
AND m.fac_menu_key = fac_gui_counter_refkey
AND mi.fac_menuitems_key(+) = m.fac_menuitems_key;
-------------------------------------------------------------------------------
-- Rapportage tbv berekening aantal key users
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_lcrap_key_stats
(
PRS_PERSLID_KEY,
PRS_PERSLID_OSLOGIN,
PRS_PERSLID_OSLOGIN2,
PRS_PERSLID_NR,
PRS_PERSLID_NAAM_FULL,
PRS_AFDELING_NAAM,
LEV_WRITE_CNT,
MAX_ALG_WRITE,
MAX_PRS_WRITE,
LEV_READ_CNT,
MAX_ALG_READ,
MAX_PRS_READ,
AUT_GROEP_CNT
)
AS
SELECT x.prs_perslid_key,
x.prs_perslid_oslogin,
x.prs_perslid_oslogin2,
x.prs_perslid_nr,
x.prs_perslid_naam_full,
prs_afdeling_naam,
COALESCE (y.lev_write_cnt, 0) lev_write_cnt,
y.max_alg_write,
y.max_prs_write,
COALESCE (z.lev_read_cnt, 0) lev_read_cnt,
z.max_alg_read,
z.max_prs_read,
x.aut_groep_cnt
FROM ( SELECT fn.prs_perslid_key,
p.prs_perslid_oslogin,
p.prs_perslid_oslogin2,
kl.prs_kenmerklink_waarde prs_perslid_nr,
prs_afdeling_naam,
fn.prs_perslid_naam_full,
COUNT (DISTINCT gg.fac_groep_key) aut_groep_cnt
FROM prs_v_aanwezigperslid p,
prs_afdeling a,
prs_v_perslid_fullnames fn,
fac_gebruikersgroep gg,
(SELECT prs_kenmerklink_waarde, prs_link_key
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 3) kl -- personeelsnummer AAFM
WHERE a.prs_afdeling_key = p.prs_afdeling_key
AND p.prs_perslid_oslogin IS NOT NULL
AND p.prs_perslid_key = fn.prs_perslid_key
AND p.prs_perslid_key = gg.prs_perslid_key
AND p.prs_perslid_key = kl.prs_link_key(+)
GROUP BY fn.prs_perslid_key,
fn.prs_perslid_naam_full,
prs_perslid_oslogin,
prs_perslid_oslogin2,
kl.prs_kenmerklink_waarde,
prs_afdeling_naam) x
LEFT JOIN ( SELECT gg.prs_perslid_key,
COUNT (DISTINCT gr.fac_groeprechten_key)
lev_write_cnt,
MIN (gr.fac_gebruiker_alg_level_write)
max_alg_write,
MIN (gr.fac_gebruiker_prs_level_write)
max_prs_write
FROM fac_gebruikersgroep gg,
fac_groeprechten gr,
fac_functie f
WHERE gg.fac_groep_key = gr.fac_groep_key
AND gr.fac_functie_key = f.fac_functie_key
AND fac_functie_groep IN (1, 2)
AND (gr.fac_gebruiker_alg_level_write <> 9
OR gr.fac_gebruiker_prs_level_write <> 9)
GROUP BY gg.prs_perslid_key) y
ON x.prs_perslid_key = y.prs_perslid_key
LEFT JOIN ( SELECT gg.prs_perslid_key,
COUNT (DISTINCT gr.fac_groeprechten_key)
lev_read_cnt,
MIN (gr.fac_gebruiker_alg_level_read)
max_alg_read,
MIN (gr.fac_gebruiker_prs_level_read)
max_prs_read
FROM fac_gebruikersgroep gg,
fac_groeprechten gr,
fac_functie f
WHERE gg.fac_groep_key = gr.fac_groep_key
AND gr.fac_functie_key = f.fac_functie_key
AND fac_functie_groep IN (1, 2)
AND (gr.fac_gebruiker_alg_level_read <> 9
OR gr.fac_gebruiker_prs_level_read <> 9)
GROUP BY gg.prs_perslid_key) z
ON x.prs_perslid_key = z.prs_perslid_key
WHERE COALESCE (y.lev_write_cnt, 0) > 0
OR COALESCE (z.lev_read_cnt, 0) > 0;
--=============================================================================
-- IMPORTFUNCTIES
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- IMPORTFUNCTIE - Import srtruimte
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_rap_srtruimte (
key,
omschrijving,
code,
werkplek,
verhuurbaar,
huur,
sk_onderhoud,
sk_utility,
sk_overig,
prijs5
)
AS
SELECT alg_srtruimte_key,
alg_srtruimte_omschrijving,
alg_srtruimte_code,
prs_bevat_werkplek,
prs_verhuurbaar,
alg_srtruimte_prijs,
alg_srtruimte_prijs2,
alg_srtruimte_prijs3,
alg_srtruimte_prijs4,
alg_srtruimte_prijs5
FROM alg_v_aanwezigsrtruimte;
CREATE OR REPLACE PROCEDURE aaxx_import_srtruimte (
p_import_key IN NUMBER
)
AS
CURSOR c_cursor
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
v_newline VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000); -- Import line
v_field VARCHAR2 (100); -- Import field
v_fielddelimitor VARCHAR2 (1); -- Field seperator
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_skipfield VARCHAR2 (100);
-- De importvelden
v_key VARCHAR2 (100);
v_omschrijving VARCHAR2 (100);
v_code VARCHAR2 (100);
v_werkplek VARCHAR2 (100);
v_verhuurbaar VARCHAR2 (100);
v_prijs1 VARCHAR2 (100);
v_prijs2 VARCHAR2 (100);
v_prijs3 VARCHAR2 (100);
v_prijs4 VARCHAR2 (100);
v_prijs5 VARCHAR2 (100);
header_found BOOLEAN;
BEGIN
-- Init
header_found := FALSE;
v_fielddelimitor := ';';
-- Clear my previous imported rows
DELETE FROM aaxx_imp_srtruimte;
FOR rec1 IN c_cursor
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_aanduiding := v_newline;
IF SUBSTR (v_newline, 1, 3) = '?'
THEN
-- EF BB BF aangetroffen
fac.imp_writelog (p_import_key,
'W',
'Byte Order Mark aangetroffen',
'Bestand heeft onbehandeld UTF-8 formaat.'
);
v_newline := SUBSTR (v_newline, 4);
END IF;
fac.imp_getfield (v_newline, v_fielddelimitor, v_key);
fac.imp_getfield (v_newline, v_fielddelimitor, v_omschrijving);
fac.imp_getfield (v_newline, v_fielddelimitor, v_code);
fac.imp_getfield (v_newline, v_fielddelimitor, v_werkplek);
fac.imp_getfield (v_newline, v_fielddelimitor, v_verhuurbaar);
fac.imp_getfield (v_newline, v_fielddelimitor, v_prijs1);
fac.imp_getfield (v_newline, v_fielddelimitor, v_prijs2);
fac.imp_getfield (v_newline, v_fielddelimitor, v_prijs3);
fac.imp_getfield (v_newline, v_fielddelimitor, v_prijs4);
fac.imp_getfield (v_newline, v_fielddelimitor, v_prijs5);
-- Skip until a valid header is found
IF UPPER(v_key) = 'KEY'
AND UPPER(v_code) = 'CODE'
AND UPPER(v_prijs1) = 'HUUR'
AND UPPER(v_prijs5) = 'PRIJS5'
THEN
-- Sla de kopregel over.
header_found := TRUE;
ELSIF (header_found AND v_omschrijving IS NOT NULL)
THEN
INSERT INTO aaxx_imp_srtruimte
(alg_srtruimte_key,
alg_srtruimte_omschrijving,
alg_srtruimte_code,
prs_bevat_werkplek,
prs_verhuurbaar,
alg_srtruimte_prijs,
alg_srtruimte_prijs2,
alg_srtruimte_prijs3,
alg_srtruimte_prijs4,
alg_srtruimte_prijs5 )
VALUES (fac.safe_to_number (v_key),
SUBSTR (v_omschrijving, 1, 30),
SUBSTR (v_code, 1, 10),
fac.safe_to_number (SUBSTR(v_werkplek, 1)),
fac.safe_to_number (SUBSTR(v_verhuurbaar, 1)),
fac.safe_to_number (REPLACE(v_prijs1,',','.')),
fac.safe_to_number (REPLACE(v_prijs2,',','.')),
fac.safe_to_number (REPLACE(v_prijs3,',','.')),
fac.safe_to_number (REPLACE(v_prijs4,',','.')),
fac.safe_to_number (REPLACE(v_prijs5,',','.'))
);
END IF;
COMMIT;
END;
END LOOP;
IF NOT header_found
THEN
fac.imp_writelog (p_import_key,
'E',
'Geen geldige header aangetroffen',
'Bestand is geen geldig ruimtesoort importbestand.'
);
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', SUBSTR (v_errormsg, 1, 1000), v_aanduiding);
-- maak de importtabel leeg om te voorkomen dat er halve bestanden ingelezen worden.
DELETE FROM aaxx_imp_srtruimte;
END;
/
CREATE OR REPLACE PROCEDURE aaxx_update_srtruimte (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT *
FROM aaxx_imp_srtruimte
WHERE alg_srtruimte_omschrijving is not NULL;
v_oldcount NUMBER;
v_newcount NUMBER;
v_prs_bedrijf_key NUMBER;
v_prs_dienst_key NUMBER;
v_alg_locatie_key NUMBER;
v_alg_gebouw_key NUMBER;
v_errormsg VARCHAR (1000);
v_error_hint VARCHAR (1000);
oracle_err_mes VARCHAR2 (150);
oracle_err_num VARCHAR2 (150);
currentversion fac_module.fac_module_version%TYPE;
BEGIN
SELECT MAX (fac_module_version)
INTO currentversion
FROM fac_module;
fac.imp_writelog (p_import_key,
'I',
'AAFM ruimtesoort import version ' || currentversion,
'$Revision$'
);
SELECT COUNT (*)
INTO v_newcount
FROM alg_v_aanwezigsrtruimte;
IF v_newcount = 0 THEN
fac.imp_writelog (p_import_key,
'E',
'AAFM ruimtesoort import bevat geen records',
'$Revision$'
);
return;
END IF;
-- How many active records are now present?
SELECT COUNT (*)
INTO v_oldcount
FROM alg_v_aanwezigsrtruimte;
FOR rec IN c
LOOP
BEGIN
IF rec.alg_srtruimte_key IS NULL THEN
v_errormsg := 'Toevoegen ruimtesoort [' || rec.alg_srtruimte_code || '] ';
INSERT INTO alg_srtruimte (
alg_srtruimte_omschrijving,
alg_srtruimte_code,
prs_bevat_werkplek,
prs_verhuurbaar,
alg_srtruimte_prijs,
alg_srtruimte_prijs2,
alg_srtruimte_prijs3,
alg_srtruimte_prijs4,
alg_srtruimte_prijs5)
VALUES (
rec.alg_srtruimte_omschrijving,
rec.alg_srtruimte_code,
rec.prs_bevat_werkplek,
rec.prs_verhuurbaar,
rec.alg_srtruimte_prijs,
rec.alg_srtruimte_prijs2,
rec.alg_srtruimte_prijs3,
rec.alg_srtruimte_prijs4,
rec.alg_srtruimte_prijs5);
ELSE
v_errormsg := 'Aanpassen ruimtesoort [' || rec.alg_srtruimte_code || '] ';
UPDATE alg_srtruimte SET
alg_srtruimte_omschrijving = rec.alg_srtruimte_omschrijving,
alg_srtruimte_code = rec.alg_srtruimte_code,
prs_bevat_werkplek = rec.prs_bevat_werkplek,
prs_verhuurbaar = rec.prs_verhuurbaar,
alg_srtruimte_prijs = rec.alg_srtruimte_prijs,
alg_srtruimte_prijs2 = rec.alg_srtruimte_prijs2,
alg_srtruimte_prijs3 = rec.alg_srtruimte_prijs3,
alg_srtruimte_prijs4 = rec.alg_srtruimte_prijs4,
alg_srtruimte_prijs5 = rec.alg_srtruimte_prijs5
WHERE alg_srtruimte_key = rec.alg_srtruimte_key;
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
v_error_hint := v_errormsg;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint
);
COMMIT; -- tbv logging
END;
END LOOP;
SELECT COUNT (*)
INTO v_newcount
FROM alg_v_aanwezigsrtruimte;
fac.imp_writelog (p_import_key,
'S',
'Aantal ruimte soorten vooraf: ' || TO_CHAR (v_oldcount) || ' nu: ' || TO_CHAR (v_newcount),
''
);
END;
/
--------------------------------
-- import facturen
--------------------------------
-- rapportage factuurvoorstel inkoopfacturen. Het resultaat kan met onderstaande importroutines ingelezen worden.
CREATE OR REPLACE VIEW aaxx_v_rap_inkoopfactuur
(
fclt_x_bedrijfnaam,
fclt_x_afrond_datum,
leveranciernr,
factuurnr,
factuurdatum,
ordernr,
locatie,
afleverdatum,
omschrijving,
aantal,
kostprijs,
btwbedrag,
btw,
docid,
debiteurnummer,
opmerking,
lastinvoice,
btwverlegd,
gebouw,
orderomschrijving,
referentie,
afmelddatum,
uren,
materiaal,
opdracht_type
)
AS
SELECT prs_bedrijf_naam bedrijfsnaam,
tr2.fac_tracking_datum datum,
prs_leverancier_nr leveranciernr,
NULL factuurnr,
NULL factuurdatum,
(SELECT sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd
WHERE o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key)
ordernr,
(SELECT alg_locatie_code || ' - ' || alg_locatie_omschrijving
FROM alg_locatie l
WHERE l.alg_locatie_key = m.mld_alg_locatie_key)
locatie,
TO_CHAR (mld_opdr_datumbegin, 'ddmmyyyy') afleverdatum,
NULL omschrijving,
1 aantal,
o.mld_opdr_kosten kostprijs,
NULL btwbedrag,
21 btw,
NULL docid,
NULL debiteurnummer,
NULL opmerking,
'Ja' lastinvoice,
'Nee' btwverlegd,
(SELECT og.alg_gebouw_code || ' - ' || og.alg_gebouw_naam
FROM alg_v_allonrgoed_gegevens og
WHERE m.mld_alg_onroerendgoed_keys =
og.alg_onroerendgoed_keys)
gebouw,
REPLACE (REPLACE (o.mld_opdr_omschrijving, CHR (13), ''),
CHR (10),
'<ret>')
orderomschrijving,
(SELECT mld_kenmerkopdr_waarde
FROM mld_srtkenmerk sk, mld_kenmerk k, mld_kenmerkopdr ko
WHERE sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND mld_kenmerk_niveau = 'O'
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND ko.mld_kenmerkopdr_verwijder IS NULL
AND ko.mld_opdr_key = o.mld_opdr_key
AND mld_srtkenmerk_omschrijving LIKE
'Ref. Nr. Leverancier%')
referentie,
tr.fac_tracking_datum afmelddatum,
o.mld_opdr_uren,
o.mld_opdr_materiaal,
mt.mld_typeopdr_omschrijving
FROM prs_bedrijf b,
mld_opdr o,
mld_typeopdr mt,
mld_melding m,
mld_typeopdr ot,
fac_tracking tr,
fac_tracking tr2,
fac_srtnotificatie str,
fac_srtnotificatie str2
WHERE o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND o.mld_typeopdr_key = mt.mld_typeopdr_key
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND tr2.fac_srtnotificatie_key = str2.fac_srtnotificatie_key
AND str.fac_srtnotificatie_code = 'ORDAFM'
AND str2.fac_srtnotificatie_code = 'ORDAFR'
AND o.mld_opdr_key = tr.fac_tracking_refkey
AND o.mld_opdr_key = tr2.fac_tracking_refkey
AND o.mld_melding_key = m.mld_melding_key
AND o.mld_statusopdr_key = 9 -- Afgerond
AND o.mld_opdr_kosten <> 0
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND (ot.mld_typeopdr_omschrijving = 'Workorder'
OR ot.mld_typeopdr_omschrijving = 'Projectorder'
OR ot.mld_typeopdr_omschrijving = 'Vast variabel'
OR ot.mld_typeopdr_omschrijving = 'Opdracht'
)
AND NOT EXISTS
(SELECT mld_kenmerkopdr_key
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key =
DECODE (aaxx_get_user,
'IT', 381,
'SABIC', 34,
2))
AND NOT EXISTS
(SELECT mld_kenmerkopdr_key
FROM mld_kenmerkopdr ko,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND UPPER (sk.mld_srtkenmerk_omschrijving) =
'CLAUSULE'
AND UPPER(aaxx_get_kenmerkwaarde (
sk.mld_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
ko.mld_kenmerkopdr_waarde
)) = 'BINNEN CLAUSULE');
-- AAVL#33405 rapportage factuurvoorstel inkoopfacturen tbv bestellingen.
-- Het resultaat kan met onderstaande importroutines ingelezen worden.
CREATE OR REPLACE VIEW aaxx_v_rap_bes_inkfactuur
(
FCLT_X_BEDRIJFNAAM,
FCLT_X_LEVER_DATUM,
LEVERANCIERNR,
FACTUURNR,
FACTUURDATUM,
ORDERNR,
LOCATIE,
AFLEVERDATUM,
OMSCHRIJVING,
AANTAL,
KOSTPRIJS,
BTWBEDRAG,
BTW,
DOCID,
DEBITEURNUMMER,
OPMERKING,
LASTINVOICE,
BTWVERLEGD,
GEBOUW,
ORDEROMSCHRIJVING,
REFERENTIE,
AFMELDDATUM,
UREN,
MATERIAAL
)
AS
SELECT prs_bedrijf_naam,
ft.fac_tracking_datum datum,
prs_leverancier_nr leveranciernr,
NULL factuurnr,
NULL factuurdatum,
bes_bestelopdr_id,
(SELECT alg_locatie_code || ' - ' || alg_locatie_omschrijving
FROM alg_locatie l
WHERE l.alg_locatie_key = ma.alg_locatie_key)
locatie,
TO_CHAR (ft.fac_tracking_datum, 'ddmmyyyy') afleverdatum,
NULL omschrijving,
SUM (bes_bestelopdr_item_aantalontv) aantal,
SUM (bes_bestelopdr_item_prijs * bes_bestelopdr_item_aantalontv) kostprijs,
NULL btwbedrag,
bes_srtdeel_btw BTW,
NULL docid,
NULL debiteurnummer,
NULL opmerking,
'Ja' lastinvoice,
'Nee' btwverlegd,
NULL gebouw,
NULL orderomschrijving,
NULL referentie,
ft.fac_tracking_datum afmelddatum,
NULL uren,
NULL materiaal
FROM bes_bestelopdr bo,
prs_bedrijf b,
mld_adres ma,
bes_bestelopdr_item bboi,
bes_bestelling_item bbi,
bes_srtdeel bsd,
fac_tracking ft,
fac_srtnotificatie srt
WHERE bes_bestelopdr_status = 6
AND b.prs_bedrijf_key = bo.prs_bedrijf_key
AND bo.mld_adres_key_lev = ma.mld_adres_key
AND bo.bes_bestelopdr_key = bboi.bes_bestelopdr_key
AND bbi.bes_bestelopdr_item_key = bboi.bes_bestelopdr_item_key
AND bbi.bes_srtdeel_key = bsd.bes_srtdeel_key
AND ft.fac_tracking_refkey = bo.bes_bestelopdr_key
AND srt.fac_srtnotificatie_key = ft.fac_srtnotificatie_key
AND srt.fac_srtnotificatie_code = 'BES2AF'
GROUP BY prs_bedrijf_naam,
TO_CHAR (ft.fac_tracking_datum, 'yyyy-mm'),
prs_leverancier_nr,
bes_bestelopdr_id,
ma.alg_locatie_key,
ft.fac_tracking_datum,
bes_srtdeel_btw,
ft.fac_tracking_datum;
CREATE OR REPLACE PROCEDURE aaxx_import_factuur (p_import_key IN NUMBER)
AS
-- Standaard volgorde van de kolommen in het CSV-formaat, waarbij 3 velden VERPLICHT (minimaal door Facilitor vereist)
-- Variabelelijst
-- v_leveranciernr: 1
-- v_factuurnr: 2 (VERPLICHT, anders zet Facilitor '-' in factuurnr, en is status van factuur "Incompleet")
-- v_factuurdatum: 3
-- v_ordernr: 4 (VERPLICHT, anders is status van factuur "Incompleet")
-- v_locatie: 5
-- v_afleverdatum: 6
-- v_omschrijving: 7
-- v_aantal: 8
-- v_kostprijs: 9 (VERPLICHT, anders is status van factuur "Incompleet")
-- v_btw_bedrag: 10 (VERPLICHT, of anders veld 11, anders is status van factuur "Incompleet")
-- v_btw: 11 (VERPLICHT, of anders veld 10, anders is status van factuur "Incompleet")
-- v_docid: 12
-- v_debiteur_nr: 13
-- v_opmerking: 14
-- v_btw_verlegd: 15 (VERPLICHT, Ja/Nee/<leeg> waarbij leeg gelijk is aan Nee. Andere waarden leidt tot "Incompleet")
-- v_kenmerk1: 16
-- v_kenmerk2: 17
-- v_kenmerk3: 18
-- v_kenmerk4: 19
-- v_kenmerk5: 20
-- v_boekmaand: 21 (GELDIG, Indien gevuld dan moet er een geldige jaar-maand combinatie staan. Andere waarden leidt tot "Incompleet")
-- Eerst geprobeerd via nette array, geeft problemen met type buiten package, en in package lukt niet omdat
-- de import in Facilitor package-loos is (en niet 1-2-3 zo kan worden gemaakt vanwege alle bestaande klanten)
-- v_seq_of_columns ListOfInteger := (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21);
-- Dus dan maar via een string, en ook op slimme wijze, nl alsof het een ingelezen factuur-record is met p_fielddelimitor
v_seq_of_columns VARCHAR(100);
-- Afwijkingen op deze volgorde zijn in eigen cust_import_factuur te regelen.
-- Als leveranciersnr en factuurnr b.v. zijn omgedraaid in het CSV-formaat,
-- dan factuurimport ListOfInteger := (2,1,3,4,5,6,7,8,9,10,11,12);
-- v_seq_of_columns := '2;1;3;4;5;6;7;8;9;10;11;12';
-- Als leveranciersnr NIET in CSV staat, dan factuurimport ListOfInteger := (0,2,3,4,5,6,7,8,9,10,11,12);
-- v_seq_of_columns := '0;2;3;4;5;6;7;8;9;10;11;12';
-- M.a.w. waar een 0 staat, wordt de variabele niet ingelezen en blift LEEG.
BEGIN
v_seq_of_columns := '1;2;3;4;5;6;7;8;9;10;11;12;13;14;16;15;0;0;0;0;17';
fac_import_factuur_body(p_import_key, v_seq_of_columns);
-- voeg een voorloopnul toe aan de boekmaanden op positie 6
-- 2017-9 wordt dan 2017-09
UPDATE fac_imp_factuur
SET boekmaand = SUBSTR (boekmaand, 1, 5) || 0 || SUBSTR (boekmaand, 6, 1)
WHERE SUBSTR (boekmaand, 1, 4) IS NOT NULL
AND SUBSTR (boekmaand, 5, 1) = '-'
AND SUBSTR (boekmaand, 6, 1) IS NOT NULL
AND SUBSTR (boekmaand, 7, 1) IS NULL
AND fac_import_key = p_import_key;
COMMIT;
END;
/
CREATE OR REPLACE PROCEDURE aaxx_update_factuur (p_import_key IN NUMBER)
AS
v_invoerder NUMBER(10);
BEGIN
fac_update_factuur (p_import_key);
-- AAFM specifieke update voor kenmerken
-- ja = 1
-- nee = 2
-- kenmerk_key = 2 voor kenmerk laatste factuur.
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
SELECT DISTINCT fin_factuur_key, fin_kenmerk_key, fac_usrdata_key
FROM fac_imp_factuur i,
fin_kenmerk k,
fac_kenmerkdomein kd,
fac_usrdata ud
WHERE UPPER (COALESCE (i.kenmerk1, 'Nee')) = UPPER (ud.fac_usrdata_omschr)
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND k.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND k.fin_kenmerk_key = 2
AND i.fin_factuur_key IS NOT NULL
AND i.fac_import_key = p_import_key
AND NOT EXISTS
(SELECT fin_kenmerkfactuur_key
FROM fin_kenmerkfactuur kf
WHERE kf.fin_kenmerk_key = 2
AND kf.fin_factuur_key = i.fin_factuur_key);
SELECT MAX(prs_perslid_key)
INTO v_invoerder
FROM fac_import
WHERE fac_import_key = p_import_key;
-- zet de FINNEW notificatie op de gebruiker die de import gestart heeft om te kunnen traceren hoe de facturen in het
-- systeem gekomen zijn.
UPDATE fac_tracking t
SET prs_perslid_key = v_invoerder
, fac_tracking_oms = fac_tracking_oms || ' (via Excel)'
WHERE prs_perslid_key IS NULL
AND EXISTS
(SELECT fac_tracking_key
FROM fac_imp_factuur i, fac_srtnotificatie sn
WHERE i.fin_factuur_key = t.fac_tracking_refkey
AND i.fac_import_key = p_import_key
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'FINNEW');
END;
/
CREATE OR REPLACE PROCEDURE aaxx_import_fin_factuur_marx (p_import_key IN NUMBER)
AS
v_seq_of_columns VARCHAR(255);
BEGIN
v_seq_of_columns := '1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28';
fac_import_factuur_body(p_import_key, v_seq_of_columns);
END;
/
CREATE OR REPLACE PROCEDURE aaxx_update_fin_factuur_marx (p_import_key IN NUMBER)
AS
-- Voor Correctie ORDERNR om standaard update-procedure goed te laten lopen.
--- 0. Bug - Als uit Mareo/Scanning geen order-referentie meekomt en er zijn meerdere factuurregels, dan wordt er vanuit fac_update_factuur niet 1 maar meerdere factuurnr's aangemaakt. Oplossing: Ordernr vullen.
--- 0.1 Verzamelfactuur-indicatie (2022-maart actief): Vanuit Mareon wordt deze met een "(*)" achter de referentie meegegeven, bijvoorbeeld C5602.5(*).
--- 0.2 Orderreferentie-opschoning: Vanuit scanning komt de orderreferentie soms mee inclusief 'extra tekst'. Bijv CO284IN<49>T of CO534.7HEERLEN. Voor goede verwerking gaan we de tekst achteraan de orderreferentie weghalen.
--- 1. Ordernr 101132/1 wordt niet als Opdracht herkend. In FUNCTION try_getopdracht_id gaat Facilitor alleen maar opdrachten matchen als er 1,2 of 3 letters voorstaan... Daarom gaan we er in import-tabel een 'O' voorzetten (dus: 'O101132/1')
--- Ps. BCT-regel: Indien geen prefix, en kolom ORDERNR is 6- of 7 cijferig en met een '/' en dan numeriek 1 t/m 3 posities. Voorbeeld: Bijv: 104370/2 vanuit BCT moet worden O104370/2
--- 2. Ordernr beginnende met "CO" wordt niet als Contract herkend. Daarom gaan we er in import-tabel een "C" van maken.
--- 3. Als ordernr is C (= contract) echter zonder versienummer - Dan wordt in standaard update altijd automatisch het hoogste versienummer gepakt.
--- Ivm overlap 'jaarovergangen' is dat niet altijd juist en moet de vanuit Mareon geimporteerde factuur nog status 'te controleren' meekrijgen voordat deze automatisch de financiele-interface in gaat.
--- 4. Ordernr beginnende met "BE" of "B" wordt niet als Bestelling herkend. Daarom gaan we deze prefix in de import-tabel weghalen.
CURSOR ccor_0
IS
SELECT ordernr
FROM fac_imp_factuur
WHERE fac_import_key = p_import_key
AND ordernr IS NULL
GROUP BY ordernr ;
CURSOR ccor_0_1
IS
SELECT factuurnr, ordernr
FROM fac_imp_factuur
WHERE fac_import_key = p_import_key
AND INSTR(ordernr,'(*)') > 1
GROUP BY factuurnr, ordernr ;
CURSOR ccor_0_2
IS
SELECT factuurnr, ordernr
FROM fac_imp_factuur
WHERE fac_import_key = p_import_key
AND REGEXP_INSTR(REVERSE(ordernr), '\d') > 1
GROUP BY factuurnr, ordernr ;
CURSOR ccor_1
IS
SELECT factuurnr, ordernr, fac.safe_to_number(SUBSTR(ordernr,1,(INSTR(ordernr,'/')-1))) as melding_key, fac.safe_to_number(SUBSTR(ordernr,(INSTR(ordernr,'/')+1),LENGTH(ordernr))) opdracht_volgnr, fac.safe_to_number(TO_CHAR(fac.safe_to_date (factuurdatum, 'yyyy-mm-dd'), 'yyyy')) factuurdatum_jaar
FROM fac_imp_factuur
WHERE fac_import_key = p_import_key
AND INSTR(ordernr,'/') >0
AND LENGTH(SUBSTR(ordernr,1,(INSTR(ordernr,'/')-1))) IN (6,7)
GROUP BY factuurnr, ordernr, factuurdatum ;
CURSOR ccor_2
IS
SELECT factuurnr, ordernr
FROM fac_imp_factuur
WHERE fac_import_key = p_import_key
AND LENGTH(ordernr) >= 2
AND (SUBSTR(UPPER(ordernr),1,2) = 'CO' OR SUBSTR(UPPER(ordernr),1,2) = 'CC')
GROUP BY factuurnr, ordernr ;
CURSOR ccor_3
IS
SELECT factuurnr, ordernr, SUBSTR(ordernr,2) cnt_contract_nummer_intern
FROM fac_imp_factuur
WHERE fac_import_key = p_import_key
AND SUBSTR(UPPER(ordernr),1,1) = 'C'
AND INSTR(ordernr,'.')=0
GROUP BY factuurnr, ordernr ;
CURSOR ccor_4
IS
SELECT factuurnr, ordernr
FROM fac_imp_factuur
WHERE fac_import_key = p_import_key
AND ( SUBSTR (ordernr, 1, 1) = 'B'
AND fac.safe_to_number (SUBSTR (ordernr, 2, 1)) IS NOT NULL)
OR (SUBSTR (ordernr, 1, 2) = 'BE')
GROUP BY factuurnr, ordernr ;
CURSOR cfactuur
IS
SELECT i.fin_factuur_key, factuurdatum, i.kenmerk1, i.kenmerk2, i.kenmerk3, i.kenmerk6, i.kenmerk7, i.factuurnr, i.fac_imp_file_index, f.fin_factuur_totaal, f.fin_factuur_totaal_btw, f.mld_opdr_key, f.cnt_contract_key, f.bes_bestelopdr_key
FROM fac_imp_factuur i, fin_factuur f
WHERE i.fin_factuur_key IS NOT NULL
AND i.fac_import_key = p_import_key
AND f.fin_factuur_key = i.fin_factuur_key
AND kenmerk1 IS NOT NULL -- Incl bijlage
;
v_aanduiding VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
c_kenmerk_key_bijlage NUMBER(10);
c_kenmerk_key_soort VARCHAR(1) := 'F'; -- fin_kenmerk_kenmerktype = M(foldermap) of F(enkelvoudig bestand)
c_huidig_jaar NUMBER(4) := fac.safe_to_number((TO_CHAR (SYSDATE, 'yyyy')));
v_disk_directory VARCHAR2 (200);
v_bedrag_totaal NUMBER(10);
v_bedrag_gefactureerd NUMBER(10);
v_count_gefactureerd NUMBER(10);
v_bedrag_termijn NUMBER(10);
v_ordersoort VARCHAR2 (200);
v_contractsoort VARCHAR2 (200);
v_bestelsoort VARCHAR2 (200);
v_klantnummer_key NUMBER(10);
v_klantnummer VARCHAR2 (200);
v_prs_leverancier_nr VARCHAR2 (200);
v_contract_versies NUMBER(10);
c_kenmerk_key_controle NUMBER(10);
c_kenmerk_key_verzamel NUMBER(10);
v_prs_bedrijf_key NUMBER(10);
v_opdracht_key NUMBER(10);
v_controle NUMBER(1) := 0 ; -- 1 = controlevinkje op inkoopfactuur zetten
v_aanduiding_controle VARCHAR2 (1000); -- Voor logging op bijbehorende controle zodat men weet wat men moet controleren
v_fac_usrdata_key_ja NUMBER(10);
v_fac_usrdata_key_nee NUMBER(10);
v_mld_statusopdr_key NUMBER(10);
v_count_gefactureerd_nr NUMBER(10);
v_opdracht_0_reden VARCHAR2 (1000);
v_fin_factuur_key NUMBER(10);
v_sabic_genk VARCHAR2 (200);
v_prs_kostenplaats_key NUMBER(10);
v_prs_kostenplaatsgrp_key NUMBER(10);
-- Verdeelperiode voor de contracten gaan bepalen
v_cnt_jaar_start NUMBER(10);
v_cnt_jaar_eind NUMBER(10);
v_cnt_maand_start NUMBER(10);
v_cnt_maand_start_tekst VARCHAR(2);
v_cnt_maand_eind NUMBER(10);
v_cnt_maand_eind_tekst VARCHAR(2);
v_cnt_start VARCHAR(7); -- Start contract in format tekst "jaar-mnd" (2022-05)
v_cnt_eind VARCHAR(7); -- Einde contract in format tekst "jaar-mnd" (2022-05)
v_fin_factuur_boekmaand_nu VARCHAR(7); -- Ingelezen factuur in format tekst "jaar-mnd" (2022-05)
v_gebroken_boekjaar NUMBER(1) := 0 ;
v_cnt_looptijd_mnd NUMBER(10);
v_cnt_deel_betaald_1 NUMBER(10); -- Deel van contract wat reeds betaald is
v_cnt_deel_betaald_2 NUMBER(10); -- Deel van contract wat betaald is als de mareon-factuur ook verwerkt is
v_cnt_deel_betaald_tekst VARCHAR2 (200); -- Tekst voor in tijdelijke kenmerveld om te kijken of bepaling boekmaand correct is
-- v_cnt_deel_betaald NUMBER(10); -- METHODE 1: Deel van contract betaald met deze factuur
-- v_fin_factuur_boekmaand VARCHAR(7); -- METHODE 1: De nieuwe boekmaand op de geimporteerde Mareon-factuur
v_fin_factuur_boekmaand_2 VARCHAR(7); -- De nieuwe boekmaand op de geimporteerde Mareon-factuur - METHODE 2
v_fin_factuur_boekmaand_tekst VARCHAR2 (1000); -- Tekst voor in tijdelijke kenmerkveld om te kijken of bepaling boekmaand correct is
c_kenmerk_key_boekmaand NUMBER(10);
v_cnt_termijn_type VARCHAR(1);
v_cnt_termijn_aantal NUMBER(3);
v_cnt_soort VARCHAR2 (200);
v_factuur_datum_boekmaand NUMBER(10);
v_factuur_datum_boekmaand_jr NUMBER(10);
v_factuur_datum_boekmaand_prev VARCHAR(2);
v_factuur_datum_boekmaand_nu VARCHAR(2);
v_fin_factuur_boekmaand_laatst VARCHAR(7);
v_fin_factuur_boekmaand_prev VARCHAR(7);
v_cnt_maandbedrag NUMBER(10);
v_gefactureerd_vorige_maand NUMBER(10);
BEGIN
-- Voor draaien standaard factuur-update gaan we eerst op fac_imp_factuur een aantal correcties doorvoeren
FOR rec IN ccor_0
LOOP
BEGIN
UPDATE fac_imp_factuur
SET ordernr = '00000' -- Geen ordernr vanuit scanning
WHERE fac_import_key = p_import_key ;
END;
END LOOP;
FOR rec IN ccor_0_1
LOOP
BEGIN
UPDATE fac_imp_factuur
SET kenmerk3 = 'verzamelfactuur'
WHERE fac_import_key = p_import_key ;
END;
END LOOP;
FOR rec IN ccor_0_2
LOOP
BEGIN
UPDATE fac_imp_factuur
SET ordernr = SUBSTR(ordernr,1,LENGTH(ordernr)-(REGEXP_INSTR(REVERSE(ordernr), '\d')-1))
WHERE fac_import_key = p_import_key ;
END;
END LOOP;
FOR rec IN ccor_1
LOOP
BEGIN
-- check of je er een ACTUELE opdracht_key voor kunt vinden. zo ja dan gaan we er vanuit dat het idd opdracht is en vullen we ordernr aan met een prefix "O"
--- Actueel = Nog niet verwerkte opdracht + Jaar(opdrachtdatum) gelijk aan Jaar(factuurdatum) of Jaar(factuurdatum)-1
IF rec.melding_key IS NOT NULL and rec.opdracht_volgnr IS NOT NULL and rec.factuurdatum_jaar IS NOT NULL THEN
SELECT min(mld_opdr_key)
INTO v_opdracht_key
FROM mld_opdr
WHERE mld_melding_key = rec.melding_key AND mld_opdr_bedrijfopdr_volgnr = rec.opdracht_volgnr
AND fac.safe_to_number((TO_CHAR (mld_opdr_datumbegin, 'yyyy'))) BETWEEN (rec.factuurdatum_jaar - 1) AND rec.factuurdatum_jaar
AND mld_statusopdr_key NOT IN (1,7) ; -- verwerkt of afgewezen
IF v_opdracht_key IS NOT NULL THEN
UPDATE fac_imp_factuur
SET ordernr = 'O' || ordernr
WHERE fac_import_key = p_import_key ;
END IF;
END IF;
END;
END LOOP;
FOR rec IN ccor_2
LOOP
BEGIN
UPDATE fac_imp_factuur
SET ordernr = 'C' || SUBSTR(ordernr,3,LENGTH(ordernr))
WHERE fac_import_key = p_import_key ;
END;
END LOOP;
FOR rec IN ccor_3
LOOP
BEGIN
IF fac.safe_to_number(rec.cnt_contract_nummer_intern) IS NOT NULL THEN
SELECT count(*)
INTO v_contract_versies
FROM cnt_contract
WHERE cnt_contract_verwijder IS NULL AND cnt_contract_status = 0
AND cnt_contract_nummer_intern = rec.cnt_contract_nummer_intern ;
-- Als er meer dan 1 versie is, dan moet factuur ter controle. We gaan hiervoor een kenmerkveld vullen...
IF v_contract_versies > 1 THEN
UPDATE fac_imp_factuur
SET kenmerk2 = 'ter controle'
WHERE fac_import_key = p_import_key ;
END IF;
END IF;
END;
END LOOP;
FOR rec IN ccor_4
LOOP
BEGIN
UPDATE fac_imp_factuur
SET ordernr = REPLACE(ordernr,'BE','')
WHERE fac_import_key = p_import_key ;
UPDATE fac_imp_factuur
SET ordernr = REPLACE(ordernr,'B','')
WHERE fac_import_key = p_import_key ;
END;
END LOOP;
-- Nu kunnen we de standaard FCLT verwerk import facturen draaien
fac_update_factuur (p_import_key);
-- CUST: post processing voor verwerking van het PDF document
SELECT MIN (fin_kenmerk_key)
INTO c_kenmerk_key_bijlage
FROM fin_kenmerk
WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel
AND fin_kenmerk_kenmerktype = c_kenmerk_key_soort
AND fin_kenmerk_verwijder IS NULL;
-- CUST: Voor vullen Klantnummer het kenmerk_key ophalen
SELECT MIN (prs_kenmerk_key)
INTO v_klantnummer_key
FROM prs_kenmerk
WHERE prs_kenmerk_niveau = 'B' AND prs_kenmerk_upper = 'KLANTNUMMER' AND prs_kenmerk_verwijder IS NULL;
-- CUST: Voor verwerking Contracten die qua versienr nog gecontroleerd moeten worden het kenmerk_key ophalen
SELECT MIN (fin_kenmerk_key)
INTO c_kenmerk_key_controle
FROM fin_kenmerk
WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel
AND fin_kenmerk_kenmerktype = 'V'
AND fin_kenmerk_upper = 'EXTRA CONTROLE?'
AND fin_kenmerk_verwijder IS NULL;
-- CUST: Voor verwerking Contracten en Verdeelperiode goed doorvoeren (= fin_factuur_boekmaand)
----- We gaan dit in een kenmerveld vullen en indien goed te bepalen dan wordt dit ook in procedure straks in het factuur-boekmaand veld weggeschreven
SELECT MIN (fin_kenmerk_key)
INTO c_kenmerk_key_boekmaand
FROM fin_kenmerk
WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel
AND fin_kenmerk_kenmerktype = 'C'
AND fin_kenmerk_upper = 'MAREON_CNT_BOEKMAAND'
AND fin_kenmerk_verwijder IS NULL;
-- CUST: Voor verwerking Verzamelfactuur-indicatie het kenmerk_key ophalen
SELECT MIN (fin_kenmerk_key)
INTO c_kenmerk_key_verzamel
FROM fin_kenmerk
WHERE fin_kenmerk_type = 'F' -- niveau kenmerk op Factuurniveau en niet op R-regel
AND fin_kenmerk_kenmerktype = 'V'
AND fin_kenmerk_upper = 'VERZAMELFACTUUR?'
AND fin_kenmerk_verwijder IS NULL;
-- CUST: Ophalen key-waarde Ja en Nee van kenmerkveld Laatste Factuur
SELECT ud.fac_usrdata_key
INTO v_fac_usrdata_key_ja
FROM fin_kenmerk k,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE fin_kenmerk_key = 2
AND k.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND kd.fac_usrtab_key = ut.fac_usrtab_key
AND ut.fac_usrtab_key = ud.fac_usrtab_key
AND fac.safe_to_number (ud.fac_usrdata_code) = 1; -- Waarde is Ja
SELECT ud.fac_usrdata_key
INTO v_fac_usrdata_key_nee
FROM fin_kenmerk k,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE fin_kenmerk_key = 2
AND k.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND kd.fac_usrtab_key = ut.fac_usrtab_key
AND ut.fac_usrtab_key = ud.fac_usrtab_key
AND fac.safe_to_number (ud.fac_usrdata_code) = 2; -- Waarde is Nee
-- We gaan nu beginnen met het verder verwerken van de factuur..
FOR rec IN cfactuur
LOOP
BEGIN
-- Als er een bijlage-flexprop en een bijlage is, dan gaan we deze PDF hier inzetten....
IF c_kenmerk_key_bijlage IS NOT NULL AND rec.kenmerk1 IS NOT NULL
THEN
BEGIN
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES('IMPORT:' || TO_CHAR (p_import_key),
'flexcode',
'FIN:'
|| TO_CHAR (rec.fin_factuur_key) -- We kunnen niet meerdere imports tegelijk aan!
|| ':' || c_kenmerk_key_bijlage || ':' -- De kenmerk key
|| c_kenmerk_key_soort -- 'F of M'
);
-- FSN#33363: Zelf de insert in fin_kenmerkfactuur doen van het bestandskenmerk (FSN#33105 verzorgt dit niet namelijk)
-- Aanvulling JM: Voor F-enkelvoudig bestand wel nodig om kenmerk aan te maken, voor M-folder hoeft/moet dit niet
IF c_kenmerk_key_soort = 'F'
THEN
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, c_kenmerk_key_bijlage, rec.kenmerk1);
END IF;
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (p_import_key,
'W',
'Van factuur met key ' || rec.fin_factuur_key || ' is de bestandsnaam niet bewaard (regel ' || rec.fac_imp_file_index || ')',
'Factuurnr:' || rec.factuurnr || ' / Bestandsnaam: ' || rec.kenmerk1
);
END;
COMMIT;
END IF;
-- Als er een ref-key gekoppeld is, dan gaan we o.a. de waarde van deze verplichting ophalen en verschillende controles doen
IF (rec.mld_opdr_key IS NOT NULL OR rec.cnt_contract_key IS NOT NULL OR rec.bes_bestelopdr_key IS NOT NULL)
THEN
v_bedrag_totaal := 0;
v_count_gefactureerd := 0;
v_bedrag_gefactureerd := 0;
v_ordersoort := '';
-- Voor Opdracht..
IF rec.mld_opdr_key IS NOT NULL
THEN
SELECT COALESCE(o.mld_opdr_kosten, 0), ot.mld_typeopdr_omschrijving, o.mld_uitvoerende_keys, mld_statusopdr_key, o.prs_kostenplaats_key
INTO v_bedrag_totaal, v_ordersoort, v_prs_bedrijf_key, v_mld_statusopdr_key, v_prs_kostenplaats_key
FROM mld_opdr o, mld_typeopdr ot
WHERE o.mld_opdr_key = rec.mld_opdr_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key;
SELECT count(*)
INTO v_count_gefactureerd
FROM fin_factuur
WHERE mld_opdr_key = rec.mld_opdr_key
AND fin_factuur_verwijder IS NULL;
IF v_count_gefactureerd > 1
THEN
SELECT sum(fin_factuur_totaal)
INTO v_bedrag_gefactureerd
FROM fin_factuur f
WHERE f.mld_opdr_key = rec.mld_opdr_key
AND f.fin_factuur_key NOT IN (rec.fin_factuur_key)
AND f.fin_factuur_verwijder IS NULL;
END IF;
-- Als de Opdracht waar deze factuur op is gekomen al verwerkt is, dan moet deze factuur ter controle
IF v_mld_statusopdr_key IN (1,7) -- verwerkt of afgewezen
THEN
v_aanduiding_controle := 'CONTROLE - Deze factuur is ingeboekt terwijl de Opdracht al op VERWERKT staat' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
-- Als hetzelfde factuurnummer al vaker op deze opdracht is geregistreerd, dan moet deze factuur ter controle
SELECT count(*)
INTO v_count_gefactureerd_nr
FROM fin_factuur
WHERE mld_opdr_key = rec.mld_opdr_key
AND fin_factuur_key NOT IN (rec.fin_factuur_key)
AND fin_factuur_nr = rec.factuurnr
AND fin_factuur_verwijder IS NULL ;
IF v_count_gefactureerd_nr > 0
THEN
v_aanduiding_controle := 'CONTROLE - Hetzelfde factuur-nummer is al eerder geregistreerd op deze Opdracht' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
-- Voor opdrachten met 0-waarde zetten we de Controle, mits er op de Opdracht een REDEN is vermeld
IF v_bedrag_totaal = 0
THEN
-- Eerst dus kijken of er bij opdracht een reden is vermeld
BEGIN
SELECT MIN(ko.mld_kenmerkopdr_waarde)
INTO v_opdracht_0_reden
FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_upper = 'REDEN 0 ORDER'
AND k.mld_kenmerk_verwijder IS NULL AND sk.mld_srtkenmerk_verwijder IS NULL
AND ko.mld_opdr_key = rec.mld_opdr_key
AND ko.mld_kenmerkopdr_waarde IS NOT NULL
AND ko.mld_kenmerkopdr_verwijder IS NULL ;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_opdracht_0_reden := NULL;
END;
-- Zo ja, dan zetten we de controle
IF v_opdracht_0_reden IS NOT NULL
THEN
v_aanduiding_controle := 'CONTROLE <20> Bedrag van gekoppelde verplichting is 0,- euro en er is een REDEN ingevuld' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
END IF;
-- Specifiek voor SABIC-GENK - Altijd op controle omdat ze nog een PDF moeten opslaan
IF aaxx_get_user = 'SABIC'
THEN
BEGIN
SELECT d.alg_district_omschrijving
INTO v_sabic_genk
FROM mld_opdr o, mld_melding m, alg_locatie l, alg_district d
WHERE o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND d.alg_district_key = 61 -- SABIC-GENK
AND o.mld_opdr_key = rec.mld_opdr_key ;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_sabic_genk := NULL;
END;
IF v_sabic_genk IS NOT NULL
THEN
v_aanduiding_controle := 'CONTROLE - PDF opslaan voor SABIC GENK' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
END IF;
END IF;
-- Voor Bestelopdracht..
IF rec.bes_bestelopdr_key IS NOT NULL
THEN
SELECT COALESCE(SUM (br.bes_bestelopdr_item_aantal * br.bes_bestelopdr_item_prijs), 0) bedrag_totaal, b.prs_bedrijf_key, bs.prs_kostenplaats_key -- LETOP! Bedragen en BTW - check inclusief of Exclusief bij AAIT (via bes_bestelling_item)!!!
INTO v_bedrag_totaal, v_prs_bedrijf_key, v_prs_kostenplaats_key
FROM bes_bestelopdr b, bes_bestelopdr_item br, bes_bestelling_item bi, bes_bestelling bs
WHERE b.bes_bestelopdr_key = br.bes_bestelopdr_key
AND b.bes_bestelopdr_key = rec.bes_bestelopdr_key
AND br.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND bi.bes_bestelling_key = bs.bes_bestelling_key
GROUP BY b.prs_bedrijf_key, bs.prs_kostenplaats_key ;
SELECT count(*)
INTO v_count_gefactureerd
FROM fin_factuur
WHERE bes_bestelopdr_key = rec.bes_bestelopdr_key
AND fin_factuur_verwijder IS NULL;
IF v_count_gefactureerd > 1
THEN
SELECT sum(fin_factuur_totaal)
INTO v_bedrag_gefactureerd
FROM fin_factuur f
WHERE f.bes_bestelopdr_key = rec.bes_bestelopdr_key
AND f.fin_factuur_key NOT IN (rec.fin_factuur_key)
AND f.fin_factuur_verwijder IS NULL ;
END IF;
-- Als hetzelfde factuurnummer al vaker op deze opdracht is geregistreerd, dan moet deze factuur ter controle
SELECT count(*)
INTO v_count_gefactureerd_nr
FROM fin_factuur
WHERE bes_bestelopdr_key = rec.bes_bestelopdr_key
AND fin_factuur_key NOT IN (rec.fin_factuur_key)
AND fin_factuur_nr = rec.factuurnr
AND fin_factuur_verwijder IS NULL ;
IF v_count_gefactureerd_nr > 0
THEN
v_aanduiding_controle := 'CONTROLE - Hetzelfde factuur-nummer is al eerder geregistreerd op deze Opdracht' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
-- Voor Bestelopdrachten met 0-waarde zetten we Controle
IF v_bedrag_totaal = 0
THEN
v_aanduiding_controle := 'CONTROLE - Bedrag van gekoppelde verplichting is 0,- euro' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
-- Specifiek voor SABIC-GENK - Altijd op controle omdat ze nog een PDF moeten opslaan
IF aaxx_get_user = 'SABIC'
THEN
BEGIN
SELECT d.alg_district_omschrijving
INTO v_sabic_genk
FROM bes_bestelopdr bo, mld_adres a, alg_locatie l, alg_district d
WHERE bo.mld_adres_key_lev = a.mld_adres_key
AND a.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND d.alg_district_key = 61 -- SABIC-GENK
AND bo.bes_bestelopdr_key = rec.bes_bestelopdr_key ;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_sabic_genk := NULL;
END;
IF v_sabic_genk IS NOT NULL
THEN
v_aanduiding_controle := 'CONTROLE - PDF opslaan voor SABIC GENK' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
END IF;
END IF;
-- Voor Contract..
IF rec.cnt_contract_key IS NOT NULL
THEN
SELECT COALESCE(c.cnt_contract_kosten, 0), c.cnt_contract_termijnkosten, cs.ins_discipline_omschrijving, c.cnt_prs_bedrijf_key, c.prs_kostenplaats_key
INTO v_bedrag_totaal, v_bedrag_termijn, v_contractsoort, v_prs_bedrijf_key, v_prs_kostenplaats_key
FROM cnt_contract c, ins_tab_discipline cs
WHERE c.cnt_contract_key = rec.cnt_contract_key
AND c.ins_discipline_key = cs.ins_discipline_key AND cs.ins_discipline_module = 'CNT';
SELECT count(*)
INTO v_count_gefactureerd
FROM fin_factuur
WHERE cnt_contract_key = rec.cnt_contract_key
AND fin_factuur_verwijder IS NULL;
IF v_count_gefactureerd > 1
THEN
SELECT sum(fin_factuur_totaal)
INTO v_bedrag_gefactureerd
FROM fin_factuur f
WHERE f.cnt_contract_key = rec.cnt_contract_key
AND f.fin_factuur_key NOT IN (rec.fin_factuur_key)
AND f.fin_factuur_verwijder IS NULL ;
END IF;
-- Als hetzelfde factuurnummer al vaker op deze opdracht is geregistreerd, dan moet deze factuur ter controle
SELECT count(*)
INTO v_count_gefactureerd_nr
FROM fin_factuur
WHERE cnt_contract_key = rec.cnt_contract_key
AND fin_factuur_key NOT IN (rec.fin_factuur_key)
AND fin_factuur_nr = rec.factuurnr
AND fin_factuur_verwijder IS NULL ;
IF v_count_gefactureerd_nr > 0
THEN
v_aanduiding_controle := 'CONTROLE - Hetzelfde factuur-nummer is al eerder geregistreerd op deze Opdracht' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
-- Voor Contracten met 0-waarde zetten we Controle
IF v_bedrag_totaal = 0
THEN
v_aanduiding_controle := 'CONTROLE - Bedrag van gekoppelde verplichting is 0,- euro' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
-- Specifiek voor SABIC-GENK - Altijd op controle omdat ze nog een PDF moeten opslaan
IF aaxx_get_user = 'SABIC'
THEN
BEGIN
SELECT d.alg_district_omschrijving
INTO v_sabic_genk
FROM cnt_contract c,
(SELECT cl.cnt_contract_key, MAX(cl.alg_locatie_key) alg_locatie_key
FROM (SELECT cp.cnt_contract_key, cnt_alg_plaats_key alg_locatie_key
FROM cnt_contract_plaats cp
WHERE cnt_alg_plaats_code = 'L'
UNION
SELECT cp.cnt_contract_key, g.alg_locatie_key
FROM cnt_contract_plaats cp, alg_gebouw g
WHERE cnt_alg_plaats_code = 'G'
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
) cl
GROUP BY cl.cnt_contract_key
) cp,
alg_locatie l, alg_district d
WHERE c.cnt_contract_key = cp.cnt_contract_key
AND cp.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND d.alg_district_key = 61 -- SABIC-GENK
AND c.cnt_contract_key = rec.cnt_contract_key ;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_sabic_genk := NULL;
END;
IF v_sabic_genk IS NOT NULL
THEN
v_aanduiding_controle := 'CONTROLE - PDF opslaan voor SABIC GENK' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
END IF;
END IF;
-- Checken of op de verplichting gekoppelde uitvoerende/leverancier/contractant ook het leveranciersnr is gevuld
SELECT MAX(prs_leverancier_nr)
INTO v_prs_leverancier_nr
FROM prs_bedrijf
WHERE prs_bedrijf_key = v_prs_bedrijf_key;
IF v_prs_leverancier_nr IS NULL
THEN
v_aanduiding_controle := 'CONTROLE - Leveranciersnummer ontbreekt op leverancierskaart' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
-- Bepalen of kenmerk LaatsteFactuur op JA(1) of op NEE(2) moet. Afgesproken methodiek:
-- Voor alle opdrachtsoorten Workorder/Opdrachten en Bestelopdrachten ALTIJD op laatste factuur JA (m.u.v. RABO), ook bij opdrachtwaarde 0,-
-- Voor alle andere andere opdrachtsoorten (en contract-facturen) en voor account RABO, volgende mechanisme:
--- Als procentuele afwijking tussen opdrachtwaarde en totaal_gefactureerd kleiner/gelijk aan 1% dan mag die op JA
--- Als opdrachtwaarde van het PROJECT is 0 dan laatste factuur op NEE
--- Als het een verzamelfactuur-indicatie heeft, dan ook op NEE
---- Voor RABO geldt nog dat Workorders met opdrachtwaarde 0 ook op JA moeten komen
IF (UPPER(v_ordersoort) IN ('WORKORDER', 'OPDRACHT') OR rec.bes_bestelopdr_key IS NOT NULL )
AND aaxx_get_user NOT IN ('RABO')
THEN
-- Zet kenmerk laatste factuur op Ja
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, 2, v_fac_usrdata_key_ja);
ELSE
-- Geen verzamelfactuur - check 1% regel
IF rec.kenmerk3 IS NULL
THEN
IF v_bedrag_totaal <> 0
THEN
IF ((v_bedrag_totaal - (rec.fin_factuur_totaal + v_bedrag_gefactureerd))/ v_bedrag_totaal) * 100 <= 1
THEN
-- Zet kenmerk laatste factuur op Ja
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, 2, v_fac_usrdata_key_ja);
ELSE
-- Zet kenmerk laatste factuur op Nee
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, 2, v_fac_usrdata_key_nee);
END IF;
END IF;
IF v_bedrag_totaal = 0 AND INSTR(UPPER(v_ordersoort),'PROJECT')>0
THEN
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, 2, v_fac_usrdata_key_nee);
END IF;
IF v_bedrag_totaal = 0 AND UPPER(v_ordersoort) IN ('WORKORDER', 'OPDRACHT') AND aaxx_get_user IN ('RABO')
THEN
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, 2, v_fac_usrdata_key_ja);
END IF;
END IF;
-- Wel verzamelfactuur -altijd op ja
IF rec.kenmerk3 IS NOT NULL
THEN
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, 2, v_fac_usrdata_key_nee);
END IF;
END IF;
-- CREDITS - Deze moeten altijd op controle JA
-- Voor Contracten is dat hieronder bij Verdeelperiode-bepaling al ingeregeld. Voor Opdrachten/Bestellingen doen we dat hier
IF rec.fin_factuur_totaal < 0 AND (rec.bes_bestelopdr_key IS NOT NULL OR rec.mld_opdr_key IS NOT NULL)
THEN
v_aanduiding_controle := 'CONTROLE - Credit geboekt op Opdracht/Bestelling' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
-- Makering zetten voor bepaalde accounts
--- Key 2 = Interface - Wel in inkoopinterface maar geen XML-output en wel op status verwerkt
IF v_prs_kostenplaats_key IS NOT NULL
THEN
SELECT MAX(kp.prs_kostenplaatsgrp_key)
INTO v_prs_kostenplaatsgrp_key
FROM prs_kostenplaats kp
WHERE kp.prs_kostenplaats_key = v_prs_kostenplaats_key ;
IF aaxx_get_user IN ('INLO') AND v_prs_kostenplaatsgrp_key IN (321) -- Vivada
THEN
-- markering zetten op factuur
UPDATE fin_factuur
SET fin_factuur_flag = 2
WHERE fin_factuur_key = rec.fin_factuur_key ;
END IF;
END IF;
-- Verdeelperiode voor de contracten bepalen - Daarvoor eerst nog diverse parameters te vullen
--- METHODE 1 - OUD : Op basis van het deel dat al op contract gefactureerd is, wordt de verdeelperiode op de factuur bepaald.
--- METHODE 2 - NIEUW : Op basis contractsoort CF en in voorgaande periode mits daarin minder dan 90% gefactureerd (herziening mei-2022 in opdracht van Siert Jan Bolt)
IF rec.cnt_contract_key IS NOT NULL
THEN
SELECT SUBSTR(d.ins_discipline_omschrijving,1,2) cnt_soort, ROUND((c.cnt_contract_looptijd_tot - c.cnt_contract_looptijd_van)/30) cnt_looptijd_mnd,
fac.safe_to_number((TO_CHAR (c.cnt_contract_looptijd_van, 'yyyy'))) cnt_jaar_start,
fac.safe_to_number((TO_CHAR (c.cnt_contract_looptijd_tot, 'yyyy'))) cnt_jaar_eind,
fac.safe_to_number((TO_CHAR (c.cnt_contract_looptijd_van, 'mm'))) cnt_maand_start,
fac.safe_to_number((TO_CHAR (c.cnt_contract_looptijd_tot, 'mm'))) cnt_maand_eind,
t.cnt_termijn_type, t.cnt_termijn_aantal,
TO_NUMBER (TO_CHAR (SYSDATE, 'mm')) factuur_datum_boekmaand,
TO_NUMBER (TO_CHAR (SYSDATE, 'yyyy')) factuur_datum_boekmaand_jr
INTO v_cnt_soort, v_cnt_looptijd_mnd, v_cnt_jaar_start, v_cnt_jaar_eind, v_cnt_maand_start, v_cnt_maand_eind, v_cnt_termijn_type, v_cnt_termijn_aantal, v_factuur_datum_boekmaand, v_factuur_datum_boekmaand_jr
FROM cnt_contract c, cnt_termijn t, cnt_discipline d
WHERE c.cnt_contract_key = rec.cnt_contract_key
AND c.cnt_contract_termijntermijn = t.cnt_termijn_key (+)
AND c.ins_discipline_key = d.ins_discipline_key;
-- Bepalen of het een gebroken boekjaar is...
IF v_cnt_jaar_start <> v_cnt_jaar_eind
THEN
v_gebroken_boekjaar := 1 ;
END IF;
-- METHODE 1 - niet meer actief maar onderstaande bepaling wordt nog wel tekstmarig in tekst-kenmerkveld van factuur weggeschreven want is wel een 'goede' indicatie voor degene die factuur oppakt
IF v_bedrag_totaal >0 AND v_cnt_looptijd_mnd > 0
THEN
v_cnt_deel_betaald_1 := (v_bedrag_gefactureerd / v_bedrag_totaal) * v_cnt_looptijd_mnd ;
v_cnt_deel_betaald_2 := ((v_bedrag_gefactureerd + rec.fin_factuur_totaal) / v_bedrag_totaal) * v_cnt_looptijd_mnd ;
v_cnt_deel_betaald_tekst := TO_CHAR(ROUND((v_cnt_deel_betaald_2/v_cnt_looptijd_mnd)*100,2)) || '%' ;
v_cnt_maandbedrag := ROUND(v_bedrag_totaal / v_cnt_looptijd_mnd,2) ;
END IF;
-- METHODE 2
-- Nieuwe setting in 2022.1 (fin_defaultboekmaand_cnt) waarmee je met instelling 2 kunt afdwingen dat invoice-datum wordt gehanteerd voor bepaling boek-periode
-- Deze setting dient default op 2 te staan voor HEYDAY en daarmee worden in onderstaande uitwerking alle CF-contractn indien nodig aangepast en komen de CV's automatisch goed te staan.
-- 1. Facturen die na contractperiode worden geboekt moeten altijd op de laatste periode uit contract
-- 2. Eerste factuur die in de contractperiode geboekt wordt, moet op eerste periode uit contract komen,
----- evenals de facturen die ingeboekt worden op datum die binnen eerste periode contract vallen
-- 3. Facturen op CF-contracten die in de contractperiode geboekt worden, moeten op voorgaande verdeelperiode komen, mits daar nog niet meer dan 90% qua facturatie op voldaan is.
----- Indien al meer dan 90% dan boeken op de periode van inboeken factuur + controle
-- 4. Credit-facturen moeten altijd op de laatste geboekt verdeelperiode komen, inclusief controle
-- 5. Overige varianten waarvan boekmaand nog her-bepaald moet worden?
-- 6. Alle overige contract-facturen komen door de facilitor-setting fin_defaultboekmaand_cnt (=2 voor heyday) dus altijd automatisch op verdeelperiode die overeenkomt met de factuurdatum (dit is voor CV's de HEYDAY-regel)
-- Gaan eerst in tekststring de relevante boekmaand-data bepalen. Dit zijn:
---- 1. Begin contract = v_cnt_start = " "2022-01"
---- 2. Einde contract = v_cnt_eind = "2022-09"
---- 3. Laatste factuur geboekt in boekmaand = v_fin_factuur_boekmaand_laatst = "2022-06" of "geen"
---- 4. NU geboekt = sysdate factuur ingelezen, vertaald naar boekmaand = v_fin_factuur_boekmaand_nu = "2022-10"
---- 5.1. Voorgaande boekmaand = v_fin_factuur_boekmaand_prev
---- 5.2. Voorgaande boekmaand bedrag al gefactureerd = v_gefactureerd_vorige_maand
-- 1. v_cnt_start
v_cnt_maand_start_tekst := TO_CHAR(v_cnt_maand_start) ;
IF LENGTH (v_cnt_maand_start_tekst) = 1 THEN v_cnt_maand_start_tekst := '0' || v_cnt_maand_start_tekst ; END IF;
v_cnt_start := TO_CHAR(v_cnt_jaar_start) || '-' || v_cnt_maand_start_tekst ;
-- 2. v_cnt_eind
v_cnt_maand_eind_tekst := TO_CHAR(v_cnt_maand_eind) ;
IF LENGTH (v_cnt_maand_eind_tekst) = 1 THEN v_cnt_maand_eind_tekst := '0' || v_cnt_maand_eind_tekst ; END IF;
v_cnt_eind := TO_CHAR(v_cnt_jaar_eind) || '-' || v_cnt_maand_eind_tekst ;
-- 3. v_fin_factuur_boekmaand_laatst
SELECT MAX(f.fin_factuur_boekmaand)
INTO v_fin_factuur_boekmaand_laatst
FROM fin_factuur f
WHERE cnt_contract_key = rec.cnt_contract_key AND fin_factuur_boekmaand IS NOT NULL AND fin_factuur_key NOT IN (rec.fin_factuur_key) AND fin_factuur_verwijder IS NULL ;
IF v_fin_factuur_boekmaand_laatst IS NULL THEN v_fin_factuur_boekmaand_laatst := 'geen'; END IF ;
-- 4. v_fin_factuur_boekmaand_nu
v_factuur_datum_boekmaand_nu := TO_CHAR(v_factuur_datum_boekmaand);
IF LENGTH (v_factuur_datum_boekmaand_nu) = 1 THEN v_factuur_datum_boekmaand_nu := '0' || v_factuur_datum_boekmaand_nu ; END IF;
v_fin_factuur_boekmaand_nu := TO_CHAR(v_factuur_datum_boekmaand_jr) || '-' || v_factuur_datum_boekmaand_nu ;
-- 5.1. v_fin_factuur_boekmaand_prev
--- Geen previous-maand te bepalen als looptijd cnt <= 1 maand en/of geboekt in maand 1 van het contract
IF v_cnt_looptijd_mnd <= 1 OR v_fin_factuur_boekmaand_nu = v_cnt_start
THEN
v_fin_factuur_boekmaand_prev := 'geen' ;
--- Wel previous-maand te bepalen
ELSE
--- als datum ingeboekt in contractperiode
IF v_fin_factuur_boekmaand_nu > v_cnt_start AND v_fin_factuur_boekmaand_nu <= v_cnt_eind
THEN
v_factuur_datum_boekmaand_prev := TO_CHAR(v_factuur_datum_boekmaand -1);
IF v_factuur_datum_boekmaand_prev = '0'
THEN
v_fin_factuur_boekmaand_prev := TO_CHAR(v_factuur_datum_boekmaand_jr-1) || '-' || '12';
ELSE
IF LENGTH (v_factuur_datum_boekmaand_prev) = 1 THEN v_factuur_datum_boekmaand_prev := '0' || v_factuur_datum_boekmaand_prev ; END IF;
v_fin_factuur_boekmaand_prev := TO_CHAR(v_factuur_datum_boekmaand_jr) || '-' || v_factuur_datum_boekmaand_prev;
END IF;
END IF;
--- als datum ingeboekt na contractperiode dan is v_fin_factuur_boekmaand_prev dus v_cnt_eind-1
IF v_fin_factuur_boekmaand_nu > v_cnt_eind
THEN
v_factuur_datum_boekmaand_prev := TO_CHAR(v_cnt_maand_eind -1);
IF v_factuur_datum_boekmaand_prev = '0'
THEN
v_fin_factuur_boekmaand_prev := TO_CHAR(v_cnt_jaar_eind-1) || '-' || '12';
ELSE
IF LENGTH (v_factuur_datum_boekmaand_prev) = 1 THEN v_factuur_datum_boekmaand_prev := '0' || v_factuur_datum_boekmaand_prev ; END IF;
v_fin_factuur_boekmaand_prev := TO_CHAR(v_cnt_jaar_eind) || '-' || v_factuur_datum_boekmaand_prev;
END IF;
END IF;
END IF;
-- 5.2. v_gefactureerd_vorige_maand
IF v_fin_factuur_boekmaand_prev = 'geen'
THEN
v_gefactureerd_vorige_maand := 0 ;
ELSE
SELECT COALESCE(sum(f.fin_factuur_totaal),0)
INTO v_gefactureerd_vorige_maand
FROM fin_factuur f
WHERE cnt_contract_key = rec.cnt_contract_key
AND fin_factuur_boekmaand IS NOT NULL
AND fin_factuur_key NOT IN (rec.fin_factuur_key)
AND fin_factuur_verwijder IS NULL
AND fin_factuur_boekmaand = v_fin_factuur_boekmaand_prev ;
END IF;
-- Nu gaan we de juiste boekmaand conform METHODE 2 bepalen
-- default
v_fin_factuur_boekmaand_2 := 'nvt' ;
-- 1. Voor zowel CF en CV: boekmaand/jr na contractperiode = boekmaand altijd laatste contractperiode aanhouden
IF v_fin_factuur_boekmaand_nu > v_cnt_eind
THEN
v_fin_factuur_boekmaand_2 := v_cnt_eind ;
-- wegschrijven in fin_factuur_boekmaand
UPDATE fin_factuur
SET fin_factuur_boekmaand = v_fin_factuur_boekmaand_2
WHERE fin_factuur_key = rec.fin_factuur_key ;
END IF;
-- 2. Eerste factuur (inleesdatum binnen contract) of factuur ingeboekt in eerste periode contract dan altijd op de eerste periode uit contract laten komen
IF (v_fin_factuur_boekmaand_nu <= v_cnt_eind AND v_fin_factuur_boekmaand_laatst = 'geen')
OR
(v_fin_factuur_boekmaand_nu = v_cnt_start)
THEN
v_fin_factuur_boekmaand_2 := v_cnt_start ;
-- wegschrijven in fin_factuur_boekmaand
UPDATE fin_factuur
SET fin_factuur_boekmaand = v_fin_factuur_boekmaand_2
WHERE fin_factuur_key = rec.fin_factuur_key ;
END IF;
-- 3. Voor CF die qua inlees-datum binnen contract valt, moet op voorgaande boekmaand gezet worden, mits daarop minder dan 90% al op is gefactureerd. Anders op v_fin_factuur_boekmaand_nu
IF v_cnt_soort = 'CF' AND v_fin_factuur_boekmaand_nu <= v_cnt_eind AND v_fin_factuur_boekmaand_prev <> 'geen' AND v_bedrag_totaal >0 AND v_cnt_looptijd_mnd > 0 AND rec.fin_factuur_totaal > 0
THEN
v_cnt_maandbedrag := ROUND(v_bedrag_totaal / v_cnt_looptijd_mnd,2) ;
-- Dus als inleesactie op 2022-4 EN totaal gefactureerd voor 2022-3 is al >90% , dan de factuur niet op 2022-3 maar op 2022-4 zetten incl controle
IF (ROUND(v_gefactureerd_vorige_maand/v_cnt_maandbedrag,2)*100) > 90
THEN
v_fin_factuur_boekmaand_2 := v_fin_factuur_boekmaand_nu;
-- incl controle (voor paar omgevingen niet nodig..)
v_aanduiding_controle := 'CONTROLE - Contract CF en 90% al gefactureerd in voorgaande periode' ;
IF aaxx_get_user NOT IN ('SMKA', 'ESSENT')
THEN
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
ELSE
-- anders kan de factuur 'gewoon' op de vorige boekmaand
v_fin_factuur_boekmaand_2 := v_fin_factuur_boekmaand_prev;
END IF;
-- wegschrijven van de hierboven bepaalde boekmaand
UPDATE fin_factuur
SET fin_factuur_boekmaand = v_fin_factuur_boekmaand_2
WHERE fin_factuur_key = rec.fin_factuur_key ;
END IF;
-- 4. Voor CREDITS altijd op controle JA + kijken of het op de laatste gebruikte boekmaand geboekt kan worden
IF rec.fin_factuur_totaal < 0
THEN
v_aanduiding_controle := 'CONTROLE - Credit geboekt op Contract in voorgaande periode' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
-- indien mogelijk de boekmaand op de laatste gehanteerde boekmaand zetten
IF v_fin_factuur_boekmaand_laatst <> 'geen'
THEN
v_fin_factuur_boekmaand_2 := v_fin_factuur_boekmaand_laatst;
UPDATE fin_factuur
SET fin_factuur_boekmaand = v_fin_factuur_boekmaand_2
WHERE fin_factuur_key = rec.fin_factuur_key ;
END IF;
END IF;
-- 5. Nog andere varianten waar boekmaand van bepaald moet worden?
-- 6. Alle overige contract-facturen ....
--- Deze worden bij import al AUTOMATISCH gevuld met boekmaand = factuurdatum (ivm setting fin_defaultboekmaand_cnt = 2)
-- wegschrijven van de uitleg tav de bepaling van de boekmaand in een kenmerkveld
IF v_fin_factuur_boekmaand_2 = 'nvt' -- dwz verdeelperiode bepaald door stap 6 de factuurdatum
THEN
v_fin_factuur_boekmaand_tekst := 'Type: ' || v_cnt_soort || '. Contractduur: ' || TO_CHAR(v_cnt_looptijd_mnd) || ' mnd. Contractbedrag: ' || TO_CHAR(v_bedrag_totaal) || ' Start/Einddatum: ' || v_cnt_start || ' - ' || v_cnt_eind || chr(10) || chr(13)
|| 'Deel nu betaald: ' || v_cnt_deel_betaald_tekst || ' (correspondeert met verdeelperiode ' || TO_CHAR(ROUND(v_cnt_deel_betaald_2,2)) || ')' || chr(10) || chr(13)
|| 'BEPALING HEYDAY: ' || 'Maandbedrag: ' || TO_CHAR(v_cnt_maandbedrag) || ' Gefactureerd vorige maand ' || TO_CHAR(v_gefactureerd_vorige_maand) || ' Verdeelperiode bepaald op basis Factuurdatum: ' || rec.factuurdatum
-- || chr(10) || chr(13) || 'TEST: 1.' || v_cnt_start || ' - 2.' || v_cnt_eind || ' - 3.' || v_fin_factuur_boekmaand_laatst || ' - 4.' || v_fin_factuur_boekmaand_nu || ' - 5.1.' || v_fin_factuur_boekmaand_prev || ' - 5.2.' || v_gefactureerd_vorige_maand
;
ELSE
v_fin_factuur_boekmaand_tekst := 'Type: ' || v_cnt_soort || '. Contractduur: ' || TO_CHAR(v_cnt_looptijd_mnd) || ' mnd. Contractbedrag: ' || TO_CHAR(v_bedrag_totaal) || ' Start/Einddatum: ' || v_cnt_start || ' - ' || v_cnt_eind || chr(10) || chr(13)
|| 'Deel nu betaald: ' || v_cnt_deel_betaald_tekst || ' (correspondeert met verdeelperiode ' || TO_CHAR(ROUND(v_cnt_deel_betaald_2,2)) || ')' || chr(10) || chr(13)
|| 'BEPALING HEYDAY: ' || 'Maandbedrag: ' || TO_CHAR(v_cnt_maandbedrag) || ' Gefactureerd vorige maand ' || TO_CHAR(v_gefactureerd_vorige_maand) || ' (' || TO_CHAR(ROUND(v_gefactureerd_vorige_maand/v_cnt_maandbedrag,2)*100) || '%)' || ' Verdeelperiode bepaald:' || v_fin_factuur_boekmaand_2
-- || chr(10) || chr(13) || 'TEST: 1.' || v_cnt_start || ' - 2.' || v_cnt_eind || ' - 3.' || v_fin_factuur_boekmaand_laatst || ' - 4.' || v_fin_factuur_boekmaand_nu || ' - 5.1.' || v_fin_factuur_boekmaand_prev || ' - 5.2.' || v_gefactureerd_vorige_maand
;
END IF;
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, c_kenmerk_key_boekmaand, SUBSTR(v_fin_factuur_boekmaand_tekst,1,1000));
-- Tot slot voor Contracten nog de volgende controles zetten
---- Op facturen op CO's van vorig boekjaar de CONTROLE zetten voor die facturen ingeboekt na FEBR
---- Alle inkoopfacturen op contracten-met-gebroken-boekjaar op ter controle verdeelperiode
IF (c_huidig_jaar - v_cnt_jaar_eind > 1)
OR
(c_huidig_jaar - v_cnt_jaar_eind = 1 AND fac.safe_to_number((TO_CHAR (SYSDATE, 'mm'))) NOT IN (1,2))
THEN
v_aanduiding_controle := 'CONTROLE - Betreft factuur op Contract uit vorig boekjaar' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
IF v_cnt_jaar_start < v_cnt_jaar_eind
THEN
v_aanduiding_controle := 'CONTROLE - Contract met gebroken boekjaar (check verdeelperiode)' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
-- Einde methode 2
END IF;
-- Veld debiteurnummer nog vullen indien gevuld bij relatie
IF v_klantnummer_key IS NOT NULL
THEN
-- Waarde ophalen met v_prs_bedrijf_key en vullen in v_klantnummer
SELECT MAX(prs_kenmerklink_waarde)
INTO v_klantnummer
FROM prs_kenmerklink
WHERE prs_kenmerk_key = v_klantnummer_key AND prs_link_key = v_prs_bedrijf_key AND prs_kenmerklink_verwijder IS NULL;
-- Indien waarde dan vullen in inkoopfactuur veld debiteurnummer
IF v_klantnummer IS NOT NULL
THEN
UPDATE fin_factuur
SET fin_factuur_debiteur_nr = v_klantnummer
WHERE fin_factuur_key = rec.fin_factuur_key ;
END IF;
END IF;
-- Voor Contracten geldt dat ze nog ter controle moeten als er automatisch een hoogste contractversie-nummer gekoppeld wordt
IF rec.kenmerk2 = 'ter controle'
THEN
v_aanduiding_controle := 'CONTROLE - Contract is op factuur zonder versie-nummer weergegeven; hoogste versienr is gekoppeld' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
-- Als het de verzamelfactuurinidcatie "(*)" heeft dan het daarvoor bestemd kenmerk vullen + controle zetten
IF rec.kenmerk3 = 'verzamelfactuur'
THEN
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, c_kenmerk_key_verzamel, 1);
v_aanduiding_controle := 'CONTROLE - Dit betreft een verzamelfactuur' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
-- Tot slot controle-vinkje zetten indien nodig
-- 9-2-2022 - aanpassing/verzoek HEYDAY om de facturen die op controle moeten komen ook de factuurstatus incomplete.
--- Reden is om op die manier er voor te zorgen dat de goedkeuringsflow (fiatteur) niet parallel loopt met de Administratieve controle.
--- In kenmerk6 wordt met status 3 aangegeven dat het een D-categorie-factuur betreft. Deze is per definitie niet 'Correct verwerkt' en sluiten we uit.
IF v_controle = 1 AND rec.kenmerk6 NOT IN ('3')
THEN
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, c_kenmerk_key_controle, 1);
UPDATE fin_factuur
SET fin_factuur_statuses_key = 3,
fin_factuur_opmerking = 'Correct verwerkt, maar op Administratieve controle - zie logging voor detailinfo'
WHERE fin_factuur_key = rec.fin_factuur_key ;
END IF;
END IF;
-- Incomplete facturen, zonder orderreferentie, gaan we ook op controle zetten
--- D-categorie: Voorheen via fallback-emailadres, maar sinds 2022.3 vanuit Mareon wel doorgestuurd naar Facilitor.
IF (rec.mld_opdr_key IS NULL AND rec.cnt_contract_key IS NULL AND rec.bes_bestelopdr_key IS NULL) AND rec.kenmerk6 NOT IN ('3')
THEN
v_aanduiding_controle := 'CONTROLE - Factuur incompleet i.v.m. ontbrekende orderreferentie (vanuit scanning)' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, c_kenmerk_key_controle, 1);
END IF;
-- D-categorie -
-- Kan zowel voor facturen met als zonder order-referentie doorkomen
IF rec.kenmerk6 = '3'
THEN
v_aanduiding_controle := 'CONTROLE - Betreft D-categorie factuur!' ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, c_kenmerk_key_controle, 1);
-- nog reden vullen:
UPDATE fin_factuur
SET fin_factuur_statuses_key = 3,
fin_factuur_opmerking = rec.kenmerk7
WHERE fin_factuur_key = rec.fin_factuur_key ;
END IF;
-- tot slot nog nette logging
v_aanduiding := 'Factuur geimporteerd vanuit Mareon' ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding);
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
-- ROLLBACK;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
SELECT MAX(i.fin_factuur_key) fin_factuur_key, 'Betreft factuur_key ' || TO_CHAR(i.fin_factuur_key) ||' - Factuurnr ' || i.factuurnr
INTO v_fin_factuur_key, v_errorhint
FROM fac_imp_factuur i, fin_factuur f
WHERE i.fac_import_key = p_import_key
AND i.fin_factuur_key = f.fin_factuur_key (+)
GROUP BY i.fin_factuur_key, 'Betreft factuur_key ' || TO_CHAR(i.fin_factuur_key) ||' - Factuurnr ' || i.factuurnr ;
IF v_fin_factuur_key IS NOT NULL
THEN
UPDATE fin_factuur
SET fin_factuur_statuses_key = 3,
fin_factuur_opmerking = SUBSTR('Bij factuurimport is volgende Errormessage gemeld: ' || v_errormsg || CHR (13) || CHR (10) ||
'Actie 1: Informeren Facilitor' || CHR (13) || CHR (10) ||
'Actie 2: Factuur gewoon oppakken: Aanvullen, doorzetten, etc', 1, 250)
WHERE fin_factuur_key = v_fin_factuur_key ;
v_aanduiding := 'Factuur geimporteerd vanuit Mareon' ;
fac.trackaction ('FINUPD', v_fin_factuur_key, 4, NULL, v_aanduiding);
END IF;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint || ' - ' || v_aanduiding);
COMMIT;
END;
/
-- view om aantal ingevoerde facturen terug te herleiden naar scanning en excel import.
CREATE OR REPLACE VIEW aaxx_v_rap_invoice_scan
(
hide_f_ts,
fclt_d_datum,
totaal,
scanning,
excel
)
AS
SELECT TO_CHAR (fac_tracking_datum, 'yyyymmdd'),
TO_CHAR (fac_tracking_datum, 'dd-mm-yyyy'),
SUM (aantal),
SUM (scanning),
SUM (excel)
FROM (SELECT f.fin_factuur_key,
fac_tracking_datum,
fac_tracking_key,
fac_tracking_oms,
1 aantal,
DECODE (t.prs_perslid_key, 8, 1, 0) excel,
DECODE (t.prs_perslid_key, 9, 1, 0) scanning
FROM fin_factuur f,
(SELECT t.*
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'FINNEW') t
WHERE f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_key = t.fac_tracking_refkey(+))
GROUP BY TO_CHAR (fac_tracking_datum, 'dd-mm-yyyy'),
TO_CHAR (fac_tracking_datum, 'yyyymmdd');
--------------------------------
-- import contractorders
--------------------------------
CREATE OR REPLACE PROCEDURE aaxx_import_contract (
p_import_key IN NUMBER)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input line
v_read VARCHAR2 (4000);
v_lastchar VARCHAR2 (1);
v_firstchar VARCHAR2 (1);
v_errormsg VARCHAR (1000);
v_hint VARCHAR (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
v_ongeldig NUMBER (1);
v_mode NUMBER (1);
v_aanduiding VARCHAR (200);
v_header_is_valid NUMBER (1);
-- De importvelden:
v_gebouw_code VARCHAR2 (100);
v_leverancier VARCHAR2 (100);
v_beschrijving VARCHAR2 (100);
v_van VARCHAR2 (100);
v_dienst VARCHAR2 (100);
v_tot VARCHAR2 (100);
v_versie VARCHAR2 (100);
v_omschrijving VARCHAR2 (4000);
v_bedrag VARCHAR2 (100);
v_termijnbedrag VARCHAR2 (100);
v_contractsoort VARCHAR2 (100);
v_contractnummer VARCHAR2 (100);
v_volgnummer VARCHAR2 (100);
v_leveranciernummer VARCHAR2 (100);
v_contractafdeling VARCHAR2 (100);
v_gewijzigddoor VARCHAR2 (100);
v_contractmanager VARCHAR2 (100);
v_discipline_key NUMBER;
v_dummy VARCHAR2 (100);
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
rec c%ROWTYPE;
BEGIN
-- Eerst opruiming
DELETE FROM aaxx_imp_contract;
COMMIT;
v_header_is_valid := 0;
OPEN c;
IF (c%ISOPEN)
THEN
LOOP
BEGIN
v_errormsg := 'Fout FETCH te importeren rij';
FETCH c INTO rec;
EXIT WHEN c%NOTFOUND;
v_read := rec.fac_imp_file_line;
v_newline := v_read;
v_lastchar := SUBSTR (v_read, LENGTH (v_read), 1);
v_firstchar := SUBSTR (v_read, 1, 1);
-- voeg regels samen die een cr/lf bevatten.
IF v_firstchar = '"'
THEN
WHILE v_lastchar <> '"'
LOOP
BEGIN
FETCH c INTO rec;
EXIT WHEN c%NOTFOUND;
v_read := rec.fac_imp_file_line;
v_lastchar := SUBSTR (v_read, LENGTH (v_read), 1);
v_newline := v_newline || CHR (13) || CHR (10) || v_read;
END;
END LOOP;
END IF;
v_errormsg := 'Fout opvragen te importeren rij:' || substr(v_newline,1,200);
v_aanduiding := '';
v_ongeldig := 0;
IF (UPPER(v_newline) like
'GEBOUW;BEDRIJF;LEVNR;BESCHRIJVING;INGANGSDATUM;EINDDATUM;ORDEROMSCHRIJVING;BEDRAG;TERMIJNBEDRAG;DIENST;CONTRACTSOORT;CONTRACTNR;VERSIE;REGELNR;CONTRACTAFDELING;CONTRACTMANAGER;GEWIJZIGDDOOR%')
THEN
v_header_is_valid := 1;
ELSE
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_gebouw_code);
--
v_errormsg :=
'Fout opvragen te importeren rij (leverancier)'
|| v_gebouw_code;
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_leverancier);
--
v_errormsg :=
'Fout opvragen te importeren rij (leveranciernummer)'
|| v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_leveranciernummer);
--
v_errormsg :=
'Fout opvragen te importeren rij (beschrijving)'
|| v_gebouw_code;
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_beschrijving);
--
v_errormsg :=
'Fout opvragen te importeren rij (van)' || v_gebouw_code;
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_van);
--
v_errormsg :=
'Fout opvragen te importeren rij (tot)' || v_gebouw_code;
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_tot);
--
v_errormsg :=
'Fout opvragen te importeren rij (omschrijving)'
|| v_gebouw_code;
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_omschrijving);
--
v_errormsg :=
'Fout opvragen te importeren rij (bedrag)' || v_gebouw_code;
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_bedrag);
--
v_errormsg :=
'Fout opvragen te importeren rij (termijnbedrag)' || v_gebouw_code;
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_termijnbedrag);
-- tekens uit bedragvelden halen
v_bedrag := TRIM(replace(v_bedrag, CHR(128),''));
v_termijnbedrag := TRIM(replace(v_termijnbedrag, CHR(128),''));
--
v_errormsg :=
'Fout opvragen te importeren rij (dienst)' || v_gebouw_code;
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_dienst);
--
v_errormsg :=
'Fout opvragen te importeren rij (dienst)' || v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_contractsoort);
-- controleeer of het contractsoort bestaat
v_errormsg :=
'Controleer of de contractsoort al bestaat: ' || v_contractsoort;
BEGIN
SELECT ins_discipline_key
INTO v_discipline_key
FROM cnt_discipline
WHERE ins_discipline_verwijder IS NULL
AND UPPER (TRIM (ins_discipline_omschrijving)) =
UPPER (TRIM (SUBSTR(v_contractsoort,1,60)));
EXCEPTION WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || 'Onbekende contractsoort: ' || v_contractsoort,
'Toelichting: ... ');
END;
--
v_errormsg :=
'Fout opvragen te importeren rij (contractcode):'
|| v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_contractnummer);
--
v_errormsg :=
'Fout opvragen te importeren rij (versie)' || v_gebouw_code;
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_versie);
--
v_errormsg :=
'Fout opvragen te importeren rij (volgnummer)'
|| v_gebouw_code;
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_volgnummer);
--
v_errormsg :=
'Fout opvragen te importeren rij (contractafdeling)'
|| v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_contractafdeling);
--
v_errormsg :=
'Fout opvragen te importeren rij (contractmanager)'
|| v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_contractmanager);
--
v_errormsg :=
'Fout opvragen te importeren rij (gewijzigddoor)'
|| v_gebouw_code;
fac.imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_gewijzigddoor);
-- Insert geformatteerde import record
v_errormsg :=
'Fout bij toevoegen te importeren gebouw ['
|| v_gebouw_code
|| ']';
INSERT INTO AAXX_IMP_CONTRACT (gebouw,
leverancier,
leveranciernummer,
beschrijving,
van,
tot,
omschrijving,
bedrag,
termijnbedrag,
dienst,
contractsoort,
contractnummer,
versie,
volgnummer,
contractafdeling,
contractmanager,
gewijzigddoor,
volgorde)
VALUES (v_gebouw_code,
v_leverancier,
v_leveranciernummer,
v_beschrijving,
fac.safe_to_date (v_van, 'dd-mm-yy'),
fac.safe_to_date (v_tot, 'dd-mm-yy'),
v_omschrijving,
aaxx_get_imp_float (v_bedrag),
aaxx_get_imp_float (v_termijnbedrag),
v_dienst,
SUBSTR(v_contractsoort,1,60),
TRIM(v_contractnummer),
v_versie,
fac.safe_to_number (
REPLACE (v_volgnummer, ',', '.')),
v_contractafdeling,
v_contractmanager,
v_gewijzigddoor,
rec.fac_imp_file_index);
END IF;
END;
END LOOP;
END IF;
IF v_header_is_valid = 0
THEN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || 'Ongeldig importbestand',
'Toelichting: ... ');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
v_hint := v_errormsg;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_hint);
END aaxx_import_contract;
/
CREATE OR REPLACE PROCEDURE aaxx_update_contract (p_import_key IN NUMBER)
AS
CURSOR cdisc
IS
SELECT contractsoort, MIN(volgorde) volgorde
FROM aaxx_imp_contract
WHERE NOT EXISTS
(SELECT ins_discipline_key
FROM cnt_discipline
WHERE UPPER (TRIM (ins_discipline_omschrijving)) =
UPPER (TRIM (contractsoort)))
GROUP BY contractsoort;
CURSOR c
IS
SELECT *
FROM aaxx_imp_contract
ORDER BY volgorde;
e_bestaand_contractnr EXCEPTION;
v_aanduiding VARCHAR2 (200);
v_oldcountcnt NUMBER;
v_newcountcnt NUMBER;
v_countcnt NUMBER;
v_errormsg VARCHAR (1000);
v_error NUMBER (1);
v_error_hint VARCHAR (1000);
oracle_err_mes VARCHAR2 (150);
oracle_err_num VARCHAR2 (150);
currentversion fac_module.fac_module_version%TYPE;
v_gebouw_key NUMBER;
v_dienst_key NUMBER;
v_afdeling_key NUMBER;
v_perslid_key NUMBER;
v_perslid_man_key NUMBER;
v_discipline_key NUMBER;
v_contract_key NUMBER;
v_bedrijf_key NUMBER;
v_kostenplaats_key NUMBER;
v_count NUMBER;
BEGIN
v_error := 0;
SELECT MAX (fac_module_version) INTO currentversion FROM fac_module;
fac.imp_writelog (
p_import_key,
'I',
'AAFM Contract import version ' || currentversion,
'$Revision$');
SELECT COUNT ( * ) INTO v_countcnt FROM aaxx_imp_contract;
IF v_countcnt = 0
THEN
fac.imp_writelog (p_import_key,
'E',
'AAFM Contract import bevat geen records',
'$Revision$');
RETURN;
END IF;
SELECT COUNT ( * ) INTO v_oldcountcnt FROM cnt_contract;
UPDATE cnt_contract
SET cnt_contract_versie = '0'
WHERE cnt_contract_versie IS NULL;
FOR rec IN cdisc
LOOP
BEGIN
v_aanduiding := ' regel[' || rec.volgorde || '] contractsoort: ' || rec.contractsoort;
v_error_hint := 'Toevoegen contractsoort:' || rec.contractsoort;
INSERT INTO ins_tab_discipline (ins_discipline_module,
ins_discipline_omschrijving)
VALUES ('CNT', rec.contractsoort)
RETURNING ins_discipline_key
INTO v_discipline_key;
INSERT INTO cnt_disc_params (cnt_ins_discipline_key,
cnt_srtcontract_type)
VALUES (v_discipline_key, 5);
END;
END LOOP;
FOR rec IN c
LOOP
BEGIN
v_aanduiding :=
'regel['
|| rec.volgorde
|| '] nummer: '
|| rec.contractnummer
|| ' versie: '
|| rec.versie
|| ' volgnummer: '
|| rec.volgnummer;
v_error_hint := 'Controle op bedrijf (check contract vinkje)';
v_perslid_man_key := NULL;
SELECT prs_bedrijf_key
INTO v_bedrijf_key
FROM prs_v_aanwezigbedrijf
WHERE prs_bedrijf_contract = 1
AND ( UPPER (TRIM (prs_leverancier_nr)) = UPPER (TRIM (rec.leveranciernummer))
OR (rec.leveranciernummer IS NULL AND rec.leverancier = prs_bedrijf_naam));
v_error_hint := 'Controle op dienst';
IF rec.dienst IS NOT NULL
THEN
SELECT prs_dienst_key
INTO v_dienst_key
FROM prs_dienst
WHERE UPPER (TRIM (prs_dienst_omschrijving)) = UPPER (TRIM (rec.dienst));
END IF;
v_error_hint := 'Controle op contractsoort';
SELECT ins_discipline_key
INTO v_discipline_key
FROM cnt_discipline
WHERE ins_discipline_verwijder IS NULL
AND UPPER (TRIM (ins_discipline_omschrijving)) =
UPPER (TRIM (rec.contractsoort));
v_error_hint := 'Controle op contractafdeling';
SELECT prs_afdeling_key
INTO v_afdeling_key
FROM prs_afdeling
WHERE prs_afdeling_verwijder IS NULL
AND UPPER (TRIM (prs_afdeling_naam)) = UPPER (TRIM (rec.contractafdeling));
v_error_hint := 'Controle op contractmanager';
IF rec.contractmanager IS NOT NULL
THEN
SELECT prs_perslid_key
INTO v_perslid_man_key
FROM prs_v_aanwezigperslid
WHERE prs_perslid_oslogin = UPPER (TRIM (rec.contractmanager))
OR prs_perslid_oslogin2 = UPPER (TRIM (rec.contractmanager));
END IF;
v_error_hint := 'Controle op gewijzigddoor';
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_v_aanwezigperslid
WHERE prs_perslid_oslogin = UPPER (TRIM (rec.gewijzigddoor))
OR prs_perslid_oslogin2 = UPPER (TRIM (rec.gewijzigddoor));
IF rec.volgnummer IS NULL
THEN
-- kopregel
v_contract_key := NULL;
v_error_hint := 'Controle op kostenplaats';
SELECT prs_kostenplaats_key
INTO v_kostenplaats_key
FROM prs_v_aanwezigkostenplaats
WHERE UPPER (TRIM (prs_kostenplaats_nr)) = UPPER (TRIM (rec.gebouw));
v_error_hint := 'Controle op contractnummer';
IF rec.contractnummer IS NOT NULL
THEN
SELECT COUNT ( * )
INTO v_count
FROM cnt_v_aanwezigcontract
WHERE TRIM (cnt_contract_nummer_intern) = TRIM (rec.contractnummer)
AND cnt_contract_versie = rec.versie;
IF v_count > 0
THEN
RAISE e_bestaand_contractnr;
END IF;
END IF;
v_error_hint := 'Toevoegen contract';
INSERT INTO cnt_contract (cnt_contract_nummer,
cnt_contract_nummer_intern,
cnt_contract_omschrijving,
cnt_contract_document,
cnt_contract_looptijd_van,
cnt_contract_looptijd_tot,
cnt_contract_status,
cnt_contract_kosten,
cnt_contract_termijnkosten,
cnt_prs_bedrijf_key,
prs_afdeling_key_eig,
ins_discipline_key,
prs_perslid_key_eig,
prs_perslid_key_beh,
prs_kostenplaats_key,
cnt_contract_versie,
cnt_contract_opzegtermijn,
cnt_contract_rappeltermijn)
VALUES (rec.contractnummer,
rec.contractnummer,
SUBSTR (rec.beschrijving, 1, 50),
REPLACE (REPLACE (rec.omschrijving, '<(>', ''),
'<)>',
''),
rec.van,
rec.tot,
2, -- Nieuw
rec.bedrag,
rec.termijnbedrag,
v_bedrijf_key,
v_afdeling_key,
v_discipline_key,
v_perslid_man_key,
v_perslid_key,
v_kostenplaats_key,
DECODE(rec.versie, NULL, '0', rec.versie),
1,
1)
RETURNING cnt_contract_key
INTO v_contract_key;
-- controle of het om bestaande contractnummers gaat. Indien het een import van nieuwe
-- contracten betreft, zal vaak het contractnummer leeg zijn. We vullen dan het contractnummer
-- met de key van het contract.
IF rec.contractnummer IS NULL
THEN
UPDATE cnt_contract
SET cnt_contract_nummer = cnt_contract_key,
cnt_contract_nummer_intern = cnt_contract_key
WHERE cnt_contract_key = v_contract_key;
END IF;
-- als we versie 1 van een contract gaan toevoegen moeten we het initiele contract met
-- versie NULL gaan omzetten naar versie 0.
IF rec.versie = '1'
THEN
UPDATE cnt_contract
SET cnt_contract_versie = '0'
WHERE cnt_contract_nummer = rec.contractnummer
AND cnt_contract_versie IS NULL;
END IF;
ELSE
v_error_hint := 'Controle op gebouwcode';
SELECT alg_gebouw_key
INTO v_gebouw_key
FROM alg_v_aanweziggebouw
WHERE UPPER (alg_gebouw_code) = UPPER (rec.gebouw);
-- als het bovenliggende contract niet aangemaakt kon worden gaan we ook geen scope invullen.
IF v_contract_key IS NOT NULL
THEN
-- Scope van het contract zetten.
INSERT INTO cnt_contract_plaats (cnt_contract_key,
cnt_alg_plaats_key,
cnt_alg_plaats_code,
cnt_contract_plaats_gewicht)
VALUES (v_contract_key,
v_gebouw_key,
'G',
rec.bedrag);
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
IF oracle_err_num = 1 THEN oracle_err_mes := 'Combinatie contractnummer/versie bestaat al.'; END IF;
IF oracle_err_num = -1422 THEN oracle_err_mes := 'Controle levert meer dan <20><>n resultaat op.'; END IF;
IF oracle_err_num = 100 THEN oracle_err_mes := 'Controle levert geen resultaat op.'; END IF;
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
aaxx_imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint || ' - ' || v_aanduiding);
v_error := 1;
END;
END LOOP;
IF v_error = 0
THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
-- How many active records are now present?
SELECT COUNT ( * ) INTO v_newcountcnt FROM cnt_contract;
fac.imp_writelog (
p_import_key,
'S',
'Aantal contracten vooraf: '
|| TO_CHAR (v_oldcountcnt)
|| ' nu: '
|| TO_CHAR (v_newcountcnt),
'');
EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint || ' - ' || v_aanduiding);
COMMIT;
END;
/
-------------------------------------------
-- Import inspecties / MJOB
-------------------------------------------
CREATE OR REPLACE PROCEDURE aaxx_import_insp_mjob (p_import_key IN NUMBER)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input line
v_errormsg VARCHAR (1000);
v_hint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_ongeldig NUMBER (1);
v_aanduiding VARCHAR2 (200);
v_header_is_valid NUMBER (1);
v_dummy VARCHAR2 (1000);
v_count NUMBER;
v_count_rec NUMBER := 0 ; -- totaal aantal record in csv
v_count_verwerk NUMBER ; -- aantal te verwerken regels
v_count_n_taak NUMBER ; -- aantal nieuw aan te maken basistaken
v_count_n_taakobject NUMBER ; -- aantal nieuw aan te maken objecttaken
v_count_w_taak NUMBER ; -- aantal bestaande taken te wijzigen
-- De importvelden:
v_locatiecode VARCHAR2(1000);
v_objectomschrijving VARCHAR2(1000);
v_taakcategorie VARCHAR2(1000);
v_taakomschrijving VARCHAR2(1000);
v_taakomschrijving_nieuw VARCHAR2(1000); -- Vullen we in kolom extra_veld5
v_taakopmerking VARCHAR2(1000);
v_taakgroep VARCHAR2(1000);
v_taakprioriteit VARCHAR2(1000);
v_taakobjectpercentage VARCHAR2(1000);
v_taakobjectopmerking VARCHAR2(1000);
v_taakobjectperiode VARCHAR2(1000);
v_taakobjectstartjaar VARCHAR2(1000); -- Startjaar uit CSV
v_taakobjectstartjaar_d DATE;
v_object_aanmaak DATE; -- Datum aanmaak van Object
v_taakobjecteindjaar VARCHAR2(1000);
v_taakobjecteindjaar_d DATE;
v_taakobjectmateriaal VARCHAR2(1000);
v_taakobjectkosten VARCHAR2(1000);
v_taakobjecteenheid VARCHAR2(1000);
v_taakdienst VARCHAR2(1000);
v_deel_key NUMBER(10);
v_discipline_key NUMBER(10);
v_ismjob NUMBER;
v_taak_geschiedenis NUMBER (10); -- Vullen we in kolom extra_veld4
v_srtcontrole_key NUMBER(10);
v_srtcontrole_teller NUMBER(10);
v_ins_srtdeel_key NUMBER(10);
v_ins_srtdeel_code VARCHAR2(10);
v_ins_srtcontroledl_xcp_key NUMBER(10);
v_taakobject_startjaar_d DATE; -- Startjaar van de reeds in Facilitor gekoppelde objecttaak
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
-- Eerst opruiming
DELETE FROM aaxx_imp_insp_mjob;
COMMIT;
v_header_is_valid := 0;
v_ongeldig := 0;
FOR rec IN c
LOOP
BEGIN
v_ongeldig := 0;
v_taak_geschiedenis := NULL ;
v_deel_key := NULL ;
v_ins_srtdeel_key := NULL ;
v_ins_srtdeel_code := NULL ;
v_srtcontrole_key := NULL ;
v_ins_srtcontroledl_xcp_key := NULL;
v_errormsg := 'Fout FETCH te importeren rij';
v_newline := rec.fac_imp_file_line;
v_errormsg := 'Fout opvragen te importeren rij:' || SUBSTR (v_newline, 1, 200);
v_aanduiding := '';
-- OUD: 'OBJECTOMSCHRIJVING;TAAKCATEGORIE;TAAKOMSCHRIJVING;TAAKOPMERKING;TAAKGROEP;TAAKPRIORITEIT;TAAKBTW;TAAKKOSTENPLAATSNR;TAAKKOSTENPLAATSOMSCHRIJVING;TAAKOBJECTPERCENTAGE;TAAKOBJECTOPMERKING;TAAKOBJECTEENHEID;TAAKOBJECTPERIODE;TAAKOBJECTSTARTJAAR;TAAKOBJECTEINDJAAR;TAAKOBJECTKOSTEN%
-- NIEUW (vanaf 2020-6): OBJECTIDENTIFICATIE;TAAKCATEGORIE;TAAKOMSCHRIJVING;TAAKOPMERKING;TAAKGROEP;TAAKPRIORITEIT;TAAKOBJECTPERCENTAGE;TAAKOBJECTOPMERKING;TAAKOBJECTEENHEID;TAAKOBJECTPERIODE;TAAKOBJECTSTARTJAAR;TAAKOBJECTEINDJAAR;TAAKOBJECTKOSTEN;DIENST;TAAKOMSCHRIJVINGNIEUW;
IF (REPLACE(UPPER (v_newline), ' ') LIKE 'OBJECTIDENTIFICATIE;TAAKCATEGORIE;TAAKOMSCHRIJVING;TAAKOPMERKING;TAAKGROEP;TAAKPRIORITEIT;TAAKOBJECTPERCENTAGE;TAAKOBJECTOPMERKING;TAAKOBJECTEENHEID;TAAKOBJECTPERIODE;TAAKOBJECTSTARTJAAR;TAAKOBJECTEINDJAAR;TAAKOBJECTKOSTEN;DIENST;TAAKOMSCHRIJVINGNIEUW%')
THEN
v_header_is_valid := 1;
ELSE
-- Lees alle veldwaarden
v_count_rec := v_count_rec + 1 ;
v_errormsg := 'Fout opvragen te importeren rij (object)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_objectomschrijving);
v_errormsg := 'Fout opvragen te importeren rij (discipline)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakcategorie);
v_errormsg := 'Fout opvragen te importeren rij (taakomschrijving)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakomschrijving);
v_errormsg := 'Fout opvragen te importeren rij (taakopmerking)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakopmerking);
v_errormsg := 'Fout opvragen te importeren rij (taakgroep)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakgroep);
v_errormsg := 'Fout opvragen te importeren rij (prioriteit)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakprioriteit);
v_errormsg := 'Fout opvragen te importeren rij (percentage)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjectpercentage);
v_errormsg := 'Fout opvragen te importeren rij (opmerking)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjectopmerking);
v_errormsg := 'Fout opvragen te importeren rij (eenheid)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjecteenheid);
v_errormsg := 'Fout opvragen te importeren rij (periode)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjectperiode);
v_errormsg := 'Fout opvragen te importeren rij (startjaar)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjectstartjaar);
v_errormsg := 'Fout opvragen te importeren rij (eindjaar)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjecteindjaar);
v_errormsg := 'Fout opvragen te importeren rij (materiaal)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjectmateriaal);
v_errormsg := 'Fout opvragen te importeren rij (dienst)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakdienst);
v_errormsg := 'Fout opvragen te importeren rij (taakomschrijvingnieuw)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakomschrijving_nieuw);
IF v_header_is_valid = 1 THEN -- Als geldige header gepasseerd en csv-recordvelden gevuld dan gaan we eerst checken of data klopt
-- Controleer of het object bestaat
-- Controleer of object er meerdere keren in staat (valt terug naar OTHERS, regel 300)
BEGIN
v_errormsg :=
'Fout bij opzoeken object: ' || v_objectomschrijving ||' komt vaker dan 1 keer voor';
SELECT ins_deel_key
INTO v_deel_key
FROM ins_deel
WHERE ins_deel_omschrijving = v_objectomschrijving
AND ins_deel_verwijder IS NULL;
EXCEPTION WHEN NO_DATA_FOUND
THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Object bestaat niet - Regel wordt niet verwerkt ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving);
v_ongeldig := 1;
END;
-- Controleer de taakcategorie
v_errormsg :=
'Fout bij controleren taakcategorie ' ;
BEGIN
SELECT ins_discipline_key, ctr_disc_params_ismjob
INTO v_discipline_key, v_ismjob
FROM ins_tab_discipline d, ctr_disc_params dp
WHERE dp.ctr_ins_discipline_key = d.ins_discipline_key
AND UPPER (d.ins_discipline_omschrijving) = TRIM(UPPER(v_taakcategorie));
EXCEPTION WHEN NO_DATA_FOUND
THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Inspectie discipline niet gevonden - Regel wordt niet verwerkt ',
rec.fac_imp_file_index || ' - ' || v_taakcategorie);
v_ongeldig := 1;
END;
-- Controleer de eenheid
IF v_ismjob = 1
THEN
v_taakobjecteenheid := '4'; -- jaar
END IF;
IF v_taakobjecteenheid IS NOT NULL AND v_taakobjecteenheid NOT IN ('1', '2', '3', '4')
THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Eenheid is niet correct gevuld (of leeg of 1,2,3,4) - Regel wordt niet verwerkt ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakobjecteenheid);
v_ongeldig := 1;
END IF;
-- Controleer dienst
v_errormsg :=
'Fout controleren dienst ';
IF v_taakdienst IS NOT NULL
THEN
SELECT count(*)
INTO v_count
FROM prs_dienst
WHERE UPPER(prs_dienst_omschrijving) = UPPER(v_taakdienst);
IF v_count = 0
THEN
aaxx_imp_writelog (
p_import_key, 'W', 'Dienst onbekend - zal bij verwerken aangemaakt worden.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakdienst);
END IF;
END IF;
-- Controleer de kosten - leeg of numeriek
v_errormsg :=
'Fout controleren kosten ';
IF v_taakobjectmateriaal IS NOT NULL AND fac.safe_to_number (REPLACE (v_taakobjectmateriaal, ',', '.')) IS NULL
THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Kosten taakobject niet goed ingevuld - Regel wordt niet verwerkt.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || 'Kosten csv: ' || v_taakobjectmateriaal);
v_ongeldig := 1;
END IF;
-- Controleer de taakperiode - Leeg of numeriek
v_errormsg :=
'Fout controleren taakperiode ';
IF v_taakobjectperiode IS NOT NULL AND fac.safe_to_number (v_taakobjectperiode) IS NULL
THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Ongeldige taakobjectperiode - Regel wordt niet verwerkt ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakobjectperiode);
v_ongeldig := 1;
END IF;
-- Controleer de taakprioriteit - Leeg of numeriek
v_errormsg :=
'Fout controleren taakprioriteit ';
IF v_taakprioriteit IS NOT NULL AND fac.safe_to_number (v_taakprioriteit) IS NULL
THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Prioriteit taak niet goed ingevuld - Regel wordt niet verwerkt.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || 'Kosten csv: ' || v_taakprioriteit);
v_ongeldig := 1;
END IF;
-- Controleer de startdatum
v_errormsg :=
'Fout bij controle startdatum ';
-- In geval jaar-invoer op datum zetten..
IF LENGTH (v_taakobjectstartjaar) = 4
THEN
v_taakobjectstartjaar := '01-01-' || v_taakobjectstartjaar;
END IF;
IF v_taakobjectstartjaar IS NOT NULL AND fac.safe_to_date (v_taakobjectstartjaar, 'dd-mm-yyyy') IS NULL
THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Startdatum ongeldige invoer - Regel wordt niet verwerkt.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - Datum csv: ' || v_taakobjectstartjaar);
v_ongeldig := 1;
ELSE
v_taakobjectstartjaar_d := fac.safe_to_date(v_taakobjectstartjaar, 'dd-mm-yyyy') ;
END IF;
-- Hier controleren of de startdatum voor de Objectregisratiedatum ligt
v_errormsg :=
'Fout bij controle start- en objectregistratiedatum ';
IF v_deel_key IS NOT NULL AND v_ongeldig = 0
THEN
SELECT ins_deel_aanmaak
INTO v_object_aanmaak
FROM ins_deel
WHERE ins_deel_key = v_deel_key ;
IF v_taakobjectstartjaar_d < v_object_aanmaak
THEN
v_taakobjectstartjaar_d := v_object_aanmaak;
aaxx_imp_writelog (
p_import_key, 'W', 'Startdatum objecttaak ligt voor Objectregistratiedatum - Startdatum zal bij verwerken gelijkgezet worden aan de Objectregistratiedatum.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - Datum csv: ' || v_taakobjectstartjaar || ' wordt ' || v_object_aanmaak);
END IF;
END IF;
-- Controleer de einddatum
v_errormsg :=
'Fout bij controle einddatum ';
-- In geval jaar-invoer op datum zetten..
IF LENGTH (v_taakobjecteindjaar) = 4
THEN
v_taakobjecteindjaar := '31-12-' || v_taakobjecteindjaar;
END IF;
IF v_taakobjecteindjaar IS NOT NULL AND fac.safe_to_date (v_taakobjecteindjaar, 'dd-mm-yyyy') IS NULL
THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Einddatum ongeldige invoer - Regel wordt niet verwerkt.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - Datum csv: ' || v_taakobjecteindjaar);
v_ongeldig := 1;
ELSE
v_taakobjecteindjaar_d := fac.safe_to_date(v_taakobjecteindjaar, 'dd-mm-yyyy') ;
END IF;
-- Hier controleren of de taak al bestaat...
v_errormsg :=
'Fout controleren nieuwe of bestaande taak ' || rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakomschrijving ;
IF v_deel_key IS NOT NULL AND v_ongeldig = 0
THEN
-- Eerst ins_srtdeel_code bepalen
SELECT d.ins_srtdeel_key, sd.ins_srtdeel_code
INTO v_ins_srtdeel_key, v_ins_srtdeel_code
FROM ins_deel d, ins_srtdeel sd
WHERE d.ins_deel_key = v_deel_key
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND ins_deel_verwijder IS NULL;
-- Vervolgens kijken of er al een taak op aangemaakt is
SELECT count(*)
INTO v_srtcontrole_teller
FROM ins_srtcontrole
WHERE LOWER(ins_srtcontrole_omschrijving) =
SUBSTR (
TRIM (
v_ins_srtdeel_code
|| ' - '
|| LOWER(v_taakomschrijving)),
1,
60);
-- Zo ja, dan gaan we de srt_controle_key vullen
--- Ps. Komt soms bij heyday voor dat eenzelfde basistaak er meer dan 1 keer in staat (per ongeluk) en daarom pakken we hier dan de max(key).
IF v_srtcontrole_teller >0 THEN
SELECT max(ins_srtcontrole_key)
INTO v_srtcontrole_key
FROM ins_srtcontrole
WHERE LOWER(ins_srtcontrole_omschrijving) =
SUBSTR (
TRIM (
v_ins_srtdeel_code
|| ' - '
|| LOWER(v_taakomschrijving)),
1,
60) ;
ELSE -- Zo niet, dan is het dus geen bestaande standaard taak en gaan we straks in de update NIEUWE taak aanmaken
-- En passen dan ook maar gelijk taakomschrijving goed aan
v_errormsg := 'Fout bij aanpassen taakomschrijving ';
IF (LENGTH (TRIM(v_ins_srtdeel_code)) + 3 + LENGTH(TRIM(v_taakomschrijving))) > 60
THEN
aaxx_imp_writelog (
p_import_key, 'W', 'Nieuwe taak - Aangepast ivm lengte groter dan 60 ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakomschrijving || ' wordt: ' || SUBSTR (TRIM (v_ins_srtdeel_code || ' - ' || v_taakomschrijving), 1, 60) );
END IF;
v_taakomschrijving := SUBSTR (TRIM (v_ins_srtdeel_code || ' - ' || v_taakomschrijving), 1, 60) ;
END IF;
END IF;
-- Hier controleren of voor de bestaande taak ook de objecttaak al bestaat...
v_errormsg :=
'Fout controleren nieuwe of bestaande objecttaak ' || rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakomschrijving ;
IF v_deel_key IS NOT NULL AND v_ongeldig = 0 AND v_srtcontrole_key IS NOT NULL THEN
SELECT max(t.ins_srtcontroledl_xcp_key), max(t.ins_srtcontroledl_xcp_startdat)
INTO v_ins_srtcontroledl_xcp_key, v_taakobject_startjaar_d
FROM ins_srtcontroledl_xcp t
WHERE t.ins_srtcontrole_key = v_srtcontrole_key AND t.ins_deel_key = v_deel_key ;
END IF;
-- Hier controleren of alle verplichte velden voor de nieuwe objecttaak correct zijn gevuld
---- Dit zijn: Startdatum + Eenheid + Periode + Taakgroep(?) + Percentage (?) + Kosten (?)
v_errormsg := 'Fout controleren verplichte velden bij nieuwe objecttaak ';
IF v_deel_key IS NOT NULL AND v_ongeldig = 0 AND v_ins_srtcontroledl_xcp_key IS NULL THEN
IF v_taakobjectstartjaar IS NULL THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Startdatum niet ingevuld - Regel wordt niet verwerkt.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving);
v_ongeldig := 1;
END IF;
IF v_taakobjecteenheid IS NULL or v_taakobjecteenheid NOT IN ('1', '2', '3', '4') THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Geen of ongeldige eenheid gevonden - Regel wordt niet verwerkt ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakobjecteenheid);
v_ongeldig := 1;
END IF;
IF (v_taakobjectperiode IS NULL) OR (v_taakobjectperiode IS NOT NULL AND fac.safe_to_number (v_taakobjectperiode) IS NULL) THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Geen of ongeldige taakobjectperiode - Regel wordt niet verwerkt ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakobjectperiode);
v_ongeldig := 1;
END IF;
END IF;
-- Hier controleren of er al geschiedenis op de objecttaak zit en de startdatum afwijkt van degene meegegeven in csv
v_errormsg :=
'Fout controleren geschiedenis op objecttaak ';
IF v_deel_key IS NOT NULL AND v_ongeldig = 0 AND v_srtcontrole_key IS NOT NULL AND v_ins_srtcontroledl_xcp_key IS NOT NULL THEN
v_taak_geschiedenis := 0;
SELECT count(*)
INTO v_taak_geschiedenis
FROM ins_deelsrtcontrole
WHERE ins_deel_key = v_deel_key and ins_srtcontrole_key = v_srtcontrole_key ;
IF v_taak_geschiedenis > 0 AND v_taakobjectstartjaar IS NOT NULL AND v_taakobjectstartjaar_d <> v_taakobject_startjaar_d
THEN
aaxx_imp_writelog (
p_import_key, 'W', 'Op deze objecttaak zit al geschiedenis - afwijkende startdatum zal niet aangepast worden.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakomschrijving || ' - ' || v_taakobjectstartjaar_d || ' vs. ' || v_taakobject_startjaar_d) ;
END IF;
END IF;
-- Nu kunnen we de tussentabel vullen
v_errormsg :=
'Fout bij toevoegen regel aan tabel '
|| v_objectomschrijving;
IF v_ongeldig = 0
THEN
INSERT INTO aaxx_imp_insp_mjob (locatiecode,
objectomschrijving ,
taakcategorie,
taakomschrijving,
taakopmerking,
taakgroep,
taakprioriteit,
taakobjectpercentage,
taakobjectopmerking,
taakobjectperiode,
taakobjectstartjaar,
taakobjecteindjaar,
taakobjectmateriaal,
taakobjecteenheid,
taakdienst,
extra_veld4, -- Gebruiken voor taakgeschiedenis
extra_veld5, -- Gebruiken voor taakomschrijving_nieuw
deel_key,
discipline_key,
ismjob,
ins_srtcontrole_key,
ins_srtcontroledl_xcp_key,
ins_srtdeel_key)
VALUES (v_locatiecode,
v_objectomschrijving,
v_taakcategorie,
v_taakomschrijving,
v_taakopmerking,
v_taakgroep,
v_taakprioriteit,
v_taakobjectpercentage,
v_taakobjectopmerking,
v_taakobjectperiode,
v_taakobjectstartjaar_d,
v_taakobjecteindjaar_d,
v_taakobjectmateriaal,
v_taakobjecteenheid,
v_taakdienst,
v_taak_geschiedenis,
v_taakomschrijving_nieuw,
v_deel_key,
v_discipline_key,
v_ismjob,
v_srtcontrole_key,
v_ins_srtcontroledl_xcp_key,
v_ins_srtdeel_key);
END IF;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
v_hint := v_errormsg;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_hint);
END;
END LOOP;
-- Aantallen tellen voor logging
v_errormsg := 'Fout bij tellen aantallen voor logging ' ;
v_count_verwerk := 0 ; -- aantal te verwerken regels
v_count_n_taak := 0 ; -- aantal nieuw aan te maken basistaken
v_count_n_taakobject := 0 ; -- aantal nieuw aan te maken objecttaken
v_count_w_taak := 0 ; -- aantal bestaande (object)taken te wijzigen
SELECT count(*) INTO v_count_verwerk FROM aaxx_imp_insp_mjob ;
SELECT count(*) INTO v_count_n_taak FROM (SELECT DISTINCT(taakomschrijving) FROM aaxx_imp_insp_mjob WHERE ins_srtcontrole_key IS NULL) v ;
SELECT count(*) INTO v_count_n_taakobject FROM aaxx_imp_insp_mjob WHERE ins_srtcontroledl_xcp_key IS NULL ;
SELECT count(*) INTO v_count_w_taak FROM aaxx_imp_insp_mjob WHERE ins_srtcontrole_key IS NOT NULL AND ins_srtcontroledl_xcp_key IS NOT NULL ;
IF v_header_is_valid = 0
THEN
ROLLBACK;
aaxx_imp_writelog (p_import_key, 'E', v_aanduiding || '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)
|| '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),
'');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
oracle_err_num := SQLCODE;
v_hint := v_errormsg;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_hint);
END aaxx_import_insp_mjob;
/
CREATE OR REPLACE PROCEDURE aaxx_update_insp_mjob (p_import_key IN NUMBER)
AS
CURSOR c_n -- nieuwe taken en objecttaken aanmaken..
IS
SELECT i.*
FROM aaxx_imp_insp_mjob i
WHERE i.ins_srtcontrole_key IS NULL;
CURSOR c_no -- nieuwe objecttaken aanmaken..
IS
SELECT i.*
FROM aaxx_imp_insp_mjob i
WHERE i.ins_srtcontrole_key IS NOT NULL AND i.ins_srtcontroledl_xcp_key IS NULL;
CURSOR c_m -- bestaande taak en/of objecttaak wijzigen
IS
SELECT i.*
FROM aaxx_imp_insp_mjob i
WHERE i.ins_srtcontrole_key IS NOT NULL AND i.ins_srtcontroledl_xcp_key IS NOT NULL;
v_errormsg VARCHAR2 (4000);
v_error_hint VARCHAR2 (4000);
oracle_err_mes VARCHAR2 (4000);
oracle_err_num VARCHAR2 (4000);
v_aanduiding VARCHAR2 (1000);
v_aanduiding_objecttaak VARCHAR2 (1000);
v_ongeldig NUMBER (1);
v_ins_srtcontrole_key NUMBER (10);
v_dienst_key NUMBER (10);
v_taak_al_aangemaakt NUMBER(10);
v_count_verwerk NUMBER := 0 ; -- aantal verwerkte records
v_count_n_taak NUMBER := 0 ; -- aantal nieuw aangemaakte basistaken
v_count_n_taakobject NUMBER := 0 ; -- aantal nieuw aangemaakte objecttaken
v_count_w_taak NUMBER := 0 ; -- aantal bestaande basistaken gewijzigd
v_count_w_taakobject NUMBER := 0 ; -- aantal bestaande object-taken gewijzigd
v_count_taak NUMBER := 0 ;
v_count_taakobject NUMBER := 0 ;
-- Velden
v_taakomschrijving VARCHAR2(1000);
v_ins_srtdeel_code VARCHAR2(10);
v_taakomschrijving_nieuw VARCHAR2(1000);
v_taakopmerking VARCHAR2(1000);
v_taakgroep VARCHAR2(1000);
v_taakdienst_key NUMBER(10);
v_taakdienst VARCHAR2(1000);
v_taakprioriteit NUMBER(3);
v_percentage NUMBER(3);
v_objecttaakopmerking VARCHAR2(1000);
v_eenheid NUMBER(3);
v_periode NUMBER(3);
v_startjaar DATE;
v_eindjaar DATE;
v_materiaalkosten NUMBER(10);
BEGIN
v_ongeldig := 0;
FOR rec IN c_n
LOOP
BEGIN
v_aanduiding :=
rec.objectomschrijving
|| ' / '
|| rec.taakcategorie
|| ' - '
|| rec.taakomschrijving;
-- 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;
v_taak_al_aangemaakt:=0;
SELECT count(*)
INTO v_taak_al_aangemaakt
FROM ins_srtcontrole
WHERE ins_srtcontrole_omschrijving = rec.taakomschrijving;
-- Als basistaak al in loop was aangemaakt nog even de key erbij zoeken
IF v_taak_al_aangemaakt >0
THEN
SELECT max(ins_srtcontrole_key)
INTO v_ins_srtcontrole_key
FROM ins_srtcontrole
WHERE ins_srtcontrole_omschrijving = rec.taakomschrijving;
END IF;
-- Basistaak aanmaken
IF v_taak_al_aangemaakt = 0
THEN
-- We gaan we eerst op zoek naar de dienst.
v_errormsg := 'Aanmaken/opzoeken dienst ' || v_aanduiding;
v_dienst_key := NULL;
IF rec.taakdienst IS NOT NULL
THEN
BEGIN
SELECT prs_dienst_key
INTO v_dienst_key
FROM prs_dienst
WHERE UPPER(prs_dienst_omschrijving) = UPPER(SUBSTR(rec.taakdienst, 1,60));
EXCEPTION WHEN NO_DATA_FOUND
THEN
INSERT INTO prs_dienst (prs_dienst_omschrijving)
VALUES (SUBSTR(rec.taakdienst,1,60))
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 (
rec.ins_srtdeel_key,
'S',
rec.taakomschrijving,
rec.discipline_key,
NULL,
0,
rec.taakobjecteenheid,
1,
COALESCE (rec.taakprioriteit, '0'),
rec.taakopmerking,
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;
-- Nu kunnen we de objectaak aanmaken
v_count_n_taakobject := v_count_n_taakobject +1 ;
v_errormsg := 'Aanmaken taak object ' || v_aanduiding || ' ['
|| rec.deel_key || '|'
|| v_ins_srtcontrole_key || '|'
|| rec.taakobjectperiode || '|'
|| rec.taakobjecteenheid || '|'
|| fac.safe_to_number (REPLACE (rec.taakobjectmateriaal, ',', '.')) || '|'
|| ROUND(fac.safe_to_number (REPLACE (rec.taakobjectpercentage, ',', '.'))) || '|'
|| rec.taakgroep || '|'
|| rec.taakobjectopmerking || '|'
|| rec.taakobjectstartjaar || ']';
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_startdat)
VALUES (
rec.deel_key,
v_ins_srtcontrole_key,
rec.taakobjectperiode,
rec.taakobjecteenheid,
fac.safe_to_number (
REPLACE (rec.taakobjectmateriaal, ',', '.')),
ROUND(fac.safe_to_number (
REPLACE (rec.taakobjectpercentage, ',', '.'))),
rec.taakgroep,
rec.taakobjectopmerking,
rec.taakobjectstartjaar
);
EXCEPTION
WHEN OTHERS
THEN
v_error_hint := v_errormsg;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
aaxx_imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint);
v_ongeldig := 1;
END;
v_aanduiding := 'Einde loop ' || v_aanduiding;
END LOOP;
FOR rec IN c_no
LOOP
BEGIN
v_aanduiding :=
rec.objectomschrijving
|| ' / '
|| rec.taakcategorie
|| ' - '
|| rec.taakomschrijving;
-- 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.deel_key || '|'
|| rec.ins_srtcontrole_key || '|'
|| rec.taakobjectperiode || '|'
|| rec.taakobjecteenheid || '|'
|| fac.safe_to_number (REPLACE (rec.taakobjectmateriaal, ',', '.')) || '|'
|| ROUND(fac.safe_to_number (REPLACE (rec.taakobjectpercentage, ',', '.'))) || '|'
|| rec.taakgroep || '|'
|| rec.taakobjectopmerking || '|'
|| rec.taakobjectstartjaar || ']';
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_startdat)
VALUES (
rec.deel_key,
rec.ins_srtcontrole_key,
rec.taakobjectperiode,
rec.taakobjecteenheid,
fac.safe_to_number (
REPLACE (rec.taakobjectmateriaal, ',', '.')),
ROUND(fac.safe_to_number (
REPLACE (rec.taakobjectpercentage, ',', '.'))),
rec.taakgroep,
rec.taakobjectopmerking,
rec.taakobjectstartjaar);
EXCEPTION
WHEN OTHERS
THEN
v_error_hint := v_errormsg;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
aaxx_imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint);
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 :=
rec.objectomschrijving
|| ' / '
|| rec.taakcategorie
|| ' - '
|| rec.taakomschrijving;
-- Basis-taak - Taakomschrijving
v_errormsg := 'Fout taakomschrijving wijzigen ';
v_taakomschrijving := '' ; -- huidige taakomschrijving
v_taakomschrijving_nieuw := '' ;
IF rec.extra_veld5 IS NOT NULL
THEN
-- Eerst de objectsrt-code ophalen en nieuwe taakomschrijving bepalen
SELECT ins_srtdeel_code_upper
INTO v_ins_srtdeel_code
FROM ins_srtdeel
WHERE ins_srtdeel_key = rec.ins_srtdeel_key ;
v_taakomschrijving_nieuw := SUBSTR (TRIM (v_ins_srtdeel_code || ' - ' || rec.extra_veld5), 1, 60) ;
-- Huidige omschrijving ophalen
SELECT ins_srtcontrole_omschrijving
INTO v_taakomschrijving
FROM ins_srtcontrole
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
IF v_taakomschrijving <> v_taakomschrijving_nieuw
THEN
UPDATE ins_srtcontrole
SET ins_srtcontrole_omschrijving = v_taakomschrijving_nieuw
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
v_count_taak:= 1 ;
fac.trackaction('CTRSUP', rec.ins_srtcontrole_key, 4, NULL, 'Gewijzigd Taakomschrijving: ' || v_taakomschrijving || '-->' || v_taakomschrijving_nieuw);
END IF;
END IF;
-- Basis-taak - Taakopmerking
v_errormsg := 'Fout taakopmerking wijzigen ';
SELECT ins_srtcontrole_opmerking
INTO v_taakopmerking
FROM ins_srtcontrole
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
IF v_taakopmerking IS NULL THEN v_taakopmerking := '<leeg>' ;
END IF;
IF v_taakopmerking <> rec.taakopmerking AND rec.taakopmerking IS NOT NULL
THEN
UPDATE ins_srtcontrole
SET ins_srtcontrole_opmerking = rec.taakopmerking
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
v_count_taak:= 1 ;
fac.trackaction('CTRSUP', rec.ins_srtcontrole_key, 4, NULL, 'Gewijzigd Taakopmerking: ' || v_taakopmerking || '-->' || rec.taakopmerking);
END IF;
-- Basis-taak - Taakprioriteit
v_errormsg := 'Fout prioriteit wijzigen ';
SELECT ins_srtcontrole_level
INTO v_taakprioriteit
FROM ins_srtcontrole
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
IF rec.taakprioriteit IS NOT NULL AND v_taakprioriteit <> fac.safe_to_number(rec.taakprioriteit)
THEN
UPDATE ins_srtcontrole
SET ins_srtcontrole_level = fac.safe_to_number(rec.taakprioriteit)
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
v_count_taak:= 1 ;
fac.trackaction('CTRSUP', rec.ins_srtcontrole_key, 4, NULL, 'Gewijzigd Prioriteit: ' || v_taakprioriteit || '-->' || rec.taakprioriteit);
END IF;
-- Basis-taak - Dienst
v_errormsg := 'Fout dienst wijzigen ' || v_aanduiding;
v_taakdienst_key := NULL ;
v_taakdienst := '<leeg>' ;
-- Eerst huidige dienstkey en omschrijving ophalen
BEGIN
SELECT max(t.prs_dienst_key), max(d.prs_dienst_omschrijving)
INTO v_taakdienst_key, v_taakdienst
FROM ins_srtcontrole t, prs_dienst d
WHERE t.ins_srtcontrole_key = rec.ins_srtcontrole_key AND t.prs_dienst_key = d.prs_dienst_key AND t.prs_dienst_key IS NOT NULL ;
IF v_taakdienst IS NULL THEN v_taakdienst := '<leeg>' ; END IF;
IF v_taakdienst_key IS NULL THEN v_taakdienst_key := -1 ; END IF;
END;
-- Dan gaan we kijken of de dienst meegegeven in csv al bestaat
v_errormsg := 'Aanmaken/opzoeken dienst ' || v_aanduiding;
v_dienst_key := NULL;
IF rec.taakdienst IS NOT NULL
THEN
BEGIN
SELECT prs_dienst_key
INTO v_dienst_key
FROM prs_dienst
WHERE UPPER(prs_dienst_omschrijving) = UPPER(SUBSTR(rec.taakdienst, 1,60));
EXCEPTION WHEN NO_DATA_FOUND
THEN
INSERT INTO prs_dienst (prs_dienst_omschrijving)
VALUES (SUBSTR(rec.taakdienst,1,60))
RETURNING prs_dienst_key INTO v_dienst_key;
END;
END IF;
IF v_taakdienst_key <> v_dienst_key AND rec.taakdienst IS NOT NULL
THEN
UPDATE ins_srtcontrole
SET prs_dienst_key = v_dienst_key
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
v_count_taak:= 1 ;
fac.trackaction('CTRSUP', rec.ins_srtcontrole_key, 4, NULL, 'Gewijzigd taakdienst: ' || v_taakdienst || '-->' || rec.taakdienst);
END IF;
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 := rec.taakcategorie || ' - ' || v_ins_srtdeel_code || rec.taakomschrijving || CHR(13) || CHR(10) ;
-- Object-taak - Percentage
v_errormsg := 'Fout percentage wijzigen ';
SELECT COALESCE(ins_srtcontroledl_xcp_perc, 0)
INTO v_percentage
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
IF rec.taakobjectpercentage IS NOT NULL AND v_percentage <> rec.taakobjectpercentage
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_perc = ROUND(fac.safe_to_number (REPLACE (rec.taakobjectpercentage, ',', '.')))
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Percentage: (' || v_percentage || ') --> ' || rec.taakobjectpercentage );
END IF;
-- Object-taak - Opmerking
v_errormsg := 'Fout opmerking objecttaak wijzigen ';
SELECT ins_srtcontroledl_xcp_opmerk
INTO v_objecttaakopmerking
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
IF v_objecttaakopmerking IS NULL THEN v_objecttaakopmerking := '<leeg>' ;
END IF;
IF rec.taakobjectopmerking IS NOT NULL AND v_objecttaakopmerking <> rec.taakobjectopmerking
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_opmerk = rec.taakobjectopmerking
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Taakopmerking: (' || v_objecttaakopmerking || ') --> ' || rec.taakobjectopmerking );
END IF;
-- Object-taak - Eenheid
v_errormsg := 'Fout eenheid wijzigen ';
SELECT COALESCE(ins_srtcontroledl_xcp_eenheid,0)
INTO v_eenheid
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
IF rec.taakobjecteenheid IS NOT NULL AND fac.safe_to_number(rec.taakobjecteenheid) <> v_eenheid AND rec.ismjob = 0
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_eenheid = fac.safe_to_number(rec.taakobjecteenheid)
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Eenheid: (' || v_eenheid || ') --> ' || rec.taakobjecteenheid );
END IF;
-- Object-taak - Periode
v_errormsg := 'Fout periode wijzigen ';
SELECT COALESCE(ins_srtcontroledl_xcp_periode,0)
INTO v_periode
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
IF rec.taakobjectperiode IS NOT NULL AND fac.safe_to_number(rec.taakobjectperiode) <> v_periode
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_periode = fac.safe_to_number(rec.taakobjectperiode)
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Periode: (' || v_periode || ') --> ' || rec.taakobjectperiode );
END IF;
-- Object-taak - Taakgroep
v_errormsg := 'Fout taakgroep wijzigen ';
SELECT ins_srtcontroledl_xcp_groep
INTO v_taakgroep
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
IF v_taakgroep IS NULL THEN v_taakgroep := '<leeg>' ;
END IF;
IF v_taakgroep <> rec.taakgroep AND rec.taakgroep IS NOT NULL
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_groep = rec.taakgroep
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Taakgroep: (' || v_taakgroep || ') --> ' || rec.taakgroep );
END IF;
-- Object-taak - Startjaar
v_errormsg := 'Fout startjaar wijzigen ';
SELECT ins_srtcontroledl_xcp_startdat
INTO v_startjaar
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
IF rec.taakobjectstartjaar IS NOT NULL AND COALESCE(v_startjaar, TO_DATE('01-01-1900','dd-MM-yyyy')) <> rec.taakobjectstartjaar
AND (rec.extra_veld4 = 0 OR (rec.extra_veld4 > 0 AND v_startjaar IS NULL))
-- extra_veld4 is wel/geen geschiedenis op taak. Als er geschiedenis op zit taak startdatum niet aan te passen.
-- Uitzondering als in xcp startdaum op NULL is gekomen (zie bug/ticket 64450)
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_startdat = rec.taakobjectstartjaar
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Startjaar: (' || v_startjaar || ') --> ' || rec.taakobjectstartjaar );
END IF;
-- Object-taak - Eindjaar
v_errormsg := 'Fout eindjaar wijzigen ';
SELECT ins_srtcontroledl_xcp_eind
INTO v_eindjaar
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
-- IF v_eindjaar IS NULL THEN v_eindjaar := TO_DATE(01-01-1900, 'DD-MM-YYYY'); END IF;
IF (v_eindjaar IS NULL and rec.taakobjecteindjaar IS NOT NULL) OR (v_eindjaar IS NOT NULL AND rec.taakobjecteindjaar IS NOT NULL AND v_eindjaar <> rec.taakobjecteindjaar)
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_eind = rec.taakobjecteindjaar
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Eindjaar: (' || v_eindjaar || ') --> ' || rec.taakobjecteindjaar );
END IF;
-- Object-taak - Kosten
v_errormsg := 'Fout kosten wijzigen ';
SELECT COALESCE(max(ins_srtcontroledl_xcp_materia),0)
INTO v_materiaalkosten
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
IF v_materiaalkosten <> fac.safe_to_number (REPLACE (rec.taakobjectmateriaal, ',', '.')) AND rec.taakobjectmateriaal IS NOT NULL
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_materia = fac.safe_to_number (REPLACE (rec.taakobjectmateriaal, ',', '.'))
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Kosten: (' || v_materiaalkosten || ') --> ' || rec.taakobjectmateriaal );
END IF;
IF v_count_taakobject = 1 THEN
v_count_w_taakobject := v_count_w_taakobject + 1 ;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_error_hint := v_errormsg;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
aaxx_imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint);
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)
|| '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;
END;
/
-------------------------------------------
-- Import contracttermijnen / Factuurschema
-------------------------------------------
CREATE OR REPLACE PROCEDURE aaxx_import_factuurschema (p_import_key IN NUMBER)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input line
v_errormsg VARCHAR (1000);
v_hint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_ongeldig NUMBER (1);
v_aanduiding VARCHAR2 (200);
v_header_is_valid NUMBER (1);
v_dummy VARCHAR2 (1000);
-- De importvelden:
v_bedrijf_naam prs_bedrijf.prs_bedrijf_naam%TYPE;
v_contract_nr VARCHAR2 (100);
v_contract_key cnt_contract.cnt_contract_key%TYPE;
v_contract_nummer cnt_contract.cnt_contract_nummer%TYPE;
v_contract_versie cnt_contract.cnt_contract_versie%TYPE;
v_boekmaand cnt_factuurschema.cnt_factuurschema_boekmaand%TYPE;
v_bedrag cnt_factuurschema.cnt_factuurschema_bedrag%TYPE;
v_opmerking cnt_factuurschema.cnt_factuurschema_opmerking%TYPE;
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
-- Eerst opruiming
DELETE FROM aaxx_imp_factuurschema;
COMMIT;
v_header_is_valid := 0;
v_ongeldig := 0;
FOR rec IN c
LOOP
BEGIN
v_bedrijf_naam := NULL;
v_contract_nr := NULL;
v_contract_key := NULL;
v_contract_nummer := NULL;
v_contract_versie := NULL;
v_boekmaand := NULL;
v_bedrag := NULL;
v_opmerking := NULL;
v_errormsg := 'Fout FETCH te importeren rij';
v_newline := rec.fac_imp_file_line;
v_errormsg := 'Fout opvragen te importeren rij:' || SUBSTR (v_newline, 1, 200);
v_aanduiding := '';
IF (UPPER (v_newline) LIKE 'BEDRIJF;CONTRACTNR;VERSIE;BOEKMAAND;BEDRAG;OPMERKING%')
THEN
v_header_is_valid := 1;
ELSE
-- Lees alle veldwaarden
v_errormsg := 'Fout opvragen te importeren rij (bedrijf)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
v_bedrijf_naam := SUBSTR (v_dummy, 1, 60);
v_errormsg := 'Fout opvragen te importeren rij (contract_nr) ' || v_bedrijf_naam;
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
v_contract_nummer := fac.safe_to_number (v_dummy);
v_errormsg := 'Fout opvragen te importeren rij (contract_versie) ' || v_bedrijf_naam;
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
v_contract_versie := fac.safe_to_number (v_dummy);
--
BEGIN
SELECT cnt_contract_key
INTO v_contract_key
FROM cnt_v_aanwezigcontract
WHERE TRIM (cnt_contract_nummer_intern) = TRIM (v_contract_nummer)
AND COALESCE(cnt_contract_versie,'0') = v_contract_versie;
v_contract_nr := v_contract_nummer || '.' || v_contract_versie;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
aaxx_imp_writelog (
p_import_key, 'E', 'Contract kan niet gevonden worden', v_bedrijf_naam || ' / ' || v_contract_nummer || '.' || v_contract_versie);
v_ongeldig := 1;
END;
v_errormsg := 'Fout opvragen te importeren rij (boekmaand) ' || v_bedrijf_naam || ' / ' || v_contract_nummer || '.' || v_contract_versie;
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
IF fac.safe_to_number (SUBSTR (v_dummy, 1, 4)) IS NOT NULL
AND SUBSTR (v_dummy, 5, 1) = '-'
AND fac.safe_to_number (SUBSTR (v_dummy, 6, 2)) IS NOT NULL
THEN
v_boekmaand := SUBSTR (v_dummy, 1, 7);
ELSE
aaxx_imp_writelog (
p_import_key, 'E', 'Ongeldige boekmaand',
v_bedrijf_naam|| ' / ' || v_contract_nummer || '.' || v_contract_versie || ' - ' || v_dummy);
v_ongeldig := 1;
END IF;
v_errormsg := 'Fout opvragen te importeren rij (bedrag)' || v_bedrijf_naam || ' / ' || v_contract_nummer || '.' || v_contract_versie;
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
v_dummy := REPLACE(v_dummy, ',', '.');
IF fac.safe_to_number (v_dummy) IS NOT NULL
THEN
v_bedrag := fac.safe_to_number (v_dummy);
ELSE
aaxx_imp_writelog (
p_import_key, 'E', 'Ongeldige bedrag',
v_bedrijf_naam || ' / ' || v_contract_nummer || '.' || v_contract_versie || ' - ' || v_boekmaand);
v_ongeldig := 1;
END IF;
--
v_errormsg := 'Fout opvragen te importeren rij (opmerking) ' || v_bedrijf_naam || ' / ' || v_contract_nummer || '.' || v_contract_versie;
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
v_opmerking := SUBSTR (v_dummy, 1, 320);
v_errormsg :=
'Fout bij toevoegen regel aan tabel '
|| v_bedrijf_naam
|| ' / '
|| v_contract_nummer
|| '.'
|| v_contract_versie
|| ' - '
|| v_boekmaand;
INSERT INTO aaxx_imp_factuurschema (cnt_contract_key,
cnt_factuurschema_bedrag,
cnt_factuurschema_boekmaand,
cnt_factuurschema_opmerking,
cnt_contract_nr,
prs_bedrijf_naam)
VALUES (v_contract_key,
v_bedrag,
v_boekmaand,
v_opmerking,
v_contract_nr,
v_bedrijf_naam);
END IF;
END;
END LOOP;
IF v_header_is_valid = 0
THEN
aaxx_imp_writelog (p_import_key, 'E', v_aanduiding || 'Ongeldig importbestand', 'Toelichting: ... ');
v_ongeldig := 1;
END IF;
IF v_ongeldig = 0
THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
oracle_err_num := SQLCODE;
v_hint := v_errormsg;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_hint);
END aaxx_import_factuurschema;
/
CREATE OR REPLACE PROCEDURE aaxx_update_factuurschema (
p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT *
FROM aaxx_imp_factuurschema;
v_errormsg VARCHAR2(1000);
v_error_hint VARCHAR2(1000);
oracle_err_mes VARCHAR2(150);
oracle_err_num VARCHAR2(150);
v_aanduiding VARCHAR2(200);
v_ongeldig NUMBER(1);
v_van DATE;
v_tot DATE;
v_bm_start DATE;
v_bm_eind DATE;
v_som NUMBER(11,2);
v_contract_bedrag NUMBER(11,2);
v_factuurschema_key NUMBER(10);
v_disc_params_factuurschema NUMBER(1);
BEGIN
v_ongeldig := 0;
FOR rec IN c
LOOP
BEGIN
v_aanduiding := rec.prs_bedrijf_naam || ' / ' || rec.cnt_contract_nr || ' - ' || rec.cnt_factuurschema_boekmaand;
v_errormsg := 'Bepaling contract termijn ' || v_aanduiding;
SELECT cnt_disc_params_factuurschema dp, cnt_contract_looptijd_van, cnt_contract_looptijd_tot, cnt_contract_kosten
INTO v_disc_params_factuurschema, v_van, v_tot, v_contract_bedrag
FROM cnt_disc_params dp, cnt_contract c
WHERE c.ins_discipline_key = dp.cnt_ins_discipline_key
AND c.cnt_contract_key = rec.cnt_contract_key;
v_errormsg := 'Controleer of de boekmaand in de contracttermijn valt ' || v_aanduiding;
v_bm_start := TO_DATE(rec.cnt_factuurschema_boekmaand || '-01', 'yyyy-mm-dd');
v_bm_eind := ADD_MONTHS(v_bm_start, 1)-1;
IF NOT(v_van BETWEEN v_bm_start AND v_bm_eind OR
v_tot BETWEEN v_bm_start AND v_bm_eind OR
v_bm_start BETWEEN v_van AND v_tot)
THEN
-- ongeldige boekmaand
aaxx_imp_writelog (p_import_key, 'E', 'Boekmaand ligt niet binnen de contracttermijn ', v_aanduiding);
v_ongeldig := 1;
END IF;
v_errormsg := 'Controleer of het contract wel geconfigueerd is voor factuurschemas ' || v_aanduiding;
IF COALESCE(v_disc_params_factuurschema,0) <> 1
THEN
-- contracttype ondersteund geen factuurschema
aaxx_imp_writelog (p_import_key, 'E', 'Contracttype ondersteund geen factuurschema ', v_aanduiding);
v_ongeldig := 1;
END IF;
v_errormsg := 'Controleer of het totaal van het schema past bij het contract ' || v_aanduiding;
SELECT SUM(cnt_factuurschema_bedrag)
INTO v_som
FROM aaxx_imp_factuurschema
WHERE cnt_contract_key = rec.cnt_contract_key;
IF ROUND(v_som) <> ROUND(v_contract_bedrag)
THEN
-- Totaalbedrag schema wijkt af van contract bedrag
aaxx_imp_writelog (p_import_key, 'E', 'Totaalbedrag schema wijkt af van contract bedrag ', v_aanduiding || ' [' || v_contract_bedrag || ' vs ' || v_som || ']');
v_ongeldig := 1;
END IF;
v_errormsg := 'Controleer of de boekmaand al bestaat bij dit contract ' || v_aanduiding;
BEGIN
SELECT cnt_factuurschema_key
INTO v_factuurschema_key
FROM cnt_factuurschema
WHERE cnt_factuurschema_boekmaand = rec.cnt_factuurschema_boekmaand
AND cnt_contract_key = rec.cnt_contract_key;
UPDATE cnt_factuurschema
SET cnt_factuurschema_bedrag = rec.cnt_factuurschema_bedrag,
cnt_factuurschema_opmerking = cnt_factuurschema_opmerking
WHERE cnt_factuurschema_key = v_factuurschema_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
-- Boekmaand bestaat nog niet in het schema
v_errormsg := 'Aanmaken van nieuw factuurschemaregel ' || v_aanduiding;
INSERT INTO cnt_factuurschema (cnt_contract_key, cnt_factuurschema_bedrag, cnt_factuurschema_boekmaand, cnt_factuurschema_opmerking)
VALUES (rec.cnt_contract_key, rec.cnt_factuurschema_bedrag, rec.cnt_factuurschema_boekmaand, rec.cnt_factuurschema_opmerking);
END;
EXCEPTION
WHEN OTHERS
THEN
v_error_hint := v_errormsg;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint);
v_ongeldig := 1;
END;
END LOOP;
IF v_ongeldig = 0
THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
END;
/
--------------------------------
-- import ruimtegegevens
--------------------------------
CREATE OR REPLACE PROCEDURE aaxx_import_ruimte (
p_import_key IN NUMBER)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input line
v_read VARCHAR2 (4000);
v_lastchar VARCHAR2 (1);
v_firstchar VARCHAR2 (1);
v_errormsg VARCHAR (1000);
v_hint VARCHAR (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
v_ongeldig NUMBER (1);
v_mode NUMBER (1);
v_aanduiding VARCHAR (200);
v_header_is_valid NUMBER (1);
-- De importvelden:
v_locatie_code VARCHAR2(100);
v_gebouw_code VARCHAR2(100);
v_verdieping_code VARCHAR2(100);
v_ruimte_key VARCHAR2(100);
v_ruimte_nr VARCHAR2(100);
v_ruimte_omschrijving VARCHAR2(100);
v_srtruimte_omschrijving VARCHAR2(100);
v_dienstniveau_omschr VARCHAR2(100);
v_ruimte_bruto_vloeropp VARCHAR2(100);
v_dummy VARCHAR2(100);
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
rec c%ROWTYPE;
BEGIN
-- Eerst opruiming
DELETE FROM aaxx_imp_ruimte;
COMMIT;
v_header_is_valid := 0;
OPEN c;
IF (c%ISOPEN)
THEN
LOOP
BEGIN
v_errormsg := 'Fout FETCH te importeren rij';
FETCH c INTO rec;
EXIT WHEN c%NOTFOUND;
v_read := rec.fac_imp_file_line;
v_newline := v_read;
v_lastchar := SUBSTR (v_read, LENGTH (v_read), 1);
v_firstchar := SUBSTR (v_read, 1, 1);
-- voeg regels samen die een cr/lf bevatten.
IF v_firstchar = '"'
THEN
WHILE v_lastchar <> '"'
LOOP
BEGIN
FETCH c INTO rec;
EXIT WHEN c%NOTFOUND;
v_read := rec.fac_imp_file_line;
v_lastchar := SUBSTR (v_read, LENGTH (v_read), 1);
v_newline := v_newline || CHR (13) || CHR (10) || v_read;
END;
END LOOP;
END IF;
v_errormsg := 'Fout opvragen te importeren rij';
v_aanduiding := '';
v_ongeldig := 0;
IF (v_newline like
'LOCATIE;GEBOUW;VERDIEPING;ALG_RUIMTE_KEY;ALG_RUIMTE_NR;ALG_RUIMTE_OMSCHRIJVING;ALG_SRTRUIMTE_OMSCHRIJVING;MLD_DIENSTNIVEAU_OMSCHR;ALG_RUIMTE_BRUTO_VLOEROPP%')
THEN
v_header_is_valid := 1;
ELSE
-- Lees alle veldwaarden
v_errormsg :=
'Fout opvragen te importeren rij (alg_locatie_code) Regel [' || rec.fac_imp_file_index || ']';
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_locatie_code);
--
v_errormsg :=
'Fout opvragen te importeren rij (alg_gebouw_code) Regel [' || rec.fac_imp_file_index || ']';
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_gebouw_code);
--
v_errormsg :=
'Fout opvragen te importeren rij (alg_verdieping_code) Regel [' || rec.fac_imp_file_index || ']';
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_verdieping_code);
--
v_errormsg :=
'Fout opvragen te importeren rij (alg_ruimte_key) Regel [' || rec.fac_imp_file_index || ']';
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_ruimte_key);
--
v_errormsg :=
'Fout opvragen te importeren rij (alg_ruimte_nr) Regel [' || rec.fac_imp_file_index || ']';
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_ruimte_nr);
--
v_errormsg :=
'Fout opvragen te importeren rij (alg_ruimte_omschrijving) Regel [' || rec.fac_imp_file_index || ']';
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_ruimte_omschrijving);
--
v_errormsg :=
'Fout opvragen te importeren rij (alg_srtruimte_omschrijving) Regel [' || rec.fac_imp_file_index || ']';
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_srtruimte_omschrijving);
--
v_errormsg :=
'Fout opvragen te importeren rij (mld_dienstniveau_omschr) Regel [' || rec.fac_imp_file_index || ']';
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_dienstniveau_omschr);
--
v_errormsg :=
'Fout opvragen te importeren rij (alg_ruimte_bruto_vloeropp) Regel [' || rec.fac_imp_file_index || ']';
fac.imp_getfield (v_newline, C_FIELDDELIMITOR, v_ruimte_bruto_vloeropp);
--
-- Insert geformatteerde import record
IF v_ruimte_key IS NOT NULL
THEN
v_errormsg :=
'Fout bij toevoegen te importeren gebouw ['
|| v_gebouw_code
|| ']';
INSERT INTO aaxx_imp_ruimte(volgorde,
alg_locatie_code,
alg_gebouw_code,
alg_verdieping_code,
alg_ruimte_key,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_srtruimte_omschrijving,
mld_dienstniveau_omschr,
alg_ruimte_bruto_vloeropp)
VALUES (rec.fac_imp_file_index,
SUBSTR(v_locatie_code, 1, 10),
SUBSTR(v_gebouw_code, 1, 12),
SUBSTR(v_verdieping_code, 1, 10),
v_ruimte_key,
SUBSTR(v_ruimte_nr, 1,10),
SUBSTR(v_ruimte_omschrijving, 1, 30),
SUBSTR(v_srtruimte_omschrijving, 1, 30),
SUBSTR(v_dienstniveau_omschr, 1, 60),
replace(v_ruimte_bruto_vloeropp, ',','.'));
END IF;
END IF;
END;
END LOOP;
END IF;
IF v_header_is_valid = 0
THEN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || 'Ongeldig importbestand',
'Toelichting: ... ');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
v_hint := v_errormsg;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_hint);
END aaxx_import_ruimte;
/
CREATE OR REPLACE PROCEDURE aaxx_update_ruimte (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT *
FROM aaxx_imp_ruimte
ORDER BY volgorde;
v_aanduiding VARCHAR2 (200);
v_errormsg VARCHAR (1000);
v_error NUMBER (1);
v_error_hint VARCHAR (1000);
oracle_err_mes VARCHAR2 (150);
oracle_err_num VARCHAR2 (150);
currentversion fac_module.fac_module_version%TYPE;
v_srtruimte_key NUMBER;
v_dienstniveau_key NUMBER;
BEGIN
v_error := 0;
SELECT MAX (fac_module_version) INTO currentversion FROM fac_module;
fac.imp_writelog (
p_import_key,
'I',
'AAFM Ruimte update version ' || currentversion,
'$Revision$');
FOR rec IN c
LOOP
BEGIN
v_aanduiding :=
'regel['
|| rec.volgorde
|| '] plaats: '
|| rec.alg_locatie_code || '-'
|| rec.alg_gebouw_code || '-'
|| rec.alg_verdieping_code || '-'
|| rec.alg_ruimte_nr;
v_error_hint := 'Controle op ruimtesoort';
v_srtruimte_key := NULL;
IF rec.alg_srtruimte_omschrijving IS NOT NULL
THEN
SELECT alg_srtruimte_key
INTO v_srtruimte_key
FROM alg_srtruimte
WHERE alg_srtruimte_verwijder IS NULL
AND alg_srtruimte_upper = UPPER (rec.alg_srtruimte_omschrijving);
END IF;
v_error_hint := 'Controle op dienstniveau';
v_dienstniveau_key := NULL;
IF rec.mld_dienstniveau_omschr IS NOT NULL
THEN
SELECT mld_dienstniveau_key
INTO v_dienstniveau_key
FROM mld_dienstniveau
WHERE UPPER (TRIM (mld_dienstniveau_omschr)) = UPPER (TRIM (rec.mld_dienstniveau_omschr));
END IF;
v_error_hint := 'Aanpassen ruimtegegevens.';
UPDATE alg_ruimte SET alg_ruimte_nr = rec.alg_ruimte_nr,
alg_ruimte_omschrijving = rec.alg_ruimte_omschrijving,
alg_srtruimte_key = v_srtruimte_key,
mld_dienstniveau_key = v_dienstniveau_key,
alg_ruimte_bruto_vloeropp = rec.alg_ruimte_bruto_vloeropp
WHERE alg_ruimte_key = rec.alg_ruimte_key;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
IF oracle_err_num = -1422 THEN oracle_err_mes := 'Controle levert meer dan <20><>n resultaat op.'; END IF;
IF oracle_err_num = 100 THEN oracle_err_mes := 'Controle levert geen resultaat op.'; END IF;
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
aaxx_imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint || ' - ' || v_aanduiding);
v_error := 1;
END;
END LOOP;
IF v_error = 0
THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint || ' - ' || v_aanduiding);
COMMIT;
END;
/
-------------------------------------------------------------------------------
-- IMPORTFUNCTIE - Import uplift
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_rap_uplift (
jaar,
maand,
kostensoort,
soort_order,
leverancier,
nummer,
uplift
)
AS
SELECT jaar,
maand,
prs_kostensoort_oms,
soort_order,
prs_bedrijf_naam,
prs_leverancier_nr,
uplift
FROM aaxx_imp_uplift;
CREATE OR REPLACE PROCEDURE aaxx_import_uplift (
p_import_key IN NUMBER
)
AS
CURSOR c_cursor
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
v_newline VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000); -- Import line
v_field VARCHAR2 (100); -- Import field
v_fielddelimitor VARCHAR2 (1); -- Field seperator
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
v_count NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_skipfield VARCHAR2 (100);
-- De importvelden
v_jaar VARCHAR2 (100);
v_maand VARCHAR2 (100);
v_prs_kostensoort_oms VARCHAR2 (100);
v_soort_order VARCHAR2 (100);
v_prs_bedrijf_naam VARCHAR2 (100);
v_prs_leverancier_nr VARCHAR2 (100);
v_uplift VARCHAR2 (100);
header_found BOOLEAN;
BEGIN
-- Eerst opruiming
-- Init
header_found := FALSE;
v_fielddelimitor := ';';
FOR rec1 IN c_cursor
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_aanduiding := v_newline;
IF SUBSTR (v_newline, 1, 3) = '?'
THEN
-- EF BB BF aangetroffen
fac.imp_writelog (p_import_key,
'W',
'Byte Order Mark aangetroffen',
'Bestand heeft onbehandeld UTF-8 formaat.'
);
v_newline := SUBSTR (v_newline, 4);
END IF;
fac.imp_getfield (v_newline, v_fielddelimitor, v_jaar);
fac.imp_getfield (v_newline, v_fielddelimitor, v_maand);
fac.imp_getfield (v_newline, v_fielddelimitor, v_prs_kostensoort_oms);
fac.imp_getfield (v_newline, v_fielddelimitor, v_soort_order);
fac.imp_getfield (v_newline, v_fielddelimitor, v_prs_bedrijf_naam);
fac.imp_getfield (v_newline, v_fielddelimitor, v_prs_leverancier_nr);
fac.imp_getfield (v_newline, v_fielddelimitor, v_uplift);
-- Skip until a valid header is found
IF UPPER(v_jaar) = 'JAAR'
AND UPPER(v_maand) = 'MAAND'
AND UPPER(v_prs_kostensoort_oms) = 'KOSTENSOORT'
AND UPPER(v_prs_leverancier_nr) = 'NUMMER'
AND UPPER(v_uplift) = 'UPLIFT'
THEN
-- Sla de kopregel over.
header_found := TRUE;
ELSIF (header_found AND v_jaar IS NOT NULL)
THEN
-- voeg nieuwe records toe
-- en wijzig bestaande records
-- ken ik de combinatie van jaar,maand, kostensoort, en leveranciernummer al?
SELECT count(*)
INTO v_count
FROM aaxx_imp_uplift
WHERE jaar = v_jaar
AND maand = v_maand
AND prs_kostensoort_oms = v_prs_kostensoort_oms
AND soort_order = v_soort_order
AND prs_leverancier_nr = v_prs_leverancier_nr;
IF v_count > 0 THEN
-- update de bestaande record(s)
UPDATE aaxx_imp_uplift
SET uplift = fac.safe_to_number (REPLACE(v_uplift,',','.'))
WHERE jaar = v_jaar
AND maand = v_maand
AND soort_order = v_soort_order
AND prs_kostensoort_oms = v_prs_kostensoort_oms
AND prs_leverancier_nr = v_prs_leverancier_nr;
ELSE
-- voeg nieuwe records toe
INSERT INTO aaxx_imp_uplift
(jaar,
maand,
prs_kostensoort_oms,
soort_order,
prs_bedrijf_naam,
prs_leverancier_nr,
uplift)
VALUES (fac.safe_to_number (v_jaar),
fac.safe_to_number (v_maand),
v_prs_kostensoort_oms,
v_soort_order,
v_prs_bedrijf_naam,
v_prs_leverancier_nr,
fac.safe_to_number (REPLACE(v_uplift,',','.')));
END IF;
SELECT count(*)
INTO v_count
FROM prs_bedrijf
WHERE prs_leverancier_nr = v_prs_leverancier_nr;
IF v_count = 0 THEN
fac.imp_writelog (p_import_key,
'W',
'Geen leverancier met nummer ['||v_prs_leverancier_nr||'] gevonden',
''
);
END IF;
SELECT count(*)
INTO v_count
FROM prs_kostensoort
WHERE prs_kostensoort_upper = upper(v_prs_kostensoort_oms);
IF v_count = 0 THEN
fac.imp_writelog (p_import_key,
'W',
'Geen kostensoort met code ['||v_prs_kostensoort_oms ||'] gevonden',
''
);
END IF;
END IF;
COMMIT;
END;
END LOOP;
IF NOT header_found
THEN
fac.imp_writelog (p_import_key,
'E',
'Geen geldige header aangetroffen',
'Bestand is geen geldig ruimtesoort importbestand.'
);
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', SUBSTR (v_errormsg, 1, 1000), v_aanduiding);
-- maak de importtabel leeg om te voorkomen dat er halve bestanden ingelezen worden.
END;
/
CREATE OR REPLACE PROCEDURE aaxx_update_uplift (p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
-------------------------------------------------------------------------------
-- Importfunctie om elementen op te voeren voor assetmanagement
--
--
-------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE aaxx_import_asset (p_import_key IN NUMBER)
AS
CURSOR c_disc
IS
SELECT DISTINCT i.ins_discipline_omschrijving
FROM fac_imp_ins i
WHERE NOT EXISTS
( SELECT ins_discipline_key
FROM ins_discipline d
WHERE UPPER(d.ins_discipline_omschrijving) = UPPER(i.ins_discipline_omschrijving));
CURSOR c_srtgroep
IS
SELECT DISTINCT i.ins_discipline_omschrijving, i.ins_srtgroep_omschrijving
FROM fac_imp_ins i
WHERE NOT EXISTS
( SELECT d.ins_discipline_key
FROM ins_discipline d, ins_srtgroep sg
WHERE sg.ins_discipline_key = d.ins_discipline_key
AND UPPER(sg.ins_srtgroep_omschrijving) = UPPER(i.ins_srtgroep_omschrijving)
AND UPPER(d.ins_discipline_omschrijving) = UPPER(i.ins_discipline_omschrijving));
CURSOR c_srtdeel
IS
SELECT DISTINCT i.ins_discipline_omschrijving, i.ins_srtgroep_omschrijving, i.ins_srtdeel_omschrijving, i.ins_srtdeel_code
FROM fac_imp_ins i
WHERE NOT EXISTS
( SELECT d.ins_discipline_key
FROM ins_discipline d, ins_srtgroep sg, ins_srtdeel sd
WHERE sg.ins_discipline_key = d.ins_discipline_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND UPPER(sd.ins_srtdeel_omschrijving||'-'||sd.ins_srtdeel_code) = UPPER(i.ins_srtdeel_omschrijving || '-' || i.ins_srtdeel_code)
AND UPPER(sg.ins_srtgroep_omschrijving) = UPPER(i.ins_srtgroep_omschrijving)
AND UPPER(d.ins_discipline_omschrijving) = UPPER(i.ins_discipline_omschrijving));
BEGIN
fac_import_ins(p_import_key);
-- controleer of de discipline, groep en objectsoort wel bestaan.
FOR rec IN c_disc
LOOP
fac.imp_writelog (p_import_key, 'E', 'Discipline bestaat nog niet', rec.ins_discipline_omschrijving);
END LOOP;
FOR rec IN c_srtgroep
LOOP
fac.imp_writelog (p_import_key, 'E', 'Groep bestaat nog niet', rec.ins_discipline_omschrijving || ' / ' || rec.ins_srtgroep_omschrijving);
END LOOP;
FOR rec IN c_srtdeel
LOOP
fac.imp_writelog (p_import_key, 'E', 'Objectsoort bestaat nog niet', rec.ins_discipline_omschrijving || ' / ' || rec.ins_srtgroep_omschrijving || ' / ' || rec.ins_srtdeel_code || ' ' || rec.ins_srtdeel_omschrijving);
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE aaxx_update_asset (p_import_key IN NUMBER)
AS
v_count NUMBER;
BEGIN
SELECT count(*)
INTO v_count
FROM imp_log
WHERE fac_import_key = p_import_key
AND imp_log_status = 'E';
IF v_count = 0
THEN
fac_update_ins(p_import_key);
ELSE
fac.imp_writelog (p_import_key, 'E', 'Verwerk actie niet uitgevoerd ivm fouten in bestand', '');
END IF;
END;
/
-- Overzicht met geplande en uitgevoerde inspecties.
CREATE OR REPLACE VIEW aaxx_v_rap_asset_insp
(
ins_deel_key,
ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
ins_deel_omschrijving,
alg_locatie_plaats,
alg_locatie_omschrijving,
alg_gebouw_omschrijving,
alg_plaatsaanduiding,
ins_srtcontrole_omschrijving,
volgende_controle,
laatste_controle,
gepland_controle
)
AS
SELECT idg.ins_deel_key,
idg.ins_discipline_omschrijving,
idg.ins_srtgroep_omschrijving,
idg.ins_srtdeel_upper,
idg.ins_deel_omschrijving,
l.alg_locatie_plaats,
l.alg_locatie_omschrijving,
idg.alg_gebouw_omschrijving,
idg.alg_plaatsaanduiding,
idg.ins_srtcontrole_omschrijving,
idg.nextdate,
DECODE (TRUNC (idg.ins_deel_aanmaak),
TRUNC (dc.ins_deelsrtcontrole_datum), TO_DATE (NULL),
dc.ins_deelsrtcontrole_datum)
uitgevoerd_op,
dc.ins_deelsrtcontrole_plandatum
gepland_op
FROM (SELECT i.*,
sc.*,
fac.nextcyclusdatedeel (i.ins_deel_key,
sc.ins_srtcontrole_key,
1)
nextdate,
(SELECT dsc.ins_deelsrtcontrole_key
FROM ins_deelsrtcontrole dsc
WHERE dsc.ins_deel_key = i.ins_deel_key
AND dsc.ins_srtcontrole_key = sc.ins_srtcontrole_key
AND NOT EXISTS
(SELECT dsc1.ins_deelsrtcontrole_key
FROM ins_deelsrtcontrole dsc1
WHERE dsc.ins_deel_key = dsc1.ins_deel_key
AND dsc.ins_srtcontrole_key =
dsc1.ins_srtcontrole_key
AND dsc1.ins_deelsrtcontrole_key >
dsc.ins_deelsrtcontrole_key))
ins_deelsrtcontrole_key1
FROM ins_v_deel_gegevens i,
ins_srtcontrole sc,
ins_srtcontroledl_xcp xcp
WHERE i.ins_discipline_key = sc.ins_srtinstallatie_key
AND i.ins_deel_key = xcp.ins_deel_key
AND sc.ins_srtcontrole_key = xcp.ins_srtcontrole_key) idg,
ins_deelsrtcontrole dc,
alg_locatie l
WHERE idg.ins_deelsrtcontrole_key1 = dc.ins_deelsrtcontrole_key(+)
AND idg.alg_locatie_key = l.alg_locatie_key
ORDER BY fac.safe_to_number (ins_deel_omschrijving);
-------------------------------------------------------------------------------
-- Importfunctie om contactpersonen bij bedrijven toe te voegen aan FACILITOR
--
--
-------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE aaxx_import_contactpersoon (p_import_key IN NUMBER)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
v_count NUMBER;
BEGIN
v_errorhint := 'Generieke update';
-- de sequence array staat beschreven in FAC_PACF.SRC bij de fac_import_perslid_upd_body proc
prs.import_perslid (p_import_key,
'0;0;0;0;0;0;1;2;3;5;' ||
'4;0;0;0;0;7;8;9;0;11;' ||
'10;12;13;6;0;0;14;15;0;0;'||
'0;0;0;0;0;0;0;0;0;0;'||
'0;0;0;0;0;0',
'Afdelingscode;PersoonAchternaam;Tussenvoegsel;Voorletters;Voornaam;Titel/Aanhef;Telefoonnummer;Mobiel;Email;Functie;Personeelsnummer;Loginnaam;Password;Bedrijf;Autorisatieprofiel%'
);
-- Klantspecifieke aanpassingen
v_errorhint := 'Controle op Bedrijf';
FOR rec IN (SELECT distinct prs_kenmerk1 FROM fac_imp_perslid)
LOOP
IF rec.prs_kenmerk1 IS NOT NULL
THEN
SELECT count(*)
INTO v_count
FROM prs_bedrijf
WHERE prs_bedrijf_verwijder IS NULL
AND UPPER(prs_bedrijf_naam) = upper(rec.prs_kenmerk1);
IF v_count <> 1
THEN
fac.imp_writelog (p_import_key, 'E', 'Bedrijf: ' || rec.prs_kenmerk1 || ' komt ' || v_count || ' keer voor in de lijst met bedrijven.', v_errorhint);
END IF;
END IF;
END LOOP;
v_errorhint := 'Controle op Autorisatieprofiel';
FOR rec IN (SELECT prs_kenmerk2 FROM fac_imp_perslid)
LOOP
IF rec.prs_kenmerk2 IS NOT NULL
THEN
SELECT count(*)
INTO v_count
FROM fac_groep
WHERE upper(fac_groep_omschrijving) = upper(rec.prs_kenmerk2);
IF v_count <> 1
THEN
fac.imp_writelog (p_import_key, 'E', 'Autorisatieprofiel: ' || rec.prs_kenmerk2 || ' komt ' || v_count || ' keer voor in de lijst met autorisatieprofielen.', v_errorhint);
END IF;
END IF;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
END aaxx_import_contactpersoon;
/
CREATE OR REPLACE PROCEDURE aaxx_update_contactpersoon (
p_import_key IN NUMBER)
IS
CURSOR c
IS
SELECT * FROM fac_imp_perslid;
v_count NUMBER;
v_perslid_key NUMBER;
v_bedrijf_key NUMBER;
v_groep_key NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
BEGIN
-- generic update
prs.update_perslid (p_import_key, 'NR', 'A');
FOR rec IN c
LOOP
BEGIN
v_errorhint := 'Zoek aangemaakt persoon.';
SELECT MAX (prs_perslid_key)
INTO v_perslid_key
FROM prs_perslid p
WHERE rec.prs_perslid_naam = p.prs_perslid_naam
AND COALESCE (rec.prs_perslid_voornaam, 'Voornaam') =
COALESCE (p.prs_perslid_voornaam, 'Voornaam')
AND COALESCE (rec.prs_perslid_tussenvoegsel, 'Tussenvoegsel') =
COALESCE (p.prs_perslid_tussenvoegsel, 'Tussenvoegsel')
AND COALESCE (rec.prs_perslid_voorletters, 'Voorletters') =
COALESCE (p.prs_perslid_voorletters, 'Voorletters')
AND p.prs_perslid_aanmaak > SYSDATE - 1
AND p.prs_perslid_verwijder IS NULL;
IF v_perslid_key IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
'Persoon: '
|| rec.prs_perslid_naam
|| '-'
|| rec.prs_perslid_voornaam
|| '-'
|| rec.prs_perslid_voorletters
|| ' kan niet gevonden worden.',
v_errorhint);
ELSE
v_errorhint := 'Zoek bedrijf.';
SELECT MAX (prs_bedrijf_key)
INTO v_bedrijf_key
FROM prs_bedrijf
WHERE prs_bedrijf_verwijder IS NULL
AND UPPER (prs_bedrijf_naam) = UPPER (rec.prs_kenmerk1);
IF v_bedrijf_key IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
'Bedrijf: ' || rec.prs_kenmerk1 || ' kan niet gevonden worden.',
v_errorhint);
ELSE
INSERT INTO prs_contactpersoon (prs_contactpersoon_naam,
prs_contactpersoon_tussenv,
prs_contactpersoon_voorletters,
prs_contactpersoon_voornaam,
prs_contactpersoon_titel,
prs_contactpersoon_telefoon_1,
prs_contactpersoon_telefoon_2,
prs_contactpersoon_email,
prs_perslid_key,
prs_bedrijf_key)
VALUES (rec.prs_perslid_naam,
rec.prs_perslid_tussenvoegsel,
rec.prs_perslid_voorletters,
rec.prs_perslid_voornaam,
rec.prs_perslid_titel,
rec.prs_perslid_telefoonnr,
rec.prs_perslid_mobiel,
rec.prs_perslid_email,
v_perslid_key,
v_bedrijf_key);
v_errorhint := 'Zoek autorisatiegroep.';
SELECT MAX (fac_groep_key)
INTO v_groep_key
FROM fac_groep
WHERE UPPER (rec.prs_kenmerk2) = UPPER (fac_groep_omschrijving);
IF v_groep_key IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
'Autorisatiegroep: '
|| rec.prs_kenmerk2
|| ' kan niet gevonden worden.',
v_errorhint);
ELSE
INSERT INTO fac_gebruikersgroep (prs_perslid_key,
fac_groep_key)
VALUES (v_perslid_key, v_groep_key);
END IF;
END IF;
END IF;
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END aaxx_update_contactpersoon;
/
-------------------------------------------------------------------------------
-- Importfunctie om personen die gedefinieerd zijn in de AAIT database ook in
-- de klantdatabase toe te voegen.
-- kenmerk_key 4 = prs_perslid_key in AAIT database
-- kenmerk_key 3 = personeelsnummer in AAIT
-- kenmerk_key 2 = kostenplaats in AD
-------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE aaxx_import_aafm_medewerkers (
p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
CREATE OR REPLACE PROCEDURE aaxx_update_aafm_medewerkers (
p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT afdelingscode,
persoonachternaam,
tussenvoegsel,
voorletters,
voornaam,
titel,
telefoonnummer,
mobiel,
email,
functie,
loginnaam,
personeelsnummer,
dienstverband,
uurloon,
uurloon_intern,
kostenplaats,
prs_perslid_apikey,
i.prs_perslid_key prs_perslid_key_aait,
p.prs_perslid_key,
p.prs_perslid_nr
FROM aait.aait_imp_perslid i,
(SELECT prs_perslid_key,
prs_perslid_nr,
prs_kenmerklink_waarde aait_prs_perslid_key
FROM prs_perslid p, prs_kenmerklink kl
WHERE p.prs_perslid_key = kl.prs_link_key
AND kl.prs_kenmerk_key = 4
AND p.prs_perslid_verwijder IS NULL
AND kl.prs_kenmerklink_verwijder IS NULL) p
WHERE i.prs_perslid_key = p.aait_prs_perslid_key(+)
AND i.prs_perslid_key IS NOT NULL
AND ( INSTR(UPPER(i.distributie), SUBSTR (USER, 1, 4)) > 0 -- persoon moet gedistribueerd worden over deze Heyday omgeving
OR INSTR(i.distributie, '*') > 0) -- persoon moet gedistribueerd worden over alle Heyday omgevingen
AND i.personeelsnummer <> 'N/A';
CURSOR c_del
IS
SELECT prs_perslid_key,
prs_perslid_naam,
prs_perslid_voornaam,
prs_perslid_login,
prs_afdeling_omschrijving,
klo.prs_kenmerklink_waarde nr
FROM prs_perslid p, prs_kenmerklink klo, prs_afdeling a
WHERE p.prs_perslid_key = klo.prs_link_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND prs_kenmerk_key = 3 -- personeelsnummer AAFM
AND prs_perslid_verwijder IS NULL
AND NOT EXISTS
(SELECT prs_kenmerklink_key
FROM prs_kenmerklink kl, aait.aait_imp_perslid i
WHERE kl.prs_link_key = p.prs_perslid_key AND prs_kenmerk_key = 4 -- prs_perslid_key in AAIT
AND ( INSTR(UPPER(i.distributie), SUBSTR (USER, 1, 4)) > 0 -- persoon moet gedistribueerd worden over deze Heyday omgeving
OR INSTR(i.distributie, '*') > 0) -- persoon moet gedistribueerd worden over alle Heyday omgevingen
AND fac.safe_to_number(kl.prs_kenmerklink_waarde) = i.prs_perslid_key);
v_count NUMBER;
v_prs_bedrijf_key NUMBER;
v_prs_bedrijf_naam VARCHAR2 (100);
v_prs_afdeling_key NUMBER;
v_prs_srtperslid_key NUMBER;
v_prs_perslid_key NUMBER;
v_fac_groep_key NUMBER;
v_fac_default_key NUMBER;
v_errormsg VARCHAR2 (1000);
v_error_hint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (2000);
BEGIN
v_errormsg := 'Controle of importbestand goed gevuld is.';
SELECT COUNT(*)
INTO v_count
FROM aait.aait_imp_perslid
WHERE prs_perslid_key IS NOT NULL;
IF v_count < 200 THEN
fac.imp_writelog (p_import_key, 'E', 'Import bestand bevat te weinig (' || v_count || ') records.', '');
RETURN;
END IF;
v_prs_bedrijf_naam := 'HEYDAY Facility Management';
v_errormsg := 'Check of autorisatiegroep al bestaat';
BEGIN
SELECT fac_groep_key
INTO v_fac_groep_key
FROM fac_groep
WHERE UPPER (fac_groep_omschrijving) = 'HEYDAY MEDEWERKER';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO fac_groep (fac_groep_omschrijving)
VALUES ('HEYDAY Medewerker')
RETURNING fac_groep_key
INTO v_fac_groep_key;
END;
v_errormsg := 'Zoek de default groep';
BEGIN
SELECT fac_groep_key
INTO v_fac_default_key
FROM fac_groep
WHERE UPPER (fac_groep_omschrijving) = '_DEFAULT';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (p_import_key,
'E',
'Defaultgroep kan niet gevonden worden.' ,
'');
END;
-- Check of bedrijf HEYDAY Facility Management al bestaat
v_errormsg := 'Check of bedrijf bestaat';
BEGIN
SELECT prs_bedrijf_key
INTO v_prs_bedrijf_key
FROM prs_bedrijf
WHERE prs_bedrijf_naam_upper = UPPER(v_prs_bedrijf_naam)
AND prs_bedrijf_intern = 1
AND prs_bedrijf_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO prs_bedrijf (prs_bedrijf_naam, prs_bedrijf_intern)
VALUES (v_prs_bedrijf_naam, 1)
RETURNING prs_bedrijf_key
INTO v_prs_bedrijf_key;
END;
-- Check of afdeling HEYDAY al bestaat
v_errormsg := 'Check of afdeling bestaat';
BEGIN
SELECT prs_afdeling_key
INTO v_prs_afdeling_key
FROM prs_afdeling
WHERE prs_afdeling_upper = 'HEYDAY'
AND prs_bedrijf_key = v_prs_bedrijf_key
AND prs_afdeling_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO prs_afdeling (prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_bedrijf_key)
VALUES ('HEYDAY', 'HEYDAY Facility Management', v_prs_bedrijf_key)
RETURNING prs_afdeling_key
INTO v_prs_afdeling_key;
END;
v_errormsg := 'Bepaal srtperslid';
SELECT prs_srtperslid_key
INTO v_prs_srtperslid_key
FROM prs_srtperslid
WHERE prs_srtperslid_omschrijving = 'Onbekend';
FOR rec IN c
LOOP
BEGIN
-- set alvast de variable om straks de kenmerken goed te kunnen opslaan.
v_prs_perslid_key := rec.prs_perslid_key;
-- als de persoon een personeelsnummer van de klant heeft gaan we niets aan zijn
-- gegevens aanpassen maar wordt de persoon alleen aan de autorisatiegroep toegevoegd.
IF rec.prs_perslid_nr IS NULL
THEN
IF rec.prs_perslid_key IS NULL
THEN
-- misschien kunnen we de persoon nog vinden op basis van personeelsnummer
v_errormsg := 'Zoek persoon met zelfde personeelsnummer ' || rec.personeelsnummer;
SELECT MAX(prs_perslid_key)
INTO v_prs_perslid_key
FROM prs_kenmerklink, prs_perslid
WHERE prs_kenmerk_key = 3
AND prs_kenmerklink_verwijder IS NULL
AND prs_link_key = prs_perslid_key
AND prs_perslid_verwijder IS NULL
AND rec.personeelsnummer = prs_kenmerklink_waarde;
-- persoon bestaat nog niet
v_errormsg := 'Controle login ' || rec.personeelsnummer;
SELECT count(prs_perslid_key)
INTO v_count
FROM prs_perslid
WHERE prs_perslid_oslogin = UPPER(rec.loginnaam);
IF v_count = 0 AND v_prs_perslid_key IS NULL THEN
v_errormsg := 'Toevoegen persoon ' || rec.personeelsnummer;
INSERT INTO prs_perslid (prs_afdeling_key,
prs_perslid_naam,
prs_perslid_tussenvoegsel,
prs_perslid_voorletters,
prs_perslid_voornaam,
prs_perslid_titel,
prs_perslid_telefoonnr,
prs_perslid_mobiel,
prs_perslid_email,
prs_srtperslid_key,
prs_perslid_oslogin,
prs_perslid_apikey,
prs_perslid_ingids,
prs_perslid_dienstverband,
prs_perslid_uurloon)
VALUES (v_prs_afdeling_key,
rec.persoonachternaam,
rec.tussenvoegsel,
rec.voorletters,
rec.voornaam,
rec.titel,
SUBSTR(rec.telefoonnummer,1,15),
rec.mobiel,
rec.email,
v_prs_srtperslid_key,
rec.loginnaam,
rec.prs_perslid_apikey,
NULL,
fac.safe_to_number (
REPLACE (rec.dienstverband, ',', '.')),
fac.safe_to_number (REPLACE (rec.uurloon, ',', '.')))
RETURNING prs_perslid_key
INTO v_prs_perslid_key;
ELSE
fac.imp_writelog (p_import_key,
'E',
'Login bestaat al bij andere persoon. (' || rec.persoonachternaam || ' - ' || rec.loginnaam || ' - ' || rec.personeelsnummer || ')' ,
'');
END IF;
ELSE
-- persoon bestaat al
v_errormsg := 'Aanpassen persoon ' || rec.personeelsnummer;
UPDATE prs_perslid
SET prs_afdeling_key = v_prs_afdeling_key,
prs_perslid_naam = rec.persoonachternaam,
prs_perslid_tussenvoegsel = rec.tussenvoegsel,
prs_perslid_voorletters = rec.voorletters,
prs_perslid_voornaam = rec.voornaam,
prs_perslid_titel = rec.titel,
prs_perslid_telefoonnr = COALESCE(prs_perslid_telefoonnr, SUBSTR(rec.telefoonnummer,1,15)),
prs_perslid_mobiel = COALESCE(prs_perslid_mobiel, rec.mobiel),
prs_perslid_email = COALESCE(prs_perslid_email, rec.email),
prs_srtperslid_key = v_prs_srtperslid_key,
prs_perslid_oslogin = rec.loginnaam,
prs_perslid_apikey = rec.prs_perslid_apikey,
prs_perslid_ingids = NULL,
prs_perslid_dienstverband =
fac.safe_to_number (
REPLACE (rec.dienstverband, ',', '.')),
prs_perslid_uurloon =
fac.safe_to_number (REPLACE (rec.uurloon, ',', '.'))
WHERE prs_perslid_key = rec.prs_perslid_key;
END IF;
-- verwijder de zojuist toegevoegde persoon uit de default groep.
DELETE fac_gebruikersgroep
WHERE fac_groep_key = v_fac_default_key
AND prs_perslid_key = v_prs_perslid_key;
END IF;
IF v_prs_perslid_key IS NOT NULL
THEN
v_errormsg := 'Toevoegen key naar AAIT prs_perslid_key kenmerk ' || v_prs_perslid_key;
aaxx.set_prs_kenmerk (p_import_key,
'P',
4,
v_prs_perslid_key,
rec.prs_perslid_key_aait);
v_errormsg := 'Toevoegen personeelsnummer kenmerk ' || v_prs_perslid_key;
aaxx.set_prs_kenmerk (p_import_key,
'P',
3,
v_prs_perslid_key,
rec.personeelsnummer);
v_errormsg := 'Toevoegen kostenplaats kenmerk ' || v_prs_perslid_key;
aaxx.set_prs_kenmerk (p_import_key,
'P',
2,
v_prs_perslid_key,
rec.kostenplaats);
v_errormsg := 'Toevoegen uurloon intern kenmerk ' || v_prs_perslid_key;
aaxx.set_prs_kenmerk (p_import_key,
'P',
6,
v_prs_perslid_key,
rec.uurloon_intern);
IF rec.afdelingscode = 'SD'
THEN
-- Servicedesk autorisatie toevoegen.
v_errormsg := 'Toevoegen SD autorisatie ' || rec.personeelsnummer;
INSERT INTO fac_gebruikersgroep (prs_perslid_key, fac_groep_key)
(SELECT v_prs_perslid_key, fac_groep_key
FROM fac_groep g
WHERE TRIM (fac_groep_upper) = 'HEYDAY SERVICEDESK'
AND NOT EXISTS
(SELECT fac_gebruikersgroep_key
FROM fac_gebruikersgroep gg
WHERE gg.prs_perslid_key = v_prs_perslid_key
AND gg.fac_groep_key = g.fac_groep_key));
-- Servicedesk medewerkers mandateren voor alle kostenplaatsen.
v_errormsg := 'Toevoegen SD mandaat ' || rec.personeelsnummer;
DELETE prs_perslidkostenplaats
WHERE prs_perslid_key = v_prs_perslid_key
AND prs_kostenplaats_key IS NOT NULL;
INSERT INTO prs_perslidkostenplaats (prs_perslid_key)
(SELECT v_prs_perslid_key FROM DUAL
WHERE NOT EXISTS
(SELECT prs_perslid_key
FROM prs_perslidkostenplaats pkp
WHERE pkp.prs_perslid_key = v_prs_perslid_key));
END IF;
-- voeg iedereen toe aan de gebruikersgroep HEYDAY Medewerker
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
SELECT fac_groep_key, prs_perslid_key
FROM fac_groep g, prs_perslid p
WHERE g.fac_groep_key = v_fac_groep_key
AND p.prs_perslid_key = v_prs_perslid_key
AND NOT EXISTS
(SELECT fac_gebruikersgroep_key
FROM fac_gebruikersgroep gg
WHERE gg.prs_perslid_key = p.prs_perslid_key
AND gg.fac_groep_key = g.fac_groep_key);
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
v_error_hint := v_errormsg;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint);
COMMIT; -- tbv logging
END;
END LOOP;
DELETE fac_gebruikersgroep
WHERE fac_groep_key = v_fac_groep_key
AND prs_perslid_key NOT IN
(SELECT p.prs_perslid_key
FROM aait.aait_imp_perslid i,
prs_perslid p,
prs_kenmerklink kl
WHERE p.prs_perslid_key = kl.prs_link_key
AND kl.prs_kenmerk_key = 3
AND i.personeelsnummer = kl.prs_kenmerklink_waarde);
-- probeer personen te verwijderen die niet meer voorkomen in het importbestand
FOR rec_del IN c_del
LOOP
BEGIN
IF COALESCE(rec_del.prs_perslid_login, SYSDATE -11) > SYSDATE -10
THEN
fac.imp_writelog (p_import_key,
'I',
'Persoon ' || rec_del.prs_perslid_naam || ' (' || rec_del.prs_perslid_voornaam || ') zou verwijderd moeten worden',
'');
UPDATE prs_perslid
SET prs_perslid_oslogin = NULL,
prs_perslid_oslogin2 = NULL
WHERE prs_perslid_key = rec_del.prs_perslid_key;
ELSE
fac.imp_writelog (p_import_key,
'I',
'Persoon ' || rec_del.prs_perslid_naam || ' (' || rec_del.prs_perslid_voornaam || ') zou verwijderd moeten worden',
'');
aaxx.prs_del_perslid (p_import_key, rec_del.prs_perslid_key, 0, 0);
END IF;
END;
END LOOP;
END;
/
-- view om ongeldige records te vinden.
CREATE OR REPLACE VIEW aaxx_rap_perslid_mismatch (hide_f_index, naam, voornaam, lastlogin, afdeling, AAFMpersoneelsnummer)
AS
SELECT sysdate - prs_perslid_login,
prs_perslid_naam,
prs_perslid_voornaam,
prs_perslid_login,
prs_afdeling_omschrijving,
klo.prs_kenmerklink_waarde nr
FROM prs_perslid p, prs_kenmerklink klo, prs_afdeling a
WHERE p.prs_perslid_key = klo.prs_link_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND prs_kenmerk_key = 3
AND prs_perslid_verwijder IS NULL
AND prs_perslid_login IS NOT NULL
AND NOT EXISTS
(SELECT prs_kenmerklink_key
FROM prs_kenmerklink
WHERE prs_link_key = p.prs_perslid_key AND prs_kenmerk_key = 4);
-------------------------------------------------------------------------------
-- KOPPELINGEN MET LEVERANCIERS
-------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE aaxx_import_opdrstat_strukton (
p_import_key IN NUMBER)
AS
c_delim VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000); -- Input line
v_errormsg VARCHAR2 (4000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (1200);
v_dummy VARCHAR2 (200);
header_is_valid NUMBER := 0;
v_count NUMBER;
v_count_tot NUMBER (10) := 0;
v_count_import NUMBER (10) := 0;
v_ongeldig NUMBER (1) := 0;
-- De importvelden
v_mld_opdr_opmerking VARCHAR2 (4000);
v_mld_opdr_key NUMBER (10);
v_mld_opdr_key_tekst VARCHAR2 (100);
v_extern_nummer VARCHAR2 (100);
v_status NUMBER (10);
v_status_tekst VARCHAR2 (100);
v_status_code VARCHAR2 (100);
v_datumtijd DATE;
v_datumtijd_tekst VARCHAR2 (100);
v_opmerking VARCHAR2 (3000);
-- Overige velden:
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
-- Eerst opruiming
DELETE FROM aaxx_imp_opdrstat_strukton;
COMMIT;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout opvragen te importeren rij';
v_aanduiding := '';
v_ongeldig := 0;
fac.imp_getfield (v_newline, c_delim, v_mld_opdr_key_tekst);
fac.imp_getfield (v_newline, c_delim, v_extern_nummer);
fac.imp_getfield (v_newline, c_delim, v_status_code); -- typeID
fac.imp_getfield (v_newline, c_delim, v_datumtijd_tekst);
fac.imp_getfield (v_newline, c_delim, v_status_tekst);
fac.imp_getfield (v_newline, c_delim, v_opmerking);
v_opmerking := substr(v_opmerking, 1, 1000);
-- verwijder de markering voor cr/lf die we zelf in de stylesheet toegevoegd hebben.
v_opmerking := replace(v_opmerking, '@@',CHR (13));
v_aanduiding :=
'['
|| v_extern_nummer
|| '|'
|| v_mld_opdr_key_tekst
|| '|'
|| v_status_tekst
|| '|'
|| v_opmerking
|| '] ';
-- 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 (TRIM (v_mld_opdr_key_tekst)) = 'REFERENCEID'
AND UPPER (TRIM (v_extern_nummer)) = 'SERVICEREQUESTID'
AND UPPER (TRIM (v_status_code)) = 'TYPEID'
AND UPPER (TRIM (v_datumtijd_tekst)) = 'DATETIME'
AND UPPER (TRIM (v_opmerking)) = 'REMARKS'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Fout inlezen mld_opdr_key [' || v_aanduiding || ']';
v_mld_opdr_key := TRIM (v_mld_opdr_key);
BEGIN
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
INTO v_mld_opdr_key, v_mld_opdr_opmerking
FROM mld_opdr o, mld_melding m, ins_tab_discipline d, ins_srtdiscipline sd, mld_stdmelding std
WHERE o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr = v_mld_opdr_key_tekst;
EXCEPTION WHEN NO_DATA_FOUND THEN
BEGIN
fac.imp_writelog (p_import_key, 'W', 'Opdracht kan niet gevonden worden. [' || v_aanduiding || ']', '');
-- kijk nu of de opdracht gevonden kan worden a.d.h.v het Struktonnummer
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
INTO v_mld_opdr_key, v_mld_opdr_opmerking
FROM mld_opdr o, mld_kenmerkopdr ko, mld_kenmerk k
WHERE o.mld_opdr_key = ko.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 35
AND ko.mld_kenmerkopdr_waarde = v_extern_nummer;
EXCEPTION WHEN OTHERS THEN
v_ongeldig := 1;
v_errormsg := 'Opdracht kan niet gevonden worden (intern/externnr). [' || v_aanduiding || ']';
v_mld_opdr_key := NULL;
END;
END;
IF v_ongeldig = 0
THEN
v_errormsg :=
'Fout bij bepalen status [' || v_aanduiding || ']';
CASE
WHEN v_status_code = '5'
THEN
v_status := 5; -- uitgegeven
WHEN v_status_code = '10'
THEN
v_status := 8; -- geaccepteerd
WHEN v_status_code = '20' -- monteur gereed
THEN
v_status := 6; -- afgemeld
WHEN v_status_code = '25' -- specialist gereed
THEN
v_status := 6; -- afgemeld
WHEN v_status_code = '30' -- technisch gereed
THEN
v_status := 6; -- afgemeld
-- For future use
-- WHEN v_status_code = '40' -- uitgeprijst
-- THEN
-- v_status := 6; -- afgemeld
WHEN v_status_code = '70'
THEN
v_status := 1; -- geannuleerd
WHEN v_status_code = '80'
THEN
v_status := 1; -- afgewezen
ELSE
v_status := NULL;
v_ongeldig := 1; -- nog te bezien.
END CASE;
END IF;
-- Lees alle veldwaarden
IF v_ongeldig = 0
THEN
v_errormsg :=
'Fout bij converteren datumtijd [' || v_aanduiding || ']';
IF INSTR (v_datumtijd_tekst, '.') > 0
THEN
v_datumtijd :=
fac.safe_to_date (
REPLACE (
SUBSTR (v_datumtijd_tekst,
1,
INSTR (v_datumtijd_tekst, '.') - 1),
'T',
' '),
'yyyy-mm-dd hh24:mi:ss');
ELSE
v_datumtijd := fac.safe_to_date(v_datumtijd_tekst, 'yyyy-mm-dd hh24:mi:ss');
END IF;
IF v_datumtijd = NULL
THEN
v_ongeldig := 0;
END IF;
END IF;
IF v_ongeldig = 0
THEN
v_errormsg :=
'Fout bij aanvullen opmerking [' || v_aanduiding || ']';
-- controleer of de opmerking niet leeg is en of dezelfde opmerking al bij een eerdere statusovergang
-- gemeld is.
IF v_opmerking IS NOT NULL AND INSTR(COALESCE(v_mld_opdr_opmerking, 'QueQuLeQue'), v_opmerking) = 0
THEN
v_opmerking :=
'['
|| v_datumtijd_tekst
|| '] - '
|| v_status_tekst
|| CHR (13)
|| CHR (10)
|| v_opmerking;
ELSE
v_opmerking :=
'[' || v_datumtijd_tekst || '] - ' || v_status_tekst;
END IF;
END IF;
-- Insert geformatteerde import record
IF (v_ongeldig = 0)
THEN
BEGIN
v_errormsg :=
'Fout toevoegen opdracht status ['
|| v_aanduiding
|| ']';
INSERT INTO aaxx_imp_opdrstat_strukton (mld_opdr_key,
extern_nummer,
status,
datumtijd,
opmerking)
VALUES (v_mld_opdr_key,
v_extern_nummer,
v_status,
v_datumtijd,
v_opmerking);
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,
'E',
v_aanduiding || v_errormsg,
'Fout bij toevoegen regel aan importtabel aaxx_imp_opdr_status_strukton.');
END;
ELSE
IF v_status_code <> '40' AND v_status_code <> '45'
THEN
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'');
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!');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := SUBSTR(
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')', 1, 490);
fac.imp_writelog (p_import_key,
'E',
SUBSTR(v_aanduiding, 1, 500) || ' - ' || v_errormsg,
'Inleesproces opdrachtstatusberichten afgebroken!');
END;
/
CREATE OR REPLACE PROCEDURE aaxx_update_opdrstat_strukton (p_import_key IN NUMBER)
AS
-- Cursor loopt - in volgorde! - over alle ingelezen opdrachtstatusberichten.
CURSOR c1
IS
SELECT mld_opdr_key,
extern_nummer,
datumtijd,
status,
opmerking
FROM aaxx_imp_opdrstat_strukton
ORDER BY 1, 3;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_count_tot NUMBER (10);
v_count NUMBER (10);
v_mld_key NUMBER (10) := 0;
v_opdr_key NUMBER (10) := 0;
v_opdr_status NUMBER (10) := 0;
v_user_key NUMBER (10) := 0;
v_mld_typeopdr_key NUMBER (10);
v_mld_kenmerk_key NUMBER (10);
v_mld_kenmerkopdr_key NUMBER (10);
v_mld_srtkenmerk_key NUMBER (10);
BEGIN
-- Loop door alle geimporteerde opdrachtstatusberichten en verwerk deze.
v_count_tot := 0;
-- Stel de key in van het srtkenmerk 'Ref. Nr. Leverancier'. Hier wordt
-- het nummer dat Strukton aan de call gegeven heeft geregistreerd.
IF aaxx_get_user = 'SABIC' THEN v_mld_srtkenmerk_key := 35; END IF;
IF aaxx_get_user = 'ESSENT' THEN v_mld_srtkenmerk_key := 741; END IF;
v_user_key := 10; -- Strukton user
FOR rec IN c1
LOOP
BEGIN
v_aanduiding :=
'['
|| rec.mld_opdr_key
|| '|'
|| SUBSTR (rec.opmerking, 1, 100)
|| '] ';
v_count_tot := v_count_tot + 1;
v_count := 0;
-- Key van melding/opdracht bepalen en externnr bij opdracht opslaan.
IF (rec.mld_opdr_key IS NOT NULL)
THEN
v_errormsg := 'Fout bij bepalen opdracht.';
SELECT mld_melding_key, mld_opdr_key, mld_statusopdr_key, mld_typeopdr_key
INTO v_mld_key, v_opdr_key, v_opdr_status, v_mld_typeopdr_key
FROM mld_opdr
WHERE mld_opdr_key = rec.mld_opdr_key;
v_errormsg := 'Fout bij bepalen kenmerk extern nummer.';
SELECT k.mld_kenmerk_key
INTO v_mld_kenmerk_key
FROM mld_kenmerk k
WHERE k.mld_srtkenmerk_key = v_mld_srtkenmerk_key
AND k.mld_typeopdr_key = v_mld_typeopdr_key;
v_errormsg := 'Fout bij bepalen kenmerkopdracht extern nummer.';
SELECT max(ko.mld_kenmerkopdr_key)
INTO v_mld_kenmerkopdr_key
FROM mld_kenmerkopdr ko
WHERE ko.mld_opdr_key = v_opdr_key
AND v_mld_kenmerk_key = ko.mld_kenmerk_key;
v_errormsg := 'Fout bij aanpassen extern nummer.';
IF v_mld_kenmerkopdr_key IS NULL THEN
-- kenmerk toevoegen
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key, mld_opdr_key, mld_kenmerkopdr_waarde)
VALUES (v_mld_kenmerk_key, v_opdr_key, rec.extern_nummer);
ELSE
-- kenmerk aanpassen
UPDATE mld_kenmerkopdr SET mld_kenmerkopdr_waarde = rec.extern_nummer WHERE mld_kenmerkopdr_key = v_mld_kenmerkopdr_key;
END IF;
v_errormsg := 'Fout bij bijwerken opdracht-opmerking.';
v_count := LENGTH (rec.opmerking) + 5; -- Beetje speling qua lengte!
UPDATE mld_opdr
SET mld_opdr_opmerking =
DECODE (
mld_opdr_opmerking,
NULL,
rec.opmerking,
rec.opmerking
|| CHR (13)
|| CHR (10)
|| SUBSTR (mld_opdr_opmerking, 1, (4000 - v_count)))
WHERE mld_opdr_key = v_opdr_key;
IF v_opdr_status <> rec.status
THEN
IF rec.status = 8 AND v_opdr_status = 5
THEN
-- Accepteer opdracht als de opdracht uitgegeven was
MLD.setopdrachtstatus (v_opdr_key, 8, v_user_key); -- Facilitor
ELSIF rec.status = 6 AND v_opdr_status = 5
THEN
-- Meld de opdracht af als deze uitgegeven was
MLD.setopdrachtstatus (v_opdr_key, 8, v_user_key); -- Facilitor, eerst accepteren
MLD.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
ELSIF rec.status = 6 AND v_opdr_status = 8
THEN
-- Meld de opdracht af als deze geaccepteerd was
MLD.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
ELSIF rec.status = 1 AND v_opdr_status = 5
THEN
-- Opdracht is afgewezen op het moment dat de opdracht nog niet geaccepteerd is.
MLD.setopdrachtstatus (v_opdr_key, 1, v_user_key); -- Facilitor
MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0);
ELSIF rec.status = 1 AND v_opdr_status = 8
THEN
-- Opdracht is afgewezen op het moment dat de opdracht al geaccepteerd is.
MLD.setopdrachtstatus (v_opdr_key, 1, v_user_key); -- Facilitor
MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0);
END IF;
IF rec.status = 6 AND v_opdr_status <> 6
THEN
v_errormsg := 'Fout bij statusaanpassing melding.';
-- Sinds AADO#30922 wordt de melding niet meer automatisch afgemeld.
MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0);
END IF;
END IF;
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Fout bij verwerken opdrachtstatusbericht.');
END;
END LOOP;
COMMIT;
END;
/
-------------------------------------------------------------------------------
-- IMPORTFUNCTIE - DIENST_LOC_BLD
-------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE aaxx_import_dienst_loc_bld (
p_import_key IN NUMBER)
AS
CURSOR c_cursor
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
v_newline VARCHAR2 (1000); -- Import line
v_field VARCHAR2 (100); -- Import field
v_fielddelimitor VARCHAR2 (1); -- Field seperator
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_skipfield VARCHAR2 (100);
-- De importvelden
v_bedrijf_naam VARCHAR2 (100);
v_bedrijf_nr VARCHAR2 (100);
v_dienst_oms VARCHAR2 (100);
v_locatie_code VARCHAR2 (100);
v_gebouw_code VARCHAR2 (100);
header_found BOOLEAN;
BEGIN
-- Init
header_found := FALSE;
v_fielddelimitor := ';';
-- Clear my previous imported rows
DELETE FROM aaxx_imp_dienst_loc_bld;
FOR rec1 IN c_cursor
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
IF SUBSTR (v_newline, 1, 3) = '?'
THEN
-- EF BB BF aangetroffen
fac.imp_writelog (p_import_key,
'W',
'Byte Order Mark aangetroffen',
'Bestand heeft onbehandeld UTF-8 formaat.');
v_newline := SUBSTR (v_newline, 4);
END IF;
fac.imp_getfield (v_newline, v_fielddelimitor, v_bedrijf_naam);
fac.imp_getfield (v_newline, v_fielddelimitor, v_bedrijf_nr);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dienst_oms);
fac.imp_getfield (v_newline, v_fielddelimitor, v_locatie_code);
fac.imp_getfield (v_newline, v_fielddelimitor, v_gebouw_code);
-- Skip until a valid header is found
IF UPPER (v_bedrijf_naam) = 'BEDRIJFNAAM'
AND UPPER (v_bedrijf_nr) = 'BEDRIJF_NR'
AND UPPER (v_dienst_oms) = 'DIENST'
AND UPPER (v_locatie_code) = 'LOCATIE_CODE'
AND UPPER (v_gebouw_code) = 'GEBOUW_CODE'
THEN
-- Sla de kopregel over.
header_found := TRUE;
ELSIF (header_found)
THEN
INSERT INTO aaxx_imp_dienst_loc_bld (prs_bedrijf_naam,
prs_bedrijf_nr,
prs_dienst_omschrijving,
alg_locatie_code,
alg_gebouw_code)
VALUES (SUBSTR (v_bedrijf_naam, 1, 60),
SUBSTR (v_bedrijf_nr, 1, 50),
SUBSTR (v_dienst_oms, 1, 60),
SUBSTR (v_locatie_code, 1, 10),
SUBSTR (v_gebouw_code, 1, 12));
END IF;
COMMIT;
END;
END LOOP;
IF NOT header_found
THEN
fac.imp_writelog (
p_import_key,
'E',
'Geen geldige header aangetroffen',
'Bestand is geen geldig BedrijfDienstLocatieGebouw importbestand.');
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
SUBSTR (v_errormsg, 1, 1000),
'');
-- maak de importtabel leeg om te voorkomen dat er halve bestanden ingelezen worden.
DELETE FROM aaxx_imp_dienst_loc_bld;
END;
/
CREATE OR REPLACE PROCEDURE aaxx_update_dienst_loc_bld (
p_import_key IN NUMBER)
AS
CURSOR cbdlg
IS
SELECT prs_bedrijf_naam,
prs_bedrijf_nr,
prs_dienst_omschrijving,
alg_locatie_code,
alg_gebouw_code
FROM aaxx_imp_dienst_loc_bld
WHERE prs_dienst_omschrijving IS NOT NULL;
v_oldcountbdlg NUMBER;
v_newcountbdlg NUMBER;
v_prs_bedrijf_key NUMBER;
v_prs_dienst_key NUMBER;
v_alg_locatie_key NUMBER;
v_alg_gebouw_key NUMBER;
v_errormsg VARCHAR (1000);
v_error_hint VARCHAR (1000);
oracle_err_mes VARCHAR2 (150);
oracle_err_num VARCHAR2 (150);
currentversion fac_module.fac_module_version%TYPE;
BEGIN
SELECT MAX (fac_module_version) INTO currentversion FROM fac_module;
fac.imp_writelog (
p_import_key,
'I',
'Arcadis Aqumen BedrijfDienstLocatieGebouw import version '
|| currentversion,
'$Revision$');
SELECT COUNT ( * ) INTO v_oldcountbdlg FROM aaxx_imp_dienst_loc_bld;
IF v_oldcountbdlg = 0
THEN
fac.imp_writelog (
p_import_key,
'E',
'Arcadis Aqumen BedrijfDienstLocatieGebouw import bevat geen records',
'$Revision$');
RETURN;
END IF;
-- How many active records are now present?
SELECT COUNT ( * ) INTO v_oldcountbdlg FROM prs_bedrijfdienstlocatie;
-- remove the existing records
DELETE prs_bedrijfdienstlocatie;
FOR rec IN cbdlg
LOOP
BEGIN
v_errormsg :=
'Kan dienst niet bepalen ['
|| rec.prs_dienst_omschrijving
|| '] ';
SELECT prs_dienst_key
INTO v_prs_dienst_key
FROM prs_dienst
WHERE UPPER (prs_dienst_omschrijving) =
UPPER (rec.prs_dienst_omschrijving);
v_errormsg :=
'Kan locatie niet bepalen [' || rec.alg_locatie_code || '] ';
IF rec.alg_locatie_code IS NOT NULL
THEN
SELECT alg_locatie_key
INTO v_alg_locatie_key
FROM alg_v_aanweziglocatie
WHERE UPPER (alg_locatie_code) = UPPER (rec.alg_locatie_code);
ELSE
v_alg_locatie_key := NULL;
END IF;
v_errormsg :=
'Kan gebouw niet bepalen [' || rec.alg_gebouw_code || '] ';
IF rec.alg_gebouw_code IS NOT NULL
THEN
SELECT alg_gebouw_key
INTO v_alg_gebouw_key
FROM alg_v_aanweziggebouw
WHERE alg_gebouw_upper = UPPER (rec.alg_gebouw_code);
v_alg_locatie_key := NULL;
ELSE
v_alg_gebouw_key := NULL;
END IF;
v_errormsg :=
'Kan bedrijf niet bepalen ['
|| rec.prs_bedrijf_naam
|| '('
|| rec.prs_bedrijf_nr
|| ')'
|| '] ';
SELECT prs_bedrijf_key
INTO v_prs_bedrijf_key
FROM prs_v_aanwezigbedrijf
WHERE UPPER (prs_bedrijf_naam) = UPPER (rec.prs_bedrijf_naam);
v_errormsg :=
'Kan bedrijf/dienst/loc/bld niet wegschrijven ['
|| rec.prs_bedrijf_naam
|| '('
|| rec.prs_bedrijf_nr
|| ')'
|| '/'
|| rec.prs_dienst_omschrijving
|| '/'
|| rec.alg_locatie_code
|| '/'
|| rec.alg_gebouw_code
|| '] ';
INSERT INTO prs_bedrijfdienstlocatie (prs_dienst_key,
prs_bedrijf_key,
alg_locatie_key,
alg_gebouw_key)
VALUES (v_prs_dienst_key,
v_prs_bedrijf_key,
v_alg_locatie_key,
v_alg_gebouw_key);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
v_error_hint := v_errormsg;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint);
COMMIT;
END;
END LOOP;
SELECT COUNT ( * ) INTO v_newcountbdlg FROM aaxx_imp_dienst_loc_bld;
fac.imp_writelog (
p_import_key,
'S',
'Aantal BedrijfDienstLocBld vooraf: '
|| TO_CHAR (v_oldcountbdlg)
|| ' => nu: '
|| TO_CHAR (v_newcountbdlg),
'');
END;
/
-------------------------------------------------------------------------------
-- RAPPORTAGES aaxx_v_rap_gebruikers_auth
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_rap_gebruikers_auth (
naam,
afdeling,
functie,
email,
login,
alt_login,
auth_groep,
last_login
)
AS
SELECT prs_perslid_naam_full,
prs_afdeling_omschrijving,
prs_srtperslid_omschrijving,
prs_perslid_email,
prs_perslid_oslogin,
prs_perslid_oslogin2,
fac_groep_omschrijving,
prs_perslid_login
FROM prs_v_aanwezigperslid p,
prs_v_perslid_fullnames pf,
fac_gebruikersgroep gg,
prs_afdeling a,
fac_groep g,
prs_srtperslid sp
WHERE p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_perslid_key = gg.prs_perslid_key(+)
AND p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND gg.fac_groep_key = g.fac_groep_key(+)
AND (p.prs_perslid_oslogin IS NOT NULL
OR p.prs_perslid_oslogin2 IS NOT NULL)
AND SUBSTR(COALESCE (p.prs_perslid_oslogin, 'QueQueLeQue'),1,1) <> '_';
-- Geatoriseerd voor ORDBO2 maar niet gekoppeld aan een bedrijf of AAFMer
CREATE OR REPLACE VIEW aaxx_v_rap_ordbo2_no_bdr
(
prs_perslid_key,
naam,
login_naam,
email,
autorisatiegroep
)
AS
SELECT DISTINCT pf.prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_oslogin,
prs_perslid_email,
fac_groep_omschrijving
FROM fac_groeprechten fgr,
fac_functie ff,
fac_gebruikersgroep fgg,
fac_groep fg,
prs_v_perslid_fullnames pf,
prs_perslid p
WHERE ff.fac_functie_key = fgr.fac_functie_key
AND UPPER (fac_functie_code) = 'WEB_ORDBO2'
AND (fac_gebruiker_prs_level_read < 9
OR fac_gebruiker_alg_level_read < 9)
AND fgr.fac_groep_key = fgg.fac_groep_key
AND p.prs_perslid_key = fgg.prs_perslid_key
AND fg.fac_groep_key = fgg.fac_groep_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND UPPER (prs_perslid_oslogin) != '_FACILITOR'
AND fgg.prs_perslid_key NOT IN
(SELECT prs_perslid_key
FROM prs_contactpersoon pc, prs_bedrijf b
WHERE prs_contactpersoon_verwijder IS NULL
AND pc.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_verwijder IS NULL
AND pc.prs_perslid_key IS NOT NULL)
AND NOT EXISTS
(SELECT prs_afdeling_key
FROM prs_afdeling a
WHERE a.prs_afdeling_key = p.prs_afdeling_key
AND (a.prs_afdeling_omschrijving = 'AAFM' OR a.prs_afdeling_upper = 'HEYDAY'));
CREATE OR REPLACE VIEW aaxx_v_rap_dienst_loc_bld (fclt_f_bedrijfnaam
, fclt_f_bedrijf_nr
, fclt_f_dienst
, fclt_f_locatie_code
, fclt_f_gebouw_code
)
AS
SELECT prs_bedrijf_naam bedrijfnaam,
prs_leverancier_nr bedrijfnummer,
prs_dienst_omschrijving dienst,
alg_locatie_code locatie_code,
alg_gebouw_upper gebouw_code
FROM prs_v_aanwezigbedrijf b,
prs_dienst d,
alg_locatie l,
alg_gebouw g,
prs_bedrijfdienstlocatie bdl
WHERE b.prs_bedrijf_key = bdl.prs_bedrijf_key(+)
AND bdl.prs_dienst_key = d.prs_dienst_key(+)
AND bdl.alg_locatie_key = l.alg_locatie_key(+)
AND bdl.alg_gebouw_key = g.alg_gebouw_key(+)
AND COALESCE (b.prs_bedrijf_intern, 0) = 0;
CREATE OR REPLACE VIEW aaxx_v_rap_bdl_contract
(
fclt_f_profiel,
fclt_f_bedrijfnaam,
fclt_f_bedrijf_nr,
fclt_f_dienst,
fclt_f_locatie_code,
fclt_f_gebouw_code,
fclt_f_contract
)
AS
SELECT 'Contract',
prs_bedrijf_naam,
prs_leverancier_nr,
prs_dienst_omschrijving,
(SELECT alg_locatie_code
FROM alg_locatie l
WHERE l.alg_locatie_key =
COALESCE (cpl.alg_locatie_key, cpg.alg_locatie_key)),
(SELECT alg_gebouw_upper
FROM alg_gebouw g1
WHERE g1.alg_gebouw_key = cpg.alg_gebouw_key),
c.cnt_contract_nummer_intern
FROM cnt_contract c,
(SELECT cnt_contract_key, cnt_alg_plaats_key alg_locatie_key
FROM cnt_contract_plaats cp
WHERE cp.cnt_contract_plaats_verwijder IS NULL
AND cp.cnt_alg_plaats_code = 'L') cpl,
(SELECT cnt_contract_key, g.alg_locatie_key, g.alg_gebouw_key
FROM cnt_contract_plaats cp, alg_gebouw g
WHERE cp.cnt_alg_plaats_code = 'G'
AND cnt_alg_plaats_key = g.alg_gebouw_key) cpg,
prs_bedrijf b,
prs_dienst d
WHERE c.cnt_contract_key = cpl.cnt_contract_key(+)
AND c.cnt_contract_key = cpg.cnt_contract_key(+)
AND c.prs_dienst_key = d.prs_dienst_key(+)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key(+)
AND c.cnt_contract_looptijd_tot > SYSDATE
UNION ALL
SELECT 'Uitvoerder',
prs_bedrijf_naam bedrijfnaam,
prs_leverancier_nr bedrijfnummer,
prs_dienst_omschrijving dienst,
alg_locatie_code locatie_code,
alg_gebouw_upper gebouw_code,
NULL
FROM prs_v_aanwezigbedrijf b,
prs_dienst d,
alg_locatie l,
alg_gebouw g,
prs_bedrijfdienstlocatie bdl
WHERE b.prs_bedrijf_key = bdl.prs_bedrijf_key(+)
AND bdl.prs_dienst_key = d.prs_dienst_key(+)
AND bdl.alg_locatie_key = l.alg_locatie_key(+)
AND bdl.alg_gebouw_key = g.alg_gebouw_key(+)
AND COALESCE (b.prs_bedrijf_intern, 0) = 0;
CREATE OR REPLACE VIEW aaxx_v_rap_contractorders (
contractorder,
versie,
fclt_f_gebouwcode,
fclt_f_leverancier,
fclt_f_beschrijving,
fclt_f_pakket,
ingangsdatum,
einddatum,
fclt_f_status,
kosten,
totaalkosten,
gefactureerd,
dienst,
leveranciernr
)
AS
SELECT cnt_contract_nummer_intern contractorder,
cnt_contract_versie,
alg_gebouw_code gebouwcode,
prs_bedrijf_naam leverancier,
k.prs_kostensoort_opmerking beschrijving,
(SELECT prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg
WHERE ksg.prs_kostensoortgrp_key = k.prs_kostensoortgrp_key)
pakket,
TO_CHAR (c.cnt_contract_looptijd_van, 'DD-MM-YYYY') ingangsdatum,
TO_CHAR (c.cnt_contract_looptijd_tot, 'DD-MM-YYYY') einddatum,
DECODE (SIGN (cnt_contract_looptijd_van - SYSDATE),
1,
'Toekomst',
-1,
DECODE (SIGN (cnt_contract_looptijd_tot - SYSDATE),
1,
'Actueel',
-1,
'Verlopen'
)
)
status,
COALESCE (ROUND ( DECODE (cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht)
* c.cnt_contract_kosten),
2
),
0
)
kosten,
c.cnt_contract_kosten orderbedrag,
(SELECT SUM (fr.fin_factuurregel_totaal)
FROM aaxx_v_aanwezigfactuur f, fin_factuurregel fr
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.cnt_contract_key = c.cnt_contract_key)
gefactureerd,
k.prs_kostensoort_refcode dienst,
b.prs_leverancier_nr leveranciernr
FROM cnt_contract c,
cnt_discipline d,
cnt_contract_plaats cp,
prs_bedrijf b,
prs_kostensoort k,
prs_kostenplaats kp,
prs_afdeling a,
prs_perslid p,
alg_locatie l,
alg_gebouw g,
prs_contactpersoon cop,
(SELECT cnt_contract_key,
SUM (cnt_contract_plaats_gewicht) cnt_contract_plaats_gewicht
FROM cnt_contract_plaats
GROUP BY cnt_contract_key) cnt_gew,
(SELECT cp.cnt_contract_plaats_key, alg_locatie_key, alg_gebouw_key
FROM alg_v_allonroerendgoed aog, cnt_contract_plaats cp
WHERE aog.alg_type = cp.cnt_alg_plaats_code
AND aog.alg_onroerendgoed_keys = cp.cnt_alg_plaats_key) cog
WHERE c.cnt_contract_key = cp.cnt_contract_key(+)
AND c.cnt_contract_key = cnt_gew.cnt_contract_key(+)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.ins_discipline_key = d.ins_discipline_key
AND d.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND c.prs_afdeling_key_eig = a.prs_afdeling_key
AND c.prs_perslid_key_beh = p.prs_perslid_key
AND cp.cnt_contract_plaats_key = cog.cnt_contract_plaats_key(+)
AND c.prs_contactpersoon_key = cop.prs_contactpersoon_key(+)
AND cog.alg_locatie_key = l.alg_locatie_key(+)
AND cog.alg_gebouw_key = g.alg_gebouw_key(+)
AND cnt_contract_verwijder IS NULL;
-- eerst volgen de kopregels en de tweede union bevat de detailregels.
CREATE OR REPLACE VIEW aaxx_v_rap_imp_jaarcontract
(
HIDE_F_VOLGORDE,
GEBOUW,
BEDRIJF,
LEVNR,
BESCHRIJVING,
INGANGSDATUM,
EINDDATUM,
ORDEROMSCHRIJVING,
BEDRAG,
TERMIJNBEDRAG,
DIENST,
CONTRACTSOORT,
CONTRACTNR,
VERSIE,
REGELNR,
CONTRACTAFDELING,
CONTRACTMANAGER,
GEWIJZIGDDOOR,
STATUS
)
AS
SELECT COALESCE (fac.safe_to_number (cnt_contract_nummer_intern),
cs.ins_discipline_key * 1000 + b.prs_bedrijf_key)
* 100,
k.prs_kostenplaats_nr,
prs_bedrijf_naam,
prs_leverancier_nr,
cnt_contract_omschrijving,
TO_CHAR (ADD_MONTHS (cnt_contract_looptijd_van, 12), 'dd-mm-yyyy'),
TO_CHAR (ADD_MONTHS (cnt_contract_looptijd_tot, 12), 'dd-mm-yyyy'),
REPLACE (cnt_contract_document, '"', ' - '),
cnt_contract_kosten,
cnt_contract_termijnkosten,
prs_dienst_omschrijving,
cs.ins_discipline_omschrijving,
cnt_contract_nummer_intern,
COALESCE (fac.safe_to_number (cnt_contract_versie), 0) + 1,
NULL,
a.prs_afdeling_naam,
p2.prs_perslid_oslogin,
p.prs_perslid_oslogin,
DECODE (SIGN(SYSDATE - c.cnt_contract_looptijd_tot), -1, 'Actief', 'Niet Actief') status
FROM cnt_v_aanwezigcontract c,
prs_kostenplaats k,
prs_perslid p,
prs_perslid p2,
prs_afdeling a,
prs_dienst d,
prs_bedrijf b,
ins_tab_discipline cs
WHERE (SYSDATE BETWEEN c.cnt_contract_looptijd_van -- TRUNC(SYSDATE, 'YEAR')
AND c.cnt_contract_looptijd_tot
OR c.cnt_contract_looptijd_van >= TRUNC(SYSDATE, 'YEAR')
OR c.cnt_contract_looptijd_tot >= SYSDATE - 150 )
AND c.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND c.prs_perslid_key_beh = p.prs_perslid_key
AND c.prs_perslid_key_eig = p2.prs_perslid_key(+)
AND c.prs_afdeling_key_eig = a.prs_afdeling_key
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.prs_dienst_key = d.prs_dienst_key(+)
AND c.ins_discipline_key = cs.ins_discipline_key
UNION ALL
SELECT (COALESCE (fac.safe_to_number (cnt_contract_nummer_intern),
cs.ins_discipline_key * 1000 + b.prs_bedrijf_key)
* 100)
+ aaxx_get_cnt_cont_plaats_index (cp.cnt_contract_plaats_key),
alg_gebouw_code,
prs_bedrijf_naam,
prs_leverancier_nr,
cnt_contract_omschrijving,
TO_CHAR (ADD_MONTHS (cnt_contract_looptijd_van, 12), 'dd-mm-yyyy'),
TO_CHAR (ADD_MONTHS (cnt_contract_looptijd_tot, 12), 'dd-mm-yyyy'),
NULL,
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
c.cnt_contract_kosten,
ROUND (
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht)
* c.cnt_contract_kosten,
2)),
NULL,
prs_dienst_omschrijving,
cs.ins_discipline_omschrijving,
cnt_contract_nummer_intern,
COALESCE (fac.safe_to_number (cnt_contract_versie), 0) + 1,
aaxx_get_cnt_cont_plaats_index (cp.cnt_contract_plaats_key),
a.prs_afdeling_naam,
p2.prs_perslid_oslogin,
p.prs_perslid_oslogin,
DECODE (SIGN(SYSDATE - c.cnt_contract_looptijd_tot), -1, 'Actief', 'Niet Actief') status
FROM cnt_v_aanwezigcontract c,
prs_kostenplaats k,
prs_perslid p,
prs_perslid p2,
prs_afdeling a,
prs_dienst d,
prs_bedrijf b,
ins_tab_discipline cs,
cnt_contract_plaats cp,
alg_gebouw g,
( SELECT cnt_contract_key,
SUM (cnt_contract_plaats_gewicht)
cnt_contract_plaats_gewicht
FROM cnt_contract_plaats
WHERE cnt_contract_plaats_verwijder IS NULL
GROUP BY cnt_contract_key) cnt_gew
WHERE (SYSDATE BETWEEN c.cnt_contract_looptijd_van -- TRUNC(SYSDATE, 'YEAR')
AND c.cnt_contract_looptijd_tot
OR c.cnt_contract_looptijd_van >= TRUNC(SYSDATE, 'YEAR')
OR c.cnt_contract_looptijd_tot >= SYSDATE - 150 )
AND c.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND c.prs_perslid_key_beh = p.prs_perslid_key
AND c.prs_perslid_key_eig = p2.prs_perslid_key(+)
AND c.prs_afdeling_key_eig = a.prs_afdeling_key
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.prs_dienst_key = d.prs_dienst_key(+)
AND c.ins_discipline_key = cs.ins_discipline_key
AND c.cnt_contract_key = cp.cnt_contract_key
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
AND cp.cnt_alg_plaats_code = 'G'
AND c.cnt_contract_key = cnt_gew.cnt_contract_key;
-- rapportage om ruimteinformatie te exporteren / bewerken en importeren in Facilitor
CREATE OR REPLACE VIEW aaxx_v_rap_imp_ruimte
(
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_verdieping,
alg_ruimte_key,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_srtruimte_omschrijving,
mld_dienstniveau_omschr,
alg_ruimte_bruto_vloeropp
)
AS
SELECT alg_locatie_code,
alg_gebouw_code,
alg_verdieping_code,
alg_ruimte_key,
alg_ruimte_nr,
alg_ruimte_omschrijving,
sr.alg_srtruimte_omschrijving,
d.mld_dienstniveau_omschr,
r.alg_ruimte_bruto_vloeropp
FROM alg_ruimte r,
mld_dienstniveau d,
alg_srtruimte sr,
alg_verdieping v,
alg_gebouw g,
alg_locatie l
WHERE r.mld_dienstniveau_key = d.mld_dienstniveau_key(+)
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND r.alg_ruimte_verwijder IS NULL;
CREATE OR REPLACE VIEW aaxx_v_rap_stdmelding_gegbasis
(
fclt_f_vakgroeptype,
fclt_f_vakgroep,
fclt_f_melding,
groep,
niet_zichtbaar_fe,
acceptatietijd,
uitvoertijd,
kostensoort,
kostensoort_code,
fin_waarde,
aanwijzing_nederlands,
aanwijzing_english,
aanwijzing_deutsch,
aanwijzing_francais,
dienst,
vereist_dienst,
opdrachttype,
autoorder,
alg_niveau,
vervallen
)
AS
SELECT sd.ins_srtdiscipline_omschrijving,
d.ins_discipline_omschrijving,
m.mld_stdmelding_omschrijving,
g.mld_stdmeldinggroep_naam mld_stdmelding_groep,
DECODE (m.mld_stdmelding_notfrontend, 1, 'Ja', 'Nee'),
TO_CHAR (m.mld_stdmelding_t_accepttijd.tijdsduur)
|| m.mld_stdmelding_t_accepttijd.eenheid,
TO_CHAR (m.mld_stdmelding_t_uitvoertijd.tijdsduur)
|| m.mld_stdmelding_t_uitvoertijd.eenheid,
COALESCE (k2.prs_kostensoort_opmerking,
k.prs_kostensoort_opmerking),
COALESCE (k2.prs_kostensoort_oms, k.prs_kostensoort_oms),
COALESCE (k2.prs_kostensoort_refcode, k.prs_kostensoort_refcode),
mld_stdmelding_hint,
len.fac_locale_tekst,
lde.fac_locale_tekst,
lfr.fac_locale_tekst,
d.prs_dienst_omschrijving,
m.mld_stdmelding_vereisdienst,
ot.mld_typeopdr_omschrijving,
m.mld_stdmelding_autoorder,
alg_onrgoed_niveau,
mld_stdmelding_vervaldatum
FROM mld_stdmelding m,
mld_stdmeldinggroep g,
mld_discipline d,
ins_srtdiscipline sd,
prs_kostensoort k,
prs_kostensoort k2,
prs_dienst d,
mld_typeopdr ot,
(SELECT fac_locale_kolomkeyval, fac_locale_tekst
FROM fac_locale
WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_HINT'
AND fac_locale_lang = 'EN') len,
(SELECT fac_locale_kolomkeyval, fac_locale_tekst
FROM fac_locale
WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_HINT'
AND fac_locale_lang = 'DE') lde,
(SELECT fac_locale_kolomkeyval, fac_locale_tekst
FROM fac_locale
WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_HINT'
AND fac_locale_lang = 'FR') lfr
WHERE m.mld_stdmelding_verwijder IS NULL
AND m.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND d.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND m.prs_kostensoort_key = k2.prs_kostensoort_key(+)
AND m.prs_dienst_key = d.prs_dienst_key(+)
AND m.mld_typeopdr_key = ot.mld_typeopdr_key(+)
AND m.mld_stdmeldinggroep_key = g.mld_stdmeldinggroep_key(+)
AND len.fac_locale_kolomkeyval(+) = m.mld_stdmelding_key
AND lde.fac_locale_kolomkeyval(+) = m.mld_stdmelding_key
AND lfr.fac_locale_kolomkeyval(+) = m.mld_stdmelding_key;
CREATE OR REPLACE VIEW aaxx_v_rap_stdmelding_gegevens
(
fclt_f_vakgroeptype,
fclt_f_vakgroep,
fclt_f_melding,
groep,
niet_zichtbaar_fe,
acceptatietijd,
uitvoertijd,
kostensoort,
kostensoort_code,
fin_waarde,
aanwijzing_nederlands,
aanwijzing_english,
aanwijzing_deutsch,
aanwijzing_francais,
alg_niveau,
vervallen,
vereist_dienst,
opdrachttype,
autoorder,
fclt_f_dienst,
fclt_f_bedrijf,
fclt_f_locatie_code,
fclt_f_gebouw_code
)
AS
SELECT sd.ins_srtdiscipline_omschrijving,
d.ins_discipline_omschrijving,
m.mld_stdmelding_omschrijving,
g.mld_stdmeldinggroep_naam mld_stdmelding_groep,
DECODE (m.mld_stdmelding_notfrontend, 1, 'Ja', 'Nee'),
TO_CHAR (m.mld_stdmelding_t_accepttijd.tijdsduur)
|| m.mld_stdmelding_t_accepttijd.eenheid,
TO_CHAR (m.mld_stdmelding_t_uitvoertijd.tijdsduur)
|| m.mld_stdmelding_t_uitvoertijd.eenheid,
COALESCE (k2.prs_kostensoort_opmerking,
k.prs_kostensoort_opmerking),
COALESCE (k2.prs_kostensoort_oms, k.prs_kostensoort_oms),
COALESCE (k2.prs_kostensoort_refcode, k.prs_kostensoort_refcode),
mld_stdmelding_hint,
len.fac_locale_tekst,
lde.fac_locale_tekst,
lfr.fac_locale_tekst,
alg_onrgoed_niveau,
mld_stdmelding_vervaldatum,
m.mld_stdmelding_vereisdienst,
ot.mld_typeopdr_omschrijving,
m.mld_stdmelding_autoorder,
dl.dienst,
dl.bedrijfnaam,
dl.locatie_code,
dl.gebouw_code
FROM mld_stdmelding m,
mld_stdmeldinggroep g,
mld_discipline d,
ins_srtdiscipline sd,
prs_kostensoort k,
prs_kostensoort k2,
(SELECT d.prs_dienst_key,
prs_bedrijf_naam bedrijfnaam,
prs_dienst_omschrijving dienst,
alg_locatie_code locatie_code,
alg_gebouw_upper gebouw_code
FROM prs_v_aanwezigbedrijf b,
prs_dienst d,
alg_locatie l,
alg_gebouw g,
prs_bedrijfdienstlocatie bdl
WHERE b.prs_bedrijf_key = bdl.prs_bedrijf_key(+)
AND bdl.prs_dienst_key = d.prs_dienst_key(+)
AND bdl.alg_locatie_key = l.alg_locatie_key(+)
AND bdl.alg_gebouw_key = g.alg_gebouw_key(+)
AND COALESCE (b.prs_bedrijf_intern, 0) = 0) dl,
mld_typeopdr ot,
(SELECT fac_locale_kolomkeyval, fac_locale_tekst
FROM fac_locale
WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_HINT'
AND fac_locale_lang = 'EN') len,
(SELECT fac_locale_kolomkeyval, fac_locale_tekst
FROM fac_locale
WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_HINT'
AND fac_locale_lang = 'DE') lde,
(SELECT fac_locale_kolomkeyval, fac_locale_tekst
FROM fac_locale
WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_HINT'
AND fac_locale_lang = 'FR') lfr
WHERE m.mld_stdmelding_verwijder IS NULL
AND m.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND d.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND m.prs_kostensoort_key = k2.prs_kostensoort_key(+)
AND m.prs_dienst_key = dl.prs_dienst_key(+)
AND m.mld_typeopdr_key = ot.mld_typeopdr_key(+)
AND m.mld_stdmeldinggroep_key = g.mld_stdmeldinggroep_key(+)
AND len.fac_locale_kolomkeyval(+) = m.mld_stdmelding_key
AND lde.fac_locale_kolomkeyval(+) = m.mld_stdmelding_key
AND lfr.fac_locale_kolomkeyval(+) = m.mld_stdmelding_key;
-- Ticket RABO#66623 - Bewaking afmelding bij vervolgmeldingen (toepassing o.a. bij N-meldingen binnen Assetmanagement)
CREATE OR REPLACE VIEW aaxx_v_rap_bewaking_vervolgmld
(
VAKGROEPTYPE,
VAKGROEP,
HOOFD_MELDING_NR,
AANVRAGER,
GEKOPPELD,
HOOFD_MELDING_DATUM,
HOOFD_MELDING_STATUS,
VERVOLGMELDINGEN_AANTAL,
VERVOLGMELDINGEN,
VERVOLGMELDING_AFGEHANDELD,
OP_CONTROLELIJST
)
AS
SELECT sd.ins_srtdiscipline_omschrijving,
md.ins_discipline_omschrijving,
m.mld_melding_key,
p.prs_perslid_naam,
CASE WHEN m.mld_melding_parentkey IS NULL THEN 'nee' ELSE 'ja, via ' || TO_CHAR(m.mld_melding_key) END
gekoppeld,
m.mld_melding_datum,
s.mld_statuses_omschrijving,
v1.aantal,
v1.vervolgmeldingen,
COALESCE(v2.aantal_afgehandeld,0)
vervolgmeldingen_afgehandeld,
CASE WHEN mld_melding_status NOT IN (1,5,6)
AND COALESCE(v2.aantal_afgehandeld,0) = v1.aantal
THEN 'ja'
ELSE 'nee'
END op_controlelijst
FROM mld_melding m, mld_statuses s, prs_perslid p, mld_stdmelding sm, mld_discipline md, ins_srtdiscipline sd,
(SELECT m.mld_melding_start_key, count(*) aantal,
LISTAGG ( TO_CHAR (m.mld_melding_key)
|| ' (' || s.mld_statuses_omschrijving || ')',
chr(13) || chr(10))
WITHIN GROUP (ORDER BY m.mld_melding_key)
AS vervolgmeldingen
FROM mld_melding m, mld_statuses s
WHERE m.mld_melding_start_key IS NOT NULL
AND mld_workflowstep_key IS NULL
AND m.mld_melding_status = s.mld_statuses_key
GROUP BY m.mld_melding_start_key ) v1,
(SELECT m.mld_melding_start_key, count(*) aantal_afgehandeld
FROM mld_melding m
WHERE m.mld_melding_start_key IS NOT NULL
AND mld_workflowstep_key IS NULL
AND mld_melding_status IN (1,5,6)
GROUP BY m.mld_melding_start_key ) v2
WHERE m.mld_melding_status = s.mld_statuses_key
AND m.prs_perslid_key = p.prs_perslid_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
AND m.mld_melding_key = v1.mld_melding_start_key
AND m.mld_melding_key = v2.mld_melding_start_key (+)
;
-- Grafische thema's en labels voor de plattegrond met reserveringsinfo
CREATE OR REPLACE VIEW aaxx_v_cad_label_res_info
(
alg_ruimte_key,
waarde
)
AS
SELECT rar.alg_ruimte_key,
max( TO_CHAR (res_rsv_ruimte_van, 'HH24:MI')
|| '-'
|| TO_CHAR (res_rsv_ruimte_tot, 'HH24:MI')
|| '~[s60]host: '
|| prs_perslid_naam
|| '~[s40][b]'
|| DECODE (COALESCE (INSTR (res_rsv_ruimte_omschrijving, ' ', 15),0),
0, res_rsv_ruimte_omschrijving,
SUBSTR (res_rsv_ruimte_omschrijving, 1, INSTR (res_rsv_ruimte_omschrijving, ' ', 15)-1)
|| chr(10)
|| '~[s40][b]' || SUBSTR(res_rsv_ruimte_omschrijving, INSTR(res_rsv_ruimte_omschrijving, ' ', 15)+1, 50))
) waarde
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
res_alg_ruimte rar,
res_opstelling ro,
prs_perslid pp
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND rro.res_opstelling_key = ro.res_opstelling_key
AND rar.res_ruimte_key = rr.res_ruimte_key
AND SYSDATE BETWEEN res_rsv_ruimte_van - (1 / 96) -- kwartier
AND res_rsv_ruimte_tot
AND pp.prs_perslid_key = res_rsv_ruimte_host_key
AND (res_rsv_ruimte_bezoekers_shown IS NULL
OR res_rsv_ruimte_bezoekers_shown > 0)
GROUP BY rar.alg_ruimte_key;
CREATE OR REPLACE VIEW aaxx_v_cad_thema_resinfo
(
alg_ruimte_key,
waarde
)
AS
SELECT rar.alg_ruimte_key alg_ruimte_key,
ROUND ( (res_rsv_ruimte_tot - SYSDATE) * 24, 2) waarde
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
res_alg_ruimte rar,
res_opstelling ro
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND rro.res_opstelling_key = ro.res_opstelling_key
AND rar.res_ruimte_key = rr.res_ruimte_key
AND SYSDATE BETWEEN res_rsv_ruimte_van AND res_rsv_ruimte_tot
AND (res_rsv_ruimte_bezoekers_shown IS NULL
OR res_rsv_ruimte_bezoekers_shown > 0)
UNION
-- binnenkort aanvangende reserveringen
SELECT rar.alg_ruimte_key alg_ruimte_key,
ROUND ( (SYSDATE - res_rsv_ruimte_van) * 24, 2) waarde
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
res_alg_ruimte rar,
res_opstelling ro
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND rro.res_opstelling_key = ro.res_opstelling_key
AND rar.res_ruimte_key = rr.res_ruimte_key
AND SYSDATE BETWEEN res_rsv_ruimte_van - (1 / 24)
AND res_rsv_ruimte_tot
AND SYSDATE < res_rsv_ruimte_van
AND (res_rsv_ruimte_bezoekers_shown IS NULL
OR res_rsv_ruimte_bezoekers_shown > 0)
UNION
-- voorlopig vrije ruimte
SELECT rar.alg_ruimte_key alg_ruimte_key, 0 waarde
FROM res_ruimte_opstelling rro,
res_ruimte rr,
res_alg_ruimte rar,
res_opstelling ro
WHERE rro.res_ruimte_key = rr.res_ruimte_key
AND rro.res_opstelling_key = ro.res_opstelling_key
AND rar.res_ruimte_key = rr.res_ruimte_key
AND NOT EXISTS
(SELECT ''
FROM res_v_aanwezigrsv_ruimte rrr
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND SYSDATE BETWEEN res_rsv_ruimte_van - (1 / 24)
AND res_rsv_ruimte_tot
AND (res_rsv_ruimte_bezoekers_shown IS NULL
OR res_rsv_ruimte_bezoekers_shown > 0));
-- view voor het exporteren van een catalogus. Deze kan later via de import ingelezen worden.
CREATE OR REPLACE VIEW aaxx_v_imp_bes_artikel_sync
(
FCLT_F_CatalogusNaam,
Leverancier,
CatDatum,
Artikelnr,
Groep,
Omschrijving,
Prijs,
Eenheid,
Picture,
Orderaantal,
Tax,
DueDate,
Inkoopprijs,
Minimum,
Staffeltabel,
Wijzigdagen,
Annuleerdagen
)
AS
SELECT td.ins_discipline_omschrijving,
b.prs_bedrijf_naam,
TO_CHAR (td.ins_discipline_aanmaak, 'yyyymmdd'),
sd.bes_srtdeel_nr,
sg.bes_srtgroep_omschrijving,
sd.bes_srtdeel_omschrijving,
TO_CHAR (bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL)),
sd.bes_srtdeel_eenheid,
sd.bes_srtdeel_image,
TO_CHAR (sd.bes_srtdeel_veelvoud),
TO_CHAR (sd.bes_srtdeel_btw),
TO_CHAR (sd.bes_srtdeel_vervaldatum, 'yyyymmdd'),
TO_CHAR (bes.getsrtdeelinkprijs (sd.bes_srtdeel_key, NULL)),
NULL,
bs.bes_staffeltabel_naam,
sd.bes_srtdeel_wijzigdagen,
sd.bes_srtdeel_annuleerdagen
FROM ins_tab_discipline td,
bes_srtgroep sg,
bes_srtdeel sd,
prs_bedrijf b,
bes_staffeltabel bs
WHERE td.ins_discipline_module = 'BES'
AND td.ins_discipline_verwijder IS NULL
AND td.ins_discipline_key = sg.ins_discipline_key
AND sg.bes_srtgroep_verwijder IS NULL
AND sg.bes_srtgroep_key = sd.bes_srtgroep_key
AND sd.bes_srtdeel_verwijder IS NULL
AND sd.prs_bedrijf_key = b.prs_bedrijf_key
AND bs.bes_staffeltabel_key(+) = sd.bes_staffeltabel_key;
CREATE OR REPLACE VIEW aaxx_v_rap_kostenmutatie
(
opdracht,
vakgroeptype,
vakgroep,
mutatie,
fclt_d_datum,
fclt_f_leverancier,
persoon
)
AS
SELECT o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdracht,
(SELECT ins_srtdiscipline_omschrijving
FROM ins_srtdiscipline sd
WHERE sd.ins_srtdiscipline_key = d.ins_srtdiscipline_key)
Vakgroeptype,
ins_discipline_omschrijving vakgroep,
SUBSTR (
fac_tracking_oms,
INSTR (fac_tracking_oms, 'Totaal ex. BTW:'),
DECODE (
INSTR (fac_tracking_oms,
CHR (10),
INSTR (fac_tracking_oms, 'Totaal ex. BTW:')),
0,
10000,
INSTR (fac_tracking_oms,
CHR (10),
INSTR (fac_tracking_oms, 'Totaal ex. BTW:')))
- INSTR (fac_tracking_oms, 'Totaal ex. BTW:'))
oud_nieuw,
TO_CHAR (fac_tracking_datum, 'dd-mm-yyyy') datum,
prs_bedrijf_naam leverancier,
prs_perslid_naam_full persoon
FROM fac_tracking t,
mld_opdr o,
mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
prs_v_perslid_fullnames_all pf,
prs_bedrijf b
WHERE fac_tracking_oms LIKE '%Totaal ex. BTW:%'
AND t.fac_tracking_refkey = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND t.prs_perslid_key = pf.prs_perslid_key(+)
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key(+)
AND t.fac_tracking_datum BETWEEN mld.getopdrachtstatusdate (
o.mld_opdr_key,
6) -- afgemeld
AND COALESCE (
mld.getopdrachtstatusdate (
o.mld_opdr_key,
9), -- afgerond
SYSDATE);
CREATE OR REPLACE VIEW aaxx_v_rap_bedrijf_orderadres
(
fclt_f_bedrijf,
fclt_f_plaats,
fclt_f_nummer,
fclt_f_email,
fclt_f_type,
fclt_f_orderadres,
stylesheet
)
AS
SELECT b.prs_bedrijf_naam,
b.prs_bedrijf_bezoek_plaats,
b.prs_leverancier_nr,
b.prs_bedrijf_email,
DECODE (a.prs_bedrijfadres_type,
'C', 'Contract',
'B', 'Bestelling',
'Opdracht')
|| ' '
|| ot.mld_typeopdr_omschrijving
TYPE,
a.prs_bedrijfadres_url,
a.prs_bedrijfadres_xsl
FROM prs_bedrijf b, prs_bedrijfadres a, mld_typeopdr ot
WHERE b.prs_bedrijf_key = a.prs_bedrijf_key
AND b.prs_bedrijf_verwijder IS NULL
AND NVL (b.prs_bedrijf_intern, 0) <> 1
AND a.mld_typeopdr_key = ot.mld_typeopdr_key(+);
-- view om offertestatus in dashbord te tonen
-- functionaliteit overgenomen uit mld.inc
CREATE OR REPLACE VIEW aaxx_v_rap_offerte_status
AS
SELECT m.melder_key,
m.melder,
u.*,
g.prs_perslid_key_verantw opdracht_gebouw_verantw_key,
m.kostensoort kostensoort,
subproductgroepgroep,
DECODE (
COALESCE (na.aantal, 0),
1,
'Offerte geaccepteerd',
DECODE (COALESCE (nta.aantal, 0),
0, 'Niet opgelost',
'Offerte acceptatie'))
offerte_status,
(CASE
WHEN mo.mld_opdr_flag>0 THEN Lcl.L('lcl_opdr_flag' || mo.mld_opdr_flag)
ELSE ''
END) vlag,
(SELECT ok.waarde_n
FROM mld_v_udr_opdrachtkenmerk_cnd ok
WHERE ok.opdracht_key = u.opdracht_key AND ok.kenmerk = 'Offerte bedrag'
) Offertebedrag,-- Op naam 'Offerte bedrag' ipv Key ivm gebruik afwijkende keys in de diverse HeyDayomgevingen
(SELECT fac.safe_to_number(kw.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding kw, mld_kenmerk km, mld_srtkenmerk sk
WHERE kw.mld_melding_key = m.melding_key AND kw.mld_kenmerk_key = km.mld_kenmerk_key
AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_upper = 'PROJECT LEIDER'
AND sk.mld_srtkenmerk_kenmerktype = 'S') projectleider_key,
(SELECT p.prs_perslid_naam
FROM mld_kenmerkmelding kw, mld_kenmerk km, mld_srtkenmerk sk, prs_perslid p
WHERE kw.mld_melding_key = m.melding_key AND kw.mld_kenmerk_key = km.mld_kenmerk_key
AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_upper = 'PROJECT LEIDER'
AND sk.mld_srtkenmerk_kenmerktype = 'S'
AND fac.safe_to_number (kw.mld_kenmerkmelding_waarde) = p.prs_perslid_key) projectleider
FROM mld_v_udr_opdracht u,
mld_opdr mo,
alg_gebouw g,
mld_v_udr_melding m,
ins_tab_discipline d,
( SELECT o.mld_melding_key, COUNT (o.mld_statusopdr_key) aantal
FROM mld_opdr o
WHERE o.mld_statusopdr_key = 6
AND o.mld_opdr_key >
COALESCE (
(SELECT MAX (o1.mld_opdr_key)
FROM mld_opdr o1, mld_typeopdr mo1
WHERE o1.mld_typeopdr_key =
mo1.mld_typeopdr_key
AND mo1.mld_typeopdr_isofferte = 0
AND o1.mld_melding_key = o.mld_melding_key),
0)
GROUP BY o.mld_melding_key) nta,
( SELECT o.mld_melding_key, COUNT (o.mld_statusopdr_key) aantal
FROM mld_opdr o
WHERE o.mld_statusopdr_key = 9
AND o.mld_opdr_key >
COALESCE (
(SELECT MAX (o1.mld_opdr_key)
FROM mld_opdr o1, mld_typeopdr mo1
WHERE o1.mld_typeopdr_key =
mo1.mld_typeopdr_key
AND mo1.mld_typeopdr_isofferte = 0
AND o1.mld_melding_key = o.mld_melding_key),
0)
GROUP BY o.mld_melding_key) na
WHERE u.opdracht_gebouwcode = g.alg_gebouw_code
AND u.melding_key = m.melding_key
AND u.opdracht_key = mo.mld_opdr_key
AND m.fclt_3d_discipline_key = d.ins_discipline_key
AND d.ins_discipline_verwijder IS NULL
AND u.melding_key = na.mld_melding_key(+)
AND u.melding_key = nta.mld_melding_key(+)
AND (u.opdracht_type = 'RFQ' OR u.opdracht_type = 'Project RFQ') ;
CREATE OR REPLACE VIEW aaxx_v_rap_trace_uitvoerder
(
fclt_x_fm,
fclt_x_tfm,
html_opdracht,
fclt_f_district,
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_bedrijf,
opdracht_omschrijving,
einddatum,
t,
m,
e,
notitie_datum,
notitie_omschrijving
)
AS
SELECT COALESCE (p.prs_perslid_naam_full, 'Onbekend') fmer, -- verantwoordelijke FMer
COALESCE (
(SELECT fac.getdomeinwaarde (fac_kenmerkdomein_key,
alg_onrgoedkenmerk_waarde)
FROM alg_kenmerk k, alg_onrgoedkenmerk ogk
WHERE k.alg_kenmerk_key = ogk.alg_kenmerk_key
AND ogk.alg_onrgoed_key = g.alg_gebouw_key
AND k.alg_kenmerk_key =
DECODE (aaxx_get_user,
'SABIC', 1180,
-1)),
'Onbekend'
)
tfmer, -- verantwoordelijke Technisch FMer
'<a onclick=''FcltMgr.openDetail("Appl/MLD/mld_opdr.asp?urole=bo&'
|| 'opdr_key='
|| o.mld_opdr_key
|| ' ", "Opdracht '
|| o.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
|| '")''>'
|| o.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
|| '</a>'
opdracht,
d.alg_district_omschrijving,
l.alg_locatie_omschrijving,
g.alg_gebouw_code||'-'||g.alg_gebouw_naam,
prs_bedrijf_naam,
mld_opdr_omschrijving,
mld_opdr_einddatum,
(SELECT COUNT ( * )
FROM mld_opdr_note n3
WHERE n3.mld_opdr_key = o.mld_opdr_key
AND UPPER (n3.mld_opdr_note_omschrijving) LIKE '%#T%')
nt,
(SELECT COUNT ( * )
FROM mld_opdr_note n3
WHERE n3.mld_opdr_key = o.mld_opdr_key
AND UPPER (n3.mld_opdr_note_omschrijving) LIKE '%#M%')
nm,
(SELECT COUNT ( * )
FROM mld_opdr_note n3
WHERE n3.mld_opdr_key = o.mld_opdr_key
AND UPPER (n3.mld_opdr_note_omschrijving) LIKE '%#E%')
ne,
lastnote.mld_opdr_note_aanmaak,
lastnote.mld_opdr_note_omschrijving omschrijving
FROM mld_opdr o,
mld_melding m,
mld_stdmelding std,
prs_bedrijf b,
alg_v_onroerendgoed alg,
alg_gebouw g,
alg_locatie l,
alg_district d,
prs_v_perslid_fullnames_all p,
(SELECT n.mld_opdr_key,
mld_opdr_note_aanmaak,
mld_opdr_note_omschrijving
FROM mld_opdr_note n
WHERE ( UPPER (n.mld_opdr_note_omschrijving) LIKE '%#T%'
OR UPPER (n.mld_opdr_note_omschrijving) LIKE '%#M%'
OR UPPER (n.mld_opdr_note_omschrijving) LIKE '%#E%')
AND NOT EXISTS
(SELECT mld_opdr_note_key
FROM mld_opdr_note n2
WHERE n2.mld_opdr_note_aanmaak >
n.mld_opdr_note_aanmaak
AND n2.mld_opdr_key = n.mld_opdr_key))
note,
(SELECT n.mld_opdr_key,
mld_opdr_note_aanmaak,
mld_opdr_note_omschrijving
FROM mld_opdr_note n
WHERE NOT EXISTS
(SELECT mld_opdr_note_key
FROM mld_opdr_note n2
WHERE n2.mld_opdr_note_aanmaak >
n.mld_opdr_note_aanmaak
AND n2.mld_opdr_key = n.mld_opdr_key))
lastnote
WHERE o.mld_opdr_einddatum < SYSDATE
AND o.mld_opdr_key = note.mld_opdr_key(+)
AND o.fac_activiteit_key IS NULL
AND o.mld_opdr_key = lastnote.mld_opdr_key(+)
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_stdmelding_slabewaken = 1
AND o.mld_statusopdr_key IN (5, 8) -- Toegekend + Geaccepteerd
AND b.prs_bedrijf_key = o.mld_uitvoerende_keys
AND m.mld_melding_key = o.mld_melding_key
AND g.prs_perslid_key_verantw = p.prs_perslid_key(+)
AND m.mld_alg_onroerendgoed_keys = alg.alg_onroerendgoed_keys
AND alg.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND (note.mld_opdr_note_aanmaak IS NULL
OR note.mld_opdr_note_aanmaak < SYSDATE - 7);
CREATE OR REPLACE VIEW aaxx_v_rap_trace_uitv_z_tfm
(
fclt_x_fm,
html_opdracht,
fclt_f_district,
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_bedrijf,
opdracht_omschrijving,
einddatum,
t,
m,
e,
notitie_datum,
notitie_omschrijving
)
AS
SELECT fclt_x_fm,
html_opdracht,
fclt_f_district,
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_bedrijf,
opdracht_omschrijving,
einddatum,
t,
m,
e,
notitie_datum,
notitie_omschrijving
FROM aaxx_v_rap_trace_uitvoerder;
/* Formatted on 19-7-2016 18:06:24 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW aaxx_v_rap_catering_export
(
reservering,
fclt_f_afdelingscode,
afdelings_omschrijving,
boekingsdatum,
afmelddatum,
fclt_f_periode,
aanvrager,
gebouw,
aantal,
artikel,
btw,
totaal
)
AS
SELECT rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
reservering,
k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving,
rra.res_rsv_artikel_levering,
rra.res_rsv_artikel_afgemeld,
TO_CHAR (ADD_MONTHS (rra.res_rsv_artikel_verwerkt, -1), 'yyyy-mm')
periode,
pf.prs_perslid_naam_full,
g.alg_gebouw_code,
rra.res_rsv_artikel_aantal,
ra.res_artikel_omschrijving,
ra.res_artikel_btw,
rra.res_rsv_artikel_prijs
FROM res_rsv_artikel rra,
res_rsv_ruimte rrr,
prs_kostenplaats k,
prs_perslid p,
alg_gebouw g,
prs_afdeling a,
prs_v_perslid_fullnames_all pf,
res_artikel ra,
( SELECT res_rsv_ruimte_key, MAX (alg_gebouw_key) alg_gebouw_key
FROM (SELECT rrr.res_rsv_ruimte_key,
(SELECT alg_gebouw_key
FROM alg_verdieping v, alg_ruimte r
WHERE v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = COALESCE (r2ar.alg_ruimte_key, rrr.alg_ruimte_key))
alg_gebouw_key
FROM res_v_rsv_ruimte_2_alg_ruimte r2ar,
res_v_aanwezigrsv_ruimte rrr
WHERE rrr.res_rsv_ruimte_key = r2ar.res_rsv_ruimte_key(+))
GROUP BY res_rsv_ruimte_key) rg
WHERE rra.res_status_bo_key = 6
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND rra.res_artikel_key = ra.res_artikel_key
AND rrr.res_rsv_ruimte_key = rg.res_rsv_ruimte_key
AND rg.alg_gebouw_key = g.alg_gebouw_key(+);
CREATE OR REPLACE VIEW aaxx_v_rap_login_user (hide_f_datum, fclt_d_datum, aantal)
AS
SELECT trunc(sysdate)-trunc(pl.login_datum),
TO_CHAR (pl.login_datum, 'dd-mm-yyyy'),
COUNT (prs_perslid_key)
FROM aaxx_perslid_login pl
GROUP BY trunc(sysdate)-trunc(pl.login_datum),
TO_CHAR (pl.login_datum, 'dd-mm-yyyy');
CREATE OR REPLACE VIEW aaxx_v_rap_errorlog
(
HIDE_F_IMP_LOG_DATUM,
FCLT_F_APPLICATIE,
FCLT_F_DATUM,
TIJDSTIP,
FCLT_F_NIVEAU,
FCLT_F_OMSCHRIJVING,
FCLT_F_HINT
)
AS
SELECT imp_log_datum hide_f_imp_log_datum,
imp_log_applicatie,
TO_CHAR (imp_log_datum, 'YYYYMMDD') fclt_f_datum,
TO_CHAR (imp_log_datum, 'HH24:MI:SS') tijdstip,
DECODE (imp_log_status,
'F', 'Fataal',
'E', 'Error',
'W', 'Waarschuwing',
'I', 'Informatief',
'-')
fclt_f_niveau,
imp_log_omschrijving fclt_f_omschrijving,
imp_log_hint fclt_f_hint
FROM imp_log;
CREATE OR REPLACE VIEW aaxx_v_rap_lang_stdmelding_oms
(
key,
vakgroeptype,
vakgroep,
melding_omschrijving,
en,
de
)
AS
SELECT mld_stdmelding_key,
ins_srtdiscipline_prefix,
ins_discipline_omschrijving,
mld_stdmelding_omschrijving,
(SELECT fac_locale_tekst
FROM fac_locale
WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_OMSCHRIJVING'
AND fac_locale_lang = 'EN'
AND fac_locale_kolomkeyval = std.mld_stdmelding_key)
EN,
(SELECT fac_locale_tekst
FROM fac_locale
WHERE fac_locale_kolomnaam = 'MLD_STDMELDING_OMSCHRIJVING'
AND fac_locale_lang = 'DE'
AND fac_locale_kolomkeyval = std.mld_stdmelding_key)
DE
FROM ins_tab_discipline d, mld_stdmelding std, ins_srtdiscipline sd
WHERE d.ins_discipline_key = std.mld_ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)
AND ins_discipline_verwijder IS NULL
AND mld_stdmelding_verwijder IS NULL;
CREATE OR REPLACE VIEW aaxx_v_rap_lang_discipline_oms
(
key,
fclt_f_module,
vakgroeptype,
vakgroep,
en,
de
)
AS
SELECT ins_discipline_key,
ins_discipline_module,
ins_srtdiscipline_prefix,
ins_discipline_omschrijving,
(SELECT fac_locale_tekst
FROM fac_locale
WHERE fac_locale_kolomnaam = 'INS_DISCIPLINE_OMSCHRIJVING'
AND fac_locale_lang = 'EN'
AND fac_locale_kolomkeyval = d.ins_discipline_key)
EN,
(SELECT fac_locale_tekst
FROM fac_locale
WHERE fac_locale_kolomnaam = 'INS_DISCIPLINE_OMSCHRIJVING'
AND fac_locale_lang = 'DE'
AND fac_locale_kolomkeyval = d.ins_discipline_key)
DE
FROM ins_tab_discipline d, ins_srtdiscipline sd
WHERE d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)
AND ins_discipline_verwijder IS NULL;
-------------------------------------------------------------------------------
-- IMPORTFUNCTIE - MLD_LANG
-------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE aaxx_import_mld_lang (
p_import_key IN NUMBER)
AS
CURSOR c_cursor
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
v_newline VARCHAR2 (1000); -- Import line
v_field VARCHAR2 (100); -- Import field
v_fielddelimitor VARCHAR2 (1); -- Field seperator
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_skipfield VARCHAR2 (100);
v_dummy VARCHAR2 (1000);
-- De importvelden
v_vakgroeptype_nl VARCHAR2 (200);
v_vakgroeptype_prefix VARCHAR2 (200);
v_vakgroep_nl VARCHAR2 (200);
v_stdmelding_nl VARCHAR2 (200);
v_stdmelding_hint_nl VARCHAR2 (4000);
v_vakgroeptype_en VARCHAR2 (200);
v_vakgroep_en VARCHAR2 (200);
v_stdmelding_en VARCHAR2 (200);
v_stdmelding_hint_en VARCHAR2 (4000);
header_found BOOLEAN;
BEGIN
-- Init
header_found := FALSE;
v_fielddelimitor := ';';
-- Clear my previous imported rows
DELETE FROM aaxx_imp_mld_lang;
FOR rec1 IN c_cursor
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
IF SUBSTR (v_newline, 1, 3) = '?'
THEN
-- EF BB BF aangetroffen
fac.imp_writelog (p_import_key,
'W',
'Byte Order Mark aangetroffen',
'Bestand heeft onbehandeld UTF-8 formaat.');
v_newline := SUBSTR (v_newline, 4);
END IF;
--vakgroeptype NL;prefix;plaatsgegevens;objectgegevens;bestelgegevens;vakgroep NL;melding NL;aanwijzingen (NL)
fac.imp_getfield (v_newline, v_fielddelimitor, v_vakgroeptype_nl);
fac.imp_getfield (v_newline, v_fielddelimitor, v_vakgroeptype_prefix);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_vakgroep_nl);
fac.imp_getfield (v_newline, v_fielddelimitor, v_stdmelding_nl);
fac.imp_getfield (v_newline, v_fielddelimitor, v_stdmelding_hint_nl);
-- ;groep;kostensoort;acceptatietijd;uitvoertijd;uitvoertijd kritiek;uitvoertijd hoog;uitvoertijd laag;streeftijd;directklaar;dienst;Vakgroeptype EN;vakgroep EN;melding EN;aanwijzingen EN;
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_vakgroeptype_en);
fac.imp_getfield (v_newline, v_fielddelimitor, v_vakgroep_en);
fac.imp_getfield (v_newline, v_fielddelimitor, v_stdmelding_en);
fac.imp_getfield (v_newline, v_fielddelimitor, v_stdmelding_hint_en);
-- Skip until a valid header is found
IF UPPER (v_vakgroeptype_nl) = 'VAKGROEPTYPE NL'
AND UPPER (v_vakgroeptype_prefix) = 'PREFIX'
AND UPPER (v_vakgroep_nl) = 'VAKGROEP NL'
AND UPPER (v_stdmelding_nl) = 'MELDING NL'
AND UPPER (v_stdmelding_hint_nl) = 'AANWIJZINGEN (NL)'
AND UPPER (v_vakgroeptype_en) = 'VAKGROEPTYPE EN'
AND UPPER (v_vakgroep_en) = 'VAKGROEP EN'
AND UPPER (v_stdmelding_en) = 'MELDING EN'
AND UPPER (v_stdmelding_hint_en) = 'AANWIJZINGEN EN'
THEN
-- Sla de kopregel over.
header_found := TRUE;
ELSIF (header_found)
THEN
INSERT INTO aaxx_imp_mld_lang ( ins_srtdiscipline_omschrijving,
ins_srtdiscipline_prefix,
ins_discipline_omschrijving,
mld_stdmelding_omschrijving,
mld_stdmelding_hint,
ins_srtdiscipline_omschr_en,
ins_discipline_omschrijving_en,
mld_stdmelding_omschrijving_en,
mld_stdmelding_hint_en)
VALUES (SUBSTR (v_vakgroeptype_nl, 1, 30),
SUBSTR (v_vakgroeptype_prefix, 1, 3),
SUBSTR (v_vakgroep_nl, 1, 30),
SUBSTR (v_stdmelding_nl, 1, 60),
SUBSTR (v_stdmelding_hint_nl, 1, 1000),
SUBSTR (v_vakgroeptype_en, 1, 30),
SUBSTR (v_vakgroep_en, 1, 30),
SUBSTR (v_stdmelding_en, 1, 60),
SUBSTR (v_stdmelding_hint_en, 1, 1000));
ELSE -- geen geldige header aangetroffen
IF rec1.fac_imp_file_index = 1
THEN
fac.imp_writelog (p_import_key,
'I',
'Aangetroffen header',
SUBSTR( v_vakgroeptype_nl || '-1-' ||
v_vakgroeptype_prefix || '-2-' ||
v_vakgroep_nl || '-3-' ||
v_stdmelding_nl || '-4-' ||
v_stdmelding_hint_nl || '-5-' ||
v_vakgroeptype_en || '-6-' ||
v_vakgroep_en || '-7-' ||
v_stdmelding_en || '-8-' ||
v_stdmelding_hint_en,1,1000));
END IF;
END IF;
COMMIT;
END;
END LOOP;
IF NOT header_found
THEN
fac.imp_writelog (
p_import_key,
'E',
'Geen geldige header aangetroffen',
'Bestand is geen geldig MLD vertaling importbestand.');
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
SUBSTR (v_errormsg, 1, 1000),
'');
-- maak de importtabel leeg om te voorkomen dat er halve bestanden ingelezen worden.
DELETE FROM aaxx_imp_mld_lang;
END;
/
CREATE OR REPLACE PROCEDURE aaxx_update_mld_lang (
p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT *
FROM aaxx_imp_mld_lang
WHERE ins_srtdiscipline_omschrijving IS NOT NULL;
v_srtdiscipline_key NUMBER;
v_discipline_key NUMBER;
v_stdmelding_key NUMBER;
v_errormsg VARCHAR (1000);
v_error_hint VARCHAR (1000);
v_tekst VARCHAR (300);
oracle_err_mes VARCHAR2 (150);
oracle_err_num VARCHAR2 (150);
currentversion fac_module.fac_module_version%TYPE;
PROCEDURE update_locale(p_kolom IN VARCHAR2, p_key IN NUMBER, p_lang IN VARCHAR, p_value IN VARCHAR)
AS
BEGIN
BEGIN
SELECT fac_locale_tekst
INTO v_tekst
FROM fac_locale
WHERE UPPER(fac_locale_kolomnaam) = UPPER(p_kolom)
AND fac_locale_kolomkeyval = p_key
AND UPPER(fac_locale_lang) = UPPER(p_lang);
EXCEPTION WHEN NO_DATA_FOUND
THEN
INSERT INTO fac_locale (fac_locale_kolomkeyval, fac_locale_kolomnaam, fac_locale_lang, fac_locale_tekst)
VALUES (p_key, UPPER(p_kolom), UPPER(p_lang), SUBSTR(p_value,1,300));
RETURN;
END;
UPDATE fac_locale SET fac_locale_tekst = SUBSTR(p_value,1,300)
WHERE UPPER(fac_locale_kolomnaam) = UPPER(p_kolom)
AND fac_locale_kolomkeyval = p_key
AND UPPER(fac_locale_lang) = UPPER(p_lang);
RETURN;
END;
BEGIN
SELECT MAX (fac_module_version) INTO currentversion FROM fac_module;
fac.imp_writelog (
p_import_key,
'I',
'AA-FM Melding vertaling import version '
|| currentversion,
'$Revision$');
FOR rec IN c
LOOP
BEGIN
v_errormsg := 'Kan srtdiscipline [' || rec.ins_srtdiscipline_omschrijving || '] niet vinden.';
SELECT ins_srtdiscipline_key
INTO v_srtdiscipline_key
FROM ins_srtdiscipline
WHERE ins_srtdiscipline_verwijder IS NULL
AND TRIM(UPPER (ins_srtdiscipline_omschrijving)) =
TRIM(UPPER (rec.ins_srtdiscipline_omschrijving));
v_errormsg := 'Kan discipline [' || rec.ins_srtdiscipline_omschrijving || '-' || rec.ins_discipline_omschrijving || '] niet vinden.';
SELECT ins_discipline_key
INTO v_discipline_key
FROM ins_tab_discipline
WHERE ins_discipline_verwijder IS NULL
AND ins_srtdiscipline_key = v_srtdiscipline_key
AND TRIM(UPPER (ins_discipline_omschrijving)) = TRIM(UPPER (rec.ins_discipline_omschrijving));
v_errormsg := 'Kan stdmelding [' || rec.ins_srtdiscipline_omschrijving || '-' || rec.ins_discipline_omschrijving || '-' || rec.mld_stdmelding_omschrijving || '] niet vinden.';
SELECT mld_stdmelding_key
INTO v_stdmelding_key
FROM mld_stdmelding
WHERE mld_stdmelding_verwijder IS NULL
AND mld_ins_discipline_key = v_discipline_key
AND TRIM(UPPER (mld_stdmelding_omschrijving)) = TRIM(UPPER (rec.mld_stdmelding_omschrijving));
UPDATE mld_stdmelding SET mld_stdmelding_hint = rec.mld_stdmelding_hint WHERE mld_stdmelding_key = v_stdmelding_key;
update_locale('INS_SRTDISCIPLINE_OMSCHRIJVING', v_srtdiscipline_key, 'EN', rec.ins_srtdiscipline_omschr_en);
update_locale('INS_DISCIPLINE_OMSCHRIJVING', v_discipline_key, 'EN', rec.ins_discipline_omschrijving_en);
update_locale('MLD_STDMELDING_OMSCHRIJVING', v_stdmelding_key, 'EN', rec.mld_stdmelding_omschrijving_en);
update_locale('MLD_STDMELDING_HINT', v_stdmelding_key, 'EN', rec.mld_stdmelding_hint_en);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
v_error_hint := v_errormsg;
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,
'E',
v_errormsg,
v_error_hint);
COMMIT;
END;
END LOOP;
END;
/
-------------------------------------------------------------------------------
-- RAPPORTAGES Projecturen
-- AAIT#22843 en AADS#22701
-------------------------------------------------------------------------------
-- Alle project-meldingen (srtdisc_key = 1)
CREATE OR REPLACE VIEW aaxx_v_project_boom_nodes
AS
SELECT vt.ins_srtdiscipline_prefix,
m.mld_melding_key,
m.mld_melding_start_key,
vg.ins_discipline_omschrijving,
sm.mld_stdmelding_omschrijving,
m.mld_melding_status
FROM mld_melding m,
mld_stdmelding sm,
mld_discipline vg,
ins_srtdiscipline vt
WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key
AND vg.ins_discipline_key = sm.mld_ins_discipline_key
AND vt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
AND vt.ins_srtdiscipline_omschrijving = 'Project';
-- Boomstructuur van projectmeldingen (vgl prs_v_afdelingsboom)
CREATE OR REPLACE VIEW aaxx_v_project_boom
(
niveau,
mld_melding_key,
mld_melding_key1,
mld_melding_key2,
mld_melding_key3,
mld_melding_key4
)
AS
SELECT '1' Niveau,
m1.mld_melding_key,
m1.mld_melding_key,
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM aaxx_v_project_boom_nodes m1
WHERE m1.mld_melding_start_key IS NULL
AND m1.mld_melding_status IN (2, 3, 4, 7)
UNION
SELECT '2' Niveau,
m2.mld_melding_key,
m1.mld_melding_key,
m2.mld_melding_key,
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM aaxx_v_project_boom_nodes m1,
aaxx_v_project_boom_nodes m2
WHERE m2.mld_melding_start_key = m1.mld_melding_key
AND m1.mld_melding_start_key IS NULL
AND m2.mld_melding_status IN (2, 3, 4, 7)
UNION
SELECT '3' Niveau,
m3.mld_melding_key,
m1.mld_melding_key,
m2.mld_melding_key,
m3.mld_melding_key,
TO_NUMBER (NULL)
FROM aaxx_v_project_boom_nodes m1,
aaxx_v_project_boom_nodes m2,
aaxx_v_project_boom_nodes m3
WHERE m3.mld_melding_start_key = m2.mld_melding_key
AND m2.mld_melding_start_key = m1.mld_melding_key
AND m1.mld_melding_start_key IS NULL
AND m3.mld_melding_status IN (2, 3, 4, 7)
UNION
SELECT '4' Niveau,
m4.mld_melding_key,
m1.mld_melding_key,
m2.mld_melding_key,
m3.mld_melding_key,
m4.mld_melding_key
FROM aaxx_v_project_boom_nodes m1,
aaxx_v_project_boom_nodes m2,
aaxx_v_project_boom_nodes m3,
aaxx_v_project_boom_nodes m4
WHERE m4.mld_melding_start_key = m3.mld_melding_key
AND m3.mld_melding_start_key = m2.mld_melding_key
AND m2.mld_melding_start_key = m1.mld_melding_key
AND m1.mld_melding_start_key IS NULL
AND m4.mld_melding_status IN (2, 3, 4, 7);
-- Rapportageview
CREATE OR REPLACE VIEW aaxx_v_rap_projectboom
AS
SELECT pb.mld_melding_key1||pb.mld_melding_key2||pb.mld_melding_key3||pb.mld_melding_key4||'/'||o.mld_opdr_bedrijfopdr_volgnr hide_f_srt,
pbn.ins_srtdiscipline_prefix || pb.mld_melding_key1
fclt_f_hoofdproject,
CASE
WHEN pb.mld_melding_key2 IS NULL THEN NULL
ELSE pbn.ins_srtdiscipline_prefix || pb.mld_melding_key2
END
deelproject1,
CASE
WHEN pb.mld_melding_key3 IS NULL THEN NULL
ELSE pbn.ins_srtdiscipline_prefix || pb.mld_melding_key3
END
deelproject2,
CASE
WHEN pb.mld_melding_key4 IS NULL THEN NULL
ELSE pbn.ins_srtdiscipline_prefix || pb.mld_melding_key4
END
deelproject3,
m.mld_melding_key hide_f_melding_key,
km.mld_kenmerkmelding_waarde fclt_f_projectnaam,
'<a class="details" onclick=''FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=bo&'
|| 'mld_key='
|| m.mld_melding_key
|| '")''>'
|| pbn.ins_srtdiscipline_prefix || m.mld_melding_key
|| '</a>'
html_meldingnr,
pf.prs_perslid_naam_full fclt_x_projectmedewerker,
CASE
WHEN o.mld_opdr_bedrijfopdr_volgnr IS NULL
THEN
NULL
ELSE
'<a class="details" onclick=''FcltMgr.openDetail("appl/mld/mld_opdr.asp?urole=bo&'
|| 'opdr_key='
|| o.mld_opdr_key
|| '")''>'
|| htf.escape_sc(pf.prs_perslid_naam_full)
|| '</a>'
END
html_projectmedewerker,
so.mld_statusopdr_omschrijving statusopdr,
o.mld_opdr_uren weekplanning,
(SELECT SUM (mld_opdr_uren_besteed)
FROM mld_opdr_uren
WHERE mld_opdr_key = o.mld_opdr_key)
uren_besteed
FROM aaxx_v_project_boom pb,
aaxx_v_project_boom_nodes pbn,
mld_melding m,
(SELECT *
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 55) km,
(SELECT *
FROM mld_opdr
WHERE mld_typeopdr_key = 7) o,
mld_statusopdr so,
prs_v_perslid_fullnames_all pf
WHERE m.mld_melding_key = pb.mld_melding_key
AND pbn.mld_melding_key = pb.mld_melding_key
AND km.mld_melding_key(+) = m.mld_melding_key
AND o.mld_melding_key(+) = m.mld_melding_key
AND pf.prs_perslid_key(+) = o.mld_uitvoerende_keys
AND so.mld_statusopdr_key(+) = o.mld_statusopdr_key
AND o.mld_statusopdr_key(+) != 1;
-- rapportage tbv SAS70. Verificatie van kosten in FACILITOR tov de BudgetTracker.
CREATE OR REPLACE PACKAGE AAXX_RAP
AS
TYPE t_cursor IS REF CURSOR;
PROCEDURE kostenoverzicht (user_key IN NUMBER,
p_datum_van IN VARCHAR2,
p_datum_tot IN VARCHAR2,
p_cursor OUT t_cursor);
END;
/
CREATE OR REPLACE PACKAGE BODY AAXX_RAP
AS
--
--Rapportages
--
PROCEDURE kostenoverzicht (user_key IN NUMBER,
p_datum_van IN VARCHAR2, -- Let wel: formaat '13-05-2005'
p_datum_tot IN VARCHAR2,
p_cursor OUT t_cursor)
AS
v_datum_van DATE;
v_datum_tot DATE;
v_alg_level_read NUMBER;
BEGIN
v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');
OPEN p_cursor FOR
SELECT soort,
(SELECT prs_kostensoort_oms
FROM prs_kostensoort ks
WHERE v.prs_kostensoort_key = ks.prs_kostensoort_key)
kostensoort,
(SELECT prs_kostenplaats_omschrijving
FROM prs_kostenplaats kp
WHERE v.prs_kostenplaats_key = kp.prs_kostenplaats_key)
kostenplaats,
(SELECT g.alg_gebouw_code||'-'||g.alg_gebouw_naam
FROM alg_gebouw g
WHERE v.alg_gebouw_key = g.alg_gebouw_key)
gebouw,
SUM (opdr_kosten) opdr_kosten,
SUM (fin_factuur_totaal) fin_kosten
FROM (SELECT 'Opdracht' soort,
prs_kostensoort_key,
prs_kostenplaats_key,
alg_gebouw_key,
opdr_kosten,
fin_factuur_totaal
FROM ( SELECT COALESCE (
f.prs_kostensoort_key,
COALESCE (std.prs_kostensoort_key,
d.prs_kostensoort_key))
prs_kostensoort_key,
o.prs_kostenplaats_key,
alg_gebouw_key,
o.mld_opdr_kosten opdr_kosten,
SUM (f.fin_factuur_totaal) fin_factuur_totaal
FROM mld_opdr o,
mld_typeopdr t,
mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
aaxx_v_aanwezigfactuur f,
alg_v_onroerendgoed_gegevens og
WHERE o.mld_typeopdr_key = t.mld_typeopdr_key
AND t.mld_typeopdr_omschrijving = 'Workorder'
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND o.mld_opdr_key = f.mld_opdr_key(+)
AND m.mld_alg_onroerendgoed_keys =
og.alg_onroerendgoed_keys(+)
AND o.mld_opdr_datumbegin BETWEEN v_datum_van
AND v_datum_tot
GROUP BY f.prs_kostensoort_key,
std.prs_kostensoort_key,
d.prs_kostensoort_key,
o.prs_kostenplaats_key,
alg_gebouw_key,
o.mld_opdr_kosten
UNION ALL
SELECT COALESCE (f.prs_kostensoort_key,
d.prs_kostensoort_key)
prs_kostensoort_key,
k.prs_kostenplaats_key,
g.alg_gebouw_key,
(SELECT SUM(bes_bestelopdr_item_aantal
* bes_bestelopdr_item_prijs)
FROM bes_bestelopdr_item boi
WHERE boi.bes_bestelopdr_key = bo.bes_bestelopdr_key)
opdr_prijs,
SUM (f.fin_factuur_totaal)
FROM bes_bestelling b,
prs_kostenplaats k,
aaxx_v_aanwezigfactuur f,
mld_adres ma,
bes_bestelopdr bo,
ins_tab_discipline d,
alg_gebouw g,
alg_locatie l,
(SELECT DISTINCT
bes_bestelling_key, bes_bestelopdr_key
FROM bes_bestelling_item bi,
bes_bestelopdr_item boi
WHERE bi.bes_bestelopdr_item_key =
boi.bes_bestelopdr_item_key) bes_opdr,
(SELECT DISTINCT
bes_bestelling_key, ins_discipline_key
FROM bes_bestelling_item bi,
bes_srtdeel sd,
bes_srtgroep sg
WHERE bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key)
cat,
( SELECT mld_adres_key, MAX (alg_gebouw_key) alg_gebouw_key
FROM (SELECT ma.mld_adres_key,
DECODE (
aaxx_get_user,
'AH',
DECODE (ma.mld_adres_key,
101, 280,
alg_gebouw_key),
alg_gebouw_key)
alg_gebouw_key
FROM alg_gebouw g FULL OUTER JOIN mld_adres ma
ON g.mld_adres_key = ma.mld_adres_key)
WHERE alg_gebouw_key IS NOT NULL
GROUP BY mld_adres_key) adr_geb
WHERE b.prs_kostenplaats_key = k.prs_kostenplaats_key
AND b.mld_adres_key_lev = ma.mld_adres_key
AND b.bes_bestelling_key =
bes_opdr.bes_bestelling_key(+)
AND bes_opdr.bes_bestelopdr_key =
bo.bes_bestelopdr_key(+)
AND ma.alg_locatie_key = l.alg_locatie_key(+)
AND b.bes_bestelling_key = cat.bes_bestelling_key
AND cat.ins_discipline_key = d.ins_discipline_key
AND ma.mld_adres_key = adr_geb.mld_adres_key(+)
AND adr_geb.alg_gebouw_key = g.alg_gebouw_key(+)
AND bo.bes_bestelopdr_key = f.bes_bestelopdr_key(+)
AND bo.bes_bestelopdr_datum BETWEEN v_datum_van
AND v_datum_tot
GROUP BY f.prs_kostensoort_key,
d.prs_kostensoort_key,
k.prs_kostenplaats_key,
g.alg_gebouw_key,
bo.bes_bestelopdr_key)
UNION ALL
SELECT 'Contract',
d.prs_kostensoort_key,
c.prs_kostenplaats_key,
g.alg_gebouw_key,
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
TO_NUMBER (NULL),
COALESCE (
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht)
* c.cnt_contract_kosten,
TO_NUMBER (NULL)))
opdr_kosten,
COALESCE (
DECODE (
cnt_gew.cnt_contract_plaats_gewicht,
0,
1,
(cp.cnt_contract_plaats_gewicht
/ cnt_gew.cnt_contract_plaats_gewicht))
* fin.fin_factuur_totaal,
NULL)
fin_factuur_totaal
FROM cnt_contract c,
cnt_contract_plaats cp,
ins_tab_discipline d,
alg_locatie l,
alg_gebouw g,
( SELECT cnt_contract_key,
SUM (fin_factuur_totaal) fin_factuur_totaal
FROM aaxx_v_aanwezigfactuur f
WHERE f.fin_factuur_datum BETWEEN v_datum_van AND v_datum_tot
GROUP BY cnt_contract_key) fin,
( SELECT cnt_contract_key,
SUM (cnt_contract_plaats_gewicht)
cnt_contract_plaats_gewicht
FROM cnt_contract_plaats
WHERE cnt_contract_plaats_verwijder IS NULL
GROUP BY cnt_contract_key) cnt_gew,
(SELECT cp.cnt_contract_plaats_key,
alg_locatie_key,
alg_gebouw_key
FROM alg_v_allonroerendgoed aog, cnt_contract_plaats cp
WHERE aog.alg_type = cp.cnt_alg_plaats_code
AND aog.alg_onroerendgoed_keys = cp.cnt_alg_plaats_key)
cog
WHERE c.ins_discipline_key = d.ins_discipline_key
AND c.cnt_contract_key = cp.cnt_contract_key(+)
AND c.cnt_contract_key = cnt_gew.cnt_contract_key(+)
AND cp.cnt_contract_plaats_key =
cog.cnt_contract_plaats_key(+)
AND c.cnt_contract_verwijder IS NULL
AND cp.cnt_contract_plaats_verwijder IS NULL
AND cog.alg_locatie_key = l.alg_locatie_key(+)
AND cog.alg_gebouw_key = g.alg_gebouw_key(+)
AND c.cnt_contract_key = fin.cnt_contract_key(+)
AND (v_datum_van BETWEEN c.cnt_contract_looptijd_van
AND c.cnt_contract_looptijd_tot
OR v_datum_tot BETWEEN c.cnt_contract_looptijd_van
AND c.cnt_contract_looptijd_tot)) v
GROUP BY soort,
prs_kostensoort_key,
prs_kostenplaats_key,
alg_gebouw_key;
END;
END;
/
-- VIEWS tbv RealTimeMonitor
CREATE OR REPLACE VIEW aaxx_v_graph_meldingpm
(
FCLT_XAS_,
FCLT_YAS_,
VOLGORDE
)
AS
SELECT DECODE (SUBSTR (TO_CHAR (mld_melding_datum, 'yyyymm'), 5),
'01', 'Januari',
'02', 'Februari',
'03', 'Maart',
'04', 'April',
'05', 'Mei',
'06', 'Juni',
'07', 'Juli',
'08', 'Augustus',
'09', 'September',
'10', 'Oktober',
'11', 'November',
'December'),
COUNT (d.ins_discipline_omschrijving),
TO_CHAR (mld_melding_datum, 'yyyymm')
FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d
WHERE mld_melding_datum BETWEEN ADD_MONTHS (
TO_DATE (
TO_CHAR (SYSDATE, 'yyyymm') || '01',
'yyyymmdd'),
-11)
AND SYSDATE
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND (aaxx_get_user <> 'IT' OR d.ins_srtdiscipline_key = 22) -- IT helpdesk
GROUP BY TO_CHAR (mld_melding_datum, 'yyyymm');
CREATE OR REPLACE VIEW aaxx_v_graph_openst_behand
(
FCLT_XAS_,
FCLT_YAS_,
FCLT_YAS2_OP_TIJD
)
AS
SELECT COALESCE (behandelaar, 'Onbekend') behandelaar,
COUNT (mld_key) - SUM (uitvoeringoptijd) totaal,
SUM (uitvoeringoptijd) op_tijd
FROM (SELECT DISTINCT
m.mld_melding_key mld_key,
CASE
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NULL
THEN
CASE SIGN(fac.datumtijdplusuitvoertijd (
m.mld_melding_datum,
m.mld_melding_t_uitvoertijd.tijdsduur,
m.mld_melding_t_uitvoertijd.eenheid)
- COALESCE (
fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
SYSDATE))
WHEN -1
THEN
0
ELSE
1
END
ELSE
1
END
uitvoeringoptijd,
DECODE (
mld_melding_status,
7,
(SELECT MAX (prs_bedrijf_naam)
FROM mld_opdr o, prs_bedrijf b
WHERE o.mld_melding_key = m.mld_melding_key
AND O.MLD_UITVOERENDE_KEYS = b.prs_bedrijf_key
AND O.MLD_STATUSOPDR_KEY IN (3, 4, 5, 8)), -- 3- Ter fiattering, 4-Gefiatteerd, 5-Uitgegeven, 8-Geaccepteerd
4,
COALESCE (
(SELECT MAX (prs_bedrijf_naam)
FROM mld_opdr o, prs_bedrijf b
WHERE o.mld_melding_key = m.mld_melding_key
AND O.MLD_UITVOERENDE_KEYS =
b.prs_bedrijf_key
AND O.MLD_STATUSOPDR_KEY IN (3, 4, 5, 8)), -- 3- Ter fiattering, 4-Gefiatteerd, 5-Uitgegeven, 8-Geaccepteerd
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames pf
WHERE pf.prs_perslid_key =
M.MLD_MELDING_BEHANDELAAR_KEY)),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames pf
WHERE pf.prs_perslid_key =
M.MLD_MELDING_BEHANDELAAR_KEY))
behandelaar
FROM mld_melding m,
mld_discipline md,
prs_perslid p,
mld_stdmelding std
WHERE m.prs_perslid_key = p.prs_perslid_key
AND md.ins_discipline_key = std.mld_ins_discipline_key
AND std.mld_stdmelding_key = m.mld_stdmelding_key
AND mld_melding_status IN (2, 3, 4, 7, 0) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending
AND (aaxx_get_user <> 'IT' OR md.ins_srtdiscipline_key = 22)) -- IT
GROUP BY behandelaar;
CREATE OR REPLACE VIEW aaxx_v_graph_ppi_acc (FCLT_XAS_, FCLT_YAS_)
AS
SELECT SUM (acceptoptijd) aantal, COUNT (mld_key) totaal
FROM (SELECT DISTINCT
m.mld_melding_key mld_key,
CASE SIGN(fac.datumtijdplusuitvoertijd (
fac.gettrackingdate ('MLDNEW',
m.mld_melding_key),
std.mld_stdmelding_t_accepttijd.tijdsduur,
std.mld_stdmelding_t_accepttijd.eenheid)
- COALESCE (
fac.gettrackingdate ('MLDREJ',
m.mld_melding_key),
fac.gettrackingdate ('MLDAFM',
m.mld_melding_key),
SYSDATE))
WHEN -1
THEN
0
ELSE
1
END
acceptoptijd
FROM mld_melding m, mld_discipline md, mld_stdmelding std
WHERE md.ins_discipline_key = std.mld_ins_discipline_key
AND std.mld_stdmelding_key = m.mld_stdmelding_key
AND (aaxx_get_user <> 'IT' OR md.ins_srtdiscipline_key = 22) -- IT helpdesk
AND mld_melding_status IN (2, 3) -- 2-ingevoerd, 3-ingezien
);
CREATE OR REPLACE VIEW aaxx_v_graph_ppi_uitv
(
FCLT_XAS_,
FCLT_YAS_
)
AS
SELECT SUM (uitvoeringoptijd) aantal, COUNT (mld_key) totaal
FROM (SELECT DISTINCT
m.mld_melding_key mld_key,
CASE
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NULL
THEN
CASE SIGN(fac.datumtijdplusuitvoertijd (
m.mld_melding_datum,
m.mld_melding_t_uitvoertijd.tijdsduur,
m.mld_melding_t_uitvoertijd.eenheid)
- COALESCE (
fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
SYSDATE))
WHEN -1
THEN
0
ELSE
1
END
ELSE
1
END
uitvoeringoptijd
FROM mld_melding m, mld_discipline md, mld_stdmelding std
WHERE md.ins_discipline_key = std.mld_ins_discipline_key
AND std.mld_stdmelding_key = m.mld_stdmelding_key
AND (aaxx_get_user <> 'IT' OR md.ins_srtdiscipline_key = 22) -- IT helpdesk
AND mld_melding_status IN (2, 3, 4, 7, 0) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending
);
CREATE OR REPLACE VIEW aaxx_v_graph_vakgroep_afg
(
fclt_xas_,
fclt_yas_,
fclt_url,
fclt_3d_discipline_key
)
AS
SELECT d.ins_discipline_omschrijving,
COUNT (d.ins_discipline_omschrijving),
'appl/mld/mld_search.asp?urole=fo&autosearch=1&disc_key_str=',
d.ins_discipline_key
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
fac_srtnotificatie sn,
fac_tracking t
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND (aaxx_get_user <> 'IT' OR d.ins_srtdiscipline_key = 22) -- IT helpdesk
AND t.fac_tracking_refkey = mld_melding_key
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'MLDAFM'
AND t.fac_tracking_datum > SYSDATE - 30
GROUP BY d.ins_discipline_key, d.ins_discipline_omschrijving;
CREATE OR REPLACE VIEW aaxx_v_graph_vakgroep_open
(
FCLT_XAS_,
FCLT_YAS_,
FCLT_URL,
FCLT_3D_DISCIPLINE_KEY
)
AS
SELECT d.ins_discipline_omschrijving,
COUNT (d.ins_discipline_omschrijving),
'appl/mld/mld_search.asp?urole=fo&autosearch=1&disc_key_str='
|| d.ins_discipline_key,
d.ins_discipline_key
FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND mld_melding_status IN (2, 3, 4, 7, 0) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending
AND (
(aaxx_get_user = 'GN' AND d.ins_srtdiscipline_key = 5) -- Storingen
OR
(aaxx_get_user = 'IT' AND d.ins_srtdiscipline_key = 22) -- IT helpdesk
OR
(aaxx_get_user <> 'GN' AND aaxx_get_user <> 'IT')
)
GROUP BY d.ins_discipline_key, d.ins_discipline_omschrijving
ORDER BY COUNT (d.ins_discipline_omschrijving) DESC;
--
-- Notificatie jobs
--
-- AAES#25128: BEZMUT-notificatie ook naar bezoeker sturen.
-- Wat te doen om dit aan te zetten:
-- Notificatiejob AAXX_V_NOTI_BEZOEKERS
-- Stylesheet aanpassen
-- Key van het kenmerk email hieronder invullen
CREATE OR REPLACE VIEW aaxx_v_noti_bezoekers
(
sender,
receiver,
text,
code,
fac_srtnotificatie_key,
KEY,
xkey,
xemail,
xmobile
)
AS
SELECT NULL sender,
NULL receiver,
DECODE (aaxx_get_user, 'ESSENT', 'Essent',
'ARCADIS', 'Arcadis',
'SABIC', 'Sabic',
'VGZ', 'VGZ',
'HEYDAY')
|| ' bevestigingmail afspraak '
|| TO_CHAR (a.bez_afspraak_datum, 'dd-mm-yyyy') text,
'CUST03' code,
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'CUST03') fac_srtnotificatie_key,
b.bez_afspraak_key key,
b.bez_bezoekers_key xkey,
COALESCE(v.email,v.email_kenmerk)
xemail,
NULL xmobile
FROM fac_tracking t,
bez_afspraak a,
bez_bezoekers b,
(SELECT b1.bez_afspraak_key,
b1.bez_bezoekers_key,
b1.bez_bezoekers_email
AS email,
(SELECT kw.bez_kenmerkwaarde_waarde
FROM bez_kenmerkwaarde kw
WHERE kw.bez_bezoekers_key = b1.bez_bezoekers_key
AND kw.bez_kenmerk_key =
DECODE (aaxx_get_user,
'ESSENT', 1001,
'IT', 1022,
'ARCADIS', 1003,
'SABIC', 1000)) -- Zie ticket 60226 - 'SABIC' kan in principe weg..
AS email_kenmerk
FROM bez_bezoekers b1, bez_afspraak a1
WHERE b1.bez_afspraak_key = a1.bez_afspraak_key
AND a1.bez_afspraak_datum > SYSDATE) v
WHERE t.fac_srtnotificatie_key =
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'BEZMUT')
AND t.fac_tracking_datum > (SELECT fac_notificatie_job_nextrun - fac_notificatie_job_interval/24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_BEZOEKERS')
AND t.fac_tracking_datum < (SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_BEZOEKERS')
AND a.bez_afspraak_key = t.fac_tracking_refkey
AND a.bez_afspraak_datum > SYSDATE
AND b.bez_afspraak_key = t.fac_tracking_refkey
AND b.bez_bezoekers_key = v.bez_bezoekers_key ;
-- Rapportage t.b.v. Share & Meet
-- Share and Meet reserveringen zijn te herkennen aan een host die een login heeft met de volgende struktuur _<account>_<remote_prs_perslid_key>
-- bijvoorbeeld _AANS_4533
CREATE OR REPLACE VIEW aaxx_v_rap_share_meet_kosten
(
reservering,
afdelingscode,
fclt_f_afdelings_omschrijving,
verbruiksartikelen,
boekingsdatum,
afmelddatum,
fclt_f_periode,
aanvrager,
locatie,
gebouw,
ruimtenaam,
btw,
stuksprijs,
aantal,
totaal
)
AS
SELECT rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr resnr,
a.prs_afdeling_naam,
a.prs_afdeling_omschrijving,
rrp.omschrijving,
TO_CHAR (rrr.res_rsv_ruimte_van, 'dd-mm-yyyy'),
TO_CHAR (rrp.afgemeld, 'dd-mm-yyyy'),
TO_CHAR (rrp.afgemeld, 'yyyy-mm'),
pf_h.prs_perslid_naam_full pfh,
rg.alg_locatie_omschrijving,
rg.alg_gebouw_omschrijving,
rr.res_ruimte_nr,
btw,
rrp.artikel_prijs,
rrp.aantal,
rrp.prijs
FROM res_rsv_ruimte rrr,
(SELECT rrr.res_rsv_ruimte_key,
ra.res_artikel_omschrijving omschrijving,
rra.res_rsv_artikel_aantal aantal,
ROUND (
res.getartikelprijs (rra.res_rsv_artikel_key)
/ rra.res_rsv_artikel_aantal,
2)
artikel_prijs,
rra.res_rsv_artikel_prijs prijs,
rra.res_rsv_artikel_afgemeld afgemeld,
ra.res_artikel_btw btw
FROM res_rsv_ruimte rrr, res_rsv_artikel rra, res_artikel ra
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key
AND rra.res_rsv_artikel_verwijder IS NULL
UNION
SELECT fac_tracking_refkey res_rsv_ruimte_key,
'Zaalhuur',
1 aantal,
res_rsv_ruimte_prijs artikel_prijs,
res_rsv_ruimte_prijs prijs,
t.fac_tracking_datum afgemeld,
21 btw
FROM res_rsv_ruimte rrr, fac_tracking t, fac_srtnotificatie sn
WHERE res_rsv_ruimte_prijs <> 0
AND rrr.res_rsv_ruimte_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'RESAFM'
AND t.fac_tracking_oms IS NULL
AND res_rsv_ruimte_verwijder IS NULL) rrp,
prs_v_perslid_fullnames_all pf_h,
res_ruimte rr,
prs_afdeling a,
prs_perslid p,
( SELECT MAX (alg_ruimte_key) alg_ruimte_key,
res_rsv_ruimte_key,
res_ruimte_key
FROM res_v_rsv_ruimte_2_alg_ruimte
GROUP BY res_rsv_ruimte_key, res_ruimte_key) r,
alg_v_ruimte_gegevens rg
WHERE rrp.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_host_key = pf_h.prs_perslid_key
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND r.res_ruimte_key = rr.res_ruimte_key
AND rrr.res_rsv_ruimte_key = r.res_rsv_ruimte_key
AND r.alg_ruimte_key = rg.alg_ruimte_key
AND rrp.afgemeld IS NOT NULL
AND p.prs_perslid_oslogin like '/_AA__/_%' escape '/';
-- AAAR#52939 notificatiejobs voor AAAR werken niet meer
-- MOET DEZE VIEW NIET VERWIJDERD WORDEN ??
-- AAIT#28929 notificaties t.b.v Share & Meet voor beoordeling dag later
CREATE OR REPLACE VIEW aaxx_v_noti_sm_resafm_reminder
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT 'RESAFM',
NULL,
res_rsv_ruimte_contact_key,
'Herinnering beoordeling reservering: '
|| res_reservering_key
|| '/'
|| res_rsv_ruimte_volgnr,
rsv.res_reservering_key,
rsv.res_rsv_ruimte_key
FROM res_rsv_ruimte rsv,
res_activiteit ra,
res_srtactiviteit rsr,
fac_tracking tr,
fac_srtnotificatie str
WHERE res_rsv_ruimte_verwijder IS NULL
AND rsv.res_activiteit_key = ra.res_activiteit_key
AND ra.res_srtactiviteit_key = rsr.res_srtactiviteit_key
AND UPPER(rsr.res_srtactiviteit_omschrijving) = 'SHARE & MEET'
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND tr.fac_tracking_refkey = res_rsv_ruimte_key
AND str.fac_srtnotificatie_xmlnode IN
('reservering', 'xreservering')
AND fac_srtnotificatie_code = 'RESAFM'
AND fac_tracking_oms IS NULL
AND TO_DATE (fac_tracking_datum, 'DD-MM-YYYY') =
TO_DATE (SYSDATE-1, 'DD-MM-YYYY');
-- kenmerk key 1000: afspraak is prive (dus niet op infobord)
-- geld voor IT en Arcadis
CREATE OR REPLACE VIEW aaxx_v_rap_infobord
(
item_type,
item_key,
aktief,
bezoek_status,
offset,
dag,
tijd_van,
tijd_tot,
ruimte,
catalogus,
aanvrager,
gastheer,
omschrijving,
status,
bezoeker,
bedrijf,
locatie_code,
gebouw_code,
verdieping_code,
locatie_omschrijving,
gebouw_omschrijving,
verdieping_omschrijving,
alg_locatie_key,
alg_gebouw_key,
alg_verdieping_key
)
AS
SELECT 'RES',
rrr.res_rsv_ruimte_key,
(CASE
WHEN res_rsv_ruimte_van > SYSDATE THEN 'expected'
WHEN res_rsv_ruimte_tot < SYSDATE THEN 'passed'
ELSE 'active'
END)
aktief,
(CASE
WHEN b.bez_bezoekers_out IS NOT NULL THEN 'out'
WHEN b.bez_bezoekers_done IS NOT NULL THEN 'in'
ELSE 'expected'
END)
bezoek_status,
TRUNC ( (SYSDATE - res_rsv_ruimte_van) * 24 * 60) offset,
TO_CHAR (res_rsv_ruimte_van, 'dd-mm-yyyy') dag,
TO_CHAR (res_rsv_ruimte_van, 'hh24:mi') tijd_van,
TO_CHAR (res_rsv_ruimte_tot, 'hh24:mi') tijd_tot,
res_ruimte_nr ruimte,
ins_discipline_omschrijving catalogus,
aanvrager.prs_perslid_naam_full aanvrager,
COALESCE (gastheer.prs_perslid_naam_full,
a.bez_afspraak_gastheer)
gastheer,
res_rsv_ruimte_omschrijving omschrijving,
sf.res_status_fo_omschrijving status,
b.bez_afspraak_naam,
b.bez_afspraak_bedrijf,
alg_locatie_code locatie_code,
alg_gebouw_code gebouw_code,
alg_verdieping_code verdieping_code,
alg_locatie_omschrijving locatie_omschrijving,
g.alg_gebouw_code||'-'||g.alg_gebouw_naam gebouw_omschrijving,
alg_verdieping_omschrijving verdieping_omschrijving,
l.alg_locatie_key,
g.alg_gebouw_key,
v.alg_verdieping_key
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
prs_v_perslid_fullnames aanvrager,
prs_v_perslid_fullnames gastheer,
res_v_res_ruimte_gegevens rrg,
alg_locatie l,
alg_gebouw g,
alg_verdieping v,
res_status_fo sf,
res_discipline rd,
bez_afspraak a,
bez_bezoekers b,
(SELECT * FROM bez_kenmerkwaarde
WHERE bez_kenmerk_key = 1000
AND bez_kenmerkwaarde_verwijder IS NULL) prive
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rrg.res_ruimte_key
AND rrr.res_rsv_ruimte_host_key = gastheer.prs_perslid_key(+)
AND rrr.res_rsv_ruimte_contact_key = aanvrager.prs_perslid_key
AND TRUNC (res_rsv_ruimte_van) = TRUNC (SYSDATE)
AND rrg.alg_locatie_key = l.alg_locatie_key
AND rrg.alg_gebouw_key = g.alg_gebouw_key
AND rrg.alg_verdieping_key = v.alg_verdieping_key
AND rrr.res_status_fo_key = sf.res_status_fo_key
AND rrg.res_discipline_key = rd.ins_discipline_key
AND rrr.res_rsv_ruimte_key = a.res_rsv_ruimte_key(+)
AND a.bez_afspraak_key = b.bez_afspraak_key(+)
AND prive.bez_bezoekers_key(+) = b.bez_bezoekers_key
AND COALESCE(prive.bez_kenmerkwaarde_waarde, '0') = '0'
UNION ALL
SELECT 'BEZ',
b.bez_afspraak_key,
(CASE
WHEN a.bez_afspraak_datum > SYSDATE THEN 'expected'
WHEN a.bez_afspraak_eind < SYSDATE THEN 'passed'
ELSE 'active'
END)
aktief,
(CASE
WHEN b.bez_bezoekers_out IS NOT NULL THEN 'out'
WHEN b.bez_bezoekers_done IS NOT NULL THEN 'in'
ELSE 'expected'
END)
bezoek_status,
TRUNC ( (SYSDATE - bez_afspraak_datum) * 24 * 60) offset,
TO_CHAR (bez_afspraak_datum, 'dd-mm-yyyy') dag,
TO_CHAR (bez_afspraak_datum, 'hh24:mi') tijd_van,
TO_CHAR (bez_afspraak_eind, 'hh24:mi') tijd_tot,
NULL ruimte,
NULL catalogus,
aanvrager.prs_perslid_naam_full aanvrager,
COALESCE (gastheer.prs_perslid_naam_full,
a.bez_afspraak_gastheer)
gastheer,
NULL omschrijving,
NULL status,
b.bez_afspraak_naam,
b.bez_afspraak_bedrijf,
alg_locatie_code locatie_code,
alg_gebouw_code gebouw_code,
NULL verdieping_code,
alg_locatie_omschrijving locatie_omschrijving,
alg_gebouw_naam gebouw_omschrijving,
alg_verdieping_omschrijving verdieping_omschrijving,
l.alg_locatie_key,
ogg.alg_gebouw_key,
ogg.alg_verdieping_key
FROM bez_afspraak a,
bez_bezoekers b,
prs_v_perslid_fullnames aanvrager,
alg_locatie l,
alg_v_allonrgoed_gegevens ogg,
prs_v_perslid_fullnames gastheer,
(SELECT * FROM bez_kenmerkwaarde
WHERE bez_kenmerk_key = 1000
AND bez_kenmerkwaarde_verwijder IS NULL) prive
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND TRUNC(a.bez_afspraak_datum) = TRUNC(SYSDATE)
AND a.bez_afspraak_host_key = gastheer.prs_perslid_key(+)
AND a.bez_afspraak_contact_key = aanvrager.prs_perslid_key
AND a.alg_locatie_key = l.alg_locatie_key
AND a.alg_onrgoed_keys = ogg.alg_onroerendgoed_keys(+)
AND a.res_rsv_ruimte_key IS NULL
AND prive.bez_bezoekers_key(+) = b.bez_bezoekers_key
AND COALESCE(prive.bez_kenmerkwaarde_waarde, '0') = '0';
-- AAES#24665/AANS#27628: In eerste instantie vormgegeven tbv. meldingen op
-- objecten. Later uitgebreid tbv. reserveringen.
/* Formatted on 10-10-2013 14:32:24 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW aaxx_v_rap_mld_qrc
(
fclt_3d_locatie_key,
fclt_3d_discipline_key,
fclt_f_discipline,
fclt_f_soortmelding,
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_verdieping,
plaats,
ruimte_key,
ruimtefunctie,
fclt_f_objectdiscipline,
fclt_f_objectgroep,
objectsoort_key,
fclt_f_objectsoort,
objectsoort_code,
ins_deel_key,
ins_deel_omschrijving,
ins_deel_upper,
hide_f_bookmark_id,
variabele
)
AS
SELECT l.alg_locatie_key,
disc.ins_discipline_key,
disc.ins_discipline_omschrijving,
msd.mld_stdmelding_omschrijving,
l.alg_locatie_omschrijving,
o.alg_gebouw_omschrijving,
o.alg_verdieping_omschrijving,
o.alg_plaatsaanduiding plaats,
d.ins_alg_ruimte_key ruimte_key,
sr.alg_srtruimte_omschrijving,
disc.ins_discipline_omschrijving,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_key,
sd.ins_srtdeel_omschrijving,
sd.ins_srtdeel_code,
d.ins_deel_key,
d.ins_deel_omschrijving,
d.ins_deel_upper,
b.fac_bookmark_id,
'INS_KEY'
FROM (SELECT DECODE (
INSTR (
SUBSTR (
UPPER (fac_bookmark_query),
INSTR (UPPER (fac_bookmark_query),
'STDM_KEY=')
),
'&'
),
0,
SUBSTR (
SUBSTR (
UPPER (fac_bookmark_query),
INSTR (UPPER (fac_bookmark_query),
'STDM_KEY=')
),
10
),
SUBSTR (
SUBSTR (
UPPER (fac_bookmark_query),
INSTR (UPPER (fac_bookmark_query),
'STDM_KEY=')
),
10,
INSTR (
SUBSTR (
UPPER (fac_bookmark_query),
INSTR (UPPER (fac_bookmark_query),
'STDM_KEY=')
),
'&'
)
- 10
)
)
stdm_key,
fac_bookmark_id
FROM fac_bookmark
WHERE UPPER (fac_bookmark_path) = 'APPL/PDA/MELDING.ASP'
AND INSTR (UPPER (fac_bookmark_query), 'STDM_KEY') > 0)
b, -- stdm_key-bookmarks
(SELECT sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
si.ins_srtinstallatie_key ins_srtdeel_key
FROM mld_stdmelding sm,
mld_stdmelding_srtinst si
WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key
AND sm.mld_stdmelding_verwijder IS NULL
AND si.ins_srtinstallatie_niveau = 'S'
UNION ALL
SELECT sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
sd.ins_srtdeel_key
FROM mld_stdmelding sm,
mld_stdmelding_srtinst si,
ins_srtdeel sd
WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key
AND sm.mld_stdmelding_verwijder IS NULL
AND si.ins_srtinstallatie_niveau = 'G'
AND si.ins_srtinstallatie_key = sd.ins_srtgroep_key
UNION ALL
SELECT sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
sd.ins_srtdeel_key
FROM mld_stdmelding sm,
mld_stdmelding_srtinst si,
ins_srtgroep sg,
ins_srtdeel sd
WHERE sm.mld_stdmelding_key = si.mld_stdmelding_key
AND sm.mld_stdmelding_verwijder IS NULL
AND si.ins_srtinstallatie_niveau = 'D'
AND si.ins_srtinstallatie_key = sg.ins_discipline_key
AND sg.ins_srtgroep_key = sd.ins_srtgroep_key) msd, -- object-meldingen
ins_v_aanwezigdeel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_discipline disc,
ins_v_alg_overzicht o,
alg_locatie l,
alg_ruimte r,
alg_srtruimte sr
WHERE fac.safe_to_number (b.stdm_key) = msd.mld_stdmelding_key
AND msd.ins_srtdeel_key = d.ins_srtdeel_key
AND d.ins_alg_ruimte_type IN ('T', 'R', 'W')
AND d.ins_deel_parent_key IS NULL
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = disc.ins_discipline_key
AND d.ins_alg_ruimte_key = o.alg_onroerendgoed_keys
AND d.ins_alg_ruimte_type = o.alg_onroerendgoed_type
AND d.ins_alg_locatie_key = o.alg_locatie_key -- redundant?
AND o.alg_locatie_key = l.alg_locatie_key
AND d.ins_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
UNION ALL
SELECT l.alg_locatie_key,
disc.ins_discipline_key,
disc.ins_discipline_omschrijving,
'Reserveer ruimte',
l.alg_locatie_omschrijving,
o.alg_gebouw_omschrijving,
o.alg_verdieping_omschrijving,
rr.res_ruimte_nr plaats,
rar.res_ruimte_key ruimte_key,
sr.alg_srtruimte_omschrijving,
NULL ins_discipline_omschrijving,
NULL ins_srtgroep_omschrijving,
NULL ins_srtdeel_key,
NULL ins_srtdeel_omschrijving,
NULL ins_srtdeel_code,
NULL ins_deel_key,
NULL ins_deel_omschrijving,
NULL ins_deel_upper,
b.fac_bookmark_id,
'RES_RUIMTE_KEY'
FROM fac_bookmark b,
res_ruimte rr,
res_discipline disc,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_key) rar,
alg_ruimte r,
alg_srtruimte sr,
ins_v_alg_overzicht o,
alg_locatie l
WHERE TRUNC (b.fac_bookmark_aanmaak) = TO_DATE ('10102013', 'ddmmyyyy')
AND UPPER (b.fac_bookmark_path) = 'APPL/PDA/RESERVERINGEN.ASP'
AND rr.res_discipline_key = disc.ins_discipline_key
AND rr.res_ruimte_key = rar.res_ruimte_key
AND rar.alg_ruimte_key = r.alg_ruimte_key
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND r.alg_ruimte_key = o.alg_onroerendgoed_keys
AND o.alg_onroerendgoed_type = 'R'
AND o.alg_locatie_key = l.alg_locatie_key;
-- AASA#37919
-- Rapport met opdrachtgegevens van hergoedkeuringsverzoeken incl gebouwverantwoordelijke
-- Status 10 = ter goedkeuring
CREATE OR REPLACE VIEW aaxx_v_udr_hergoedkeuren
AS
SELECT mld_opdr_key,
srt.ins_srtdiscipline_prefix
|| o.mld_melding_key
|| '/'
|| mld_opdr_bedrijfopdr_volgnr
opdrachtnr,
mu.naam uitvoerende,
ot.mld_typeopdr_omschrijving opdrachttype,
mld_opdr_omschrijving omschrijving,
k.prs_kostenplaats_nr || ' ' || prs_kostenplaats_omschrijving
kostenplaats,
mld_opdr_kosten kosten,
pf1.prs_perslid_naam_full behandelaar,
mld_opdr_opmerking afhandeling,
mld_opdr_datumbegin opdrachtdatum,
mld_opdr_einddatum einddatum,
mld_opdr_plandatum plandatum,
l.alg_locatie_code || aog.alg_plaatsaanduiding plaats,
aog.alg_gebouw_key,
aog.alg_gebouw_code gebouw_code,
g.prs_perslid_key_verantw gebouw_verwantwoordelijke_key,
pf2.prs_perslid_naam_full gebouw_verwantwoordelijke,
aog.alg_verdieping_omschrijving verdieping_omschrijving,
aog.alg_verdieping_code verdieping,
aog.alg_ruimte_nr ruimte_nr,
aog.alg_ruimte_omschrijving ruimte_omschrijving,
std.mld_stdmelding_omschrijving melding,
d.ins_discipline_omschrijving vakgroep,
srt.ins_srtdiscipline_omschrijving vakgroeptype
FROM mld_opdr o,
mld_melding m,
alg_v_allonrgoed_gegevens aog,
alg_locatie l,
alg_gebouw g,
mld_stdmelding std,
mld_discipline d,
ins_srtdiscipline srt,
mld_typeopdr ot,
prs_v_perslid_fullnames_all pf1,
prs_v_perslid_fullnames_all pf2,
mld_v_uitvoerende mu,
prs_kostenplaats k
WHERE mld_statusopdr_key = 10
AND mld_opdr_approved_refiat IS NOT NULL
AND o.mld_melding_key = m.mld_melding_key
AND o.fac_activiteit_key IS NULL
AND aog.alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys
AND aog.alg_locatie_key = l.alg_locatie_key
AND g.alg_gebouw_key = aog.alg_gebouw_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND srt.ins_srtdiscipline_key = d.ins_srtdiscipline_key
AND ot.mld_typeopdr_key = o.mld_typeopdr_key
AND pf1.prs_perslid_key(+) = o.prs_perslid_key
AND pf2.prs_perslid_key(+) = g.prs_perslid_key_verantw
AND mu.mld_uitvoerende_key = o.mld_uitvoerende_keys
AND o.prs_kostenplaats_key = k.prs_kostenplaats_key(+);
-- specifieke versie van mld_v_udr_meldingopdracht vanwege performance problemen met de core versie.
CREATE OR REPLACE VIEW aaxx_v_udr_meldingopdracht
AS
SELECT m.mld_melding_key meldingnummer,
l.alg_locatie_omschrijving melding_locatie,
aog.alg_gebouw_naam melding_gebouw,
d.ins_discipline_omschrijving productgroep,
mld_statuses_omschrijving melding_status,
mld_melding_datum melding_datum,
mld_melding_einddatum melding_einddatum,
mld_melding_omschrijving vomschrijving,
mld_statusopdr_omschrijving opdracht_status,
o.mld_opdr_key opdracht_key,
d.ins_discipline_key fclt_3d_discipline_key
FROM mld_melding m,
mld_statuses ms,
mld_opdr o,
mld_statusopdr so,
alg_v_onroerendgoed_gegevens aog,
alg_locatie l,
mld_stdmelding std,
ins_tab_discipline d
WHERE m.mld_melding_key = o.mld_melding_key
AND m.mld_melding_status = ms.mld_statuses_key
AND o.mld_statusopdr_key = so.mld_statusopdr_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key;
-- AAFM#26513 Notificatie goedgekeurde offerte naar autorisatiegroep "HEYDAY Servicedesk"'
-- Opdracht in status 9 (na ORDOOK)
-- 'opdracht bij melding wanneer automatische offerteafhandeling uitgeschakeld is' --> mld_disc_params_offerteauto = 0
-- Opdracht (RFQ) sinds de vorige check goedgekeurd (eenmalig sturen) - 2 views voor beschikbaar. Notificatie naar Gebouwbeheerder + naar ORDOAP-rechthebbenden
-- Bestemming zijn de personen(0..n) in autorisatiegroep HEYDAY Servicedesk.
CREATE OR REPLACE VIEW aaxx_v_noti_offerte_accepted
(
sender,
receiver,
text,
code,
key,
xkey
)
AS
SELECT DISTINCT NULL sender,
gg.prs_perslid_key receiver,
(SELECT fac_version_cust FROM fac_version)
|| ': Offerte '
|| m.mld_melding_key||'/'||o.mld_opdr_bedrijfopdr_volgnr
|| ' is geaccepteerd' text,
'CUST04' code,
o.mld_opdr_key key,
NULL xkey
FROM mld_opdr o,
mld_melding m,
mld_stdmelding s,
mld_discipline d,
mld_disc_params dp,
fac_srtnotificatie sn,
fac_tracking t,
fac_groep g,
fac_gebruikersgroep gg
WHERE o.mld_statusopdr_key = 9
AND m.mld_melding_key = o.mld_melding_key
AND s.mld_stdmelding_key = m.mld_stdmelding_key
AND d.ins_discipline_key = s.mld_ins_discipline_key
AND dp.mld_ins_discipline_key = d.ins_discipline_key
AND dp.mld_disc_params_offerteauto = 0
AND sn.fac_srtnotificatie_code = 'ORDOOK'
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND t.fac_tracking_refkey = o.mld_opdr_key
AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun - fac_notificatie_job_interval/24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_OFFERTE_ACCEPTED')
AND (SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_OFFERTE_ACCEPTED')
AND g.fac_groep_upper = 'HEYDAY SERVICEDESK'
AND gg.fac_groep_key = g.fac_groep_key;
-- Bij HEYDAY drie smaken voor notificatie van mensen als er Offertes goedgekeurd moeten worden
--- 1. Aan Gebouwverantwoordelijke (muv de PR- en MJOP-meldingen, want die gaan via 3.)
--- 2. Aan ALLE mensen met ORDOAP-rechten
--- 3. Aan de Projectleider van de PR- of MJOP-meldingen
--- 1. Notificatie Offerte goed te keuren voor alle GEBOUW-verantwoordelijke
CREATE OR REPLACE VIEW aaxx_v_noti_offerte_goedkeuren
(
sender,
receiver,
text,
code,
key,
xkey
)
AS
SELECT NULL,
gv.prs_perslid_key,
'Offerte '
|| m.mld_melding_key
|| '/'
|| mld_opdr_bedrijfopdr_volgnr
|| ' is afgemeld en dient beoordeeld te worden',
'CUST18',
o.mld_opdr_key,
NULL
FROM mld_opdr o,
mld_typeopdr ot,
mld_melding m,
mld_stdmelding sm,
mld_discipline d,
ins_srtdiscipline sd,
alg_v_allonroerendgoed aor,
(SELECT alg_gebouw_key, g.prs_perslid_key_verantw prs_perslid_key
FROM alg_gebouw g
WHERE prs_perslid_key_verantw IS NOT NULL
UNION ALL
SELECT alg_gebouw_key, g.prs_perslid_key_verantw2 prs_perslid_key
FROM alg_gebouw g
WHERE g.prs_perslid_key_verantw2 IS NOT NULL) gv,
prs_perslid p,
( SELECT fac_tracking_refkey,
MAX (fac_tracking_datum) fac_tracking_datum
FROM fac_tracking ft, fac_srtnotificatie fsn
WHERE fsn.fac_srtnotificatie_key = ft.fac_srtnotificatie_key
AND fac_srtnotificatie_code = 'ORDAFM'
GROUP BY fac_tracking_refkey) ft
WHERE mld_statusopdr_key = 6
AND ot.mld_typeopdr_key = o.mld_typeopdr_key
AND mld_typeopdr_isofferte = 1
AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND UPPER(sd.ins_srtdiscipline_omschrijving) NOT IN ('MJOP', 'PROJECT') -- voor MJOP en PROJECT loopt de notificatie via de Projectleiders (zie optie 3.)
AND m.mld_melding_key = o.mld_melding_key
AND m.mld_alg_onroerendgoed_keys = aor.alg_onroerendgoed_keys
AND gv.alg_gebouw_key = aor.alg_gebouw_key
AND gv.prs_perslid_key = p.prs_perslid_key
AND ft.fac_tracking_refkey = o.mld_opdr_key
AND ft.fac_tracking_datum >= (SELECT COALESCE(fac_notificatie_job_lastrun, TRUNC(SYSDATE)) FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_OFFERTE_GOEDKEUREN') ;
--- 2. Notificatie Offerte goed te keuren voor alle ORDOAP-mensen
CREATE OR REPLACE VIEW aaxx_v_noti_offerte_goedk_2
(
sender,
receiver,
text,
code,
key,
xkey
)
AS
SELECT NULL,
oap.prs_perslid_key,
'Offerte '
|| m.mld_melding_key
|| '/'
|| mld_opdr_bedrijfopdr_volgnr
|| ' is afgemeld en dient beoordeeld te worden',
'CUST12',
o.mld_opdr_key,
NULL
FROM mld_opdr o,
mld_typeopdr ot,
mld_melding m,
(SELECT gg.prs_perslid_key
FROM fac_functie f,
fac_groeprechten gr,
fac_groep g,
fac_gebruikersgroep gg
WHERE f.fac_functie_code = 'WEB_ORDOAP'
AND f.fac_functie_key = gr.fac_functie_key
AND gr.fac_groep_key = g.fac_groep_key
AND g.fac_groep_key = gg.fac_groep_key
GROUP BY gg.prs_perslid_key
) oap,
( SELECT fac_tracking_refkey,
MAX (fac_tracking_datum) fac_tracking_datum
FROM fac_tracking ft, fac_srtnotificatie fsn
WHERE fsn.fac_srtnotificatie_key = ft.fac_srtnotificatie_key
AND fac_srtnotificatie_code = 'ORDAFM'
GROUP BY fac_tracking_refkey) ft
WHERE mld_statusopdr_key = 6
AND ot.mld_typeopdr_key = o.mld_typeopdr_key
AND mld_typeopdr_isofferte = 1
AND m.mld_melding_key = o.mld_melding_key
AND ft.fac_tracking_refkey = o.mld_opdr_key
AND ft.fac_tracking_datum >= (SELECT COALESCE(fac_notificatie_job_lastrun, TRUNC(SYSDATE)) FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_OFFERTE_GOEDK_2') ;
--- 3. Notificatie Offerte goed te keuren voor alle PROJECTLEIDERS (op PROJECT en MJOP-hoofdstroom)
CREATE OR REPLACE VIEW aaxx_v_noti_offerte_goedk_3
(
sender,
receiver,
text,
code,
key,
xkey
)
AS
SELECT NULL,
prl.prs_perslid_key,
sd.ins_srtdiscipline_omschrijving ||'-offerte '
|| m.mld_melding_key
|| '/'
|| mld_opdr_bedrijfopdr_volgnr
|| ' is afgemeld en dient beoordeeld te worden',
'CUST17',
o.mld_opdr_key,
NULL
FROM mld_opdr o,
mld_typeopdr ot,
mld_melding m,
mld_stdmelding sm,
mld_discipline d,
ins_srtdiscipline sd,
(SELECT kw.mld_melding_key, fac.safe_to_number(kw.mld_kenmerkmelding_waarde) prs_perslid_key
FROM mld_kenmerkmelding kw, mld_kenmerk km, mld_srtkenmerk sk
WHERE kw.mld_kenmerk_key = km.mld_kenmerk_key
AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_upper = 'PROJECT LEIDER'
AND sk.mld_srtkenmerk_kenmerktype = 'S') prl, -- projectleider op melding
( SELECT fac_tracking_refkey,
MAX (fac_tracking_datum) fac_tracking_datum
FROM fac_tracking ft, fac_srtnotificatie fsn
WHERE fsn.fac_srtnotificatie_key = ft.fac_srtnotificatie_key
AND fac_srtnotificatie_code = 'ORDAFM'
GROUP BY fac_tracking_refkey) ft
WHERE mld_statusopdr_key = 6
AND ot.mld_typeopdr_key = o.mld_typeopdr_key
AND mld_typeopdr_isofferte = 1
AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND UPPER(sd.ins_srtdiscipline_omschrijving) IN ('MJOP', 'PROJECT') -- alleen voor deze hoofdstromen moeten projectleiders genotificeerd worden
AND m.mld_melding_key = o.mld_melding_key
AND m.mld_melding_key = prl.mld_melding_key
AND ft.fac_tracking_refkey = o.mld_opdr_key
AND ft.fac_tracking_datum >= (SELECT COALESCE(fac_notificatie_job_lastrun, TRUNC(SYSDATE)) FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTI_OFFERTE_GOEDK_3') ;
-- AAIT#78372 notificatie naar aanvrager bij verzetten opdracht-datum
CREATE OR REPLACE VIEW aaxx_v_noti_melder_datumverzet
(
sender,
receiver,
text,
code,
key,
xkey,
xemail,
xmobile
)
AS
SELECT NULL
sender,
p.prs_perslid_key
receiver,
'TER INFO - Einddatum van uw melding '
|| sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| ' is verzet'
text,
'CUST20'
code,
m.mld_melding_key
key,
NULL
xkey,
NULL
xemail,
NULL
xmobile
FROM mld_opdr o,
mld_melding m,
mld_stdmelding sm,
mld_discipline d,
ins_srtdiscipline sd,
prs_perslid p,
fac_tracking fto,
fac_srtnotificatie sno,
fac_tracking ftm,
fac_srtnotificatie snm,
(SELECT ko.mld_opdr_key,
flx.getdomeinwaarde (
sk.fac_kenmerkdomein_key,
flx.getflex ('OPD',
km.mld_kenmerk_key,
ko.mld_opdr_key))
reden
FROM mld_kenmerkopdr ko, mld_kenmerk km, mld_srtkenmerk sk
WHERE ko.mld_kenmerk_key = km.mld_kenmerk_key
AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_code = 'DATUMVERZET_REDEN') mut
WHERE o.mld_melding_key = m.mld_melding_key
AND m.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_email IS NOT NULL
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
-- Welke meldingen moeten in de job komen?
---- 1. In MLD fac_tracking met MLDUPD en in omschrijving 'Gereed:' en fac_trackingsdatum >= dan laatste notificatiejob
AND m.mld_melding_key = ftm.fac_tracking_refkey
AND ftm.fac_srtnotificatie_key = snm.fac_srtnotificatie_key
AND snm.fac_srtnotificatie_code = 'MLDUPD'
AND INSTR (ftm.fac_tracking_oms, 'Gereed:') > 0
AND ftm.fac_tracking_datum >=
(SELECT fac_notificatie_job_lastrun
FROM fac_notificatie_job
WHERE fac_notificatie_job_view =
'AAXX_V_NOTI_MELDER_DATUMVERZET')
---- 2. En in OPDR een fac_tracking op ORDDAT fac_trackingsdatum >= dan laatste notificatiejob
AND o.mld_opdr_key = fto.fac_tracking_refkey
AND fto.fac_srtnotificatie_key = sno.fac_srtnotificatie_key
AND sno.fac_srtnotificatie_code = 'ORDDAT'
AND fto.fac_tracking_datum >=
(SELECT fac_notificatie_job_lastrun
FROM fac_notificatie_job
WHERE fac_notificatie_job_view =
'AAXX_V_NOTI_MELDER_DATUMVERZET')
---- 3. En op die opdracht is een kenmerk-reden gevuld die ongelijk 'Aangepast - Geen notificatie' is
AND o.mld_opdr_key = mut.mld_opdr_key
AND mut.reden NOT IN ('Aangepast - Geen notificatie')
GROUP BY p.prs_perslid_key, m.mld_melding_key, sd.ins_srtdiscipline_prefix ;
-- AAHU#29410 Notificatie geregistreerde klacht naar groep "HEYDAY-FMer"
-- prefix KL is klacht
CREATE OR REPLACE VIEW aaxx_v_noti_klacht_reminder
(
sender,
receiver,
text,
code,
key,
xkey
)
AS
SELECT NULL,
fm.prs_perslid_key,
'Er is een klacht geregistreerd met referentienummer: '
|| m.mld_melding_key,
'MLDNEW',
m.mld_melding_key,
NULL
FROM mld_melding m,
mld_stdmelding std,
mld_discipline d,
ins_srtdiscipline srt,
fac_tracking tr,
fac_srtnotificatie str,
(SELECT p.prs_perslid_key
FROM fac_gebruikersgroep fg, fac_groep g, prs_perslid p
WHERE g.fac_groep_key = fg.fac_groep_key
AND p.prs_perslid_key = fg.prs_perslid_key
AND UPPER (g.fac_groep_omschrijving) = 'HEYDAY FM-ER'
AND prs_perslid_verwijder IS NULL
AND prs_perslid_email IS NOT NULL) fm
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = srt.ins_srtdiscipline_key
AND srt.ins_srtdiscipline_module = 'MLD'
AND srt.ins_srtdiscipline_prefix = 'KL'
AND m.fac_activiteit_key IS NULL
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND tr.fac_tracking_refkey = m.mld_melding_key
AND str.fac_srtnotificatie_code = 'MLDNEW'
AND tr.fac_tracking_datum > SYSDATE - 1 / 24;
-- AAFM#33840 notificatie tbv gepland bezoek
CREATE OR REPLACE VIEW aaxx_v_noti_plan_opdr
(
sender,
receiver,
text,
code,
key,
xkey,
xemail,
xmobile
)
AS
SELECT NULL sender,
NULL receiver,
'Aankondiging werkzaamheden door '
|| b.prs_bedrijf_naam
|| ' op '
|| mld_opdr_plandatum
|| ' op uw locatie'
text,
'CUST08' code,
mld_opdr_key key,
NULL xkey,
g.alg_gebouw_email xemail,
NULL xmobile
FROM mld_opdr o,
mld_melding m,
alg_v_allonrgoed_gegevens aog,
alg_gebouw g,
prs_bedrijf b
WHERE ( (TRUNC (mld_opdr_plandatum) = TRUNC (SYSDATE + 1)
AND fac.getweekdaynum (SYSDATE) != 6)
OR (TRUNC (mld_opdr_plandatum) BETWEEN TRUNC (SYSDATE + 1)
AND TRUNC (SYSDATE + 3)
AND fac.getweekdaynum (SYSDATE) = 6))
AND mld_statusopdr_key NOT IN (1, 6, 7, 9)
AND o.mld_melding_key = m.mld_melding_key
AND aog.alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND g.alg_gebouw_key = aog.alg_gebouw_key;
-- AAIT#31201 automatische notificatie naar melder van PR meldingen sturen
-- 2 weken voorafgaand aan de einddatum van een project (PR melding).
CREATE OR REPLACE VIEW aaxx_v_noti_mld_projecten
(
sender,
receiver,
text,
code,
key,
xkey
)
AS
SELECT NULL sender,
prs_perslid_key_voor,
'Herinnering: Over 2 weken sluit projectnummer '
|| ins_srtdiscipline_prefix
|| mld_melding_key
text,
'MLDNEW' code,
mld_melding_key key,
NULL xkey
FROM mld_melding m,
mld_stdmelding std,
mld_discipline d,
ins_srtdiscipline srt
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = srt.ins_srtdiscipline_key
AND UPPER (ins_srtdiscipline_prefix) = 'PR'
AND m.mld_melding_status NOT IN (1, 5, 6)
AND m.mld_melding_einddatum BETWEEN SYSDATE + 13 AND SYSDATE + 14;
CREATE OR REPLACE VIEW aaxx_v_kostensoort
(
prs_kostensoort_key,
prs_kostensoort_omschrijving
)
AS
SELECT prs_kostensoort_key,
prs_kostensoort_oms || '-' || prs_kostensoort_opmerking
FROM prs_kostensoort;
-- AAIT#32784 inzage in zoekgedrag. View te gebruiken icm 20151 rapport mogelijkheden.
CREATE OR REPLACE VIEW aaxx_v_gui_searchresults
(
Zoekterm,
Datum,
Persoon,
Keuze,
Resultaat
)
AS
SELECT fgc.fac_gui_counter_info zoekterm,
fac_gui_counter_date datum,
prs_perslid_naam_full persoon,
choice.fac_gui_counter_info keuze,
result.fac_gui_counter_info resultaat
FROM fac_gui_counter fgc,
prs_v_perslid_fullnames pf,
(SELECT fac_gui_counter_refkey, fac_gui_counter_info
FROM fac_gui_counter fgc
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchchoice') choice,
(SELECT fac_gui_counter_refkey, fac_gui_counter_info
FROM fac_gui_counter fgc
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchresult') result
WHERE fac_gui_counter_group = 'search'
AND fgc.fac_gui_counter_info IS NOT NULL
AND fgc.prs_perslid_key = pf.prs_perslid_key
AND choice.fac_gui_counter_refkey(+) = fgc.fac_gui_counter_key
AND result.fac_gui_counter_refkey(+) = fgc.fac_gui_counter_key;
-- procedure om ontvangen emails te processen. De klant specifieke eigenschappen, keys e.d. moeten
-- in de aanroep meegegeven worden.
CREATE OR REPLACE PROCEDURE aaxx_processemail (
pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER)
AS
sender_key prs_perslid.prs_perslid_key%TYPE;
melder_key prs_perslid.prs_perslid_key%TYPE;
kostenplaats_key prs_afdeling.prs_kostenplaats_key%TYPE;
mldkey mld_melding.mld_melding_key%TYPE;
opdrkey mld_opdr.mld_opdr_key%TYPE;
stdmelding mld_stdmelding.mld_stdmelding_key%TYPE;
subject_regexp fac_setting.fac_setting_default%TYPE;
kkey mld_kenmerk.mld_kenmerk_key%TYPE;
errormsg fac_result.fac_result_waarde%TYPE;
behandelaar_key mld_melding.mld_melding_behandelaar_key%TYPE;
typeopdrkey mld_typeopdr.mld_typeopdr_key%TYPE;
mldnum VARCHAR2 (4000);
opdrnum VARCHAR2 (4000);
opdrvolgnr NUMBER (10);
srtdisc VARCHAR2 (4000);
cnt NUMBER (10);
v_flag_on_fenote NUMBER (10);
v_flag_on_bonote NUMBER (10);
v_from VARCHAR2 (4000);
v_body VARCHAR2 (4000);
v_subject VARCHAR2 (1000);
v_pos NUMBER;
v_result NUMBER;
v_factuur_key fin_factuur.fin_factuur_key%TYPE;
v_kenmerk_key fin_kenmerk.fin_kenmerk_key%TYPE;
v_fac_usrdata_key_ja NUMBER(10);
v_fac_usrdata_key_nee NUMBER(10);
BEGIN
errormsg := '(0x143)';
-- de mailberichten worden doorgestuurd vanuit de AAFM exchange omgeving. Hierbij
-- is het niet mogelijk de afzender te laten staan. Daarom wordt de afzender in het subject
-- van de mail geplaatst. Scheidingsteken in de ';'.
v_from := SUBSTR (psubject, 1, INSTR (psubject, ';') - 1);
v_subject := SUBSTR (psubject, INSTR (psubject, ';') + 1);
-- Verwijder de Bounce Address Tag Validation
IF v_from LIKE 'prvs=%'
THEN
v_from := SUBSTR (v_from, INSTR (v_from, '=', -1) + 1);
END IF;
v_body :=
v_from || ': ' || CHR (13) || CHR (10)
|| SUBSTR (
v_subject || CHR (13) || CHR (10)
|| REPLACE (SUBSTR (pbody, 1, 3900 - (LENGTH (v_subject) + 2)),
CHR (13) || CHR (10) || CHR (13) || CHR (10),
CHR (13) || CHR (10)),
1,
3900); -- verwijder onnodige witregels
-- DBMS_OUTPUT.PUT_LINE('v_from: '||v_from);
errormsg := '(0x143a)';
-- Valideer de sender in pfrom: kennen we deze?
SELECT MIN (prs_perslid_key), MIN (d.prs_kostenplaats_key)
INTO sender_key, kostenplaats_key
FROM prs_perslid p, prs_afdeling d
WHERE p.prs_afdeling_key = d.prs_afdeling_key
AND prs_perslid_verwijder IS NULL
AND UPPER (prs_perslid_email) = UPPER (v_from);
errormsg := '(0x143b)';
IF sender_key IS NULL
THEN
sender_key := 11; -- prs_perslid_key onbekend mail adres.
SELECT d.prs_kostenplaats_key
INTO kostenplaats_key
FROM prs_perslid p, prs_afdeling d
WHERE p.prs_afdeling_key = d.prs_afdeling_key
AND prs_perslid_verwijder IS NULL
AND p.prs_perslid_key = sender_key;
END IF;
CASE
WHEN UPPER (pto) LIKE 'INVOICES@%'
THEN
errormsg := '(0x143c)';
INSERT INTO fin_factuur (fin_factuur_statuses_key,
fin_factuur_datum,
fin_factuur_totaal_btw,
fin_factuur_nr,
fin_factuur_bron)
VALUES (3,
SYSDATE,
0,
'#',
2)
RETURNING fin_factuur_key
INTO v_factuur_key;
-- Zet kenmerk laatste factuur op Ja
-- Ophalen key-waarde Ja van kenmerkveld Laatste Factuur
SELECT ud.fac_usrdata_key
INTO v_fac_usrdata_key_ja
FROM fin_kenmerk k,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE fin_kenmerk_key = 2
AND k.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND kd.fac_usrtab_key = ut.fac_usrtab_key
AND ut.fac_usrtab_key = ud.fac_usrtab_key
AND fac.safe_to_number (ud.fac_usrdata_code) = 1; -- Waarde is Ja
errormsg := '(0x143d)';
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (v_factuur_key, 2, v_fac_usrdata_key_ja);
-- Bepaal de key van de bijlages
errormsg := '(0x143e)';
SELECT fin_kenmerk_key
INTO v_kenmerk_key
FROM fin_kenmerk
WHERE fin_kenmerk_verwijder IS NULL
AND UPPER(fin_kenmerk_omschrijving) = 'BIJLAGES';
errormsg := '(0x143f)';
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'kenmerkpath',
'FIN\F'
|| TO_CHAR (TRUNC (v_factuur_key / 1000), 'FM0000')
|| '___\F'
|| v_factuur_key
|| '\'
|| v_kenmerk_key
|| '\');
WHEN UPPER (pto) LIKE 'SERVICEDESK@%'
THEN
errormsg := '(0x145)';
-- append (as a note?) to an existing melding if #key is found in the subject
-- Alternatief was: scannen van fac_srtnotificatie_oms maar dat voelt ook niet echt lekker
-- subject_regexp := fac.getsetting ('mld_reply_subject_regexp'); -- [[:alpha:]]*[[:digit:]]{3,}
-- hebben we een referentie naar een opdracht of naar een melding?
subject_regexp := '[[:digit:]]{3,}/[[:digit:]]*';
opdrnum :=
REGEXP_SUBSTR (v_subject,
subject_regexp,
1,
1,
'i'); -- MA12345
DBMS_OUTPUT.put_line ('opdrnum: ' || opdrnum);
-- Ja, nu komt het voor dat de opdracht/melding verward wordt met een
-- bestelling/opdracht. Daarom gaan we kijken of er een bestelling of
-- bestelopdracht is. Als deze er is dan kijken we naar de aanmaakdatum
-- is deze nieuwe dan de aanmaakdatum van de melding/opdracht, dan doen
-- we niets met de mail en hoort deze waarschijnlijk bij een bestelling.
-- Voor opdrachten (eerste gedeelte) en meldingen (tweede gedeelte) wordt
-- deze controle uitgevoerd zodra het melding/opdracht nummer bekend is.
IF opdrnum IS NOT NULL
THEN
opdrvolgnr :=
fac.safe_to_number (
SUBSTR (opdrnum, INSTR (opdrnum, '/') + 1));
DBMS_OUTPUT.put_line ('opdrvolgnr: ' || opdrvolgnr);
mldkey :=
fac.safe_to_number (
SUBSTR (opdrnum, 1, INSTR (opdrnum, '/') - 1));
DBMS_OUTPUT.put_line ('mldkey: ' || mldkey);
SELECT MAX (SIGN (b_o.datum - m_o.datum)) -- 1 als b_o datum > m_o datum
INTO v_result
FROM (SELECT bes_bestelopdr_datum datum
FROM bes_bestelopdr
WHERE bes_bestelopdr_id = mldkey || '/' || opdrvolgnr) b_o,
(SELECT mld_opdr_datumbegin datum
FROM mld_opdr
WHERE mld_melding_key = mldkey AND mld_opdr_bedrijfopdr_volgnr = opdrvolgnr) m_o;
ELSE
subject_regexp := '[[:alpha:]]*[[:digit:]]{3,}';
mldnum :=
REGEXP_SUBSTR (v_subject,
subject_regexp,
1,
1,
'i'); -- MA12345
srtdisc :=
REGEXP_SUBSTR (mldnum,
'[[:alpha:]]*',
1,
1,
'i'); -- MA
mldkey :=
fac.safe_to_number (SUBSTR (mldnum, LENGTH (srtdisc) + 1));
SELECT MAX (SIGN (b.datum - m.datum)) -- 1 als bes datum > mld datum
INTO v_result
FROM (SELECT bes_bestelling_datum datum
FROM bes_bestelling
WHERE bes_bestelling_key = mldkey) b,
(SELECT mld_melding_datum datum
FROM mld_melding
WHERE mld_melding_key = mldkey) m;
END IF;
IF v_result = 1 AND v_result IS NOT NULL
THEN
-- resultaat is 1 als de datum van de bestelling/opdracht groter is dan de datum van
-- de melding/opdracht.
DBMS_OUTPUT.put_line ('v_result: ' || v_result);
RETURN;
END IF;
DBMS_OUTPUT.put_line ('mldnum: ' || mldnum);
DBMS_OUTPUT.put_line ('srtdisc: ' || srtdisc);
DBMS_OUTPUT.put_line ('mldkey: ' || mldkey);
-- We eisen
-- - Goed meldingnummer
-- - Goede srtdiscipline
-- - Afzender is degene voor wie de melding was
-- suggested extensions: ook collega's toestaan?
SELECT MIN (mm.mld_stdmelding_key), MIN (prs_perslid_key_voor)
INTO stdmelding, melder_key
FROM mld_melding mm,
mld_stdmelding msm,
ins_tab_discipline insd,
ins_srtdiscipline isd
WHERE mm.mld_melding_key = mldkey
AND mm.mld_stdmelding_key = msm.mld_stdmelding_key
AND msm.mld_ins_discipline_key = insd.ins_discipline_key
AND insd.ins_srtdiscipline_key = isd.ins_srtdiscipline_key;
-- Controle op srtdisc werkt niet goed. Mails worden na binnenkomst namelijk doorgezet
-- naar de definitieve stdmelding(/discipline/srtdiscpline) en daarmee verandert de
-- prefix letter
--AND isd.ins_srtdiscipline_prefix = srtdisc
--AND mm.prs_perslid_key_voor = sender; -- Mogen anderen ook reageren?
DBMS_OUTPUT.put_line (
'mld_stdmelding_key: ' || TO_CHAR (stdmelding));
-- kijk of de referentie naar de opdracht wel correct is:
IF opdrvolgnr IS NOT NULL
THEN
BEGIN
SELECT mld_opdr_key, mld_typeopdr_key
INTO opdrkey, typeopdrkey
FROM mld_opdr
WHERE mld_melding_key = mldkey
AND mld_opdr_bedrijfopdr_volgnr = opdrvolgnr;
EXCEPTION
WHEN OTHERS
THEN
opdrkey := NULL;
END;
END IF;
BEGIN
IF opdrkey IS NOT NULL
THEN
SELECT o.prs_perslid_key
INTO behandelaar_key
FROM mld_opdr o, prs_perslid p
WHERE o.mld_opdr_key = opdrkey
AND o.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL;
ELSE
SELECT mld_melding_behandelaar_key
INTO behandelaar_key
FROM mld_melding m, prs_perslid p
WHERE mld_melding_key = mldkey
AND mld_melding_behandelaar_key = p.prs_perslid_key
AND p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL;
END IF;
EXCEPTION
WHEN OTHERS
THEN
behandelaar_key := NULL;
END;
IF (stdmelding IS NOT NULL)
THEN -- Bestaande opdracht.
IF opdrkey IS NOT NULL
THEN
INSERT INTO mld_opdr_note (mld_opdr_key,
mld_opdr_note_omschrijving,
prs_perslid_key)
VALUES (opdrkey, v_body, sender_key);
fac.trackaction ('ORDUPD',
opdrkey,
sender_key,
NULL,
'#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie
DBMS_OUTPUT.put_line ('Notitie toegevoegd.');
ELSE
INSERT INTO mld_melding_note (mld_melding_key,
mld_melding_note_omschrijving,
prs_perslid_key,
mld_melding_note_flag)
VALUES (mldkey,
v_body,
sender_key,
DECODE (sender_key, melder_key, 1, 0)); -- 1 is zichtbaar FE want zelf ingevoerd.
fac.trackaction ('MLDNOT',
mldkey,
sender_key,
NULL,
'#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie
DBMS_OUTPUT.put_line ('Notitie toegevoegd.');
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'maillog',
'Als notitie toegevoegd aan melding ' || mldkey);
IF behandelaar_key IS NOT NULL
THEN
-- Notificatie naar behandelaar
fac.putnotificationsrtprio (
NULL,
behandelaar_key,
'MLDNOB',
mldkey,
'Melding ' || mldkey || ' is door de klant aangepast.',
2,
NULL,
NULL,
NULL,
2,
NULL);
END IF;
END IF;
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet
BEGIN
IF fac.getsetting('mld_melding_actiecode') = 1
THEN
UPDATE mld_melding
SET mld_melding_actiecode = 1+128 -- Backoffice + Attentie
WHERE mld_melding_key = mldkey;
END IF;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line( 'Niet gelukt om flag '
|| v_flag_on_fenote
|| ' te zetten.');
END;
ELSE
-- suggested extensions:
-- check for MLDUSE-write autorisations
-- parse the subject to find an appropriate stdmelding, if uniquely possible
errormsg := '(0x148)';
BEGIN
stdmelding :=
fac.safe_to_number (fac.getsetting ('defaultstdmelding'));
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_melding_datum,
mld_melding_omschrijving,
mld_melding_status,
mld_melding_t_uitvoertijd,
mld_stdmelding_key,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_spoed)
VALUES ('MLD',
4, -- email
SYSDATE,
v_body,
NULL,
mld_t_uitvoertijd (2, 'D'),
stdmelding,
sender_key,
sender_key,
kostenplaats_key,
3)
RETURNING mld_melding_key
INTO mldkey;
-- DBMS_OUTPUT.PUT_LINE('Melding toegevoegd: ' || mldkey);
errormsg := '(0x165)';
mld.setmeldingstatus (mldkey, 2, sender_key);
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'maillog',
'Geregistreerd onder melding ' || mldkey);
END;
END IF;
IF opdrkey IS NULL
THEN
-- Zoek het laagste bijlagen kenmerk key (AAEN#34590) om de bijlagen onder te stoppen
errormsg := '(0x151)';
SELECT MIN (mld_kenmerk_key)
INTO kkey
FROM mld_kenmerk k,
mld_srtkenmerk sk,
mld_stdmelding std,
ins_tab_discipline d
WHERE mld_srtkenmerk_kenmerktype = 'M'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND std.mld_stdmelding_key = stdmelding
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND ( (k.mld_stdmelding_key = std.mld_stdmelding_key
AND k.mld_kenmerk_niveau = 'S')
OR (k.mld_stdmelding_key = d.ins_discipline_key
AND k.mld_kenmerk_niveau = 'D')
OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key
AND k.mld_kenmerk_niveau = 'T'))
AND k.mld_kenmerk_verwijder IS NULL
AND NOT EXISTS
(SELECT mld_kenmerk_volgnummer
FROM mld_kenmerk k1,
mld_srtkenmerk sk1,
mld_stdmelding std1,
ins_tab_discipline d1
WHERE sk1.mld_srtkenmerk_kenmerktype = 'M'
AND sk1.mld_srtkenmerk_key = k1.mld_srtkenmerk_key
AND std1.mld_stdmelding_key = stdmelding
AND std1.mld_ins_discipline_key =
d1.ins_discipline_key
AND ( (k1.mld_stdmelding_key =
std1.mld_stdmelding_key
AND k1.mld_kenmerk_niveau = 'S')
OR (k1.mld_stdmelding_key = d1.ins_discipline_key
AND k1.mld_kenmerk_niveau = 'D')
OR (k1.mld_stdmelding_key =
d1.ins_srtdiscipline_key
AND k1.mld_kenmerk_niveau = 'T'))
AND k1.mld_kenmerk_verwijder IS NULL
AND k1.mld_kenmerk_key < k.mld_kenmerk_key);
errormsg := '(0x153)';
IF kkey IS NOT NULL
THEN
-- DBMS_OUTPUT.PUT_LINE('Bijlagen kenmerk: ' || kkey);
errormsg := '(0x157)';
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'kenmerkpath',
'MLD\M'
|| TO_CHAR (TRUNC (mldkey / 1000), 'FM0000')
|| '___\M'
|| mldkey
|| '\'
|| kkey
|| '\');
END IF;
ELSE
-- Zoek het laagste bijlagen kenmerk om de bijlagen onder te stoppen
errormsg := '(0x152)';
SELECT MIN (mld_kenmerk_key)
INTO kkey
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_kenmerktype = 'M'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_typeopdr_key = typeopdrkey
AND k.mld_kenmerk_niveau = 'O'
AND k.mld_kenmerk_verwijder IS NULL
AND NOT EXISTS
(SELECT mld_kenmerk_volgnummer
FROM mld_kenmerk k1, mld_srtkenmerk sk1
WHERE sk1.mld_srtkenmerk_kenmerktype = 'M'
AND sk1.mld_srtkenmerk_key = k1.mld_srtkenmerk_key
AND k1.mld_typeopdr_key = typeopdrkey
AND k1.mld_kenmerk_niveau = 'O'
AND k1.mld_kenmerk_verwijder IS NULL
AND k1.mld_kenmerk_volgnummer <
k.mld_kenmerk_volgnummer);
errormsg := '(0x154)';
IF kkey IS NOT NULL
THEN
-- DBMS_OUTPUT.PUT_LINE('Bijlagen kenmerk: ' || kkey);
errormsg := '(0x157)';
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'kenmerkpath',
'MLD\O'
|| TO_CHAR (TRUNC (opdrkey / 1000), 'FM0000')
|| '___\O'
|| opdrkey
|| '\'
|| kkey
|| '\');
END IF;
END IF;
ELSE
errormsg := '(0x188)';
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'errormsg',
'Database fout - Neem contact op met uw systeembeheerder '
|| errormsg);
END CASE;
EXCEPTION
WHEN OTHERS
THEN
-- DBMS_OUTPUT.PUT_LINE('Mail niet geaccepteerd: ' || 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')');
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'errormsg',
'Database fout - Neem contact op met uw systeembeheerder '
|| errormsg);
fac.writelog (
'PROCESSEMAIL',
'E',
'Mail kon niet ingelezen worden afzender:'
|| v_from
|| '['
|| errormsg
|| ']'
|| psubject,
'OTHERS (error '
|| SQLCODE
|| '/'
|| SUBSTR (SQLERRM, 1, 100)
|| ')');
END;
/
-- View tbv notificatiejob - Notities meldingen naar backoffice ipv behandelaar (ipv MLDNOB)
-- Notificatie gaat naar emailadres Servicedesk Heyday (= vakgroep email-adres) (ticket 60002 en 60269)
CREATE OR REPLACE VIEW AAXX_V_NOTIFY_BACKOFFICE_NOB
(
SENDER,
RECEIVER,
TEXT,
CODE,
FAC_SRTNOTIFICATIE_KEY,
KEY,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT (SELECT prs_perslid_key
FROM prs_perslid
WHERE prs_perslid_upper = 'FACILITOR')
sender,
NULL
receiver,
'Er is/zijn '
|| TO_CHAR (v.aantalopmerkingen)
|| ' nieuwe opmerking(en) geplaatst bij melding '
|| v.mld_melding_key
|| ' ('
|| v.mld_stdmelding_omschrijving
|| ' / '
|| v.ins_discipline_omschrijving
|| ')'
text,
'CUST10'
code,
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'CUST10')
fac_srtnotificatie_key,
v.mld_melding_key
key,
NULL
xkey,
v.vakgroep_email
xemail,
NULL
xmobile
FROM (SELECT m.mld_melding_key,
sm.mld_stdmelding_omschrijving,
d.ins_discipline_omschrijving,
dp.mld_disc_params_emailnw3
AS vakgroep_email,
COALESCE (
( SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE INSTR (fac_tracking_oms, 'CUST10') > 0),
SYSDATE -
(SELECT COALESCE (fac_notificatie_job_interval, 1) / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_NOB' )
)
datum_vanaf,
(SELECT COUNT (*)
FROM mld_melding_note mn2
WHERE mn2.mld_melding_key = m.mld_melding_key
AND mn.prs_perslid_key NOT IN -- Alleen notities van mensen die niet bij Servicedesk zitten
(SELECT gg.prs_perslid_key
FROM fac_gebruikersgroep gg, fac_groep g
WHERE gg.fac_groep_key = g.fac_groep_key
AND g.fac_groep_upper = 'HEYDAY SERVICEDESK')
AND mn2.mld_melding_note_aanmaak >=
COALESCE (
( SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE INSTR (fac_tracking_oms,
'CUST10') >
0),
SYSDATE -
(SELECT COALESCE (fac_notificatie_job_interval, 1) / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_NOB' )
)
)
AS aantalopmerkingen
FROM mld_melding m,
mld_stdmelding sm,
ins_tab_discipline d,
mld_disc_params dp,
mld_melding_note mn,
prs_perslid p
WHERE m.mld_melding_key = mn.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_module = 'MLD'
AND d.ins_discipline_key = dp.mld_ins_discipline_key
AND (m.mld_melding_behandelaar_key <> mn.prs_perslid_key or m.mld_melding_behandelaar_key is null)
AND mn.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_verwijder is null
AND mn.mld_melding_note_aanmaak >=
COALESCE (
( SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE INSTR (fac_tracking_oms, 'CUST10') > 0),
SYSDATE -
(SELECT COALESCE (fac_notificatie_job_interval, 1) / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_NOB' )
)
AND mn.mld_melding_note_aanmaak >= sysdate - 3 -- Max langer dan 3 dagen terugkijken is voldoende
AND dp.mld_disc_params_emailnw3 IS NOT NULL
AND mn.prs_perslid_key NOT IN -- Alleen notities van mensen die niet bij Servicedesk zitten
(SELECT gg.prs_perslid_key
FROM fac_gebruikersgroep gg, fac_groep g
WHERE gg.fac_groep_key = g.fac_groep_key
AND g.fac_groep_upper = 'HEYDAY SERVICEDESK')
) v
;
-- View tbv notificatiejob - Notities op opdrachten naar backoffice (zie ticket 62800) --> OUD! (volgens mij - JM 26-4-2023)
---- indien de notities door iemand anders dan de servicedesk gedaan zijn, dan een groepsnotificatie naar emailadres Servicedesk Heyday (= vakgroep email-adres)
CREATE OR REPLACE VIEW AAXX_V_NOTIFY_BACKOFFICE_ORD
(
SENDER,
RECEIVER,
TEXT,
CODE,
FAC_SRTNOTIFICATIE_KEY,
KEY,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT (SELECT prs_perslid_key
FROM prs_perslid
WHERE prs_perslid_upper = 'FACILITOR')
sender,
NULL
receiver,
'Er is/zijn '
|| TO_CHAR (v.aantalopmerkingen)
|| ' notities geplaatst bij opdrachtnr '
|| v.mld_melding_key || '/' || v.mld_opdr_bedrijfopdr_volgnr
|| ' ('
|| v.mld_stdmelding_omschrijving
|| ' / '
|| v.ins_discipline_omschrijving
|| ')'
text,
'CUST11'
code,
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'CUST11')
fac_srtnotificatie_key,
v.mld_opdr_key
key,
NULL
xkey,
v.vakgroep_email
xemail,
NULL
xmobile
FROM (SELECT o.mld_opdr_key,
o.mld_melding_key,
o.mld_opdr_bedrijfopdr_volgnr,
o.prs_perslid_key,
sm.mld_stdmelding_omschrijving,
d.ins_discipline_omschrijving,
dp.mld_disc_params_emailnw3
AS vakgroep_email,
COALESCE (
( SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE INSTR (fac_tracking_oms, 'CUST11') > 0),
SYSDATE -
(SELECT COALESCE (fac_notificatie_job_interval, 1) / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_ORD' )
)
datum_vanaf, -- Laatste keer job gerund of Ne...
on1.mld_opdr_note_aanmaak,
(SELECT COUNT (*)
FROM mld_opdr_note on2
WHERE on2.mld_opdr_key = o.mld_opdr_key
AND on2.prs_perslid_key NOT IN
(SELECT gg.prs_perslid_key
FROM fac_gebruikersgroep gg, fac_groep g
WHERE gg.fac_groep_key = g.fac_groep_key
AND g.fac_groep_upper = 'HEYDAY SERVICEDESK')
AND on2.mld_opdr_note_aanmaak >=
COALESCE (
( SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE INSTR (fac_tracking_oms,
'CUST11') > 0),
SYSDATE -
(SELECT COALESCE (fac_notificatie_job_interval, 1) / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_ORD' )
))
AS aantalopmerkingen
FROM mld_melding m,
mld_opdr o,
mld_opdr_note on1,
mld_stdmelding sm,
ins_tab_discipline d,
mld_disc_params dp,
prs_perslid p
WHERE o.mld_opdr_key = on1.mld_opdr_key
AND m.mld_melding_key = o.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_module = 'MLD'
AND d.ins_discipline_key = dp.mld_ins_discipline_key
AND on1.prs_perslid_key NOT IN
(SELECT gg.prs_perslid_key
FROM fac_gebruikersgroep gg, fac_groep g
WHERE gg.fac_groep_key = g.fac_groep_key
AND g.fac_groep_upper = 'HEYDAY SERVICEDESK')
AND on1.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_verwijder is null
AND on1.mld_opdr_note_aanmaak >=
COALESCE (
( SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE INSTR (fac_tracking_oms, 'CUST11') > 0
AND fac_tracking_datum >= SYSDATE - 30),
SYSDATE -
(SELECT COALESCE (fac_notificatie_job_interval, 1) / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_ORD' )
)
AND on1.mld_opdr_note_aanmaak >= sysdate - 3 -- Max langer dan 3 dagen terugkijken is voldoende
AND dp.mld_disc_params_emailnw3 IS NOT NULL
) v
;
-- Ordertracking: Per omgeving ontvang de verantwoordelijke Servicedesk alle notities en mutaties/status-updates op de Opdrachtenstroom die zijn geweest per gestylde mail
---- Opzet: Job kijkt of er vanaf de laatste job_run nog mutaties zijn geweest en indien geval dan wordt gestyled rapport gemaild naar desbtreffende backoffice-email-adres
-- Bronview behorende bij job AAXX_V_NOTIFY_BACKOFFICE_OT
CREATE OR REPLACE VIEW aaxx_v_rap_ordertracking_bron
(
account,
subaccount, -- in geval INLO - Op gebouwniveau een kenmerk...!
regio, -- in geval dsm en rabo
vakgroep_email,
extra_key, -- vanuit job extra filter_key
opdrachtnr,
mld_opdr_key,
uitvoerder,
behandelaar,
opdracht_type,
soort, -- soort wijziging: Status of notitie of opdrachtgegevens-wijziging
datum,
actie_door,
actie_omschrijving,
actie_details,
subaccount_uitsluiten, -- in geval INLO om op basisrap-key 1041 de subaccounts met een eigen rapport niet getoond te krijgen
datum_mutatie_filter,
uur_filter
)
AS
SELECT -- Voor notities
fac_version_cust
account,
CASE WHEN acc.fac_version_cust IN ('INLO') THEN v.klant ELSE NULL END
subaccount, -- in geval INLO
CASE
WHEN acc.fac_version_cust IN ('RABO')
THEN
og.alg_regio_omschrijving
WHEN acc.fac_version_cust IN ('AADS', 'AASA')
THEN
og.alg_district_omschrijving
ELSE
NULL
END
regio, -- in geval dsm, rabo en sabic
dp.mld_disc_params_emailnw3
vakgroep_email,
NULL
extra_key, -- vanuit job extra filter_key - niet nodig in deze..
m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr
opdrachtnr,
o.mld_opdr_key,
u.naam
uitvoerder,
po.prs_perslid_naam || ' (' || po.prs_perslid_voornaam || ')'
behandelaar,
ot.mld_typeopdr_omschrijving
opdracht_type,
'Notitie'
soort, -- soort wijziging: Status of notitie of opdrachtgegevens-wijzigign
TO_CHAR (mld_opdr_note_aanmaak, 'dd-mm-yyyy hh24:mi:ss')
datum,
pn.prs_perslid_naam || ' (' || pn.prs_perslid_voornaam || ')'
actie_door,
'Notitie'
actie_omschrijving, -- Subsoort voor status
mld_opdr_note_omschrijving
actie_details,
CASE
WHEN acc.fac_version_cust IN ('INLO')
AND ( INSTR (LOWER (v.klant), 'covestro') > 0
OR INSTR (LOWER (v.klant), 'upfield') > 0)
THEN
'ja'
ELSE
'nee'
END
subaccount_uitsluiten,
TO_DATE(note.mld_opdr_note_aanmaak, 'yyyy-mm-dd hh24:mi:ss')
datum_mutatie_filter,
TO_NUMBER(TO_CHAR(note.mld_opdr_note_aanmaak, 'hh24'))
uur_filter
FROM mld_melding m,
mld_opdr o,
mld_typeopdr ot,
mld_v_uitvoerende u,
mld_opdr_note note,
prs_perslid pn,
prs_perslid po,
mld_stdmelding sm,
ins_tab_discipline d,
mld_disc_params dp,
aaxx_v_dwh_alg_onrgoed og,
(SELECT m.mld_melding_key,
og.alg_gebouw_key,
CASE
WHEN aaxx_get_user = 'INLO'
AND fud.fac_usrdata_omschr = 'Covestro'
THEN
fud.fac_usrdata_omschr
|| ' - '
|| og.alg_locatie_omschrijving
WHEN aaxx_get_user = 'INLO'
AND fud.fac_usrdata_omschr = 'Upfield Europe B.V.'
THEN
fud.fac_usrdata_omschr
|| ' - '
|| og.alg_locatie_omschrijving
ELSE
fud.fac_usrdata_omschr
END
klant
FROM mld_melding m,
aaxx_v_dwh_alg_onrgoed og,
alg_onrgoedkenmerk k,
fac_usrdata fud
WHERE m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
AND og.alg_gebouw_key = k.alg_onrgoed_key
AND alg_kenmerk_key =
DECODE (aaxx_get_user, 'INLO', 1100, 1100)
AND fac.safe_to_number (k.alg_onrgoedkenmerk_waarde) =
fud.fac_usrdata_key) v,
(SELECT fac_version_cust FROM fac_version) acc
WHERE o.mld_opdr_key = note.mld_opdr_key
AND m.mld_melding_key = o.mld_melding_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_module = 'MLD'
AND d.ins_discipline_key = dp.mld_ins_discipline_key
AND note.prs_perslid_key = pn.prs_perslid_key
AND pn.prs_perslid_verwijder IS NULL
AND o.mld_uitvoerende_keys = u.mld_uitvoerende_key
AND o.prs_perslid_key = po.prs_perslid_key(+)
AND m.mld_alg_locatie_key = og.alg_locatie_key
AND og.alg_type = 'L'
AND o.mld_melding_key = v.mld_melding_key(+)
AND note.prs_perslid_key NOT IN
(SELECT gg.prs_perslid_key
FROM fac_gebruikersgroep gg, fac_groep g
WHERE gg.fac_groep_key = g.fac_groep_key
AND g.fac_groep_upper = 'HEYDAY SERVICEDESK')
UNION
SELECT -- Voor status
acc.fac_version_cust
account,
CASE WHEN acc.fac_version_cust IN ('INLO') THEN v.klant ELSE NULL END
subaccount, -- in geval INLO
CASE
WHEN acc.fac_version_cust IN ('RABO')
THEN
og.alg_regio_omschrijving
WHEN acc.fac_version_cust IN ('AADS', 'AASA')
THEN
og.alg_district_omschrijving
ELSE
NULL
END
regio, -- in geval dsm, rabo en sabic
dp.mld_disc_params_emailnw3
vakgroep_email,
NULL
extra_key, -- vanuit job extra filter_key - niet nodig in deze
m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr
opdrachtnr,
o.mld_opdr_key,
u.naam
uitvoerder,
po.prs_perslid_naam || ' (' || po.prs_perslid_voornaam || ')'
behandelaar,
ot.mld_typeopdr_omschrijving
opdracht_type,
'Status'
soort, -- soort wijziging: Status of notitie of opdrachtgegevens-wijzigign
TO_CHAR (t.datum, 'dd-mm-yyyy hh24:mi:ss')
datum,
pt.prs_perslid_naam || ' (' || pt.prs_perslid_voornaam || ')'
actie_door,
COALESCE (vert.actiecode_tekst, t.actiecode)
actie_omschrijving,
t.omschrijving
actie_details,
CASE
WHEN acc.fac_version_cust IN ('INLO')
AND ( INSTR (LOWER (v.klant), 'covestro') > 0
OR INSTR (LOWER (v.klant), 'upfield') > 0)
THEN
'ja'
ELSE
'nee'
END
subaccount_uitsluiten,
TO_DATE(t.datum, 'yyyy-mm-dd hh24:mi:ss')
datum_mutatie_filter,
TO_NUMBER(TO_CHAR(t.datum, 'hh24'))
uur_filter
FROM mld_melding m,
mld_opdr o,
mld_typeopdr ot,
aaxx_v_dwh_tracking t,
(SELECT UPPER (SUBSTR (fac_locale_xsl_label, 12)) AS actiecode,
fac_locale_xsl_tekst AS actiecode_tekst
FROM fac_locale_xsl
WHERE INSTR (fac_locale_xsl_label, 'lcl_ord_is_') > 0
AND fac_locale_xsl_lang = 'NL') vert,
mld_v_uitvoerende u,
prs_perslid pt,
prs_perslid po,
mld_stdmelding sm,
ins_tab_discipline d,
mld_disc_params dp,
aaxx_v_dwh_alg_onrgoed og,
(SELECT m.mld_melding_key,
og.alg_gebouw_key,
CASE
WHEN aaxx_get_user = 'INLO'
AND fud.fac_usrdata_omschr = 'Covestro'
THEN
fud.fac_usrdata_omschr
|| ' - '
|| og.alg_locatie_omschrijving
WHEN aaxx_get_user = 'INLO'
AND fud.fac_usrdata_omschr = 'Upfield Europe B.V.'
THEN
fud.fac_usrdata_omschr
|| ' - '
|| og.alg_locatie_omschrijving
ELSE
fud.fac_usrdata_omschr
END
klant
FROM mld_melding m,
aaxx_v_dwh_alg_onrgoed og,
alg_onrgoedkenmerk k,
fac_usrdata fud
WHERE m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
AND og.alg_gebouw_key = k.alg_onrgoed_key
AND alg_kenmerk_key =
DECODE (aaxx_get_user, 'INLO', 1100, 1100)
AND fac.safe_to_number (k.alg_onrgoedkenmerk_waarde) =
fud.fac_usrdata_key) v,
(SELECT fac_version_cust FROM fac_version) acc
WHERE o.mld_opdr_key = t.ref_key
AND t.soort = 'opdracht'
AND t.actiecode = vert.actiecode(+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND m.mld_melding_key = o.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_module = 'MLD'
AND d.ins_discipline_key = dp.mld_ins_discipline_key
AND t.prs_perslid_key = pt.prs_perslid_key
AND pt.prs_perslid_verwijder IS NULL
AND o.mld_uitvoerende_keys = u.mld_uitvoerende_key
AND o.prs_perslid_key = po.prs_perslid_key(+)
AND m.mld_alg_locatie_key = og.alg_locatie_key
AND og.alg_type = 'L'
AND o.mld_melding_key = v.mld_melding_key(+)
AND t.prs_perslid_key NOT IN
(SELECT gg.prs_perslid_key
FROM fac_gebruikersgroep gg, fac_groep g
WHERE gg.fac_groep_key = g.fac_groep_key
AND g.fac_groep_upper = 'HEYDAY SERVICEDESK')
;
-- Job voor de ordertrackinglijst te versturen.
CREATE OR REPLACE VIEW AAXX_V_NOTIFY_BACKOFFICE_OT -- OT = Ordertrackinglijst
(
SENDER,
RECEIVER,
TEXT,
CODE,
FAC_SRTNOTIFICATIE_KEY,
KEY,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT (SELECT prs_perslid_key
FROM prs_perslid
WHERE prs_perslid_upper = 'FACILITOR')
sender,
NULL
receiver,
'Ordertrackinglijst klant ' || acc.fac_version_cust
text,
'CUST16'
code,
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'CUST16')
fac_srtnotificatie_key,
CASE WHEN acc.fac_version_cust = 'INLO' AND INSTR(lower(v.vakgroep_email), 'covestro')>0 THEN 1641
WHEN acc.fac_version_cust = 'INLO' AND INSTR(lower(v.vakgroep_email), 'upfield')>0 THEN 2181
ELSE
DECODE (acc.fac_version_cust,
'RABO', 1321,
'INLO', 1041,
'CVGZ', 681,
'NMMS', 1001,
'AAAH', 1261,
'AAAR', 1101,
'AADS', 2001,
'AAES', 901,
'AAGN', 1441,
'AAIT', 1863,
'AASA', 1422,
'AQQA', 861,
'EXPO', 521,
'SMKA', 941,
9999)
END
key,
NULL
xkey,
v.vakgroep_email
xemail,
NULL
xmobile
FROM (SELECT UPPER(fac_version_cust) fac_version_cust from fac_version) acc,
(SELECT vakgroep_email
FROM aaxx_v_rap_ordertracking_bron
WHERE datum_mutatie_filter >= (SELECT COALESCE(fac_notificatie_job_lastrun, TRUNC(SYSDATE)) FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_OT')
AND vakgroep_email IS NOT NULL
GROUP BY vakgroep_email) v ;
-- Rapportview behorende bij job AAXX_V_NOTIFY_BACKOFFICE_OT
--- De lijst die gemaild wordt - inclusief filtering op notificatie-interval
CREATE OR REPLACE VIEW aaxx_v_rap_ordertrackinglijst
(
account,
subaccount, -- in geval INLO - Op gebouwniveau een kenmerk...!
regio, -- in geval dsm en rabo
vakgroep_email,
extra_key, -- vanuit job extra filter_key
opdrachtnr,
mld_opdr_key,
uitvoerder,
behandelaar,
opdracht_type,
soort, -- soort wijziging: Status of notitie of opdrachtgegevens-wijziging
datum,
actie_door,
actie_omschrijving,
actie_details,
run_deze,
run_vorige,
subaccount_uitsluiten -- in geval INLO om op basisrap-key 1041 de subaccounts met een eigen rapport niet getoond te krijgen
)
AS
SELECT v.account,
v.subaccount, -- in geval INLO - Op gebouwniveau een kenmerk...!
v.regio, -- in geval dsm en rabo
vakgroep_email,
v.extra_key, -- vanuit job extra filter_key
v.opdrachtnr,
v.mld_opdr_key,
v.uitvoerder,
v.behandelaar,
v.opdracht_type,
v.soort, -- soort wijziging: Status of notitie of opdrachtgegevens-wijziging
v.datum,
v.actie_door,
v.actie_omschrijving,
v.actie_details,
TO_CHAR (d.last_jobrun, 'dd-mm-yyyy hh24:mi:ss')
run_deze,
TO_CHAR (d.last_cust16, 'dd-mm-yyyy hh24:mi:ss')
run_vorige,
v.subaccount_uitsluiten
FROM aaxx_v_rap_ordertracking_bron v,
(SELECT MAX (COALESCE(ft.fac_tracking_datum, SYSDATE)) last_cust16, -- subview waarin notificatie-interval bepaald wordt (=datums waartussen het resultaat in rapport getoond moet worden)
MAX ((SELECT COALESCE (fac_notificatie_job_lastrun, SYSDATE)
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_OT')) last_jobrun
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'CUST16'
AND ft.fac_tracking_datum < (SELECT COALESCE (fac_notificatie_job_lastrun, SYSDATE)
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AAXX_V_NOTIFY_BACKOFFICE_OT')
) d
WHERE v.datum_mutatie_filter BETWEEN d.last_cust16 AND d.last_jobrun ;
-- Notificatiejob voor notificeren uitvoerder bij goedkeuring en/of afkeuring van de kosten (ticket 62830)
---- CUST13 voor goedkeuring
---- CUST14 voor afkeuring
CREATE OR REPLACE VIEW AAXX_V_NOTI_UITVOERDER_KOSTEN
(
SENDER,
RECEIVER,
TEXT,
CODE,
FAC_SRTNOTIFICATIE_KEY,
KEY,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT (SELECT prs_perslid_key
FROM prs_perslid
WHERE prs_perslid_upper = 'FACILITOR')
sender,
NULL
receiver,
CASE
WHEN w.akkoord = 'ja'
THEN
'Notificatie ivm goedkeuring opdracht ' || w.opdrachtnr
ELSE
'Notificatie ivm afkeuring opdracht ' || w.opdrachtnr
END
text,
CASE
WHEN w.akkoord = 'ja'
THEN
'CUST13'
ELSE
'CUST14'
END
code,
CASE
WHEN w.akkoord = 'ja'
THEN
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'CUST13')
ELSE
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'CUST14')
END
fac_srtnotificatie_key,
w.mld_opdr_key
key,
NULL
xkey,
w.email
AS x_email,
NULL
xmobile
FROM
mld_opdr o,
(SELECT v.mld_typeopdr_omschrijving,
v.mld_melding_key,
v.opdrachtnr,
v.mld_opdr_key,
v.mld_statusopdr_key,
v.status_nu,
v.status,
CASE
WHEN COALESCE (v.datum_goedgekeurd,
TO_DATE ('01-01-1900', 'dd-mm-yyyy')) >
COALESCE (v.datum_afgekeurd,
TO_DATE ('01-01-1900', 'dd-mm-yyyy'))
THEN
'ja'
WHEN COALESCE (v.datum_goedgekeurd,
TO_DATE ('01-01-1900', 'dd-mm-yyyy')) <
COALESCE (v.datum_afgekeurd,
TO_DATE ('01-01-1900', 'dd-mm-yyyy'))
THEN
'nee'
ELSE
'nvt'
END
AS akkoord,
CASE
WHEN COALESCE (v.datum_goedgekeurd,
TO_DATE ('01-01-1900', 'dd-mm-yyyy')) >
COALESCE (v.datum_cust13,
TO_DATE ('01-01-1900', 'dd-mm-yyyy'))
AND COALESCE(v.datum_ORDSNT, sysdate) < v.datum_goedgekeurd
AND TRUNC(v.datum_goedgekeurd) >= TRUNC(sysdate-3) -- Peildatum, 3 dagen na goedkeuring zodat bij aanzetten job de mailing niet te gedateerd is en alleen actuele goedkeuringen gemaild worden
THEN
'ja' -- ja, opnieuw te notificeren
ELSE
'nee'
END
AS te_notificeren_cust13,
CASE
WHEN COALESCE (v.datum_afgekeurd,
TO_DATE ('01-01-1900', 'dd-mm-yyyy')) >
COALESCE (v.datum_cust14,
TO_DATE ('01-01-1900', 'dd-mm-yyyy'))
AND TRUNC(v.datum_afgekeurd) = TRUNC(sysdate) -- Binnen zelfde dag vanuit SD actie om na te bellen
THEN
'ja' -- ja, opnieuw te notificeren
ELSE
'nee'
END
AS te_notificeren_cust14,
v.mld_statusopdr_key_refiat,
v.mld_opdr_kosten,
v.mld_opdr_kosten_refiat,
v.mld_opdr_approved,
v.mld_opdr_teverzenden,
v.mld_opdr_verzonden,
v.datum_ORDSNT,
v.mld_opdr_teverzenden_datum,
v.datum_goedgekeurd,
v.datum_cust13,
v.datum_afgekeurd,
v.datum_cust14,
COALESCE (v.email_contactpers, v.email_relatie, v.email_servicedesk)
AS email
FROM (SELECT ot.mld_typeopdr_omschrijving,
o.mld_melding_key,
o.mld_melding_key
|| '/'
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
AS opdrachtnr,
o.mld_opdr_key,
o.mld_statusopdr_key,
os.mld_statusopdr_omschrijving
AS status_nu,
(CASE
WHEN o.mld_statusopdr_key IN (5, 8) THEN 'lopend' -- alle lopende statussen die voor deze job relevant zijn (toegekend, geaccepteerd)
WHEN o.mld_statusopdr_key IN (6) THEN 'uitgevoerd' -- alle uitgevoerde statussen die voor deze job relenvant zijn (afgemeld)
ELSE 'intern' -- opdracht ligt INTERN ter controle, ter fiattering, afgekeurd, afgewezen, financieel voltooid, verwerkt
END)
status,
o.mld_statusopdr_key_refiat,
o.mld_opdr_kosten,
o.mld_opdr_kosten_refiat,
o.mld_opdr_approved,
o.mld_opdr_teverzenden,
o.mld_opdr_verzonden,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_tracking_refkey = o.mld_opdr_key
AND ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'opdracht'
AND sn.fac_srtnotificatie_code = 'ORDSNT')
AS datum_ORDSNT,
o.mld_opdr_teverzenden_datum,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_tracking_refkey = o.mld_opdr_key
AND ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'opdracht'
AND (
(sn.fac_srtnotificatie_code = 'ORDUPD' AND INSTR (LOWER (ft.fac_tracking_oms), 'opdracht is goedgekeurd') > 0)
OR
(sn.fac_srtnotificatie_code='ORDFOK')
)
)
AS datum_goedgekeurd,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_tracking_refkey = o.mld_opdr_key
AND ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'opdracht'
AND sn.fac_srtnotificatie_code = 'CUST13')
AS datum_cust13, -- Datum genotificeerd door noti-job
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_tracking_refkey = o.mld_opdr_key
AND ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'opdracht'
AND ( sn.fac_srtnotificatie_code = 'ORDGNO'
OR sn.fac_srtnotificatie_code = 'ORDFNO'))
AS datum_afgekeurd,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_tracking_refkey = o.mld_opdr_key
AND ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'opdracht'
AND sn.fac_srtnotificatie_code = 'CUST14')
AS datum_cust14, -- Datum genotificeerd door noti-job
(SELECT prs_contactpersoon_email
FROM prs_contactpersoon
WHERE prs_contactpersoon_key = o.prs_contactpersoon_key)
AS email_contactpers,
(SELECT prs_bedrijf_email
FROM prs_bedrijf
WHERE prs_bedrijf_key = o.mld_uitvoerende_keys)
AS email_relatie,
(SELECT dp.mld_disc_params_emailnw3
FROM mld_melding m,
mld_stdmelding sm,
ins_tab_discipline d,
mld_disc_params dp
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_module = 'MLD'
AND d.ins_discipline_key = dp.mld_ins_discipline_key
AND m.mld_melding_key = o.mld_melding_key)
AS email_servicedesk -- uit vakgroep
FROM mld_opdr o, mld_statusopdr os, mld_typeopdr ot
WHERE o.mld_statusopdr_key = os.mld_statusopdr_key
AND o.mld_statusopdr_key NOT IN (7) -- Sowieso uitgesloten: Verwerkte opdrachten
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND ot.mld_typeopdr_isofferte = 0
) v
) w
WHERE
o.mld_opdr_key = w.mld_opdr_key
AND (w.status = 'lopend' OR w.status = 'uitgevoerd')
AND (
(w.akkoord = 'ja' and w.te_notificeren_cust13 = 'ja')
OR
(w.akkoord = 'nee' and w.te_notificeren_cust14 = 'ja')
) ;
-- Domeinview voor Assetmanagement - Zie ticket 70981 - verzoek registratie nieuw asset
CREATE OR REPLACE VIEW aaxx_v_nen2767_meldingen
(
KEY,
OMSCHRIJVING
)
AS
SELECT sm.mld_stdmelding_key,
disc.ins_discipline_omschrijving || ' - ' || sm.mld_stdmelding_omschrijving
FROM mld_stdmelding sm, mld_discipline disc
WHERE disc.ins_srtdiscipline_key = FAC.getSetting ('cnd_gebreken_srtdisc_key')
AND sm.mld_stdmelding_code <> 'GEEN'
AND sm.mld_stdmelding_omschrijving <> 'Nieuwe asset'
AND disc.ins_discipline_verwijder IS NULL
AND sm.mld_ins_discipline_key = disc.ins_discipline_key
AND sm.mld_stdmelding_vervaldatum IS NULL
ORDER BY disc.ins_discipline_omschrijving, sm.mld_stdmelding_omschrijving ;
CREATE OR REPLACE PROCEDURE aaxx_import_ins_assetman (p_import_key IN NUMBER)
IS
c_delim VARCHAR2 (1) := ';';
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
v_errormsg VARCHAR2 (1000);
v_errorhint 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 (400);
v_ins_kenmerk_key1 VARCHAR2 (255);
v_ins_kenmerk_key2 VARCHAR2 (255);
v_ins_kenmerk_key3 VARCHAR2 (255);
v_ins_kenmerk_key4 VARCHAR2 (255);
v_ins_kenmerk_key5 VARCHAR2 (255);
v_ins_kenmerk_key6 VARCHAR2 (255);
v_ins_kenmerk_key7 VARCHAR2 (255);
v_ins_kenmerk_key8 VARCHAR2 (255);
v_ins_kenmerk_key9 VARCHAR2 (255);
v_ins_kenmerk_key10 VARCHAR2 (255);
v_ins_kenmerk_key11 VARCHAR2 (255);
v_ins_kenmerk_key12 VARCHAR2 (255);
v_ins_kenmerk_key13 VARCHAR2 (255);
v_ins_kenmerk_key14 VARCHAR2 (255);
v_ins_kenmerk_key15 VARCHAR2 (255);
v_ins_kenmerk_key16 VARCHAR2 (255);
v_ins_kenmerk_key17 VARCHAR2 (255);
v_ins_kenmerk_key18 VARCHAR2 (255);
v_ins_kenmerk_key19 VARCHAR2 (255);
v_ins_kenmerk_key20 VARCHAR2 (255);
-- De importvelden
v_ins_discipline_omschrijving VARCHAR2 (255); -- C60
v_ins_discipline_kostensoort VARCHAR2 (255); --C60
v_ins_srtgroep_omschrijving VARCHAR2 (255); -- C60
v_ins_srtdeel_code VARCHAR2 (255); -- C10
v_ins_srtdeel_omschrijving VARCHAR2 (255); -- C100
v_ins_deel_omschrijving VARCHAR2 (255); -- C60
v_ins_deel_opmerking VARCHAR2 (1000); -- C320
v_alg_locatie_code VARCHAR2 (255); -- C10
v_alg_gebouw_code VARCHAR2 (255); -- C12
v_alg_verdieping_volgnr VARCHAR2 (255); -- N3
v_alg_verdieping_volgnr_n NUMBER (3); -- N3
v_alg_ruimte_nr VARCHAR2 (255); -- C10
v_ins_kenmerkwaarde1 VARCHAR2 (4000);
v_ins_kenmerkwaarde2 VARCHAR2 (4000);
v_ins_kenmerkwaarde3 VARCHAR2 (4000);
v_ins_kenmerkwaarde4 VARCHAR2 (4000);
v_ins_kenmerkwaarde5 VARCHAR2 (4000);
v_ins_kenmerkwaarde6 VARCHAR2 (4000);
v_ins_kenmerkwaarde7 VARCHAR2 (4000);
v_ins_kenmerkwaarde8 VARCHAR2 (4000);
v_ins_kenmerkwaarde9 VARCHAR2 (4000);
v_ins_kenmerkwaarde10 VARCHAR2 (4000);
v_ins_kenmerkwaarde11 VARCHAR2 (4000);
v_ins_kenmerkwaarde12 VARCHAR2 (4000);
v_ins_kenmerkwaarde13 VARCHAR2 (4000);
v_ins_kenmerkwaarde14 VARCHAR2 (4000);
v_ins_kenmerkwaarde15 VARCHAR2 (4000);
v_ins_kenmerkwaarde16 VARCHAR2 (4000);
v_ins_kenmerkwaarde17 VARCHAR2 (4000);
v_ins_kenmerkwaarde18 VARCHAR2 (4000);
v_ins_kenmerkwaarde19 VARCHAR2 (4000);
v_ins_kenmerkwaarde20 VARCHAR2 (4000);
v_ins_deel_aanmaak VARCHAR2 (255); -- DATE
v_ins_deel_aanmaak_d DATE;
v_ins_deel_vervaldatum VARCHAR2 (255); -- DATE
v_ins_deel_vervaldatum_d DATE;
v_ins_deel_aantal VARCHAR2 (255); -- N8,2
v_ins_deel_aantal_n NUMBER(8, 2);
v_file_index NUMBER;
v_bestaande_objectketen NUMBER (10);
v_bestaande_objectcode NUMBER (10);
-- Overige velden:
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
-- LET OP!!! Dit is/was in DB39 op srtkenmerk_key. Is voor DB40 omgezet naar kenmerk_key. Zie ook in FAC_PACF.SRC (fac_import_ins)
---- DE AAXX met de hieronder aangepast procedure kan/moet dus pas vanaf 2021.1 meegeleverd worden!!!
--
-- Controleer tijdens import-fase alleen op het bestaan van een kenmerk met de meegegeven omschrijving of kenmerk key.
-- De omschrijving (header van kolom) kan de omschrijving zijn van het kenmerksoort of het kenmerk.
-- De omschrijving van het kenmerksoort kan namelijk overruled worden door de omschrijving van het kenmerk.
-- Daarnaast kan hetzelfde kenmerk vaker voorkomen voor verschillende groepen.
-- Of het kenmerksoort/kenmerk wel is gedefinieerd voor de betreffende
-- object-discipline/groep/soort, volgt pas tijdens de update-fase)!
--
-- p_kw is bijvoorbeeld 'Parkeercode', 'Parkeercode|3', 234 of 234|3 waarbij de tweede en laatste in groep 3 zitten
-- het resultaat is NULL (als niet gevonden) of Parkeercode|3 of 234|3 voor kenmer_key 234 in groep 3
-- Als geen groep is meegegeven dan wordt 'Parkeercode|0' opgeleverd (de default groep)
FUNCTION bepaal_kenmerk (p_kw IN VARCHAR)
RETURN VARCHAR
IS
v_kenmerk_key NUMBER;
v_kenmerk_groep NUMBER;
v_kw VARCHAR(250);
BEGIN
v_kenmerk_groep := 0;
v_kw := p_kw;
IF INSTR (v_kw, '|') > 1
THEN
v_kenmerk_groep := SUBSTR (v_kw, INSTR (v_kw, '|') + 1);
v_kw := SUBSTR (v_kw, 1, INSTR (v_kw, '|') - 1);
END IF;
IF fac.safe_to_number (v_kw) IS NULL
THEN -- kenmerkwaarde is alfanumeriek (dus omschrijving)!
SELECT MIN(k.ins_kenmerk_key)
INTO v_kenmerk_key
FROM ins_v_aanwezigkenmerk k,
ins_v_aanwezigsrtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND k.ins_kenmerk_groep = v_kenmerk_groep
AND COALESCE(UPPER(k.ins_kenmerk_omschrijving), sk.ins_srtkenmerk_upper) = UPPER(v_kw)
AND sk.ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
ELSE -- kenmerkwaarde is numeriek (dus key)!
SELECT k.ins_kenmerk_key
INTO v_kenmerk_key
FROM ins_v_aanwezigkenmerk k,
ins_v_aanwezigsrtkenmerk sk
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND k.ins_kenmerk_groep = v_kenmerk_groep
AND k.ins_kenmerk_key = fac.safe_to_number (v_kw)
AND sk.ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
END IF;
IF v_kenmerk_key IS NULL
THEN
RETURN NULL;
ELSE
-- Er is een kenmerksoort of kenmerk aanwezig met de omschrijving/kenmerk_key (v_kw)
RETURN v_kw || '|' || TO_CHAR(v_kenmerk_groep);
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
IF p_kw IS NULL OR UPPER (p_kw) LIKE 'KENMERK%'
THEN
RETURN NULL;
ELSE
fac.imp_writelog (p_import_key,
'W',
'Fout bij bepalen kenmerk [' || p_kw || ']',
'Bestaat niet of type ongeldig');
COMMIT;
RETURN NULL;
END IF;
END;
BEGIN
-- Eerst opruiming
DELETE FROM fac_imp_ins;
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_file_index := rec1.fac_imp_file_index;
v_errormsg := 'Fout bij opvragen importregel';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_delim, v_ins_discipline_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_srtgroep_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_code);
fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_deel_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_deel_opmerking);
fac.imp_getfield (v_newline, c_delim, v_alg_locatie_code);
fac.imp_getfield (v_newline, c_delim, v_alg_gebouw_code);
fac.imp_getfield (v_newline, c_delim, v_alg_verdieping_volgnr);
fac.imp_getfield (v_newline, c_delim, v_alg_ruimte_nr);
fac.imp_getfield (v_newline, c_delim, v_ins_deel_aanmaak);
fac.imp_getfield (v_newline, c_delim, v_ins_deel_vervaldatum);
fac.imp_getfield (v_newline, c_delim, v_ins_deel_aantal);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde1);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde2);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde3);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde4);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde5);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde6);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde7);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde8);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde9);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde10);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde11);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde12);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde13);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde14);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde15);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde16);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde17);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde18);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde19);
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde20);
v_aanduiding :=
'['
|| v_ins_discipline_omschrijving
|| '|'
|| v_ins_srtgroep_omschrijving
|| '|'
|| v_ins_srtdeel_code
|| '|'
|| v_ins_srtdeel_omschrijving
|| '|'
|| v_ins_deel_omschrijving
|| '] ';
-- HEADER NIEUW HEYDAY
---- disciplineomschrijving;groepsoortomschrijving;objectsoortcode;objectsoortomschrijving;objectidentificatie;objectopmerking;locatiecode;gebouwcode;bouwlaagvolgnummer;ruimtenummer;
----- ingangsdatum;Vervaldatum;Aantal;Plaats;Aantal v2;Bouwjaar;Capaciteit;Datum laatste asset survey;Fabricaat;Gewenste Conditie;Conditie nulmeting;Kritische asset;Referentienummer leverancier;Type;Eenheid;Garantie tot datum;Garantiepartij;kenmerk15;kenmerk16;kenmerk17;kenmerk18;kenmerk19;kenmerk20
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij alle NIET-kenmerk kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_ins_discipline_omschrijving) = 'DISCIPLINEOMSCHRIJVING'
AND UPPER (v_ins_srtgroep_omschrijving) = 'GROEPSOORTOMSCHRIJVING'
AND UPPER (v_ins_srtdeel_code) = 'OBJECTSOORTCODE'
AND UPPER (v_ins_srtdeel_omschrijving) = 'OBJECTSOORTOMSCHRIJVING'
AND UPPER (v_ins_deel_omschrijving) = 'OBJECTIDENTIFICATIE'
AND UPPER (v_ins_deel_opmerking) = 'OBJECTOPMERKING'
AND UPPER (v_alg_locatie_code) = 'LOCATIECODE'
AND UPPER (v_alg_gebouw_code) = 'GEBOUWCODE'
AND UPPER (v_alg_verdieping_volgnr) = 'BOUWLAAGVOLGNUMMER'
AND UPPER (v_alg_ruimte_nr) = 'RUIMTENUMMER'
AND UPPER (v_ins_deel_aanmaak) = 'INGANGSDATUM'
AND UPPER (v_ins_deel_vervaldatum) = 'VERVALDATUM'
AND UPPER (v_ins_deel_aantal) = 'AANTAL'
THEN
v_ins_kenmerk_key1 := bepaal_kenmerk (v_ins_kenmerkwaarde1);
v_ins_kenmerk_key2 := bepaal_kenmerk (v_ins_kenmerkwaarde2);
v_ins_kenmerk_key3 := bepaal_kenmerk (v_ins_kenmerkwaarde3);
v_ins_kenmerk_key4 := bepaal_kenmerk (v_ins_kenmerkwaarde4);
v_ins_kenmerk_key5 := bepaal_kenmerk (v_ins_kenmerkwaarde5);
v_ins_kenmerk_key6 := bepaal_kenmerk (v_ins_kenmerkwaarde6);
v_ins_kenmerk_key7 := bepaal_kenmerk (v_ins_kenmerkwaarde7);
v_ins_kenmerk_key8 := bepaal_kenmerk (v_ins_kenmerkwaarde8);
v_ins_kenmerk_key9 := bepaal_kenmerk (v_ins_kenmerkwaarde9);
v_ins_kenmerk_key10 := bepaal_kenmerk (v_ins_kenmerkwaarde10);
v_ins_kenmerk_key11 := bepaal_kenmerk (v_ins_kenmerkwaarde11);
v_ins_kenmerk_key12 := bepaal_kenmerk (v_ins_kenmerkwaarde12);
v_ins_kenmerk_key13 := bepaal_kenmerk (v_ins_kenmerkwaarde13);
v_ins_kenmerk_key14 := bepaal_kenmerk (v_ins_kenmerkwaarde14);
v_ins_kenmerk_key15 := bepaal_kenmerk (v_ins_kenmerkwaarde15);
v_ins_kenmerk_key16 := bepaal_kenmerk (v_ins_kenmerkwaarde16);
v_ins_kenmerk_key17 := bepaal_kenmerk (v_ins_kenmerkwaarde17);
v_ins_kenmerk_key18 := bepaal_kenmerk (v_ins_kenmerkwaarde18);
v_ins_kenmerk_key19 := bepaal_kenmerk (v_ins_kenmerkwaarde19);
v_ins_kenmerk_key20 := bepaal_kenmerk (v_ins_kenmerkwaarde20);
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Disciplineomschrijving ongeldig';
v_ins_discipline_omschrijving :=
TRIM (v_ins_discipline_omschrijving);
IF v_ins_discipline_omschrijving IS NULL
OR LENGTH (v_ins_discipline_omschrijving) > 60
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errormsg := 'Groepsoortomschrijving ongeldig';
v_ins_srtgroep_omschrijving := TRIM (v_ins_srtgroep_omschrijving);
IF v_ins_srtgroep_omschrijving IS NULL
OR LENGTH (v_ins_srtgroep_omschrijving) > 60
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errormsg := 'Objectsoortcode ongeldig';
v_ins_srtdeel_code := TRIM (v_ins_srtdeel_code);
IF v_ins_srtdeel_code IS NULL OR LENGTH (v_ins_srtdeel_code) > 10
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errormsg := 'Objectsoortomschrijving ongeldig';
v_ins_srtdeel_omschrijving := TRIM (v_ins_srtdeel_omschrijving);
IF v_ins_srtdeel_omschrijving IS NULL
OR LENGTH (v_ins_srtdeel_omschrijving) > 100
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errormsg := 'Objectomschrijving ongeldig';
v_ins_deel_omschrijving := TRIM (v_ins_deel_omschrijving);
IF v_ins_deel_omschrijving IS NULL
OR LENGTH (v_ins_deel_omschrijving) > 60
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
v_errormsg := 'Objectopmerking ongeldig';
v_ins_deel_opmerking := TRIM (v_ins_deel_opmerking);
IF LENGTH (v_ins_deel_opmerking) > 320
THEN
v_ins_deel_opmerking := SUBSTR (v_ins_deel_opmerking, 1, 320);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Objectopmerking wordt afgebroken tot ['
|| v_ins_deel_opmerking
|| ']'
);
END IF;
--
v_errormsg := 'Locatiecode ongeldig';
v_alg_locatie_code := TRIM (v_alg_locatie_code);
IF LENGTH (v_alg_locatie_code) > 10
THEN
v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Locatiecode wordt afgebroken tot ['
|| v_alg_locatie_code
|| ']'
);
END IF;
--
v_errormsg := 'Gebouwcode ongeldig';
v_alg_gebouw_code := TRIM (v_alg_gebouw_code);
IF LENGTH (v_alg_gebouw_code) > 12
THEN
v_alg_gebouw_code := SUBSTR (v_alg_gebouw_code, 1, 12);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Gebouwcode wordt afgebroken tot ['
|| v_alg_gebouw_code
|| ']'
);
END IF;
--
v_errormsg := 'Bouwlaagvolgnummer ongeldig';
v_alg_verdieping_volgnr := TRIM (v_alg_verdieping_volgnr);
v_alg_verdieping_volgnr_n := NULL;
IF (v_alg_verdieping_volgnr IS NOT NULL)
THEN
v_alg_verdieping_volgnr_n :=
ROUND (fac.safe_to_number (v_alg_verdieping_volgnr));
IF v_alg_verdieping_volgnr_n NOT BETWEEN -999 AND 999
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
ELSE
v_alg_verdieping_volgnr_n :=
fac.safe_to_number (v_alg_verdieping_volgnr);
END IF;
END IF;
--
v_errormsg := 'Ruimtenummer ongeldig';
v_alg_ruimte_nr := TRIM (v_alg_ruimte_nr);
IF LENGTH (v_alg_ruimte_nr) > 10
THEN
v_alg_ruimte_nr := SUBSTR (v_alg_ruimte_nr, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Ruimtenummer wordt afgebroken tot ['
|| v_alg_ruimte_nr
|| ']'
);
END IF;
--
v_errormsg := 'Aantal ongeldig; maximale grootte 999999.99';
v_ins_deel_aantal := TRIM (v_ins_deel_aantal);
v_ins_deel_aantal := REPLACE (v_ins_deel_aantal, ',', '.');
v_ins_deel_aantal_n := NULL;
IF (v_ins_deel_aantal IS NOT NULL AND fac.getSetting('ins_explode_objects') = 0)
THEN
IF (fac.safe_to_number (v_ins_deel_aantal) IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
ELSE
v_ins_deel_aantal_n := fac.safe_to_number (v_ins_deel_aantal);
END IF;
ELSE
v_ins_deel_aantal_n := 0 ; -- Als de aantal-waarde in kolom leeg wordt gelaten dan vullen we deze met 0. Bij update gaan we dit conform afspraak vullen met juiste aantal-waarde.
END IF;
--
v_errormsg := 'Aanmaakdatum ongeldig';
IF v_ins_deel_aanmaak IS NOT NULL
THEN
v_ins_deel_aanmaak_d :=
TO_DATE (v_ins_deel_aanmaak, 'dd-mm-yyyy');
IF fac.safe_to_number(to_char(v_ins_deel_aanmaak_d, 'yyyy'))<1900 THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Let op, verkeerde datumnotatie!');
END IF;
ELSE
v_ins_deel_aanmaak_d := NULL;
END IF;
--
v_errormsg := 'Vervaldatum ongeldig';
IF v_ins_deel_vervaldatum IS NOT NULL
THEN
v_ins_deel_vervaldatum_d :=
TO_DATE (v_ins_deel_vervaldatum, 'dd-mm-yyyy');
IF fac.safe_to_number(to_char(v_ins_deel_vervaldatum_d, 'yyyy'))<1900 THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Let op, verkeerde datumnotatie!');
END IF;
ELSE
v_ins_deel_vervaldatum_d := NULL;
END IF;
-- De rest alleen ff trimmen.
v_ins_kenmerkwaarde1 := TRIM (v_ins_kenmerkwaarde1);
v_ins_kenmerkwaarde2 := TRIM (v_ins_kenmerkwaarde2);
v_ins_kenmerkwaarde3 := TRIM (v_ins_kenmerkwaarde3);
v_ins_kenmerkwaarde4 := TRIM (v_ins_kenmerkwaarde4);
v_ins_kenmerkwaarde5 := TRIM (v_ins_kenmerkwaarde5);
v_ins_kenmerkwaarde6 := TRIM (v_ins_kenmerkwaarde6);
v_ins_kenmerkwaarde7 := TRIM (v_ins_kenmerkwaarde7);
v_ins_kenmerkwaarde8 := TRIM (v_ins_kenmerkwaarde8);
v_ins_kenmerkwaarde9 := TRIM (v_ins_kenmerkwaarde9);
v_ins_kenmerkwaarde10 := TRIM (v_ins_kenmerkwaarde10);
v_ins_kenmerkwaarde11 := TRIM (v_ins_kenmerkwaarde11);
v_ins_kenmerkwaarde12 := TRIM (v_ins_kenmerkwaarde12);
v_ins_kenmerkwaarde13 := TRIM (v_ins_kenmerkwaarde13);
v_ins_kenmerkwaarde14 := TRIM (v_ins_kenmerkwaarde14);
v_ins_kenmerkwaarde15 := TRIM (v_ins_kenmerkwaarde15);
v_ins_kenmerkwaarde16 := TRIM (v_ins_kenmerkwaarde16);
v_ins_kenmerkwaarde17 := TRIM (v_ins_kenmerkwaarde17);
v_ins_kenmerkwaarde18 := TRIM (v_ins_kenmerkwaarde18);
v_ins_kenmerkwaarde19 := TRIM (v_ins_kenmerkwaarde19);
v_ins_kenmerkwaarde20 := TRIM (v_ins_kenmerkwaarde20);
-- Controle nieuwe objectcode en keten
v_errormsg := 'Controle Objectidentificatie en keten';
IF v_ongeldig = 0
THEN
v_bestaande_objectketen := 0;
v_bestaande_objectcode := 0 ;
SELECT count(*)
INTO v_bestaande_objectketen
FROM aaxx_v_dwh_ins_object v, ins_deel d
WHERE UPPER (v_ins_discipline_omschrijving) =
UPPER (v.discipline_omschrijving)
AND UPPER (v_ins_srtgroep_omschrijving) =
UPPER (v.groep_omschrijving)
AND UPPER (v_ins_srtdeel_omschrijving) =
UPPER (v.objectsoort_omschrijving)
AND UPPER (v_ins_srtdeel_code) =
UPPER (v.objectsoort_code)
AND UPPER (v_ins_deel_omschrijving) =
UPPER (v.identificatie)
AND v.koppel_type = 'Ruimte'
AND v.ins_deel_key = d.ins_deel_key
AND v.ruimte_key = d.ins_alg_ruimte_key
AND d.ins_deel_verwijder IS NULL ;
SELECT count(*)
INTO v_bestaande_objectcode
FROM aaxx_v_dwh_ins_object v
WHERE UPPER (v_ins_deel_omschrijving) =
UPPER (v.identificatie) ;
IF v_bestaande_objectketen=0 AND v_bestaande_objectcode > 0 THEN -- Nieuwe objectketen ECHTER de objectcode bestaat al. Klopt niet, dus we gaan waarschuwen en NIET inlezen..
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Nieuwe objectketen in CSV aangeboden, ECHTER de objectidentificatie bestaat al in Facilitor onder andere keten!. Record wordt niet ingelezen');
END IF;
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout bij wegschrijven importregel';
-- Als uit kenmerkheader een geldige kenmerksoort-key volgt,
-- dan is kenmerkwaarde<n> gevuld met <key>=<waarde>; zoniet,
-- dan is kenmerkwaarde<n> gevuld met <waarde>!
-- NB. Een NULL-waarde resulteert NIET in het wissen van een
-- kenmerkveld (bijwerken kan wel, maar wissen dus niet)!
INSERT INTO fac_imp_ins (
ins_discipline_omschrijving,
-- ins_discipline_kostensoort,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
ins_deel_opmerking,
reserveerbaar,
alg_locatie_code,
alg_gebouw_code,
alg_verdieping_volgnr,
alg_ruimte_nr,
res_deel_alg_level,
ins_kenmerkwaarde1,
ins_kenmerkwaarde2,
ins_kenmerkwaarde3,
ins_kenmerkwaarde4,
ins_kenmerkwaarde5,
ins_kenmerkwaarde6,
ins_kenmerkwaarde7,
ins_kenmerkwaarde8,
ins_kenmerkwaarde9,
ins_kenmerkwaarde10,
ins_kenmerkwaarde11,
ins_kenmerkwaarde12,
ins_kenmerkwaarde13,
ins_kenmerkwaarde14,
ins_kenmerkwaarde15,
ins_kenmerkwaarde16,
ins_kenmerkwaarde17,
ins_kenmerkwaarde18,
ins_kenmerkwaarde19,
ins_kenmerkwaarde20,
ins_deel_aanmaak,
ins_deel_vervaldatum,
ins_deel_aantal
)
VALUES (
v_ins_discipline_omschrijving,
v_ins_srtgroep_omschrijving,
v_ins_srtdeel_code,
v_ins_srtdeel_omschrijving,
v_ins_deel_omschrijving,
v_ins_deel_opmerking,
0, -- v_reserveerbaar_n, --
v_alg_locatie_code,
v_alg_gebouw_code,
v_alg_verdieping_volgnr_n,
v_alg_ruimte_nr,
-1, -- v_res_deel_alg_level_n,
DECODE (v_ins_kenmerk_key1, NULL, v_ins_kenmerkwaarde1, TO_CHAR (v_ins_kenmerk_key1) || '=' || SUBSTR (v_ins_kenmerkwaarde1, 1, 3900)),
DECODE (v_ins_kenmerk_key2, NULL, v_ins_kenmerkwaarde2, TO_CHAR (v_ins_kenmerk_key2) || '=' || SUBSTR (v_ins_kenmerkwaarde2, 1, 3900)),
DECODE (v_ins_kenmerk_key3, NULL, v_ins_kenmerkwaarde3, TO_CHAR (v_ins_kenmerk_key3) || '=' || SUBSTR (v_ins_kenmerkwaarde3, 1, 3900)),
DECODE (v_ins_kenmerk_key4, NULL, v_ins_kenmerkwaarde4, TO_CHAR (v_ins_kenmerk_key4) || '=' || SUBSTR (v_ins_kenmerkwaarde4, 1, 3900)),
DECODE (v_ins_kenmerk_key5, NULL, v_ins_kenmerkwaarde5, TO_CHAR (v_ins_kenmerk_key5) || '=' || SUBSTR (v_ins_kenmerkwaarde5, 1, 3900)),
DECODE (v_ins_kenmerk_key6, NULL, v_ins_kenmerkwaarde6, TO_CHAR (v_ins_kenmerk_key6) || '=' || SUBSTR (v_ins_kenmerkwaarde6, 1, 3900)),
DECODE (v_ins_kenmerk_key7, NULL, v_ins_kenmerkwaarde7, TO_CHAR (v_ins_kenmerk_key7) || '=' || SUBSTR (v_ins_kenmerkwaarde7, 1, 3900)),
DECODE (v_ins_kenmerk_key8, NULL, v_ins_kenmerkwaarde8, TO_CHAR (v_ins_kenmerk_key8) || '=' || SUBSTR (v_ins_kenmerkwaarde8, 1, 3900)),
DECODE (v_ins_kenmerk_key9, NULL, v_ins_kenmerkwaarde9, TO_CHAR (v_ins_kenmerk_key9) || '=' || SUBSTR (v_ins_kenmerkwaarde9, 1, 3900)),
DECODE (v_ins_kenmerk_key10, NULL, v_ins_kenmerkwaarde10, TO_CHAR (v_ins_kenmerk_key10) || '=' || SUBSTR (v_ins_kenmerkwaarde10, 1, 3900)),
DECODE (v_ins_kenmerk_key11, NULL, v_ins_kenmerkwaarde11, TO_CHAR (v_ins_kenmerk_key11) || '=' || SUBSTR (v_ins_kenmerkwaarde11, 1, 3900)),
DECODE (v_ins_kenmerk_key12, NULL, v_ins_kenmerkwaarde12, TO_CHAR (v_ins_kenmerk_key12) || '=' || SUBSTR (v_ins_kenmerkwaarde12, 1, 3900)),
DECODE (v_ins_kenmerk_key13, NULL, v_ins_kenmerkwaarde13, TO_CHAR (v_ins_kenmerk_key13) || '=' || SUBSTR (v_ins_kenmerkwaarde13, 1, 3900)),
DECODE (v_ins_kenmerk_key14, NULL, v_ins_kenmerkwaarde14, TO_CHAR (v_ins_kenmerk_key14) || '=' || SUBSTR (v_ins_kenmerkwaarde14, 1, 3900)),
DECODE (v_ins_kenmerk_key15, NULL, v_ins_kenmerkwaarde15, TO_CHAR (v_ins_kenmerk_key15) || '=' || SUBSTR (v_ins_kenmerkwaarde15, 1, 3900)),
DECODE (v_ins_kenmerk_key16, NULL, v_ins_kenmerkwaarde16, TO_CHAR (v_ins_kenmerk_key16) || '=' || SUBSTR (v_ins_kenmerkwaarde16, 1, 3900)),
DECODE (v_ins_kenmerk_key17, NULL, v_ins_kenmerkwaarde17, TO_CHAR (v_ins_kenmerk_key17) || '=' || SUBSTR (v_ins_kenmerkwaarde17, 1, 3900)),
DECODE (v_ins_kenmerk_key18, NULL, v_ins_kenmerkwaarde18, TO_CHAR (v_ins_kenmerk_key18) || '=' || SUBSTR (v_ins_kenmerkwaarde18, 1, 3900)),
DECODE (v_ins_kenmerk_key19, NULL, v_ins_kenmerkwaarde19, TO_CHAR (v_ins_kenmerk_key19) || '=' || SUBSTR (v_ins_kenmerkwaarde19, 1, 3900)),
DECODE (v_ins_kenmerk_key20, NULL, v_ins_kenmerkwaarde20, TO_CHAR (v_ins_kenmerk_key20) || '=' || SUBSTR (v_ins_kenmerkwaarde20, 1, 3900)),
v_ins_deel_aanmaak_d,
v_ins_deel_vervaldatum_d,
v_ins_deel_aantal_n
);
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;
EXCEPTION
WHEN OTHERS
THEN
v_ongeldig := 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!'
);
COMMIT;
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',
'Objecten/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (
p_import_key,
'S',
'Objecten/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 objecten afgebroken! regel:' || v_file_index);
END aaxx_import_ins_assetman;
/
CREATE OR REPLACE PROCEDURE aaxx_update_ins_assetman (p_import_key IN NUMBER)
AS
CURSOR c_bestaand -- Aantal op huidige aantal ins_deel_key zetten
IS
SELECT DISTINCT d.ins_deel_key,
d.ins_deel_omschrijving,
i.ins_deel_aantal aantal_imp,
d.ins_deel_aantal aantal_ins
FROM fac_imp_ins i, aaxx_v_dwh_ins_object v, ins_deel d
WHERE UPPER (i.ins_discipline_omschrijving) =
UPPER (v.discipline_omschrijving)
AND UPPER (i.ins_srtgroep_omschrijving) = UPPER (v.groep_omschrijving)
AND UPPER (i.ins_srtdeel_omschrijving) =
UPPER (v.objectsoort_omschrijving)
AND UPPER (i.ins_srtdeel_code) = UPPER (v.objectsoort_code)
AND UPPER (i.ins_deel_omschrijving) = UPPER (v.identificatie)
AND v.koppel_type = 'Ruimte'
AND v.ins_deel_key = d.ins_deel_key
AND v.ruimte_key = d.ins_alg_ruimte_key
AND d.ins_deel_verwijder IS NULL
AND i.ins_deel_aantal = 0;
CURSOR c_nieuw -- aantal op 1
IS
SELECT i.ins_deel_omschrijving, i.ins_deel_aantal aantal_imp
FROM fac_imp_ins i
WHERE i.ins_deel_aantal = 0
AND i.ins_deel_omschrijving NOT IN
(SELECT DISTINCT d.ins_deel_omschrijving
FROM fac_imp_ins i, aaxx_v_dwh_ins_object v, ins_deel d
WHERE UPPER (i.ins_discipline_omschrijving) =
UPPER (v.discipline_omschrijving)
AND UPPER (i.ins_srtgroep_omschrijving) =
UPPER (v.groep_omschrijving)
AND UPPER (i.ins_srtdeel_omschrijving) =
UPPER (v.objectsoort_omschrijving)
AND UPPER (i.ins_srtdeel_code) =
UPPER (v.objectsoort_code)
AND UPPER (i.ins_deel_omschrijving) =
UPPER (v.identificatie)
AND v.koppel_type = 'Ruimte'
AND v.ins_deel_key = d.ins_deel_key
AND v.ruimte_key = d.ins_alg_ruimte_key
AND d.ins_deel_verwijder IS NULL
AND i.ins_deel_aantal = 0);
-- Alle niet gevulde kenmerken echt leegmaken, want anders worden ze met standaard update namelijk verwijderd.
-- p_srtkenmerkgroepwaarde = '234|1=37-ZB-DR' is gevuld..... -- p_srtkenmerkgroepwaarde = '234|1=' is LEEG maar moet ook echt op NULL
-- Voor HeyDay-upload geldt namelijk dat als het niet gevuld is, dan wordt er ook niets gewijzigd.
CURSOR c_del
IS
SELECT ins_deel_omschrijving, ins_kenmerkwaarde1, ins_kenmerkwaarde2, ins_kenmerkwaarde3, ins_kenmerkwaarde4, ins_kenmerkwaarde5, ins_kenmerkwaarde6, ins_kenmerkwaarde7, ins_kenmerkwaarde8, ins_kenmerkwaarde9, ins_kenmerkwaarde10,
ins_kenmerkwaarde11, ins_kenmerkwaarde12, ins_kenmerkwaarde13, ins_kenmerkwaarde14, ins_kenmerkwaarde15, ins_kenmerkwaarde16, ins_kenmerkwaarde17, ins_kenmerkwaarde18, ins_kenmerkwaarde19, ins_kenmerkwaarde20
FROM fac_imp_ins i ;
BEGIN
-- Starten met correctie op het aantal-veld.
--- Alle 0-waarden terugzetten naar ins_deel_aantal indien het bestaande objecten zijn..
FOR rec IN c_bestaand
LOOP
BEGIN
UPDATE fac_imp_ins i
SET i.ins_deel_aantal = rec.aantal_ins
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END;
END LOOP;
FOR rec IN c_nieuw
LOOP
BEGIN
UPDATE fac_imp_ins i
SET i.ins_deel_aantal = 1
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END;
END LOOP;
FOR rec IN c_del
LOOP
BEGIN
IF SUBSTR (rec.ins_kenmerkwaarde1, INSTR (rec.ins_kenmerkwaarde1, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde1 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde2, INSTR (rec.ins_kenmerkwaarde2, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde2 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde3, INSTR (rec.ins_kenmerkwaarde3, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde3 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde4, INSTR (rec.ins_kenmerkwaarde4, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde4 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde5, INSTR (rec.ins_kenmerkwaarde5, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde5 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde6, INSTR (rec.ins_kenmerkwaarde6, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde6 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde7, INSTR (rec.ins_kenmerkwaarde7, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde7 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde8, INSTR (rec.ins_kenmerkwaarde8, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde8 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde9, INSTR (rec.ins_kenmerkwaarde9, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde9 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde10, INSTR (rec.ins_kenmerkwaarde10, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde10 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde11, INSTR (rec.ins_kenmerkwaarde11, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde11 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde12, INSTR (rec.ins_kenmerkwaarde12, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde12 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde13, INSTR (rec.ins_kenmerkwaarde13, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde13 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde14, INSTR (rec.ins_kenmerkwaarde14, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde14 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde15, INSTR (rec.ins_kenmerkwaarde15, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde15 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde16, INSTR (rec.ins_kenmerkwaarde16, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde16 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde17, INSTR (rec.ins_kenmerkwaarde17, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde17 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde18, INSTR (rec.ins_kenmerkwaarde18, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde18 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde19, INSTR (rec.ins_kenmerkwaarde19, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde19 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
IF SUBSTR (rec.ins_kenmerkwaarde20, INSTR (rec.ins_kenmerkwaarde20, '=') + 1) IS NULL THEN
UPDATE fac_imp_ins i
SET i.ins_kenmerkwaarde20 = ''
WHERE i.ins_deel_omschrijving = rec.ins_deel_omschrijving ;
END IF;
END;
END LOOP;
-- Nu staat alles in fac_imp_ins goed en kunnen we gaan updaten via de standaard procedure
fac_update_ins (p_import_key);
-- De gewijzigde standaard objectvelden die niet in standaard update worden meegenomen, gaan we via post_update regelen.
aaxx_post_update_ins_assetman (p_import_key);
END aaxx_update_ins_assetman;
/
CREATE OR REPLACE PROCEDURE aaxx_post_update_ins_assetman (p_import_key IN NUMBER)
AS
v_aanduiding VARCHAR (400);
-- Bestaande Objecten aanpassen: Datum aanmaak, Datum vervallen, Opmerking en Aantal
---- Werkwijze: Als gevuld en afwijkend huidige ins_waarde dan aanpassen. Als niet gevuld in importsheet, dan asset intact laten.
CURSOR c_update
IS
SELECT DISTINCT d.ins_deel_key,
i.ins_deel_omschrijving,
i.ins_deel_aanmaak aanmaak_imp,
d.ins_deel_aanmaak aanmaak_ins,
i.ins_deel_vervaldatum vervaldatum_imp,
d.ins_deel_vervaldatum vervaldatum_ins,
i.ins_deel_opmerking opmerking_imp,
d.ins_deel_opmerking opmerking_ins,
i.ins_deel_aantal aantal_imp,
d.ins_deel_aantal aantal_ins
FROM fac_imp_ins i, aaxx_v_dwh_ins_object v, ins_deel d
WHERE UPPER (i.ins_discipline_omschrijving) =
UPPER (v.discipline_omschrijving)
AND UPPER (i.ins_srtgroep_omschrijving) = UPPER (v.groep_omschrijving)
AND UPPER (i.ins_srtdeel_omschrijving) =
UPPER (v.objectsoort_omschrijving)
AND UPPER (i.ins_srtdeel_code) = UPPER (v.objectsoort_code)
AND UPPER (i.ins_deel_omschrijving) = UPPER (v.identificatie)
AND v.koppel_type = 'Ruimte'
AND v.ins_deel_key = d.ins_deel_key
AND v.ruimte_key = d.ins_alg_ruimte_key
AND d.ins_deel_verwijder IS NULL ;
BEGIN
FOR rec IN c_update
LOOP
BEGIN
v_aanduiding := 'Gewijzigd aanmaakdatum van ' || TO_CHAR(rec.aanmaak_ins, 'dd-mm-yyyy') || ' naar ' || TO_CHAR(rec.aanmaak_imp, 'dd-mm-yyyy') ;
IF rec.aanmaak_imp is not null and rec.aanmaak_imp <> rec.aanmaak_ins THEN
UPDATE ins_deel d
SET d.ins_deel_aanmaak = rec.aanmaak_imp
WHERE d.ins_deel_key = rec.ins_deel_key ;
fac.trackaction ('INSUPD', rec.ins_deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
v_aanduiding := 'Gewijzigd vervaldatum ' || TO_CHAR(rec.vervaldatum_ins, 'dd-mm-yyyy') || ' naar ' || TO_CHAR(rec.vervaldatum_imp, 'dd-mm-yyyy') ;
IF rec.vervaldatum_imp is not null and (rec.vervaldatum_imp <> rec.vervaldatum_ins or rec.vervaldatum_ins is null) THEN
UPDATE ins_deel d
SET d.ins_deel_vervaldatum = rec.vervaldatum_imp
WHERE d.ins_deel_key = rec.ins_deel_key ;
fac.trackaction ('INSUPD', rec.ins_deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
v_aanduiding := 'Gewijzigd omschrijving ' || rec.opmerking_ins || ' naar ' || rec.opmerking_imp ;
IF rec.opmerking_imp is not null and (rec.opmerking_imp <> rec.opmerking_ins or rec.opmerking_ins is null) THEN
UPDATE ins_deel d
SET d.ins_deel_opmerking = rec.opmerking_imp
WHERE d.ins_deel_key = rec.ins_deel_key ;
fac.trackaction ('INSUPD', rec.ins_deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
v_aanduiding := 'Gewijzigd aantal ' || rec.aantal_ins || ' naar ' || rec.aantal_imp ;
IF rec.aantal_imp is not null and rec.aantal_imp <> rec.aantal_ins THEN
UPDATE ins_deel d
SET d.ins_deel_aantal = rec.aantal_imp
WHERE d.ins_deel_key = rec.ins_deel_key ;
fac.trackaction ('INSUPD', rec.ins_deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
END;
END LOOP;
END;
/
-- Nieuwe upload GEBREKEN
CREATE OR REPLACE PROCEDURE aaxx_import_nen2767_assetman (
p_import_key IN NUMBER)
AS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000); -- Input line
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER := 0;
v_ongeldig NUMBER (1);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_count_import_n NUMBER (10);
v_count NUMBER;
v_mld_stdmelding_key NUMBER (10);
v_regel NUMBER;
v_mld_srtkenmerk_key1 VARCHAR2 (255);
v_mld_srtkenmerk_key2 VARCHAR2 (255);
v_mld_srtkenmerk_key3 VARCHAR2 (255);
v_mld_srtkenmerk_key4 VARCHAR2 (255);
v_mld_srtkenmerk_key5 VARCHAR2 (255);
v_mld_srtkenmerk_key6 VARCHAR2 (255);
v_mld_srtkenmerk_key7 VARCHAR2 (255);
v_mld_srtkenmerk_key8 VARCHAR2 (255);
v_mld_srtkenmerk_key9 VARCHAR2 (255);
v_mld_srtkenmerk_key10 VARCHAR2 (255);
v_alg_gebouw_code VARCHAR2 (1000) :=NULL; -- Zie 02 - !!
v_ins_deel_omschrijving VARCHAR2 (1000);
v_ins_deel NUMBER (10);
v_mld_melding_datum VARCHAR2 (1000);
v_mld_melding_omschrijving VARCHAR2 (1000);
v_prs_perslid_email VARCHAR2 (1000); -- inspecteur
v_behandelaar_email VARCHAR2 (1000); -- behandelaar
v_gebrekcode VARCHAR2 (1000);
-- v_ernst VARCHAR2 (1000);
v_omvang VARCHAR2 (1000);
v_intensiteit VARCHAR2 (1000);
v_aspect1 VARCHAR2 (1000);
v_aspect2 VARCHAR2 (1000);
v_aspect3 VARCHAR2 (1000);
v_aspect4 VARCHAR2 (1000);
v_aspect5 VARCHAR2 (1000);
v_aspect6 VARCHAR2 (1000);
v_aspect7 VARCHAR2 (1000);
v_foto VARCHAR2 (1000);
v_kosten VARCHAR2 (1000);
v_plandatum VARCHAR2 (1000);
v_meldingnr VARCHAR2 (1000);
v_ongeldig_object NUMBER (1) :=0;
v_ongeldig_gebrek NUMBER (1) :=0;
v_melding_GV_aantal NUMBER (10);
v_melding_GV VARCHAR2 (1000);
v_mld_kenmerkwaarde1 VARCHAR2 (4000);
v_mld_kenmerkwaarde2 VARCHAR2 (4000);
v_mld_kenmerkwaarde3 VARCHAR2 (4000);
v_mld_kenmerkwaarde4 VARCHAR2 (4000);
v_mld_kenmerkwaarde5 VARCHAR2 (4000);
v_mld_kenmerkwaarde6 VARCHAR2 (4000);
v_mld_kenmerkwaarde7 VARCHAR2 (4000);
v_mld_kenmerkwaarde8 VARCHAR2 (4000);
v_mld_kenmerkwaarde9 VARCHAR2 (4000); -- Voor vullen van de behandelaar
v_mld_kenmerkwaarde10 VARCHAR2 (4000); -- Voor vullen van de lopende gebreksmelding
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
-- Controleer tijdens import-fase alleen op bestaan van kenmerksoort (of
-- deze - via een kenmerk - wel is gedefinieerd voor de betreffende melding -
-- discipline/vakgroep/st-melding, volgt pas tijdens de update-fase)!
--
-- kw is bijvoorbeeld 'Parkeercode' of 'Parkeercode|3' waarbij de laatste in groep 3 zit
-- het resultaat is NULL (als niet gevonden) of 234|3 voor strkenmer_key 234 in groep 3
-- Als geen groep is meegegeven wordt 234|0 opgeleverd (de default groep)
FUNCTION bepaal_srtkenmerk_key (p_kw IN VARCHAR)
RETURN VARCHAR
IS
v_srtkenmerk_key NUMBER;
v_kenmerk_groep NUMBER;
v_kw VARCHAR(250);
BEGIN
v_kenmerk_groep := 0;
v_kw := p_kw;
IF INSTR (v_kw, '|') > 1
THEN
v_kenmerk_groep := SUBSTR (v_kw, INSTR (v_kw, '|') + 1);
v_kw := SUBSTR (v_kw, 1, INSTR (v_kw, '|') - 1);
END IF;
IF fac.safe_to_number (v_kw) IS NULL
THEN -- kenmerkwaarde is alfanumeriek (dus omschrijving)!
SELECT mld_srtkenmerk_key
INTO v_srtkenmerk_key
FROM mld_srtkenmerk -- ins_v_aanwezigsrtkenmerk
WHERE mld_srtkenmerk_upper = UPPER (v_kw)
AND mld_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
ELSE -- kenmerkwaarde is numeriek (dus key)!
SELECT mld_srtkenmerk_key
INTO v_srtkenmerk_key
FROM mld_srtkenmerk -- ins_v_aanwezigsrtkenmerk
WHERE mld_srtkenmerk_key = fac.safe_to_number (v_kw)
AND mld_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
END IF;
RETURN TO_CHAR(v_srtkenmerk_key) || '|' || TO_CHAR(v_kenmerk_groep);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
IF p_kw IS NULL OR UPPER (p_kw) LIKE 'KENMERK%'
THEN
RETURN NULL;
ELSE
fac.imp_writelog (p_import_key,
'W',
'Fout bij bepalen kenmerksoort [' || p_kw || ']',
'Bestaat niet of type ongeldig');
COMMIT;
RETURN NULL;
END IF;
END;
FUNCTION get_aspect_value (p_aspect IN VARCHAR2)
RETURN VARCHAR2
IS
v_result VARCHAR2 (100);
BEGIN
v_result := p_aspect;
IF p_aspect IS NULL
THEN
v_result := 'NVT';
END IF;
IF p_aspect = '0' -- Nodig om bij aanvullen lopende gebreksmeldingen de aspectwaarde weer op NVT te krijgen
THEN
v_result := '0 - NVT';
END IF;
IF p_aspect = '1'
THEN
v_result := 'Gering';
END IF;
IF p_aspect = '2'
THEN
v_result := 'Matig';
END IF;
IF p_aspect = '3'
THEN
v_result := 'Sterk';
END IF;
RETURN v_result;
END;
BEGIN
v_errorhint := 'cnd_import_nen2767_results';
v_count_tot := 0;
v_count_import := 0;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_regel := rec1.fac_imp_file_index;
v_aanduiding := '';
v_errorhint := 'Fout bij opvragen te importeren rij';
v_ongeldig := 0;
-- Lees alle veldwaarden
-- 01
v_aanduiding := 'Probleem bij v_ins_deel_omschrijving: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
1,
v_ins_deel_omschrijving);
v_ins_deel_omschrijving := TRIM (v_ins_deel_omschrijving);
-- 02
v_aanduiding := 'Probleem bij v_mld_melding_datum: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
2,
v_mld_melding_datum);
v_mld_melding_datum := TRIM (v_mld_melding_datum);
-- 03
v_aanduiding := 'Probleem bij v_gebrekcode: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
3,
v_gebrekcode);
v_gebrekcode := TRIM (v_gebrekcode);
-- 05
v_aanduiding := 'Probleem bij v_omvang: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
5,
v_omvang);
v_omvang := TRIM (v_omvang);
-- 06
v_aanduiding := 'Probleem bij v_intensiteit: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
6,
v_intensiteit);
v_intensiteit := TRIM (v_intensiteit);
-- 07
v_aanduiding := 'Probleem bij v_aspect1: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
7,
v_aspect1);
v_aspect1 := TRIM (v_aspect1);
-- 08
v_aanduiding := 'Probleem bij v_aspect2: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
8,
v_aspect2);
v_aspect2 := TRIM (v_aspect2);
-- 09
v_aanduiding := 'Probleem bij v_aspect3: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
9,
v_aspect3);
v_aspect3 := TRIM (v_aspect3);
-- 10
v_aanduiding := 'Probleem bij v_aspect4: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
10,
v_aspect4);
v_aspect4 := TRIM (v_aspect4);
-- 11
v_aanduiding := 'Probleem bij v_aspect5: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
11,
v_aspect5);
v_aspect5 := TRIM (v_aspect5);
-- 12
v_aanduiding := 'Probleem bij v_aspect6: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
12,
v_aspect6);
v_aspect6 := TRIM (v_aspect6);
-- 13
v_aanduiding := 'Probleem bij v_aspect7: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
13,
v_aspect7);
v_aspect7 := TRIM (v_aspect7);
-- 14
v_aanduiding := 'Probleem bij v_mld_melding_omschrijving: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
14,
v_mld_melding_omschrijving);
v_mld_melding_omschrijving := TRIM (v_mld_melding_omschrijving);
-- 15
v_aanduiding := 'Probleem bij v_prs_perslid_email: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
15,
v_prs_perslid_email);
v_prs_perslid_email := TRIM (v_prs_perslid_email);
-- 16
v_aanduiding := 'Probleem bij v_behandelaar_email: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
16,
v_behandelaar_email);
v_behandelaar_email := TRIM (v_behandelaar_email);
-- 17
v_aanduiding := 'Probleem bij v_foto: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
17,
v_foto);
v_foto := TRIM (v_foto);
-- 18
v_aanduiding := 'Probleem bij v_kosten: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
18,
v_kosten);
v_kosten := TRIM (v_kosten);
-- 19
v_aanduiding := 'Probleem bij v_plandatum: ';
fac.imp_getfield_nr (v_newline,
c_fielddelimitor,
19,
v_plandatum);
v_plandatum := TRIM (v_plandatum);
-- 19 t/m 28
v_aanduiding := 'Probleem bij vullen v_mld_kenmerkwaarde 1 t/m 10: ';
fac.imp_getfield_nr (v_newline,c_fielddelimitor,20, v_mld_kenmerkwaarde1);
v_mld_kenmerkwaarde1 := TRIM (v_mld_kenmerkwaarde1);
fac.imp_getfield_nr (v_newline,c_fielddelimitor,21, v_mld_kenmerkwaarde2);
v_mld_kenmerkwaarde2 := TRIM (v_mld_kenmerkwaarde2);
fac.imp_getfield_nr (v_newline,c_fielddelimitor,22, v_mld_kenmerkwaarde3);
v_mld_kenmerkwaarde3 := TRIM (v_mld_kenmerkwaarde3);
fac.imp_getfield_nr (v_newline,c_fielddelimitor,23, v_mld_kenmerkwaarde4);
v_mld_kenmerkwaarde4 := TRIM (v_mld_kenmerkwaarde4);
fac.imp_getfield_nr (v_newline,c_fielddelimitor,24, v_mld_kenmerkwaarde5);
v_mld_kenmerkwaarde5 := TRIM (v_mld_kenmerkwaarde5);
fac.imp_getfield_nr (v_newline,c_fielddelimitor,25, v_mld_kenmerkwaarde6);
v_mld_kenmerkwaarde6 := TRIM (v_mld_kenmerkwaarde6);
fac.imp_getfield_nr (v_newline,c_fielddelimitor,26, v_mld_kenmerkwaarde7);
v_mld_kenmerkwaarde7 := TRIM (v_mld_kenmerkwaarde7);
fac.imp_getfield_nr (v_newline,c_fielddelimitor,27, v_mld_kenmerkwaarde8);
v_mld_kenmerkwaarde8 := TRIM (v_mld_kenmerkwaarde8);
/* fac.imp_getfield_nr (v_newline,c_fielddelimitor,28, v_mld_kenmerkwaarde9);
v_mld_kenmerkwaarde9 := TRIM (v_mld_kenmerkwaarde9);
fac.imp_getfield_nr (v_newline,c_fielddelimitor,28, v_mld_kenmerkwaarde10);
v_mld_kenmerkwaarde10 := TRIM (v_mld_kenmerkwaarde10);
*/
v_aanduiding :=
'['
|| v_alg_gebouw_code
|| '-'
|| v_ins_deel_omschrijving
|| '-'
|| v_gebrekcode
|| '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij de volgende kolommen:
-- 1. Objectidentificatie
-- 2. Datum
-- 3. stdmelding
-- 5. omvang
-- 9. intensiteit
-- 10. Aspectwaarde1
-- 11. Aspectwaarde2
-- 12. Aspectwaarde3
-- 13. Aspectwaarde4
-- 14. Aspectwaarde5
-- 15. Aspectwaarde6
-- 16. Aspectwaarde7
-- 17. Opmerking
-- 18. Inspecteur
-- 19. Behandelaar
-- 20. Foto
-- 21. Kosten
-- 22. Datum gepland
-- 23. Dienst
-- 24. Taakgroep
-- 25. Datum Gereed (inspecteur)
-- 26. geadviseerd startjaar
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
-- De tweede waarde is de waarde uit de plato import. Als er geen tweede waarde is dan zijn ze gelijk.
IF (header_is_valid = 0)
THEN
IF
UPPER (v_ins_deel_omschrijving) = 'OBJECTIDENTIFICATIE'
AND UPPER (v_mld_melding_datum) = 'DATUM'
AND (UPPER (v_gebrekcode) = 'STDMELDING' OR UPPER (v_gebrekcode) = 'GEBREKCODE')
AND UPPER (v_omvang) = 'OMVANG'
AND UPPER (v_intensiteit) = 'INTENSITEIT'
AND UPPER (v_aspect1) = 'ASPECTWAARDE1'
AND UPPER (v_aspect2) = 'ASPECTWAARDE2'
AND UPPER (v_aspect3) = 'ASPECTWAARDE3'
AND UPPER (v_aspect4) = 'ASPECTWAARDE4'
AND UPPER (v_aspect5) = 'ASPECTWAARDE5'
AND UPPER (v_aspect6) = 'ASPECTWAARDE6'
AND UPPER (v_aspect7) = 'ASPECTWAARDE7'
AND UPPER (v_mld_melding_omschrijving) = 'OPMERKING'
AND UPPER (v_prs_perslid_email) = 'INSPECTEUR'
AND UPPER (v_behandelaar_email) = 'BEHANDELAAR'
AND UPPER (v_foto) = 'FOTO'
AND UPPER (v_kosten) = 'KOSTEN'
AND UPPER (v_plandatum) = 'DATUM GEPLAND'
AND UPPER (v_mld_kenmerkwaarde1) = 'DIENST'
AND UPPER (v_mld_kenmerkwaarde2) = 'TAAKGROEP'
AND UPPER (v_mld_kenmerkwaarde3) = 'DATUM GEREED (INSPECTEUR)'
AND UPPER (v_mld_kenmerkwaarde4) = 'GEADVISEERD STARTJAAR'
THEN
v_mld_srtkenmerk_key1 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde1);
v_mld_srtkenmerk_key2 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde2);
v_mld_srtkenmerk_key3 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde3);
v_mld_srtkenmerk_key4 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde4);
v_mld_srtkenmerk_key5 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde5);
v_mld_srtkenmerk_key6 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde6);
v_mld_srtkenmerk_key7 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde7);
v_mld_srtkenmerk_key8 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde8);
-- v_mld_srtkenmerk_key9 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde9);
-- v_mld_srtkenmerk_key10 := bepaal_srtkenmerk_key (v_mld_kenmerkwaarde10);
header_is_valid := 1;
ELSE
IF rec1.fac_imp_file_index = 1
THEN
fac.imp_writelog (
p_import_key,
'I',
'Header ongeldig: '
|| UPPER (v_ins_deel_omschrijving) || '-' || UPPER (v_mld_melding_datum) || '-'
|| UPPER (v_gebrekcode) || '-' || UPPER (v_omvang) || '-' || UPPER (v_intensiteit) || '-' || UPPER (v_aspect1) || '-'
|| UPPER (v_aspect2) || '-' || UPPER (v_aspect3) || '-' || UPPER (v_aspect4) || '-' || UPPER (v_aspect5) || '-' || UPPER (v_aspect6) || '-' || UPPER (v_aspect7) || '-'
|| UPPER (v_mld_melding_omschrijving) || '-' || UPPER (v_prs_perslid_email) || '-' || UPPER (v_behandelaar_email) || '-' || UPPER (v_foto) || '-' || UPPER (v_kosten) || '-' || UPPER (v_plandatum) || '-'
|| UPPER (v_mld_kenmerkwaarde1) || '-' || UPPER (v_mld_kenmerkwaarde2) || '-' || UPPER (v_mld_kenmerkwaarde3) || '-' || UPPER (v_mld_kenmerkwaarde4),
'');
END IF;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
--
v_errorhint :=
'Ongeldige kolom OBJECTIDENTIFICATIE (moet gevuld en maximaal 60 tekens zijn) [' || v_ins_deel_omschrijving || ']';
v_ongeldig_object := 0;
IF (v_ins_deel_omschrijving IS NULL)
OR (LENGTH (v_ins_deel_omschrijving) > 60)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
v_ongeldig_object := 1;
END IF;
--
v_errorhint :=
'Ongeldige kolom OBJECTIDENTIFICATIE (object is onbekend) [' || v_ins_deel_omschrijving || ']';
IF v_ongeldig_object=0
THEN
SELECT count(*)
INTO v_ins_deel
FROM ins_v_aanwezigdeel
WHERE ins_deel_upper = UPPER (v_ins_deel_omschrijving) ;
IF v_ins_deel = 0
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
v_ongeldig_object := 1;
END IF;
END IF;
--
v_errorhint :=
'Ongeldige kolom DATUM (indien gevuld dan met geldige datum in formaat dd-mm-jjjj zijn) [' || v_mld_melding_datum || ']';
IF v_mld_melding_datum IS NOT NULL AND fac.safe_to_date (v_mld_melding_datum, 'dd-mm-yyyy') IS NULL
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom STDMELDING (moet gevuld en maximaal 20 tekens zijn) [' || v_gebrekcode || ']';
v_ongeldig_gebrek := 0;
IF (v_gebrekcode IS NULL) OR (LENGTH (v_gebrekcode) > 20)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
v_ongeldig_gebrek := 1;
END IF;
-- Bepaal of gebrek uberhaupt wel in gebrekenlijst voorkomt
v_errorhint :=
'Gebrek (melding) niet gevonden (bestaat niet), regel wordt overgeslagen';
SELECT max(sm.mld_stdmelding_key)
INTO v_mld_stdmelding_key
FROM mld_stdmelding sm
WHERE UPPER(mld_stdmelding_code) = UPPER (v_gebrekcode);
IF v_mld_stdmelding_key IS NULL
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
v_ongeldig_gebrek := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom OMVANG - indien gevuld moet 1,2,3,4 of 5 zijn [' || v_omvang || ']';
-- Als de codering ingevuld is dan gaan we zelf op zoek naar de omschrijving.
IF v_omvang IS NOT NULL
THEN
IF fac.safe_to_number(v_omvang) IN (1,
2,
3,
4,
5)
THEN
CASE v_omvang
WHEN 1
THEN
v_omvang := '< 2% Incidenteel';
WHEN 2
THEN
v_omvang := '2% tot 10% Plaatselijk';
WHEN 3
THEN
v_omvang := '10% tot 30% Regelmatig';
WHEN 4
THEN
v_omvang := '30% tot 70% Aanzienlijk';
WHEN 5
THEN
v_omvang := '> 70% Algemeen';
END CASE;
ELSE
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
END IF;
--
v_errorhint :=
'Ongeldig kolom INTENSITEIT - indien gevuld moet 1,2 of 3 zijn: [' || v_intensiteit || ']'
|| v_intensiteit;
-- Als de codering ingevuld is dan gaan we zelf op zoek naar de omschrijving.
IF v_intensiteit IS NOT NULL
THEN
IF fac.safe_to_number(v_intensiteit) IN (1, 2, 3)
THEN
CASE v_intensiteit
WHEN 1
THEN
v_intensiteit := '1 - Beginstadium';
WHEN 2
THEN
v_intensiteit := '2 - Gevorderd stadium';
WHEN 3
THEN
v_intensiteit := '3 - Eindstadium';
END CASE;
ELSE
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
END IF;
--
v_errorhint :=
'Ongeldig kolom ASPECT1 (moet gevuld en maximaal 20 tekens zijn)';
v_aspect1 := get_aspect_value (v_aspect1);
IF (v_aspect1 IS NULL) OR (LENGTH (v_aspect1) > 20)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom ASPECT2 (moet gevuld en maximaal 20 tekens zijn)';
v_aspect2 := get_aspect_value (v_aspect2);
IF (v_aspect2 IS NULL) OR (LENGTH (v_aspect2) > 20)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom ASPECT3 (moet gevuld en maximaal 20 tekens zijn)';
v_aspect3 := get_aspect_value (v_aspect3);
IF (v_aspect3 IS NULL) OR (LENGTH (v_aspect3) > 20)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom ASPECT4 (moet gevuld en maximaal 20 tekens zijn)';
v_aspect4 := get_aspect_value (v_aspect4);
IF (v_aspect4 IS NULL) OR (LENGTH (v_aspect4) > 20)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom ASPECT5 (moet gevuld en maximaal 20 tekens zijn)';
v_aspect5 := get_aspect_value (v_aspect5);
IF (v_aspect5 IS NULL) OR (LENGTH (v_aspect5) > 20)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom ASPECT6 (moet gevuld en maximaal 20 tekens zijn)';
v_aspect6 := get_aspect_value (v_aspect6);
IF (v_aspect6 IS NULL) OR (LENGTH (v_aspect6) > 20)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom ASPECT7 (moet gevuld en maximaal 20 tekens zijn)';
v_aspect7 := get_aspect_value (v_aspect7);
IF (v_aspect7 IS NULL) OR (LENGTH (v_aspect7) > 20)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom OPMERKING (mag maximaal 2000 tekens zijn)';
IF (LENGTH (v_mld_melding_omschrijving) > 2000)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint
|| ' - Opmerking wordt afgekapt op 2000 tekens');
v_mld_melding_omschrijving :=
SUBSTR (v_mld_melding_omschrijving, 1, 2000);
END IF;
--
v_errorhint :=
'Ongeldig kolom INSPECTEUR (moet ingevuld en mag maximaal 200 tekens zijn) [' || v_prs_perslid_email || ']';
IF v_prs_perslid_email IS NOT NULL
AND LENGTH (v_prs_perslid_email) > 200
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom BEHANDELAAR (indien ingevuld mag het maximaal 200 tekens zijn) [' || v_behandelaar_email || ']';
IF LENGTH (v_behandelaar_email) > 200
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
--
v_errorhint :=
'Ongeldig kolom FOTO (mag maximaal 50 tekens zijn) [' || v_foto || ']';
IF (LENGTH (v_foto) > 50)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Foto wordt overgeslagen');
v_foto := NULL;
END IF;
--
v_kosten := REPLACE (v_kosten, ',', '.');
v_errorhint :=
'Ongeldig kolom KOSTEN (indien gevuld dan een cijfer met max 2 decimalen)';
IF (v_kosten IS NOT NULL)
AND (fac.safe_to_number (v_kosten) IS NULL)
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
v_errorhint := 'Ongeldig kolom DATUM GEPLAND (indien gevuld dan met geldige datum in formaat dd-mm-jjjj zijn) [' || v_plandatum || ']';
IF v_plandatum IS NOT NULL AND fac.safe_to_date (v_plandatum, 'dd-mm-yyyy') IS NULL
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
-- Onderstaande doen we in UPDATE...
v_errorhint := 'Bepaal of er al een lopende gebreks-melding is';
v_meldingnr := NULL ;
IF v_ongeldig_object = 0 AND v_ongeldig_gebrek = 0 AND v_ongeldig = 0
THEN
SELECT MAX (m.mld_melding_key)
INTO v_meldingnr
FROM mld_melding m,
mld_stdmelding sm,
mld_melding_object mo,
ins_deel d
WHERE m.mld_melding_key = mo.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND UPPER (sm.mld_stdmelding_code) = UPPER (v_gebrekcode)
AND mo.ins_deel_key = d.ins_deel_key
AND UPPER (d.ins_deel_omschrijving) = UPPER (v_ins_deel_omschrijving)
AND m.mld_melding_status IN (0,2,3,4,7,99) ; -- Lopend
END IF;
-- Als het GEEN bestaande melding is, dan zijn intensiteit en omvang verplicht en plandatum en meldingsdatum
IF v_meldingnr IS NULL AND v_ongeldig = 0
THEN
v_errorhint :=
'Betreft nieuwe melding - Kolom OMVANG is leeg en moet gevuld zijn (met 1,2,3,4 of 5 zijn)';
IF v_omvang IS NULL AND UPPER(v_gebrekcode) <> 'GEEN'
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
v_errorhint :=
'Betreft nieuwe melding - Kolom INTENSITEIT is leeg en moet gevuld zijn (met 1,2,3 zijn)';
IF v_intensiteit IS NULL AND UPPER(v_gebrekcode) <> 'GEEN'
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
v_errorhint :=
'Betreft nieuwe melding - Kolom DATUM is leeg en moet gevuld zijn met datum';
IF v_mld_melding_datum IS NULL
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
v_errorhint :=
'Betreft nieuwe melding - Kolom DATUM GEPLAND is leeg en moet gevuld zijn met datum';
IF v_plandatum IS NULL AND UPPER(v_gebrekcode) <> 'GEEN'
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
v_errorhint :=
'Betreft nieuwe melding - Kolom INSPECTEUR is leeg en moet gevuld zijn met email-adres inspecteur (is aanvrager)';
IF v_prs_perslid_email IS NULL
THEN
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
v_errorhint || ' - Regel wordt overgeslagen');
v_ongeldig := 1;
END IF;
END IF;
-- Geen fouten, we gaan tussentabel vullen
IF (v_ongeldig = 0)
THEN
BEGIN
v_errorhint :=
'Fout bij toevoegen regel aan importtabel cnd_imp_nen2767_results';
INSERT INTO cnd_imp_nen2767_results (
fac_import_key,
-- alg_gebouw_code,
ins_deel_omschrijving,
mld_melding_datum,
mld_melding_omschrijving,
prs_perslid_email,
gebrekcode,
-- ernst,
omvang,
intensiteit,
aspect1,
aspect2,
aspect3,
aspect4,
aspect5,
aspect6,
aspect7,
kosten,
plandatum,
foto,
-- condscore,
-- prioscore,
flex1,
flex2,
flex3,
flex4,
flex5,
flex6,
flex7,
flex8,
flex9,
flex10)
VALUES (p_import_key,
v_ins_deel_omschrijving,
v_mld_melding_datum,
v_mld_melding_omschrijving,
v_prs_perslid_email,
v_gebrekcode,
v_omvang,
v_intensiteit,
DECODE(v_meldingnr, NULL, DECODE(v_aspect1,'0 - NVT','NVT',v_aspect1),v_aspect1), -- Correctie aspectwaarde: Voor de nieuwe meldingen die gevuld zijn met waarde 0 moeten ook netjes op NVT komen
DECODE(v_meldingnr, NULL, DECODE(v_aspect2,'0 - NVT','NVT',v_aspect2),v_aspect2),
DECODE(v_meldingnr, NULL, DECODE(v_aspect3,'0 - NVT','NVT',v_aspect3),v_aspect3),
DECODE(v_meldingnr, NULL, DECODE(v_aspect4,'0 - NVT','NVT',v_aspect4),v_aspect4),
DECODE(v_meldingnr, NULL, DECODE(v_aspect5,'0 - NVT','NVT',v_aspect5),v_aspect5),
DECODE(v_meldingnr, NULL, DECODE(v_aspect6,'0 - NVT','NVT',v_aspect6),v_aspect6),
DECODE(v_meldingnr, NULL, DECODE(v_aspect7,'0 - NVT','NVT',v_aspect7),v_aspect7),
v_kosten,
fac.safe_to_date (v_plandatum, 'dd-mm-yyyy'),
v_foto,
DECODE (v_mld_srtkenmerk_key1,
NULL, v_mld_kenmerkwaarde1,
TO_CHAR (v_mld_srtkenmerk_key1)
|| '='
|| SUBSTR (v_mld_kenmerkwaarde1, 1, 3900)
),
DECODE (v_mld_srtkenmerk_key2,
NULL, v_mld_kenmerkwaarde2,
TO_CHAR (v_mld_srtkenmerk_key2)
|| '='
|| SUBSTR (v_mld_kenmerkwaarde2, 1, 3900)
),
DECODE (v_mld_srtkenmerk_key3,
NULL, v_mld_kenmerkwaarde3,
TO_CHAR (v_mld_srtkenmerk_key3)
|| '='
|| SUBSTR (v_mld_kenmerkwaarde3, 1, 3900)
),
DECODE (v_mld_srtkenmerk_key4,
NULL, v_mld_kenmerkwaarde4,
TO_CHAR (v_mld_srtkenmerk_key4)
|| '='
|| SUBSTR (v_mld_kenmerkwaarde4, 1, 3900)
),
DECODE (v_mld_srtkenmerk_key5,
NULL, v_mld_kenmerkwaarde5,
TO_CHAR (v_mld_srtkenmerk_key5)
|| '='
|| SUBSTR (v_mld_kenmerkwaarde5, 1, 3900)
),
DECODE (v_mld_srtkenmerk_key6,
NULL, v_mld_kenmerkwaarde6,
TO_CHAR (v_mld_srtkenmerk_key6)
|| '='
|| SUBSTR (v_mld_kenmerkwaarde6, 1, 3900)
),
DECODE (v_mld_srtkenmerk_key7,
NULL, v_mld_kenmerkwaarde7,
TO_CHAR (v_mld_srtkenmerk_key7)
|| '='
|| SUBSTR (v_mld_kenmerkwaarde7, 1, 3900)
),
DECODE (v_mld_srtkenmerk_key8,
NULL, v_mld_kenmerkwaarde8,
TO_CHAR (v_mld_srtkenmerk_key8)
|| '='
|| SUBSTR (v_mld_kenmerkwaarde8, 1, 3900)
),
v_behandelaar_email,
v_meldingnr
);
v_count_import := v_count_import + 1;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Ingelezen regel kan niet worden weggeschreven!');
COMMIT;
END;
END IF;
END IF;
END;
END LOOP;
-- Aantal nieuwe meldingen
SELECT count(*)
INTO v_count_import_n
FROM cnd_imp_nen2767_results
WHERE fac_import_key = p_import_key AND flex10 IS NULL ;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (
p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie: <zie specs-documentatie>');
ELSE
fac.imp_writelog (
p_import_key,
'S',
'IMPORT NEN2767 RESULTS: aantal ingelezen regels: '
|| TO_CHAR (v_count_tot)
|| ' / aantal geldige regels: '
|| TO_CHAR (v_count_import)
|| ' / waarvan nieuwe melding(en): '
|| TO_CHAR (v_count_import_n),
'');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint || ' regel[' || v_regel || ']');
END aaxx_import_nen2767_assetman;
/
CREATE OR REPLACE PROCEDURE aaxx_update_nen2767_assetman (
p_import_key IN NUMBER)
IS
CURSOR c_nieuw
IS
SELECT *
FROM cnd_imp_nen2767_results
WHERE fac_import_key = p_import_key AND flex10 IS NULL ;
CURSOR c_bestaand
IS
SELECT *
FROM cnd_imp_nen2767_results
WHERE fac_import_key = p_import_key AND flex10 IS NOT NULL ;
v_aanduiding VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_tot NUMBER (10);
v_count_tot_n NUMBER (10);
v_count_import NUMBER (10);
v_mld_melding_key NUMBER (10);
v_alg_gebouw_key NUMBER (10);
v_ins_deel_key NUMBER (10);
v_alg_ruimte_key NUMBER (10);
v_prs_perslid_key NUMBER (10);
v_prs_behandelaar_key NUMBER (10);
v_mld_stdmelding_key NUMBER (10);
v_ernst_kenmerk_key NUMBER (10);
v_ernst_key NUMBER (10);
v_omvang_kenmerk_key NUMBER (10);
v_omvang_key NUMBER (10);
v_intensiteit_kenmerk_key NUMBER (10);
v_intensiteit_key NUMBER (10);
v_foto_kenmerk_key NUMBER (10);
v_kosten_kenmerk_key NUMBER (10) := NULL;
v_kosten_srtkenmerk_key NUMBER (10);
v_ernst_srtkenmerk_key NUMBER (10);
v_omvang_srtkenmerk_key NUMBER (10);
v_intensiteit_srtkenmerk_key NUMBER (10);
v_mld_melding_omschrijving VARCHAR2 (4000);
v_omvang VARCHAR2 (1000);
v_intensiteit VARCHAR2 (1000);
v_aspect1 VARCHAR2 (1000);
v_aspect2 VARCHAR2 (1000);
v_aspect3 VARCHAR2 (1000);
v_aspect4 VARCHAR2 (1000);
v_aspect5 VARCHAR2 (1000);
v_aspect6 VARCHAR2 (1000);
v_aspect7 VARCHAR2 (1000);
v_inspecteur VARCHAR2 (1000);
v_behandelaar VARCHAR2 (1000);
v_foto VARCHAR2 (1000);
v_kosten VARCHAR2 (1000);
v_plandatum_date DATE;
v_dienst VARCHAR2 (1000);
v_taakgroep VARCHAR2 (1000);
v_datumgereedinspecteur VARCHAR2 (1000);
v_geadviseerdstartjaar VARCHAR2 (1000);
v_flex1_kenmerk_key NUMBER (10);
v_flex2_kenmerk_key NUMBER (10);
v_flex3_kenmerk_key NUMBER (10);
v_flex4_kenmerk_key NUMBER (10);
v_flex5_kenmerk_key NUMBER (10);
v_flex6_kenmerk_key NUMBER (10);
v_flex7_kenmerk_key NUMBER (10);
v_flex8_kenmerk_key NUMBER (10);
v_flex1_waarde VARCHAR2 (1000);
v_flex1_waarde_key NUMBER (10);
v_flex2_waarde VARCHAR2 (1000);
v_flex2_waarde_key NUMBER (10);
v_flex3_waarde VARCHAR2 (1000);
v_flex4_waarde VARCHAR2 (1000);
v_conditiescore NUMBER (10) ;
v_prioscore NUMBER (10) ;
v_herberekenen NUMBER (1) :=0;
v_melding_GV_aantal NUMBER(10);
v_melding_GV VARCHAR2 (1000);
v_mld_melding_status NUMBER(10);
PROCEDURE set_aspect (p_aspect IN VARCHAR2,
p_aspect_waarde IN VARCHAR2,
p_mld_melding_key IN NUMBER)
IS
v_key NUMBER (10);
v_kenmerk_key NUMBER (10);
v_srtkenmerk_key NUMBER (10);
BEGIN
SELECT MAX (mld_srtkenmerk_key)
INTO v_srtkenmerk_key
FROM mld_srtkenmerk
WHERE mld_srtkenmerk_code = p_aspect;
IF v_srtkenmerk_key IS NOT NULL
THEN
v_errorhint :=
p_aspect
|| ' (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen';
SELECT ud.fac_usrdata_key, k.mld_kenmerk_key
INTO v_key, v_kenmerk_key
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k
WHERE sk.mld_srtkenmerk_key = v_srtkenmerk_key
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_upper = UPPER (p_aspect_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
mld.upsertmeldingkenmerk (v_kenmerk_key,
p_mld_melding_key,
v_key);
END IF;
END;
-- SUBPROC
-- Voor vullen van de optionele kenmerkvelden 1 t/m 10
-- p_srtkenmerkgroepwaarde = '234|1=37-ZB-DR'. Ofwel: srtkenmerk_key|groep=waarde
PROCEDURE insert_mldkenmerk (p_mld_melding_key IN NUMBER,
p_srtkenmerkgroepwaarde IN VARCHAR2)
AS
v_kenmerk_key NUMBER;
v_srtkenmerk_key NUMBER;
v_groep NUMBER;
v_waarde VARCHAR(4000);
v_srtkenmerk_type VARCHAR2 (1);
ccount NUMBER;
v_objectnaam VARCHAR2 (30);
v_kolomnaam VARCHAR2 (30);
v_kolomtxt VARCHAR2 (30);
sql_stmt VARCHAR2 (1000);
v_kenmerkdeel_key NUMBER;
l_cursor_1 INTEGER;
l_rowsprocessed NUMBER DEFAULT 0;
BEGIN
IF p_srtkenmerkgroepwaarde IS NOT NULL
THEN
v_errormsg := 'Fout bij bepalen kenmerk van soort [' || p_srtkenmerkgroepwaarde || ']';
v_srtkenmerk_key := fac.safe_to_number (
SUBSTR (p_srtkenmerkgroepwaarde, 1, INSTR (p_srtkenmerkgroepwaarde, '|') - 1));
v_groep := fac.safe_to_number (
SUBSTR (p_srtkenmerkgroepwaarde,
INSTR (p_srtkenmerkgroepwaarde, '|') + 1,
INSTR (p_srtkenmerkgroepwaarde, '=') - 1 - INSTR (p_srtkenmerkgroepwaarde, '|')));
v_waarde := SUBSTR (p_srtkenmerkgroepwaarde, INSTR (p_srtkenmerkgroepwaarde, '=') + 1);
-- Niveau en mld_kenmerk_key bepalen vanuit de ingelezen gebreksmelding
SELECT mk.mld_kenmerk_key, msk.mld_srtkenmerk_kenmerktype
INTO v_kenmerk_key, v_srtkenmerk_type
FROM mld_kenmerk mk, mld_srtkenmerk msk, mld_melding m, mld_stdmelding sm, mld_discipline d, ins_srtdiscipline t
WHERE mk.mld_srtkenmerk_key = v_srtkenmerk_key
AND mk.mld_kenmerk_groep = v_groep
AND mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key
AND m.mld_melding_key = p_mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = t.ins_srtdiscipline_key AND t.ins_srtdiscipline_module = 'MLD'
AND (
(mk.mld_stdmelding_key = sm.mld_stdmelding_key and mk.mld_kenmerk_niveau = 'S')
OR
(mk.mld_stdmelding_key = d.ins_discipline_key and mk.mld_kenmerk_niveau = 'D')
OR
(mk.mld_stdmelding_key = t.ins_srtdiscipline_key and mk.mld_kenmerk_niveau = 'T')
) ;
IF v_waarde IS NOT NULL
THEN
IF v_srtkenmerk_type IN ('R', 'S')
THEN
v_errormsg := 'Fout bij bepalen eigen tabel';
SELECT COUNT ( * )
INTO ccount
FROM mld_srtkenmerk sk, fac_kenmerkdomein d
WHERE sk.mld_srtkenmerk_key = v_srtkenmerk_key
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
AND d.fac_usrtab_key IS NOT NULL;
v_errormsg := 'Fout bij bepalen nieuwe waarde [' || v_waarde || ']';
IF ccount = 1
THEN -- Eigen tabel
SELECT TO_CHAR (ud.fac_usrdata_key)
INTO v_waarde
FROM mld_srtkenmerk sk, fac_kenmerkdomein d, fac_v_aanwezigusrdata ud
WHERE sk.mld_srtkenmerk_key = v_srtkenmerk_key
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
AND d.fac_usrtab_key = ud.fac_usrtab_key
AND UPPER (TRIM (ud.fac_usrdata_omschr)) = UPPER (v_waarde);
ELSE -- FACILITOR view/tabel
SELECT d.fac_kenmerkdomein_objectnaam,
d.fac_kenmerkdomein_kolomnaam,
d.fac_kenmerkdomein_kolomtxt
INTO v_objectnaam, v_kolomnaam, v_kolomtxt
FROM mld_srtkenmerk sk, fac_kenmerkdomein d
WHERE sk.mld_srtkenmerk_key = v_srtkenmerk_key
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
AND d.fac_usrtab_key IS NULL;
sql_stmt :=
'SELECT MAX ('
|| v_kolomnaam
|| ') FROM '
|| v_objectnaam
|| ' WHERE UPPER (TRIM ('
|| v_kolomtxt
|| ')) = UPPER (:pwaarde)';
l_cursor_1 := DBMS_SQL.open_cursor;
DBMS_SQL.parse (l_cursor_1, sql_stmt, DBMS_SQL.native);
DBMS_SQL.BIND_VARIABLE(l_cursor_1,':pwaarde', v_waarde);
DBMS_SQL.define_column(l_cursor_1, 1, v_waarde, 255);
l_rowsprocessed := DBMS_SQL.execute_and_fetch (l_cursor_1);
DBMS_SQL.column_value (l_cursor_1, 1, v_waarde);
DBMS_SQL.close_cursor(l_cursor_1);
END IF;
ELSE -- C(Karakter)/D(Datum)/N(Numeriek)/X(Bestandsnaam)
NULL; -- v_waarde := p_waarde;
END IF;
IF v_srtkenmerk_type = 'N' -- Alleen voor numerieke waarden de decimale komma vervangen door punt.
THEN
v_waarde := REPLACE (v_waarde, ',', '.');
END IF;
v_errormsg := 'Fout bij toevoegen waarde [' || v_waarde || ']';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (p_mld_melding_key, v_kenmerk_key, v_waarde);
ELSE
NULL;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg || ' (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'insert_mldkenmerk');
END;
BEGIN
v_count_tot := 0;
v_count_tot_n := 0;
v_count_import := 0;
v_errorhint :=
'Ernst kenmerk bij gebreken niet gevonden (bestaat niet), import wordt niet uitgevoerd';
SELECT mld_srtkenmerk_key
INTO v_ernst_srtkenmerk_key
FROM mld_srtkenmerk
WHERE mld_srtkenmerk_code = 'ERNST';
v_errorhint :=
'Omvang kenmerk bij gebreken niet gevonden (bestaat niet), import wordt niet uitgevoerd';
SELECT mld_srtkenmerk_key
INTO v_omvang_srtkenmerk_key
FROM mld_srtkenmerk
WHERE mld_srtkenmerk_code = 'OMVANG';
v_errorhint :=
'Intensiteit kenmerk bij gebreken niet gevonden (bestaat niet), import wordt niet uitgevoerd';
SELECT mld_srtkenmerk_key
INTO v_intensiteit_srtkenmerk_key
FROM mld_srtkenmerk
WHERE mld_srtkenmerk_code = 'INTENSITEIT';
v_errorhint :=
'Fout bij bepalen kenmerk foto-bestand';
SELECT max(k.mld_kenmerk_key)
INTO v_foto_kenmerk_key
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND k.mld_kenmerk_niveau = 'T'
AND k.mld_stdmelding_key = fac.getsetting ('cnd_gebreken_srtdisc_key')
AND sk.mld_srtkenmerk_upper = 'FOTONAAM' ;
v_errorhint :=
'Kosten kenmerk bij gebreken niet gevonden (bestaat niet), import wordt niet uitgevoerd';
SELECT MAX (mld_srtkenmerk_key)
INTO v_kosten_srtkenmerk_key
FROM mld_srtkenmerk
WHERE mld_srtkenmerk_code = 'KOSTEN';
IF v_kosten_srtkenmerk_key IS NOT NULL
THEN
SELECT mld_kenmerk_key
INTO v_kosten_kenmerk_key
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = v_kosten_srtkenmerk_key;
END IF;
FOR rec IN c_nieuw
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
'['
|| rec.alg_gebouw_code
|| '-'
|| rec.ins_deel_omschrijving
|| '-'
|| rec.gebrekcode
|| '] ';
v_errorhint :=
'Gebouwcode niet gevonden (bestaat niet), regel wordt overgeslagen';
v_alg_gebouw_key := -1;
IF rec.alg_gebouw_code IS NOT NULL
THEN
SELECT alg_gebouw_key
INTO v_alg_gebouw_key
FROM alg_v_aanweziggebouw
WHERE alg_gebouw_upper = UPPER (rec.alg_gebouw_code);
END IF;
v_errorhint :=
'Element (object) niet gevonden (bestaat niet bij gebouw), regel wordt overgeslagen';
-- Uitgangspunt hierbij is dat objectnaam uniek is per gebouw, op zich mag in Facilitor de objectnaam per objectsoort per locatie uniek zijn.
SELECT ins_deel_key, r.alg_ruimte_key
INTO v_ins_deel_key, v_alg_ruimte_key
FROM ins_v_aanwezigdeel, alg_ruimte r, alg_verdieping v
WHERE ins_deel_upper = UPPER (rec.ins_deel_omschrijving)
AND ins_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND ( v_alg_gebouw_key = -1
OR v.alg_gebouw_key = v_alg_gebouw_key)
AND ins_alg_ruimte_type = 'R';
v_errorhint :=
'Mailadres van inspecteur (persoon) niet gevonden (bestaat niet), regel wordt overgeslagen';
SELECT prs_perslid_key
INTO v_prs_perslid_key
FROM prs_v_aanwezigperslid
WHERE UPPER (prs_perslid_email) = UPPER (rec.prs_perslid_email);
v_errorhint :=
'Mailadres van behandelaar (persoon) niet gevonden (bestaat niet), regel wordt overgeslagen';
IF rec.flex9 IS NOT NULL
THEN
SELECT prs_perslid_key
INTO v_prs_behandelaar_key
FROM prs_v_aanwezigperslid
WHERE UPPER (prs_perslid_email) = UPPER (rec.flex9);
ELSE
v_prs_behandelaar_key := NULL ;
END IF;
v_errorhint :=
'Gebrek (melding) niet gevonden (bestaat niet), regel wordt overgeslagen';
SELECT sm.mld_stdmelding_key
INTO v_mld_stdmelding_key
FROM mld_stdmelding sm
WHERE UPPER(mld_stdmelding_code) = UPPER (rec.gebrekcode);
IF UPPER(rec.gebrekcode) = 'GEEN'
THEN
v_errorhint :=
'Geen Gebrek melding. Ernst, Omvang en Intensiteit worden overgeslagen';
ELSE
v_errorhint :=
'Ernst (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen';
-- We vullen de ERNST altijd met de default-waarde bij kenmerk_key
SELECT ud.fac_usrdata_key, k.mld_kenmerk_key
INTO v_ernst_key, v_ernst_kenmerk_key
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k
WHERE sk.mld_srtkenmerk_key = v_ernst_srtkenmerk_key
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = k.mld_kenmerk_default
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND k.mld_stdmelding_key = v_mld_stdmelding_key
AND k.mld_kenmerk_niveau = 'S';
v_errorhint :=
'Omvang (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen';
SELECT ud.fac_usrdata_key, k.mld_kenmerk_key
INTO v_omvang_key, v_omvang_kenmerk_key
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k
WHERE sk.mld_srtkenmerk_key = v_omvang_srtkenmerk_key
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_upper = UPPER (rec.omvang)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND k.mld_stdmelding_key = v_mld_stdmelding_key
AND k.mld_kenmerk_niveau = 'S';
v_errorhint :=
'Intensiteit (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen';
SELECT ud.fac_usrdata_key, k.mld_kenmerk_key
INTO v_intensiteit_key, v_intensiteit_kenmerk_key
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k
WHERE sk.mld_srtkenmerk_key = v_intensiteit_srtkenmerk_key
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_upper = UPPER (rec.intensiteit)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND k.mld_stdmelding_key = v_mld_stdmelding_key
AND k.mld_kenmerk_niveau = 'S';
END IF;
v_errorhint :=
'Check of er voor GV-gebrek al een soortgelijk gebrek loopt';
v_melding_GV_aantal:=0;
IF INSTR (rec.gebrekcode, 'GV') > 0
THEN
SELECT COUNT (*)
INTO v_melding_GV_aantal
FROM mld_melding m,
mld_stdmelding sm,
mld_melding_object mo,
ins_deel d
WHERE m.mld_melding_key = mo.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND mo.ins_deel_key = d.ins_deel_key
-- AND UPPER (d.ins_deel_omschrijving) = UPPER (v_ins_deel_omschrijving) -- '0247.43-0016'
AND d.ins_deel_key = v_ins_deel_key
AND m.mld_melding_status IN (0,2,3,4,7,99)
AND INSTR (rec.gebrekcode, 'GV') > 0
AND UPPER (SUBSTR (sm.mld_stdmelding_code,1,INSTR (sm.mld_stdmelding_code, 'GV') + 1)) = UPPER (SUBSTR (rec.gebrekcode, 1, INSTR (rec.gebrekcode, 'GV') + 1))
AND sm.mld_stdmelding_code <> rec.gebrekcode;
IF v_melding_GV_aantal > 0
THEN
v_melding_GV := 'Bij invoer is/zijn er nog ' || TO_CHAR(v_melding_GV_aantal) || ' melding(en) op code ' || SUBSTR (rec.gebrekcode, 1, INSTR (rec.gebrekcode, 'GV') + 1) ;
END IF;
END IF;
v_errorhint :=
'Toevoegen melding';
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_melding_datum,
mld_melding_omschrijving,
mld_stdmelding_key,
mld_alg_onroerendgoed_keys,
mld_melding_einddatum,
prs_perslid_key,
prs_perslid_key_voor,
-- mld_melding_behandelaar_key,
mld_melding_status,
mld_melding_spoed)
VALUES (
'MLD',
6,
fac.safe_to_date (rec.mld_melding_datum, 'dd-mm-yyyy'),
CASE
WHEN v_melding_GV_aantal >0 THEN rec.mld_melding_omschrijving || CHR (13) || CHR (10) || 'LET OP!: ' || v_melding_GV
ELSE rec.mld_melding_omschrijving END,
v_mld_stdmelding_key,
v_alg_ruimte_key,
rec.plandatum,
v_prs_perslid_key,
v_prs_perslid_key,
-- v_prs_behandelaar_key,
NULL,
3)
RETURNING mld_melding_key
INTO v_mld_melding_key;
mld.setmeldingstatus(v_mld_melding_key, 2, v_prs_perslid_key, 0);
v_errorhint := 'Koppelen object';
INSERT INTO mld_melding_object (mld_melding_key, ins_deel_key)
VALUES (v_mld_melding_key, v_ins_deel_key);
IF UPPER(rec.gebrekcode) <> 'GEEN' THEN
v_errorhint := 'Toevoegen Ernst kenmerk';
mld.upsertmeldingkenmerk (v_ernst_kenmerk_key,
v_mld_melding_key,
v_ernst_key);
v_errorhint := 'Toevoegen Omvang kenmerk';
mld.upsertmeldingkenmerk (v_omvang_kenmerk_key,
v_mld_melding_key,
v_omvang_key);
v_errorhint := 'Toevoegen Intensiteit kenmerk';
mld.upsertmeldingkenmerk (v_intensiteit_kenmerk_key,
v_mld_melding_key,
v_intensiteit_key);
END IF;
set_aspect ('ASPECT1', rec.aspect1, v_mld_melding_key);
set_aspect ('ASPECT2', rec.aspect2, v_mld_melding_key);
set_aspect ('ASPECT3', rec.aspect3, v_mld_melding_key);
set_aspect ('ASPECT4', rec.aspect4, v_mld_melding_key);
set_aspect ('ASPECT5', rec.aspect5, v_mld_melding_key);
set_aspect ('ASPECT6', rec.aspect6, v_mld_melding_key);
set_aspect ('ASPECT7', rec.aspect7, v_mld_melding_key);
v_errorhint := 'Toevoegen Foto kenmerk';
IF rec.foto IS NOT NULL
THEN
mld.upsertmeldingkenmerk (v_foto_kenmerk_key,
v_mld_melding_key,
rec.foto);
END IF;
v_errorhint := 'Toevoegen Kosten kenmerk';
IF rec.kosten IS NOT NULL AND v_kosten_kenmerk_key IS NOT NULL
THEN
mld.upsertmeldingkenmerk (v_kosten_kenmerk_key,
v_mld_melding_key,
TO_CHAR(rec.kosten));
END IF;
-- Hier toevoegen insert_meldingskenmerken 1 t/m 10..
v_errorhint := 'Toevoegen kenmerk-velden ';
insert_mldkenmerk (v_mld_melding_key, rec.flex1);
insert_mldkenmerk (v_mld_melding_key, rec.flex2);
insert_mldkenmerk (v_mld_melding_key, rec.flex3);
insert_mldkenmerk (v_mld_melding_key, rec.flex4);
insert_mldkenmerk (v_mld_melding_key, rec.flex5);
insert_mldkenmerk (v_mld_melding_key, rec.flex6);
insert_mldkenmerk (v_mld_melding_key, rec.flex7);
insert_mldkenmerk (v_mld_melding_key, rec.flex8);
-- insert_mldkenmerk (v_mld_melding_key, rec.flex9);
-- insert_mldkenmerk (v_mld_melding_key, rec.flex10);
-- Bij direct accepteren moet ook de CND-berekening uitgevoerd worden
---- En indien meegegeven wordt ook de behandelaar op melding gezet.
v_errorhint := 'Meldingen direct accepteren ';
IF fac.getsetting('cnd_autoaccept') = 1
THEN
mld.setmeldingstatus(v_mld_melding_key, 4, v_prs_perslid_key, 0);
BEGIN
cnd.process_mjb_score_effects (v_mld_melding_key);
END;
COMMIT;
IF v_prs_behandelaar_key IS NOT NULL
THEN
UPDATE mld_melding
SET mld_melding_behandelaar_key = v_prs_behandelaar_key
WHERE mld_melding_key = v_mld_melding_key ;
/* -- Notificatie naar behandelaar
fac.putnotificationsrtprio (
NULL,
v_behandelaar_key,
'MLDBE2',
v_mld_melding_key,
'Melding '
|| N
|| v_mld_melding_key
|| ' is door de klant aangepast.',
2,
NULL,
NULL,
NULL,
2,
NULL); */
END IF;
END IF;
v_count_import := v_count_import + 1;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
FOR rec IN c_bestaand
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_count_tot_n := v_count_tot_n + 1;
v_aanduiding :=
'['
|| rec.alg_gebouw_code
|| '-'
|| rec.ins_deel_omschrijving
|| '-'
|| rec.gebrekcode
|| '- lopende melding '
|| rec.flex10
|| '] ';
v_mld_melding_key := fac.safe_to_number(rec.flex10) ;
-- Gaan eerst alle waarden vullen uit de lopende melding
--
v_errorhint := 'Vullen huidige waarde OPMERKING van lopende melding';
v_mld_melding_omschrijving := '';
SELECT max(mld_melding_omschrijving)
INTO v_mld_melding_omschrijving
FROM mld_melding
WHERE mld_melding_key = v_mld_melding_key ;
--
v_errorhint := 'Vullen huidige waarde OMVANG van lopende melding';
v_omvang := '';
SELECT ud.fac_usrdata_omschr, k.mld_kenmerk_key
INTO v_omvang, v_omvang_kenmerk_key
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_key = v_omvang_srtkenmerk_key
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'S';
v_errorhint :=
'Omvang (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen';
SELECT ud.fac_usrdata_key
INTO v_omvang_key
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_key = v_omvang_srtkenmerk_key
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_upper = UPPER (v_omvang)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'S';
--
v_errorhint := 'Vullen huidige waarde INTENSITEIT van lopende melding';
v_intensiteit := '';
SELECT ud.fac_usrdata_omschr, k.mld_kenmerk_key
INTO v_intensiteit, v_intensiteit_kenmerk_key
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_key = v_intensiteit_srtkenmerk_key
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'S';
v_errorhint := 'Intensiteit (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen';
SELECT ud.fac_usrdata_key
INTO v_intensiteit_key
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_key = v_intensiteit_srtkenmerk_key
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_upper = UPPER (v_intensiteit)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'S';
--
v_errorhint := 'Vullen huidige waarde ASPECT1 van lopende melding';
v_aspect1 := '';
SELECT ud.fac_usrdata_omschr
INTO v_aspect1
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_code = 'ASPECT1'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'T';
--
v_errorhint := 'Vullen huidige waarde ASPECT2 van lopende melding';
v_aspect2 := '';
SELECT ud.fac_usrdata_omschr
INTO v_aspect2
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_code = 'ASPECT2'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'T';
--
v_errorhint := 'Vullen huidige waarde ASPECT3 van lopende melding';
v_aspect3 := '';
SELECT ud.fac_usrdata_omschr
INTO v_aspect3
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_code = 'ASPECT3'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'T';
--
v_errorhint := 'Vullen huidige waarde ASPECT4 van lopende melding';
v_aspect4 := '';
SELECT ud.fac_usrdata_omschr
INTO v_aspect4
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_code = 'ASPECT4'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'T';
--
v_errorhint := 'Vullen huidige waarde ASPECT5 van lopende melding';
v_aspect5 := '';
SELECT ud.fac_usrdata_omschr
INTO v_aspect5
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_code = 'ASPECT5'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'T';
--
v_errorhint := 'Vullen huidige waarde ASPECT6 van lopende melding';
v_aspect6 := '';
SELECT ud.fac_usrdata_omschr
INTO v_aspect6
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_code = 'ASPECT6'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'T';
--
v_errorhint := 'Vullen huidige waarde ASPECT7 van lopende melding';
v_aspect7 := '';
SELECT ud.fac_usrdata_omschr
INTO v_aspect7
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_code = 'ASPECT7'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'T';
--
v_errorhint := 'Vullen huidige waarde FOTO van lopende melding';
v_foto := '';
-- v_foto_kenmerk_key;
SELECT max(km.mld_kenmerkmelding_waarde)
INTO v_foto
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_melding_key = v_mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = (SELECT MAX (mld_srtkenmerk_key) FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'FOTONAAM');
--
v_errorhint := 'Vullen huidige waarde KOSTEN van lopende melding';
v_kosten := '';
SELECT max(km.mld_kenmerkmelding_waarde)
INTO v_kosten
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_melding_key = v_mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = (SELECT MAX (mld_srtkenmerk_key) FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'KOSTEN');
--
v_errorhint := 'Vullen huidige waarde PLANDATUM van lopende melding';
SELECT max(mld_melding_einddatum)
INTO v_plandatum_date
FROM mld_melding
WHERE mld_melding_key = v_mld_melding_key ;
-- flex1
v_errorhint := 'Vullen huidige waarde DIENST van lopende melding';
v_dienst := '';
SELECT max(d.prs_dienst_omschrijving)
INTO v_dienst
FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk, fac_kenmerkdomein kd, prs_dienst d
WHERE km.mld_melding_key = v_mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_code = 'DIENST'
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND kd.fac_kenmerkdomein_objectnaam = 'PRS_DIENST'
AND d.prs_dienst_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_kenmerk_niveau = 'T' ;
SELECT max(k.mld_kenmerk_key)
INTO v_flex1_kenmerk_key
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND k.mld_kenmerk_niveau = 'T'
AND k.mld_stdmelding_key = fac.getsetting ('cnd_gebreken_srtdisc_key')
AND sk.mld_srtkenmerk_code = 'DIENST' ;
-- flex2
v_errorhint := 'Vullen huidige waarde TAAKGROEP van lopende melding';
v_taakgroep := '';
SELECT max(ud.fac_usrdata_omschr)
INTO v_taakgroep
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k,
mld_kenmerkmelding km
WHERE sk.mld_srtkenmerk_code = 'TAAKGROEP'
-- sk.mld_srtkenmerk_key = (DISTINCT(select fac.safe_to_number(substr(flex2, 1, INSTR(flex2,'|')-1))) -- DIT EVT NOG INPASSEN voor de FLEX5 t/m 9
-- from cnd_imp_nen2767_results where fac_import_key = p_import_key)
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_key = fac.safe_to_number(km.mld_kenmerkmelding_waarde)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'T';
SELECT max(k.mld_kenmerk_key)
INTO v_flex2_kenmerk_key
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND k.mld_kenmerk_niveau = 'T'
AND k.mld_stdmelding_key = fac.getsetting ('cnd_gebreken_srtdisc_key')
AND sk.mld_srtkenmerk_code = 'TAAKGROEP' ;
-- flex3
v_errorhint := 'Vullen huidige waarde DATUMGEREEDINSPECTEUR van lopende melding';
v_datumgereedinspecteur := '';
SELECT max(km.mld_kenmerkmelding_waarde)
INTO v_datumgereedinspecteur
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_melding_key = v_mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = (SELECT MAX (mld_srtkenmerk_key) FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'DATUMGEREEDINSPECTEUR');
SELECT max(k.mld_kenmerk_key)
INTO v_flex3_kenmerk_key
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND k.mld_kenmerk_niveau = 'T'
AND k.mld_stdmelding_key = fac.getsetting ('cnd_gebreken_srtdisc_key')
AND sk.mld_srtkenmerk_code = 'DATUMGEREEDINSPECTEUR' ;
-- flex4
v_errorhint := 'Vullen huidige waarde GEADVISEERDSTARTJAAR van lopende melding';
v_geadviseerdstartjaar := '';
SELECT max(km.mld_kenmerkmelding_waarde)
INTO v_geadviseerdstartjaar
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_melding_key = v_mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = (SELECT MAX (mld_srtkenmerk_key) FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'GEADVISEERDSTARTJAAR');
SELECT max(k.mld_kenmerk_key)
INTO v_flex4_kenmerk_key
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND k.mld_kenmerk_niveau = 'T'
AND k.mld_stdmelding_key = fac.getsetting ('cnd_gebreken_srtdisc_key')
AND sk.mld_srtkenmerk_code = 'GEADVISEERDSTARTJAAR' ;
-- Conditiescore
v_errorhint := 'Vullen huidige waarde CONDITIESCORE van lopende melding';
v_conditiescore := '';
SELECT max(km.mld_kenmerkmelding_waarde)
INTO v_conditiescore
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_melding_key = v_mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = (SELECT MAX (mld_srtkenmerk_key) FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'CONDITIESCORE');
-- Prioriteitsscore
v_errorhint := 'Vullen huidige waarde PRIORITEITS-SCORE van lopende melding';
v_prioscore := '';
SELECT max(km.mld_kenmerkmelding_waarde)
INTO v_prioscore
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_melding_key = v_mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = (SELECT MAX (mld_srtkenmerk_key) FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'PRIORITEITSCORE');
--
v_errorhint := 'Bepalen STATUS van lopende melding';
v_mld_melding_status := '';
SELECT max(mld_melding_status)
INTO v_mld_melding_status
FROM mld_melding
WHERE mld_melding_key = v_mld_melding_key ;
--
v_errorhint := 'Bepalen INSPECTEUR / AANVRAGER van lopende melding';
v_inspecteur := '';
SELECT p.prs_perslid_email
INTO v_inspecteur
FROM mld_melding m, prs_perslid p
WHERE m.prs_perslid_key = p.prs_perslid_key
AND mld_melding_key = v_mld_melding_key ;
--
v_errorhint := 'Bepalen BEHANDELAAR van lopende melding';
v_behandelaar := '';
SELECT max(p.prs_perslid_email)
INTO v_behandelaar
FROM mld_melding m, prs_perslid p
WHERE m.mld_melding_behandelaar_key = p.prs_perslid_key
AND mld_melding_key = v_mld_melding_key ;
-- Alles gevuld. Nu alle meldingsvelden updaten als REC-waarde gevuld is en als deze afwijkt van de huidige waarde
v_herberekenen:=0;
-- Omschrijving melding - Opmerking melding
v_errorhint := 'Aanpassen opmerking bij melding';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Omschrijving aangevuld met: ' || rec.mld_melding_omschrijving ;
IF v_mld_melding_omschrijving <> rec.mld_melding_omschrijving AND rec.mld_melding_omschrijving IS NOT NULL
THEN
UPDATE mld_melding
SET mld_melding_omschrijving = v_mld_melding_omschrijving || CHR (13) || CHR(13) || CHR (10) || to_char(sysdate,'DD-MM-YYYY') || ':' || CHR(13) || CHR (10) || rec.mld_melding_omschrijving
WHERE mld_melding_key = v_mld_melding_key;
END IF;
-- Omvang
v_errorhint := 'Aanpassen Omvang kenmerk';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Omvang: (' || v_omvang || ') --> ' || rec.omvang ;
IF rec.omvang IS NOT NULL AND v_omvang <> rec.omvang
THEN
mld.upsertmeldingkenmerk (v_omvang_kenmerk_key,
v_mld_melding_key,
v_omvang_key);
v_herberekenen:=1;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
v_errorhint := 'Aanpassen Intensiteit kenmerk';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Intensiteit: (' || v_intensiteit || ') --> ' || rec.intensiteit ;
IF rec.intensiteit IS NOT NULL AND v_intensiteit <> rec.intensiteit
THEN
mld.upsertmeldingkenmerk (v_intensiteit_kenmerk_key,
v_mld_melding_key,
v_intensiteit_key);
v_herberekenen:=1;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- Aspect 1
v_errorhint := 'Aanpassen aspectwaarde 1';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect1: (' || v_aspect1 || ') --> ' || rec.aspect1 ;
IF NOT(rec.aspect1 = 'NVT') AND v_aspect1 <> rec.aspect1 AND NOT(INSTR(v_aspect1,'NVT')>0 AND INSTR(rec.aspect1,'NVT')>0)
THEN
IF rec.aspect1 = '0 - NVT' THEN
set_aspect ('ASPECT1', 'NVT', v_mld_melding_key);
ELSE
set_aspect ('ASPECT1', rec.aspect1, v_mld_melding_key);
END IF;
v_herberekenen:=1;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- Aspect 2
v_errorhint := 'Aanpassen aspectwaarde 2';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect2: (' || v_aspect2 || ') --> ' || rec.aspect2 ;
IF NOT(rec.aspect2 = 'NVT') AND v_aspect2 <> rec.aspect2 AND NOT(INSTR(v_aspect2,'NVT')>0 AND INSTR(rec.aspect2,'NVT')>0)
THEN
IF rec.aspect2 = '0 - NVT' THEN
set_aspect ('ASPECT2', 'NVT', v_mld_melding_key);
ELSE
set_aspect ('ASPECT2', rec.aspect2, v_mld_melding_key);
END IF;
v_herberekenen:=1;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- Aspect 3
v_errorhint := 'Aanpassen aspectwaarde 3';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect3: (' || v_aspect3 || ') --> ' || rec.aspect3 ;
IF NOT(rec.aspect3 = 'NVT') AND v_aspect3 <> rec.aspect3 AND NOT(INSTR(v_aspect3,'NVT')>0 AND INSTR(rec.aspect3,'NVT')>0)
THEN
IF rec.aspect3 = '0 - NVT' THEN
set_aspect ('ASPECT3', 'NVT', v_mld_melding_key);
ELSE
set_aspect ('ASPECT3', rec.aspect3, v_mld_melding_key);
END IF;
v_herberekenen:=1;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- Aspect 4
v_errorhint := 'Aanpassen aspectwaarde 4';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect4: (' || v_aspect4 || ') --> ' || rec.aspect4 ;
IF NOT(rec.aspect4 = 'NVT') AND v_aspect4 <> rec.aspect4 AND NOT(INSTR(v_aspect4,'NVT')>0 AND INSTR(rec.aspect4,'NVT')>0)
THEN
IF rec.aspect4 = '0 - NVT' THEN
set_aspect ('ASPECT4', 'NVT', v_mld_melding_key);
ELSE
set_aspect ('ASPECT4', rec.aspect4, v_mld_melding_key);
END IF;
v_herberekenen:=1;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- Aspect 5
v_errorhint := 'Aanpassen aspectwaarde 5';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect5: (' || v_aspect5 || ') --> ' || rec.aspect5 ;
IF NOT(rec.aspect5 = 'NVT') AND v_aspect5 <> rec.aspect5 AND NOT(INSTR(v_aspect5,'NVT')>0 AND INSTR(rec.aspect5,'NVT')>0)
THEN
IF rec.aspect5 = '0 - NVT' THEN
set_aspect ('ASPECT5', 'NVT', v_mld_melding_key);
ELSE
set_aspect ('ASPECT5', rec.aspect5, v_mld_melding_key);
END IF;
v_herberekenen:=1;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- Aspect 6
v_errorhint := 'Aanpassen aspectwaarde 6';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect6: (' || v_aspect6 || ') --> ' || rec.aspect6 ;
IF NOT(rec.aspect6 = 'NVT') AND v_aspect6 <> rec.aspect6 AND NOT(INSTR(v_aspect6,'NVT')>0 AND INSTR(rec.aspect6,'NVT')>0)
THEN
IF rec.aspect6 = '0 - NVT' THEN
set_aspect ('ASPECT6', 'NVT', v_mld_melding_key);
ELSE
set_aspect ('ASPECT6', rec.aspect6, v_mld_melding_key);
END IF;
v_herberekenen:=1;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- Aspect 7
v_errorhint := 'Aanpassen aspectwaarde 7';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Aspect7: (' || v_aspect7 || ') --> ' || rec.aspect7 ;
IF NOT(rec.aspect7 = 'NVT') AND v_aspect7 <> rec.aspect7 AND NOT(INSTR(v_aspect7,'NVT')>0 AND INSTR(rec.aspect7,'NVT')>0)
THEN
IF rec.aspect7 = '0 - NVT' THEN
set_aspect ('ASPECT7', 'NVT', v_mld_melding_key);
ELSE
set_aspect ('ASPECT7', rec.aspect7, v_mld_melding_key);
END IF;
v_herberekenen:=1;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
--
v_errorhint := 'Aanpassen Foto kenmerk';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Fotonaam: (' || v_foto || ') --> ' || rec.foto ;
IF rec.foto IS NOT NULL AND COALESCE(v_foto, '<leeg>') <> rec.foto AND v_foto_kenmerk_key IS NOT NULL
THEN
mld.upsertmeldingkenmerk (v_foto_kenmerk_key,
v_mld_melding_key,
rec.foto);
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
--
v_errorhint := 'Aanpassen Kosten kenmerk';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Kosten: (' || v_kosten || ') --> ' || rec.kosten ;
IF rec.kosten IS NOT NULL AND COALESCE(fac.safe_to_number(v_kosten), -1) <> rec.kosten AND v_kosten_kenmerk_key IS NOT NULL
THEN
mld.upsertmeldingkenmerk (v_kosten_kenmerk_key,
v_mld_melding_key,
TO_CHAR(rec.kosten));
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- Plandatum
v_errorhint := 'Aanpassen Plandatum';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Plandatum: (' || TO_CHAR(v_plandatum_date) || ') --> ' || TO_CHAR(rec.plandatum) ;
IF rec.plandatum IS NOT NULL AND v_plandatum_date <> rec.plandatum
THEN
UPDATE mld_melding
SET mld_melding_einddatum = rec.plandatum
WHERE mld_melding_key = v_mld_melding_key ;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- flex1
v_errorhint := 'Aanpassen Dienst (Flex1)';
v_flex1_waarde := substr(rec.flex1,instr(rec.flex1,'=')+1,length(rec.flex1)-instr(rec.flex1,'='));
v_flex1_waarde_key := NULL;
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Dienst: (' || v_dienst || ') --> ' || v_flex1_waarde ;
IF v_flex1_waarde IS NOT NULL AND COALESCE(v_dienst,'<leeg>') <> v_flex1_waarde AND v_flex1_kenmerk_key IS NOT NULL
THEN
SELECT max(prs_dienst_key)
INTO v_flex1_waarde_key
FROM prs_dienst
WHERE UPPER(prs_dienst_omschrijving) = UPPER(v_flex1_waarde);
IF v_flex1_waarde_key IS NOT NULL
THEN
mld.upsertmeldingkenmerk (v_flex1_kenmerk_key,
v_mld_melding_key,
v_flex1_waarde_key);
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
END IF;
-- flex2
v_errorhint := 'Aanpassen Taakgroep (Flex2)';
v_flex2_waarde := substr(rec.flex2,instr(rec.flex2,'=')+1,length(rec.flex2)-instr(rec.flex2,'='));
v_flex2_waarde_key := NULL;
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Taakgroep: (' || v_taakgroep || ') --> ' || v_flex2_waarde ;
IF v_flex2_waarde IS NOT NULL AND COALESCE(v_taakgroep,'<leeg>') <> v_flex2_waarde AND v_flex2_kenmerk_key IS NOT NULL
THEN
SELECT ud.fac_usrdata_key
INTO v_flex2_waarde_key
FROM mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud,
mld_kenmerk k
WHERE sk.mld_srtkenmerk_code = 'TAAKGROEP'
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND k.mld_kenmerk_niveau = 'T'
AND ud.fac_usrdata_upper = UPPER(v_flex2_waarde);
IF v_flex2_waarde_key IS NOT NULL
THEN
mld.upsertmeldingkenmerk (v_flex2_kenmerk_key,
v_mld_melding_key,
v_flex2_waarde_key);
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
END IF;
-- flex3
v_errorhint := 'Aanpassen DatumGereedInspecteur (Flex3)';
v_flex3_waarde := substr(rec.flex3,instr(rec.flex3,'=')+1,length(rec.flex3)-instr(rec.flex3,'='));
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Datum gereed (inspecteur): (' || v_datumgereedinspecteur || ') --> ' || v_flex3_waarde ;
IF v_flex3_waarde IS NOT NULL AND (fac.safe_to_date (v_flex3_waarde, 'dd-mm-yyyy') IS NOT NULL) AND (COALESCE(v_datumgereedinspecteur,'<leeg>') <> v_flex3_waarde) AND v_flex3_kenmerk_key IS NOT NULL
THEN
mld.upsertmeldingkenmerk (v_flex3_kenmerk_key,
v_mld_melding_key,
v_flex3_waarde);
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- flex4
v_errorhint := 'Aanpassen Geadviseerd Startjaar (Flex4)';
v_flex4_waarde := substr(rec.flex4,instr(rec.flex4,'=')+1,length(rec.flex4)-instr(rec.flex4,'='));
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Startjaar: (' || v_geadviseerdstartjaar || ') --> ' || v_flex4_waarde ;
IF v_flex4_waarde IS NOT NULL AND COALESCE(v_geadviseerdstartjaar,'<leeg>') <> v_flex4_waarde AND v_flex4_kenmerk_key IS NOT NULL
THEN
mld.upsertmeldingkenmerk (v_flex4_kenmerk_key,
v_mld_melding_key,
v_flex4_waarde);
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
-- Inspecteur
v_errorhint := 'Aanpassen Inspecteur / Aanvrager';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Inspecteur: (' || v_inspecteur || ') --> ' || rec.prs_perslid_email ;
IF (rec.prs_perslid_email IS NOT NULL OR LENGTH (rec.prs_perslid_email) > 200) AND COALESCE(v_inspecteur, '<leeg>') <> rec.prs_perslid_email
THEN
SELECT prs_perslid_key
INTO v_prs_perslid_key
FROM prs_v_aanwezigperslid
WHERE UPPER (prs_perslid_email) = UPPER (rec.prs_perslid_email);
IF v_prs_perslid_key IS NOT NULL
THEN
UPDATE mld_melding
SET prs_perslid_key = v_prs_perslid_key, prs_perslid_key_voor = v_prs_perslid_key
WHERE mld_melding_key = v_mld_melding_key ;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
END IF;
-- Behandelaar als nodig in behandeling zetten
v_errorhint := 'Aanpassen Behandelaar';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is gewijzigd via upload gebreken:' || CHR(13) || CHR(10) || 'Behandelaar: (' || v_behandelaar || ') --> ' || rec.flex9 ;
IF rec.flex9 IS NOT NULL AND COALESCE(v_behandelaar, '<leeg>') <> rec.flex9
THEN
SELECT max(prs_perslid_key)
INTO v_prs_behandelaar_key
FROM prs_v_aanwezigperslid
WHERE UPPER (prs_perslid_email) = UPPER (rec.flex9);
IF v_prs_behandelaar_key IS NOT NULL
THEN
UPDATE mld_melding
SET mld_melding_behandelaar_key = v_prs_behandelaar_key
WHERE mld_melding_key = v_mld_melding_key ;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
IF v_mld_melding_status IN (2)
THEN
-- PROCEDURE setmeldingstatus (pmeldingkey IN NUMBER, pstatus IN NUMBER, puserkey IN NUMBER, pnotificeren IN NUMBER DEFAULT 1)
BEGIN mld.setmeldingstatus(v_mld_melding_key, 4, sys_context('USERENV', 'CLIENT_IDENTIFIER'), 1); END; -- Status 4 is in behandeling
v_mld_melding_status:=4;
v_herberekenen:=1;
END IF;
END IF;
-- Her-berekenen van de Conditie- en Prioriteitscore
---- Alleen als de melding status lopend heeft..
---- Alleen als de omvang, intensiteit of 1 vd aspectwaarden is veranderd..
v_errorhint := 'Herberekenen conditie- en prio-score';
v_aanduiding := 'Melding N' || TO_CHAR(v_mld_melding_key) || ' is herberekend via upload gebreken:' || CHR(13) || CHR(10) || 'Oorspronkelijke conditiescore: ' || TO_CHAR(v_conditiescore) || CHR(13) || CHR(10) || 'Oorspronkelijke prioriteitscore: ' || TO_CHAR(v_prioscore) ;
IF v_mld_melding_status IN (0,4,7,99) AND v_herberekenen=1
THEN
BEGIN
cnd.process_mjb_score_effects (v_mld_melding_key);
END;
COMMIT;
fac.trackaction ('MLDUPD', v_mld_melding_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding);
END IF;
v_count_import := v_count_import + 1;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
fac.imp_writelog (
p_import_key,
'S',
'UPDATE NEN2767_RESULTS: aantal regels te verwerken: '
|| TO_CHAR (v_count_tot)
|| ' / aantal geldige regels: '
|| TO_CHAR (v_count_import)
|| ' / aantal BIJGEWERKTE, BESTAANDE gebreken: '
|| TO_CHAR (v_count_tot_n)
,
'');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END aaxx_update_nen2767_assetman;
/
-------------------------------------------------------------------------------
-- GRANTS naar AAFM database.
-------------------------------------------------------------------------------
GRANT SELECT ON aaxx_v_dwh_prs_bedrijf TO aafm;
GRANT SELECT ON aaxx_v_dwh_prs_bedrijfadres TO aafm;
GRANT SELECT ON aaxx_v_dwh_cnt_contract TO aafm;
GRANT SELECT ON aaxx_v_dwh_cnt_contract_scope TO aafm;
GRANT SELECT ON aaxx_v_dwh_cnt_contract_mantel TO aafm;
GRANT SELECT ON aaxx_v_dwh_cnt_factuurschema TO aafm;
GRANT SELECT ON aaxx_v_dwh_kenmerk_contract TO aafm;
GRANT SELECT ON aaxx_v_dwh_mld_stdmelding TO aafm;
GRANT SELECT ON aaxx_v_dwh_mld_melding TO aafm;
GRANT SELECT ON aaxx_v_dwh_res_reservering TO aafm;
GRANT SELECT ON aaxx_v_dwh_bes_bestelling TO aafm;
GRANT SELECT ON aaxx_v_dwh_bez_bezoekers TO aafm;
GRANT SELECT ON aaxx_v_dwh_kenmerk_melding TO aafm;
GRANT SELECT ON aaxx_v_dwh_kenmerk_opdracht TO aafm;
GRANT SELECT ON aaxx_v_dwh_kenmerk_reservering TO aafm;
GRANT SELECT ON aaxx_v_dwh_kenmerk_bestelling TO aafm;
GRANT SELECT ON aaxx_v_dwh_fin_factuur TO aafm;
GRANT SELECT ON aaxx_v_dwh_fin_factuur_vk TO aafm;
GRANT SELECT ON aaxx_v_dwh_prs_kostenplaats TO aafm;
GRANT SELECT ON aaxx_v_dwh_prs_kostensoort TO aafm;
GRANT SELECT ON aaxx_v_dwh_prs_perslid TO aafm;
GRANT SELECT ON aaxx_v_dwh_fac_groeprechten TO aafm;
GRANT SELECT ON aaxx_v_dwh_prs_afdeling TO aafm;
GRANT SELECT ON aaxx_v_dwh_kenmerk_prs TO aafm;
GRANT SELECT ON aaxx_v_dwh_alg_onrgoed TO aafm;
GRANT SELECT ON aaxx_v_dwh_kenmerk_onrgoed TO aafm;
GRANT SELECT ON aaxx_v_dwh_ins_sensor_status TO aafm;
GRANT SELECT ON aaxx_v_dwh_inspectie TO aafm;
GRANT SELECT ON aaxx_v_dwh_inspectie_2 TO aafm;
GRANT SELECT ON aaxx_v_dwh_ins_object TO aafm;
GRANT SELECT ON aaxx_v_dwh_kenmerk_object TO AAFM;
GRANT SELECT ON aaxx_v_dwh_kenmerk_inspectie TO aafm;
GRANT SELECT ON aaxx_v_dwh_uren TO aafm;
GRANT SELECT ON aaxx_v_dwh_uren_improd TO aafm;
GRANT SELECT ON aaxx_v_dwh_tracking TO aafm;
GRANT SELECT ON aaxx_v_dwh_faq TO aafm;
GRANT SELECT ON aaxx_v_dwh_budget_tracker TO aafm;
GRANT SELECT ON AAXX_V_DWH_GUI_COUNTER TO aafm;
GRANT SELECT ON AAXX_V_DWH_FAQ2 TO aafm;
-- views tbv user telling
GRANT SELECT ON aaxx_v_lcrap_key_stats TO aafm;
GRANT SELECT ON fac_v_lcrap_fe_vs_key TO aafm;
GRANT SELECT ON aaxx_exp_uren_dekking TO aait;
------ payload end ------
SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 0); END;
/
COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile