Files
Customer/AA/AAEN/aaen.sql
Arthur Egberink 7a2ce49399 AAFM#41046 -- Ongeldige procedures in AAXX
svn path=/Customer/trunk/; revision=34471
2017-06-29 07:35:55 +00:00

3292 lines
126 KiB
SQL

--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database
DEFINE thisfile = 'AAEN.SQL'
DEFINE dbuser = '^AAEN'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF
------ payload begin ------
-- script om dagelijks terugkerende scripts aan te roepen.
CREATE OR REPLACE PROCEDURE aaen_select_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
aaxx_daily_task (p_applname, p_applrun);
-- voeg actuele bezetting toe aan reserveringen die afgelopen zijn.
INSERT INTO res_kenmerkwaarde (res_rsv_ruimte_key, res_kenmerk_key, res_kenmerkreservering_waarde)
SELECT rrr.res_rsv_ruimte_key,
10,
ROUND (aaen.get_rsv_ruimte_bezetting (res_rsv_ruimte_key) * 24, 2)
FROM res_rsv_ruimte rrr,
res_ruimte_opstelling ro,
res_alg_ruimte rar,
ins_deel d
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rar.res_ruimte_key
AND rar.alg_ruimte_key = d.ins_alg_ruimte_key
AND d.ins_srtdeel_key = 681
AND res_alg_ruimte_verwijder IS NULL
AND res_rsv_ruimte_van < TRUNC (SYSDATE)
AND NOT EXISTS
(SELECT res_kenmerkwaarde_key
FROM res_kenmerkwaarde kw
WHERE res_kenmerk_key = 10
AND kw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key);
END;
/
-- budgettracker overrules
CREATE OR REPLACE VIEW aaen_v_export_budget_tracker (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_budget_tracker;
-- export overrules
-- exact
-- Leverancier overrulles
CREATE OR REPLACE PROCEDURE aaen_import_opdrstat_strukton (
p_import_key IN NUMBER)
AS
BEGIN
aaxx_import_opdrstat_strukton (p_import_key);
END aaen_import_opdrstat_strukton;
/
CREATE OR REPLACE PROCEDURE aaen_update_opdrstat_strukton (
p_import_key IN NUMBER)
AS
BEGIN
aaxx_update_opdrstat_strukton (p_import_key);
END aaen_update_opdrstat_strukton;
/
CREATE OR REPLACE VIEW aaen_v_export_exact (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_xml;
CREATE OR REPLACE PROCEDURE aaen_select_exact (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
aaxx_select_exact_xml(p_applname, p_applrun);
END;
/
CREATE OR REPLACE PROCEDURE aaen_export_exact (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_exact(p_applname, p_applrun, p_filedir, p_filename);
END;
/
CREATE OR REPLACE VIEW aaen_v_export_verwerk_exact (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_verwerk_exact;
-- Procedure om alle geexporteerde facturen naar status verwerkt te zetten.
CREATE OR REPLACE PROCEDURE aaen_export_verwerk_exact (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
CURSOR c_fact
IS
SELECT f.fin_factuur_key
FROM aaxx_exp_factuur f
, aaxx_v_factuur_gegevens fg
WHERE f.fin_factuur_key = fg.fin_factuur_key
AND fg.fin_factuur_statuses_key = 6;
CURSOR c_opdr
IS
SELECT fg.mld_opdr_key, mld_statusopdr_key, m.mld_melding_status
FROM aaxx_exp_factuur f
, aaxx_v_factuur_gegevens fg
, mld_opdr o
, mld_melding m
WHERE f.fin_factuur_key = fg.fin_factuur_key
AND fg.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND laatste_factuur = 1
AND fg.fin_factuur_statuses_key = 6;
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanvrager NUMBER;
v_bestelling_key NUMBER;
v_logdate DATE;
BEGIN
v_errormsg := 'Geen akties';
-- Facilitor user
v_aanvrager := 4;
v_logdate := SYSDATE;
-- voeg opdrachten toe aan aaen specifieke verkoopbuffer. Deze verkoopbuffer wordt gebruikt om bestanden
-- aan te leveren naar de klant
INSERT INTO aaen_verkoopbuffer (ins_srtdiscipline_prefix,
referentie,
grootboekrekening,
bedrag,
kostenplaats,
ponummer,
omschrijving,
ordernummer,
factuurnummer)
(SELECT sd.ins_srtdiscipline_prefix,
ks.prs_kostensoort_oms || ' - ' || l.alg_locatie_omschrijving,
ud.fac_usrdata_omschr,
f.fin_factuur_totaal,
(SELECT prs_kenmerklink_waarde
FROM prs_kenmerklink kl
WHERE kl.prs_kenmerk_key = 1000 -- kostenplaats
AND prs_link_key = m.prs_perslid_key)
kostenplaats,
DECODE (
mld_typeopdr_omschrijving,
'Projectorder',
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 341 -- PO enexis
AND ko.mld_opdr_key = o.mld_opdr_key),
'')
poenexis,
SUBSTR (o.mld_opdr_omschrijving, 1, 1000) omschrijving,
m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr,
f.fin_factuur_key
FROM mld_opdr o,
fin_factuur f,
mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd,
fac_usrdata ud,
prs_kostensoort ks,
mld_typeopdr ot,
alg_locatie l,
aaxx_exp_factuur ef,
aaxx_v_factuur_gegevens fg
WHERE ef.fin_factuur_key = f.fin_factuur_key
AND f.fin_factuur_key = fg.fin_factuur_key
AND fg.fin_factuur_statuses_key = 6
AND f.mld_opdr_key = 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 d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND f.prs_kostensoort_key = ks.prs_kostensoort_key
AND ks.prs_kostensoort_oms = ud.fac_usrdata_code
AND ud.fac_usrtab_key = 281 -- Grootboekrekening Enexis
AND ud.fac_usrdata_verwijder IS NULL
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key);
-- voeg opdrachten toe aan de generieke verkoopbuffer om orders door te zetten naar Exact.
INSERT INTO fin_verkoopfactuur
(
-- module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, fin_btwtabelwaarde_code, opdr_jaar, exact_code_gebouw, groepering, subregelvolgorde
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_bedrijf_key, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3
)
SELECT substr(to_char(v_logdate, 'dd-mm-yyyy') || ' - ' || sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr, 1,30 ),
'opdracht',
o.mld_opdr_key,
v_logdate,
k.prs_kostenplaats_nr,
k.prs_kostenplaats_nr debiteur,
b.prs_bedrijf_key,
ks.prs_kostensoort_oms || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), ' VJ','') ,
ks.prs_kostensoort_opmerking,
DECODE (
mld_typeopdr_omschrijving,
'Projectorder',
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 341 -- PO enexis
AND ko.mld_opdr_key = o.mld_opdr_key),
'')
poenexis,
sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| '/'
|| mld_opdr_bedrijfopdr_volgnr
|| ' '
|| d.ins_discipline_omschrijving
|| ' ('
|| (SELECT MAX(mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 143 -- opdrachtnummer
AND km.mld_melding_key = m.mld_melding_key)
|| ')'
omschrijving,
fg.bedrag,
fin_btwtabelwaarde_code,
to_char(opdr_datum, 'YYYY'),
COALESCE(exact_code, alg_gebouw_code),
DECODE (
mld_typeopdr_omschrijving,
'Projectorder',
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 341 -- PO enexis
AND ko.mld_opdr_key = o.mld_opdr_key),
'')
groepering,
'' subregelvolgorde
FROM mld_opdr o,
mld_typeopdr ot,
prs_bedrijf b,
prs_kostenplaats k,
mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd,
prs_kostensoort ks,
aaxx_exp_factuur f,
alg_gebouw g,
alg_v_onroerendgoed og,
aaxx_v_exact_code_gebouw exact,
(SELECT fin_factuur_key,
mld_opdr_key,
SUM (fin_factuurregel_totaal) bedrag,
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key) fin_btwtabelwaarde_code,
prs_kostenplaats_key,
prs_kostensoort_key,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum
FROM aaxx_v_factuur_gegevens
WHERE fin_factuur_statuses_key = 6
GROUP BY fin_factuur_key,
fin_btwtabelwaarde_key,
mld_opdr_key,
prs_kostenplaats_key,
prs_kostensoort_key,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum,
fin_factuurregel_btw,
fin_btwtabelwaarde_code,
prs_kostensoort_refcode,
fin_factuurregel_totaal) fg
WHERE fg.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND fg.mld_opdr_key = o.mld_opdr_key
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
AND og.alg_gebouw_key = g.alg_gebouw_key(+)
AND og.alg_gebouw_key = exact.alg_gebouw_key(+)
AND fg.fin_factuur_key = f.fin_factuur_key
AND o.mld_melding_key = m.mld_melding_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_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 ( ks.prs_kostensoort_oms LIKE 'NC P %'
OR ks.prs_kostensoort_oms LIKE 'NC PROJ%'
OR ks.prs_kostensoort_oms LIKE 'CVE %')
AND fg.prs_kostensoort_key = ks.prs_kostensoort_key(+);
FOR rec1 IN c_opdr
LOOP
BEGIN
-- indien nog niet afgemeld, dan maar even afmelden.
IF rec1.mld_statusopdr_key <> 6 AND rec1.mld_statusopdr_key <> 7 AND rec1.mld_statusopdr_key <> 9 THEN
mld.setopdrachtstatus (rec1.mld_opdr_key, 6, v_aanvrager);
mld.setopdrachtstatus (rec1.mld_opdr_key, 9, v_aanvrager);
END IF;
UPDATE mld_opdr o
SET mld_opdr_kosten =
(SELECT SUM (fin_factuurregel_totaal)
FROM fin_factuur f
, fin_factuurregel fr
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.mld_opdr_key = o.mld_opdr_key
AND f.fin_factuur_statuses_key >= 6)
WHERE o.mld_opdr_key = rec1.mld_opdr_key
AND rec1.mld_melding_status IN (4, 5, 7); -- anders faalt de trigger sowieso
-- zet de status naar afgemeld (user is facilitor)
mld.setopdrachtstatus (rec1.mld_opdr_key, 7, v_aanvrager);
END;
END LOOP;
FOR rec1 IN c_fact
LOOP
BEGIN
UPDATE fin_factuur f
SET fin_factuur_statuses_key = 7
WHERE f.fin_factuur_key = rec1.fin_factuur_key;
fac.trackaction ('FINVER', rec1.fin_factuur_key, v_aanvrager, NULL, NULL);
END;
END LOOP;
END;
/
-- exact verkoop
CREATE OR REPLACE VIEW aaen_v_export_cust_verkoop (RESULT, result_order) AS
SELECT
'Bedrijf,Doc. datum,Boek datum,Doc. soort,Valuta,Referentie,Bus. area,Boek sleutel,GBR rekening,Bedrag,BTW code,BTW bedrag,Kosten plaats,WBS element,Interne order,Netw plan nr,Netw plan act.,Partner mij,Kosten drager,Bew. soort,Tekst,ordernummer,Factuurnummer','000000000'
FROM DUAL
UNION ALL
SELECT '1000' -- a
|| ',' || to_char(sysdate, 'dd.mm.yyyy') -- b
|| ',' || to_char(sysdate, 'dd.mm.yyyy') -- c
|| ',' || 'SA' -- d
|| ',' || 'EUR' -- e
|| ',' || replace(referentie, ',', '') -- f
|| ',' || '' -- g
|| ',' || decode (sign(bedrag),-1,'50','40') -- h 50 = credit en 40 = debet
|| ',' || replace(grootboekrekening, ',', '') -- i
|| ',' || REPLACE (TO_CHAR (bedrag), ',', '.') -- j
|| ',' || '' -- k
|| ',' || '' -- l
|| ',' || replace(kostenplaats, ',', '') -- m
|| ',' || '' -- n
|| ',' || replace(ponummer, ',', '') -- o
|| ',' || '' -- p
|| ',' || '' -- q
|| ',' || '' -- r
|| ',' || '' -- s
|| ',' || '' -- t
|| ',' || replace(replace(replace(omschrijving, CHR (13), ''), CHR (10), '<ret>'),',','') -- u
|| ',' || ordernummer -- v
|| ',' || factuurnummer -- w
, factuurnummer || '0'
FROM aaen_verkoopbuffer
WHERE naar_exact IS NULL;
CREATE OR REPLACE PROCEDURE aaen_export_cust_verkoop (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
UPDATE aaen_verkoopbuffer
SET naar_exact = sysdate
WHERE naar_exact IS NULL;
END;
/
CREATE OR REPLACE VIEW aaen_v_export_exact_verkoop (RESULT, result_order) AS SELECT result, result_order FROM aaxx_v_export_exact_verkoop;
CREATE OR REPLACE PROCEDURE aaen_select_exact_verkoop (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
aaxx_select_exact_verkoop(p_applname, p_applrun, to_char(sysdate, 'yyyy'));
END;
/
CREATE OR REPLACE PROCEDURE aaen_export_exact_verkoop (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_exact_verkoop(p_applname, p_applrun, p_filedir, p_filename, to_char(sysdate, 'yyyy'));
-- zorg ervoor dat in dezelfde run ook de klantspecifieke verkoopinterface uitgevoerd wordt.
INSERT INTO imp_schedule (imp_schedule_name) VALUES ('CUST_VERKOOP');
END;
/
-- exact verkoop over het vorige jaar
CREATE OR REPLACE VIEW aaen_v_export_exact_verkoop_vj (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop;
CREATE OR REPLACE PROCEDURE aaen_select_exact_verkoop_vj (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
aaxx_select_exact_verkoop(p_applname, p_applrun, to_char(to_number(to_char(sysdate, 'yyyy'))-1));
END;
/
CREATE OR REPLACE PROCEDURE aaen_export_exact_verkoop_vj (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_exact_verkoop(p_applname, p_applrun, p_filedir, p_filename, to_char(to_number(to_char(sysdate, 'yyyy'))-1));
END;
/
-- exact projecturen (XML)
CREATE OR REPLACE VIEW aaen_v_export_exact_uren (result, result_order)
AS SELECT result, result_order FROM aaxx_v_export_exact_uren_xml;
CREATE OR REPLACE PROCEDURE aaen_select_exact_uren (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
aaxx_select_exact_uren_xml(p_applname, p_applrun, '');
END;
/
-- verwerk exact projecturen (XML)
CREATE OR REPLACE PROCEDURE aaen_export_verwerk_exact_uren (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_verwerk_exact_uren(p_applname, p_applrun, p_filedir, p_filename, '');
END;
/
-- eigen afdelingstructuur omdat Enexis meer dan 5 niveaus kent.
CREATE OR REPLACE VIEW aaen_v_afdeling
(
prs_bedrijf_key,
prs_afdeling_key,
prs_afdeling_parentkey
)
AS
SELECT a.prs_bedrijf_key, a.prs_afdeling_key, kl.prs_afdeling_parentkey
FROM prs_afdeling a,
(SELECT prs_link_key prs_afdeling_key,
prs_kenmerklink_waarde prs_afdeling_parentkey
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1080) kl
WHERE a.prs_afdeling_key = kl.prs_afdeling_key(+);
CREATE OR REPLACE VIEW aaen_v_afdeling_boom
(
niveau,
prs_bedrijf_key,
prs_afdeling_key,
prs_afdeling_key1,
prs_afdeling_key2,
prs_afdeling_key3,
prs_afdeling_key4,
prs_afdeling_key5,
prs_afdeling_key6,
prs_afdeling_key7,
prs_afdeling_key8,
prs_afdeling_key9,
prs_afdeling_key10
)
AS
SELECT '1' niveau,
a1.prs_bedrijf_key,
a1.prs_afdeling_key,
a1.prs_afdeling_key,
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM aaen_v_afdeling a1
WHERE a1.prs_afdeling_parentkey IS NULL
UNION
SELECT '2' niveau,
a1.prs_bedrijf_key,
a2.prs_afdeling_key,
a1.prs_afdeling_key,
a2.prs_afdeling_key,
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM aaen_v_afdeling a1, aaen_v_afdeling a2
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
AND a1.prs_afdeling_parentkey IS NULL
UNION
SELECT '3' niveau,
a1.prs_bedrijf_key,
a3.prs_afdeling_key,
a1.prs_afdeling_key,
a2.prs_afdeling_key,
a3.prs_afdeling_key,
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM aaen_v_afdeling a1, aaen_v_afdeling a2, aaen_v_afdeling a3
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
AND a1.prs_afdeling_parentkey IS NULL
UNION
SELECT '4' niveau,
a1.prs_bedrijf_key,
a4.prs_afdeling_key,
a1.prs_afdeling_key,
a2.prs_afdeling_key,
a3.prs_afdeling_key,
a4.prs_afdeling_key,
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM aaen_v_afdeling a1,
aaen_v_afdeling a2,
aaen_v_afdeling a3,
aaen_v_afdeling a4
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
AND a1.prs_afdeling_parentkey IS NULL
UNION
SELECT '5' niveau,
a1.prs_bedrijf_key,
a5.prs_afdeling_key,
a1.prs_afdeling_key,
a2.prs_afdeling_key,
a3.prs_afdeling_key,
a4.prs_afdeling_key,
a5.prs_afdeling_key,
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM aaen_v_afdeling a1,
aaen_v_afdeling a2,
aaen_v_afdeling a3,
aaen_v_afdeling a4,
aaen_v_afdeling a5
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
AND a1.prs_afdeling_parentkey IS NULL
UNION
SELECT '6' niveau,
a1.prs_bedrijf_key,
a6.prs_afdeling_key,
a1.prs_afdeling_key,
a2.prs_afdeling_key,
a3.prs_afdeling_key,
a4.prs_afdeling_key,
a5.prs_afdeling_key,
a6.prs_afdeling_key,
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM aaen_v_afdeling a1,
aaen_v_afdeling a2,
aaen_v_afdeling a3,
aaen_v_afdeling a4,
aaen_v_afdeling a5,
aaen_v_afdeling a6
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
AND a1.prs_afdeling_parentkey IS NULL
UNION
SELECT '7' niveau,
a1.prs_bedrijf_key,
a7.prs_afdeling_key,
a1.prs_afdeling_key,
a2.prs_afdeling_key,
a3.prs_afdeling_key,
a4.prs_afdeling_key,
a5.prs_afdeling_key,
a6.prs_afdeling_key,
a7.prs_afdeling_key,
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM aaen_v_afdeling a1,
aaen_v_afdeling a2,
aaen_v_afdeling a3,
aaen_v_afdeling a4,
aaen_v_afdeling a5,
aaen_v_afdeling a6,
aaen_v_afdeling a7
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
AND a1.prs_afdeling_parentkey IS NULL
UNION
SELECT '8' niveau,
a1.prs_bedrijf_key,
a8.prs_afdeling_key,
a1.prs_afdeling_key,
a2.prs_afdeling_key,
a3.prs_afdeling_key,
a4.prs_afdeling_key,
a5.prs_afdeling_key,
a6.prs_afdeling_key,
a7.prs_afdeling_key,
a8.prs_afdeling_key,
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM aaen_v_afdeling a1,
aaen_v_afdeling a2,
aaen_v_afdeling a3,
aaen_v_afdeling a4,
aaen_v_afdeling a5,
aaen_v_afdeling a6,
aaen_v_afdeling a7,
aaen_v_afdeling a8
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
AND a8.prs_afdeling_parentkey = a7.prs_afdeling_key
AND a1.prs_afdeling_parentkey IS NULL
UNION
SELECT '9' niveau,
a1.prs_bedrijf_key,
a9.prs_afdeling_key,
a1.prs_afdeling_key,
a2.prs_afdeling_key,
a3.prs_afdeling_key,
a4.prs_afdeling_key,
a5.prs_afdeling_key,
a6.prs_afdeling_key,
a7.prs_afdeling_key,
a8.prs_afdeling_key,
a9.prs_afdeling_key,
TO_NUMBER (NULL)
FROM aaen_v_afdeling a1,
aaen_v_afdeling a2,
aaen_v_afdeling a3,
aaen_v_afdeling a4,
aaen_v_afdeling a5,
aaen_v_afdeling a6,
aaen_v_afdeling a7,
aaen_v_afdeling a8,
aaen_v_afdeling a9
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
AND a8.prs_afdeling_parentkey = a7.prs_afdeling_key
AND a9.prs_afdeling_parentkey = a8.prs_afdeling_key
AND a1.prs_afdeling_parentkey IS NULL
UNION
SELECT '10' niveau,
a1.prs_bedrijf_key,
a10.prs_afdeling_key,
a1.prs_afdeling_key,
a2.prs_afdeling_key,
a3.prs_afdeling_key,
a4.prs_afdeling_key,
a5.prs_afdeling_key,
a6.prs_afdeling_key,
a7.prs_afdeling_key,
a8.prs_afdeling_key,
a9.prs_afdeling_key,
a10.prs_afdeling_key
FROM aaen_v_afdeling a1,
aaen_v_afdeling a2,
aaen_v_afdeling a3,
aaen_v_afdeling a4,
aaen_v_afdeling a5,
aaen_v_afdeling a6,
aaen_v_afdeling a7,
aaen_v_afdeling a8,
aaen_v_afdeling a9,
aaen_v_afdeling a10
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
AND a8.prs_afdeling_parentkey = a7.prs_afdeling_key
AND a9.prs_afdeling_parentkey = a8.prs_afdeling_key
AND a10.prs_afdeling_parentkey = a9.prs_afdeling_key
AND a1.prs_afdeling_parentkey IS NULL;
-- PACKAGE
CREATE OR REPLACE PACKAGE AAEN AS
-- PACKAGES voor de Enexis specifieke functies en procedures
FUNCTION cat_gebouw (p_locatie_key IN NUMBER) RETURN NUMBER;
FUNCTION get_rsv_ruimte_bezetting (f_res_rsv_ruimte_key IN NUMBER) RETURN NUMBER;
END;
/
CREATE OR REPLACE PACKAGE BODY AAEN AS
FUNCTION cat_gebouw (p_locatie_key IN NUMBER)
RETURN NUMBER
AS
CURSOR c (lkey NUMBER)
IS
SELECT 1 kantoor, g.alg_gebouw_key, alg_onrgoedkenmerk_waarde waarde
FROM alg_gebouw g, alg_onrgoedkenmerk ogk
WHERE alg_srtgebouw_key = 7 -- kantoor
AND ogk.alg_onrgoed_key = alg_gebouw_key
AND ogk.alg_onrgoed_niveau = 'G'
AND g.alg_gebouw_verwijder IS NULL
AND g.alg_locatie_key = lkey
UNION ALL
SELECT 0 kantoor, g.alg_gebouw_key, alg_onrgoedkenmerk_waarde waarde
FROM alg_gebouw g, alg_onrgoedkenmerk ogk
WHERE alg_srtgebouw_key <> 7 -- kantoor
AND ogk.alg_onrgoed_key = g.alg_gebouw_key
AND ogk.alg_onrgoed_niveau = 'G'
AND g.alg_gebouw_verwijder IS NULL
AND g.alg_locatie_key = lkey
UNION ALL
SELECT -1 kantoor, g.alg_gebouw_key, '9999'
FROM alg_gebouw g
WHERE g.alg_locatie_key = lkey
ORDER BY kantoor DESC, waarde;
BEGIN
FOR rec IN c (p_locatie_key)
LOOP
RETURN rec.alg_gebouw_key;
END LOOP;
RETURN NULL;
END;
FUNCTION get_rsv_ruimte_bezetting (
f_res_rsv_ruimte_key IN NUMBER)
RETURN NUMBER
AS
CURSOR c
IS
SELECT rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
(SELECT ins_deel_state
FROM ins_deel_state_history h1
WHERE h1.ins_deel_key = d.ins_deel_key
AND ins_deel_statedate < rrr.res_rsv_ruimte_van
AND NOT EXISTS
(SELECT ins_deel_state
FROM ins_deel_state_history h2
WHERE h2.ins_deel_key = d.ins_deel_key
AND h2.ins_deel_statedate <
rrr.res_rsv_ruimte_van
AND h2.ins_deel_statedate > h1.ins_deel_statedate))
ins_deel_state
FROM res_rsv_ruimte rrr,
res_ruimte_opstelling ro,
res_alg_ruimte rar,
ins_deel d
WHERE rrr.res_rsv_ruimte_key = f_res_rsv_ruimte_key
AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rar.res_ruimte_key
AND rar.alg_ruimte_key = d.ins_alg_ruimte_key
AND d.ins_srtdeel_key = 681
AND res_alg_ruimte_verwijder IS NULL;
CURSOR c2
IS
SELECT h.ins_deel_statedate, h.ins_deel_state
FROM res_rsv_ruimte rrr,
res_ruimte_opstelling ro,
res_alg_ruimte rar,
ins_deel d,
ins_deel_state_history h
WHERE rrr.res_rsv_ruimte_key = f_res_rsv_ruimte_key
AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rar.res_ruimte_key
AND rar.alg_ruimte_key = d.ins_alg_ruimte_key
AND d.ins_srtdeel_key = 681
AND d.ins_deel_key = h.ins_deel_key
AND h.ins_deel_statedate >= rrr.res_rsv_ruimte_van
AND h.ins_deel_statedate <= rrr.res_rsv_ruimte_tot
AND res_alg_ruimte_verwijder IS NULL
ORDER BY h.ins_deel_statedate;
v_nr_sensors NUMBER;
v_nr_sensors_on NUMBER;
v_tijd_bezet NUMBER (12, 8);
v_start DATE;
v_stop DATE;
v_laatste_activiteit DATE;
BEGIN
v_nr_sensors := 0;
v_nr_sensors_on := 0;
v_tijd_bezet := 0;
FOR rec IN c
LOOP
BEGIN
v_start := rec.res_rsv_ruimte_van;
v_stop := rec.res_rsv_ruimte_tot;
v_nr_sensors := v_nr_sensors + 1;
IF rec.ins_deel_state = '1'
THEN
v_nr_sensors_on := v_nr_sensors_on + 1;
END IF;
END;
END LOOP;
IF v_nr_sensors_on > 0
THEN
v_laatste_activiteit := v_start;
END IF;
FOR rec IN c2
LOOP
BEGIN
IF rec.ins_deel_state = '1'
THEN
v_nr_sensors_on := v_nr_sensors_on + 1;
-- beweging in de ruimte gedetecteerd
IF v_nr_sensors_on = 1
THEN
v_laatste_activiteit := rec.ins_deel_statedate;
END IF;
ELSE
v_nr_sensors_on := v_nr_sensors_on - 1;
-- geen activiteit meer waargenomen
IF v_nr_sensors_on = 0
THEN
v_tijd_bezet :=
v_tijd_bezet
+ (rec.ins_deel_statedate - v_laatste_activiteit);
/* DBMS_OUTPUT.put_line(v_tijd_bezet || ' ** '
|| TO_CHAR (rec.ins_deel_statedate,
'hh24:mi:ss')
|| ' - '
|| TO_CHAR (v_laatste_activiteit,
'hh24:mi:ss')
|| '-d-'
|| TO_CHAR(rec.ins_deel_statedate
- v_laatste_activiteit));*/
v_laatste_activiteit := NULL;
END IF;
END IF;
END;
END LOOP;
-- correctie einde
IF v_laatste_activiteit IS NOT NULL
THEN
v_tijd_bezet := v_tijd_bezet + (v_stop - v_laatste_activiteit);
/* DBMS_OUTPUT.put_line( v_tijd_bezet
|| ' ** '
|| TO_CHAR (v_stop, 'hh24:mi:ss')
|| ' - '
|| TO_CHAR (v_laatste_activiteit, 'hh24:mi:ss')
|| '-d-'
|| TO_CHAR (v_stop - v_laatste_activiteit));*/
END IF;
RETURN v_tijd_bezet;
END;
END;
/
CREATE OR REPLACE VIEW aaen_v_catering_loc
(
res_rsv_artikel_key,
res_rsv_artikel_prijs,
res_rsv_artikel_levering,
alg_locatie_key
)
AS
SELECT rra.res_rsv_artikel_key,
rra.res_rsv_artikel_prijs,
rra.res_rsv_artikel_levering,
alg_locatie_key
FROM res_rsv_ruimte rrr,
res_rsv_artikel rra,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
res_artikel ra,
( SELECT COALESCE (MAX (ir2a.alg_ruimte_key), irrr.alg_ruimte_key)
alg_ruimte_key,
irrr.res_rsv_ruimte_key
FROM res_rsv_ruimte irrr,
(SELECT res_rsv_ruimte_key, alg_ruimte_key
FROM res_v_rsv_ruimte_2_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL) ir2a
WHERE irrr.res_rsv_ruimte_key = ir2a.res_rsv_ruimte_key(+)
GROUP BY irrr.res_rsv_ruimte_key, irrr.alg_ruimte_key) r2a
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND r2a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND r2a.alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_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;
-- Procedure om alle geexporteerde facturen naar status verwerkt te zetten.
CREATE OR REPLACE PROCEDURE aaen_export_bundel_catering (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
CURSOR c(lev_date DATE) IS
SELECT SUM(res_rsv_artikel_prijs),
alg_locatie_key
FROM aaen_v_catering_loc
WHERE res_rsv_artikel_levering < lev_date
GROUP BY alg_locatie_key;
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_dienst_key NUMBER;
v_prs_kostenplaats_key NUMBER;
v_mld_opdr_bedrijfopdr_volgnr NUMBER;
v_aanvrager NUMBER;
v_mld_workorder_key NUMBER;
v_mld_stdmelding_key NUMBER;
v_date DATE;
v_count NUMBER;
BEGIN
-- Facilitor
v_aanvrager := 4;
-- 911165 Enexis Demand kostenplaats key
v_prs_kostenplaats_key := 1762;
-- stdmelding key voor recharge
v_mld_stdmelding_key := 2101;
-- key van opdrachttype workorder
v_mld_workorder_key := 3;
-- key van dienst catering
v_prs_dienst_key := 12;
v_errormsg := 'Bepaal einddatum';
-- wat is de eerste dag van de huidige maand
v_date := to_date(to_char(sysdate, 'yyyymm')||'01','yyyymmdd');
SELECT count(mld_opdr_key)
INTO v_count
FROM mld_opdr
WHERE mld_opdr_omschrijving = 'Catering factuur tot: ' || to_char(v_date, 'dd-mm-yyyy');
IF v_count > 0 THEN
fac.writelog (p_applname,'E', 'Catering export is al eerder uitgevoerd.',
'Controleer opdrachten met datum: ' || to_char(v_date, 'dd-mm-yyyy'));
ELSE
FOR rec IN c(v_date) LOOP
-- controleer of ik een melding heb op deze locatie
BEGIN
v_errormsg := 'Opzoeken catering melding';
SELECT mld_melding_key
INTO v_mld_melding_key
FROM mld_melding
WHERE mld_alg_locatie_key = rec.alg_locatie_key
AND mld_stdmelding_key = v_mld_stdmelding_key
AND v_date BETWEEN mld_melding_datum AND mld_melding_einddatum+1;
EXCEPTION WHEN NO_DATA_FOUND THEN
-- geen melding voor deze locatie gevonden. Dan maken we er maar een aan.
v_errormsg := 'Aanmaken catering melding';
BEGIN
INSERT INTO mld_melding
(
mld_melding_omschrijving,
prs_perslid_key,
prs_kostenplaats_key,
mld_stdmelding_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_einddatum,
mld_melding_datum,
mld_melding_t_uitvoertijd,
mld_meldbron_key,
mld_melding_module,
mld_melding_spoed
)
VALUES (
'Catering factuur boekingen',
v_aanvrager,
v_prs_kostenplaats_key,
v_mld_stdmelding_key,
rec.alg_locatie_key,
aaen.cat_gebouw(rec.alg_locatie_key),
to_date(to_char(v_date, 'YYYY') || '1231', 'YYYYMMDD'),
to_date(to_char(v_date, 'YYYY') || '0101', 'YYYYMMDD'),
c_catmld_uitvoertijd,
5,
'MLD',
3
) RETURNING mld_melding_key INTO v_mld_melding_key;
BEGIN mld.setmeldingstatus(v_mld_melding_key, 2, v_aanvrager); END;
BEGIN mld.setmeldingstatus(v_mld_melding_key, 4, v_aanvrager); END;
UPDATE mld_melding SET mld_melding_behandelaar_key= v_aanvrager WHERE mld_melding_key = v_mld_melding_key;
END;
END;
-- nu gaan we op zoek naar de cateraar die op deze locatie zijn diensten levert.
BEGIN
v_errormsg := 'Zoek een cateraar op deze locatie (key:' || rec.alg_locatie_key ||')';
SELECT prs_bedrijf_key
INTO v_prs_bedrijf_key
FROM prs_bedrijfdienstlocatie
WHERE prs_dienst_key = v_prs_dienst_key
AND alg_locatie_key = rec.alg_locatie_key;
v_mld_opdr_bedrijfopdr_volgnr := mld.BepaalOpdrMeldingVolgnr (v_mld_melding_key);
v_errormsg := 'Maak opdracht aan om factuur van cateraar te matchen';
-- maak opdracht aan om cateringfactuur van leverancier te matchen
INSERT INTO mld_opdr (mld_melding_key
, prs_kostenplaats_key
, mld_statusopdr_key
, mld_typeopdr_key
, prs_perslid_key
, mld_uitvoerende_keys
, mld_opdr_datumbegin
, mld_opdr_einddatum
, mld_opdr_module
, mld_opdr_omschrijving
, mld_opdr_materiaal
, mld_opdr_kosten
, mld_opdr_bedrijfopdr_volgnr)
( SELECT v_mld_melding_key
, v_prs_kostenplaats_key
, 5 -- uitgegeven
, v_mld_workorder_key
, v_aanvrager
, v_prs_bedrijf_key
, v_date-1
, FAC.DatumTijdPlusUitvoerTijd(sysdate, 1, 'DAGEN')
, 'MLD'
, 'Catering factuur tot: ' || to_char(v_date, 'dd-mm-yyyy')
, sum(res_rsv_artikel_prijs)
, sum(res_rsv_artikel_prijs)
, v_mld_opdr_bedrijfopdr_volgnr
FROM aaen_v_catering_loc
WHERE alg_locatie_key = rec.alg_locatie_key
AND res_rsv_artikel_levering < v_date);
UPDATE res_rsv_artikel rra
SET res_rsv_artikel_verwerkt = SYSDATE,
res_status_bo_key = 6
WHERE EXISTS (SELECT res_rsv_artikel_key
FROM aaen_v_catering_loc cl
WHERE cl.res_rsv_artikel_key = rra.res_rsv_artikel_key
AND cl.alg_locatie_key = rec.alg_locatie_key
AND res_rsv_artikel_levering < v_date);
v_errormsg := 'Update melding status';
MLD.updatemeldingstatus (v_mld_melding_key, 0, v_aanvrager); -- Facilitor
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.writelog (p_applname,'E', v_errormsg, '');
END;
END LOOP;
END IF;
COMMIT;
END;
/
CREATE OR REPLACE VIEW aaen_v_rap_catering_export
(
extern_factuurnummer,
datum_factuur,
crediteurnummer,
naam_bedrijfsonderdeel,
budgethouder,
kostenplaats,
ordernummer,
ordernummer_klant,
btw,
bedrag_excl,
bedrag_btw,
bedrag_incl,
fclt_f_periode
)
AS
SELECT 'N/A',
'N/A',
'809062',
kostenplaats,
'N/A',
pers_kostenplaats,
reservering,
'',
TO_CHAR (btw) btw,
SUM (totaalprijs) bedragexcl,
ROUND (SUM (totaalprijs) * (btw / 100), 2) bedragbtw,
ROUND (SUM (totaalprijs) * (1 + btw / 100), 2) bedragincl,
periode
FROM (SELECT rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
reservering,
k.prs_kostenplaats_omschrijving kostenplaats,
(SELECT prs_kenmerklink_waarde
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1000
AND prs_link_key = rrr.res_rsv_ruimte_host_key)
pers_kostenplaats,
TO_CHAR (ADD_MONTHS (rra.res_rsv_artikel_verwerkt, -1),
'yyyy-mm')
periode,
ra.res_artikel_btw btw,
rra.res_rsv_artikel_prijs totaalprijs
FROM res_rsv_artikel rra,
res_rsv_ruimte rrr,
prs_kostenplaats k,
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 rra.res_artikel_key = ra.res_artikel_key
AND rrr.res_rsv_ruimte_key = rg.res_rsv_ruimte_key)
GROUP BY reservering,
kostenplaats,
pers_kostenplaats,
periode,
btw;
-- export leaseopdracht naar leasemaatschappij
CREATE OR REPLACE PROCEDURE aaen_export_lease_aanvraag (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
CURSOR c
IS
SELECT m.mld_melding_key,
m.prs_kostenplaats_key,
m.mld_melding_omschrijving,
MAX (bdl.prs_bedrijf_key) prs_bedrijf_key
FROM mld_melding m,
mld_stdmelding std,
prs_dienst d,
prs_bedrijfdienstlocatie bdl
WHERE ( m.mld_stdmelding_key = 143 -- goedkeuring 2e leidinggevende
OR ( m.mld_stdmelding_key = 144 -- goedkeuring 1e leidinggevende
AND mld_workflowstep_key in (6,8, 13) -- 0-6 Maanden huurauto / 6-12 Maanden Shortlease / Stallingsauto
)
)
AND m.mld_melding_status = 5 -- afgemeld
AND m.mld_stdmelding_key = STD.MLD_STDMELDING_KEY
AND std.prs_dienst_key = bdl.prs_dienst_key
AND NOT EXISTS (SELECT mld_melding_key
FROM mld_opdr o
WHERE mld_melding_key = m.mld_melding_key)
GROUP BY mld_melding_key, prs_kostenplaats_key, mld_melding_omschrijving;
CURSOR co
IS
SELECT mld_opdr_key
FROM mld_melding m, mld_opdr o
WHERE m.mld_melding_key = o.mld_melding_key
AND m.mld_stdmelding_key IN (143, 144) -- goedkeuring 1e en 2e leidinggevende
AND o.mld_statusopdr_key = 5 -- toegekend
AND o.mld_opdr_verzonden IS NOT NULL;
CURSOR cl
IS
SELECT nivleiding, mld_melding_key
FROM (SELECT '2' nivleiding,
fac.safe_to_number (l.prs_perslid_key_leid) leidinggevende,
mld_melding_key
FROM mld_melding m, aaen_v_leidinggevende l
WHERE m.prs_perslid_key = l.prs_perslid_key
AND m.mld_stdmelding_key = 144
AND m.mld_melding_status IN (2, 3, 4)
-- 2e leidinggevende notificeren
UNION ALL
SELECT '1',
fac.safe_to_number(DECODE (l.prs_perslid_key_leid,
l.niveau1, NULL,
l.niveau2, l.niveau1,
l.niveau2)),
mld_melding_key
FROM mld_melding m, aaen_v_leidinggevende l
WHERE m.prs_perslid_key = l.prs_perslid_key
AND m.mld_stdmelding_key = 143
AND m.mld_melding_status IN (2, 3, 4))
WHERE leidinggevende IS NULL;
CURSOR cg
IS
SELECT *
FROM mld_melding m
WHERE mld_stdmelding_key IN (143, 144) -- goedkeuring 1e en 2e leidinggevende
AND prs_perslid_key = fac.gettrackinguserkey ('MLDAFM', mld_melding_key)
AND TRUNC (fac.gettrackingdate('MLDAFM', mld_melding_key)) > sysdate -1;
v_opdr_count NUMBER(10);
v_melding_key NUMBER(10);
BEGIN
FOR rec IN cg -- lijst met meldingen goedkeuring 1e of 2e leidinggevende die door melder zelf zijn goedgekeurd.
LOOP
BEGIN
SELECT count(*)
INTO v_opdr_count
FROM mld_opdr o, mld_melding m
WHERE o.mld_melding_key = m.mld_melding_key
AND m.mld_melding_start_key = rec.mld_melding_start_key;
-- Als er al opdrachten naar de leasemaatschappij verstuurd zijn, is het te laat om de meldingen nog te verwijderen
IF v_opdr_count = 0
THEN
DELETE fac_tracking t WHERE
EXISTS (SELECT mld_melding_key
FROM mld_melding m, fac_srtnotificatie sn
WHERE mld_melding_start_key = rec.mld_melding_start_key
AND t.fac_tracking_refkey = m.mld_melding_key
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND m.mld_melding_key <> m.mld_melding_start_key
AND sn.fac_srtnotificatie_xmlnode = 'melding');
SELECT mld_melding_key
INTO v_melding_key
FROM mld_melding m
WHERE m.mld_melding_start_key = rec.mld_melding_start_key
AND m.mld_melding_start_key = m.mld_melding_key;
DELETE mld_melding m WHERE m.mld_melding_start_key = rec.mld_melding_start_key
AND m.mld_melding_key <> m.mld_melding_start_key;
-- set de melding status weer op nieuw om deze vervolgens af te wijzen
UPDATE mld_melding
SET mld_melding_status = 2,
mld_melding_opmerking = mld_melding_opmerking || CHR (13) || CHR (10) || 'Melding afgewezen omdat goedkeuring door aanvrager zelf is uitgevoerd.'
WHERE mld_melding_start_key = rec.mld_melding_start_key;
MLD.setmeldingstatus(v_melding_key, 1, NULL);
END IF;
END;
END LOOP;
FOR rec IN cl -- hangende meldingen die geen leidinggevende meer hebben.
LOOP
BEGIN
MLD.setmeldingstatus(rec.mld_melding_key, 4, 4); -- accepteren door facilitor
MLD.setmeldingstatus(rec.mld_melding_key, 5, 4); -- afmelden door facilitor
MLD.mld_nextworkflowstep (rec.mld_melding_key, 1); -- Succes en trap de volgende workflow stap af.
EXCEPTION
WHEN OTHERS
THEN
fac.writelog (p_applname
, 'E'
, 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'
, 'Fout bij afhandelen van melding: ' || rec.mld_melding_key);
END;
END LOOP;
-- opdrachten aanmaken voor leaseaanvragen die een eindsituatie bereikt hebben.
FOR rec IN c
LOOP
BEGIN
INSERT INTO mld_opdr (mld_melding_key
, prs_kostenplaats_key
, mld_statusopdr_key
, mld_typeopdr_key
, prs_perslid_key
, mld_uitvoerende_keys
, mld_opdr_datumbegin
, mld_opdr_einddatum
, mld_opdr_module
, mld_opdr_omschrijving
, mld_opdr_bedrijfopdr_volgnr
, mld_opdr_teverzenden)
VALUES ( rec.mld_melding_key
, rec.prs_kostenplaats_key
, 5 -- uitgegeven
, 1 -- docket
, 4 -- facilitor
, rec.prs_bedrijf_key
, SYSDATE
, FAC.DatumTijdPlusUitvoerTijd (SYSDATE, 1, 'DAGEN')
, 'MLD'
, rec.mld_melding_omschrijving
, 1
, 1);
-- update melding status is niet nodig omdat de melding al afgemeld is.
-- MLD.updatemeldingstatus (rec.mld_melding_key, 0, 4); -- facilitor
EXCEPTION
WHEN OTHERS
THEN
fac.writelog (p_applname
, 'E'
, 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'
, 'Fout bij aanmaken opdracht: ' || rec.mld_melding_key);
END;
COMMIT;
END LOOP;
FOR rec IN co
LOOP
BEGIN
mld.setopdrachtstatus(rec.mld_opdr_key, 6, 4); -- afgemeld, facilitor
EXCEPTION
WHEN OTHERS
THEN
fac.writelog (p_applname
, 'E'
, 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'
, 'Fout bij afmelden opdracht: ' || rec.mld_opdr_key);
END;
END LOOP;
END aaen_export_lease_aanvraag;
/
--
--
-- IMPORT FUNCTIES
--
--
CREATE OR REPLACE PROCEDURE aaen_import_perslid (p_import_key IN NUMBER)
AS
CURSOR c IS
SELECT alg_locatie_code, alg_gebouw_code, prs_perslid_nr FROM fac_imp_perslid;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
v_alg_ruimte_key NUMBER;
v_alg_verdieping_volgnr NUMBER;
v_alg_ruimte_nr VARCHAR2(10);
BEGIN
v_errorhint := 'Generieke update';
-- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
prs.import_perslid (p_import_key,
'1;2;0;0;0;0;3;4;5;7;' ||
'6;19;18;0;8;9;10;11;0;13;' ||
'12;14;0;0;0;0;17;15;0;0;'||
'0;0;0;0;0;0;0;0;0;0;'||
'0;0;0;0;0;0',
''
);
-- Klantspecifieke aanpassingen
-- Codering naamgebruik Enexis:
-- 00 - Gebruik eigennaam
-- 01 - Gebruik partnernaam
-- 02 - Gebruik eigennaam - partnernaam
-- 03 - Gebruik partnernaam - eigennaam
UPDATE fac_imp_perslid SET PRS_PERSLID_NAAMGEBRUIK_CODE = 0 WHERE PRS_KENMERK1 = '00'; -- 0 (default) perslid_naam en perslid_tussenvoegsel worden gebruikt
UPDATE fac_imp_perslid SET PRS_PERSLID_NAAMGEBRUIK_CODE = 1 WHERE PRS_KENMERK1 = '03'; -- 1 personen die de geboortenaam van de partner icm de eigen naam willen gebruiken
UPDATE fac_imp_perslid SET PRS_PERSLID_NAAMGEBRUIK_CODE = 2 WHERE PRS_KENMERK1 = '01'; -- 2 personen die de geboortenaam van de partner willen gebruiken
UPDATE fac_imp_perslid SET PRS_PERSLID_NAAMGEBRUIK_CODE = 3 WHERE PRS_KENMERK1 = '02'; -- 3 personen die de eigen naam icm de geboortenaam van de partner willen gebruiken
-- verwijder AAFM medewerkers uit de lijst. Deze mensen worden via de AAFM import methode ingelezen.
DELETE fac_imp_perslid i
WHERE prs_afdeling_naam = '50141837' -- uitbesteede diensten
AND EXISTS
(SELECT prs_perslid_key
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_naam = i.prs_perslid_naam
AND p.prs_perslid_voornaam = i.prs_perslid_voornaam
AND p.prs_afdeling_key = 643 -- aafm
);
-- default werkplek invullen
/*
FOR rec in c
LOOP
BEGIN
SELECT MAX(alg_ruimte_key)
INTO v_alg_ruimte_key
FROM prs_v_werkplek_gegevens wpg, prs_perslidwerkplek pwp, prs_perslid p
WHERE wpg.prs_werkplek_key = pwp.prs_werkplek_key
AND pwp.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_nr = rec.prs_perslid_nr
AND wpg.alg_gebouw_code = rec.alg_gebouw_code;
IF v_alg_ruimte_key IS NULL
THEN
SELECT MAX(alg_ruimte_key)
INTO v_alg_ruimte_key
FROM alg_v_ruimte_gegevens
WHERE alg_gebouw_upper = rec.alg_gebouw_code
AND alg_ruimte_nr = '000';
END IF;
IF v_alg_ruimte_key IS NOT NULL
THEN
SELECT alg_verdieping_volgnr, alg_ruimte_nr
INTO v_alg_verdieping_volgnr, v_alg_ruimte_nr
FROM alg_v_ruimte_gegevens
WHERE alg_ruimte_key = v_alg_ruimte_key;
UPDATE fac_imp_perslid
SET alg_verdieping_volgnr = v_alg_verdieping_volgnr,
alg_ruimte_nr = v_alg_ruimte_nr
WHERE prs_perslid_nr = rec.prs_perslid_nr;
END IF;
END;
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 aaen_import_perslid;
/
CREATE OR REPLACE PROCEDURE aaen_update_perslid (p_import_key IN NUMBER)
IS
CURSOR c
IS
SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full
FROM fac_imp_perslid i,
prs_perslid p,
prs_v_perslid_fullnames_all pf
WHERE p.prs_perslid_nr = i.prs_perslid_nr(+)
AND pf.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_nr IS NOT NULL
AND i.prs_perslid_nr IS NULL
AND p.prs_perslid_verwijder IS NULL
ORDER BY 2;
CURSOR c_flex
IS
SELECT i.*, p.prs_perslid_key prs_key
FROM fac_imp_perslid i, prs_perslid p
WHERE p.prs_perslid_nr = i.prs_perslid_nr
AND p.prs_perslid_verwijder IS NULL
ORDER BY 2;
-- Maximaal toegestane afname van #personen door import!
c_max_delta_percentage NUMBER (10) := 20;
v_perslid_key NUMBER;
v_perslid_nr VARCHAR2 (100);
v_kostenplaats_nr VARCHAR2 (100);
v_count_prs_actual NUMBER (10);
v_count_prs_import NUMBER (10);
BEGIN
-- #actieve personen voor import!
SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
INTO v_count_prs_actual
FROM prs_v_aanwezigperslid
WHERE prs_perslid_nr IS NOT NULL;
-- #actieve personen *na* import!
SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
INTO v_count_prs_import
FROM prs_v_aanwezigperslid p, fac_imp_perslid ip
WHERE p.prs_perslid_nr IS NOT NULL
AND UPPER (p.prs_perslid_nr) = UPPER (ip.prs_perslid_nr);
IF ( (TRUNC ( (v_count_prs_import / v_count_prs_actual) * 100) >=
(100 - c_max_delta_percentage)))
THEN
-- Geldig importbestand wat betreft aantal personen
-- generic update
prs.update_perslid (p_import_key, 'NR', '');
-- remove perslid records if people registered with perslid_nr are not present in the import file.
FOR rec IN c
LOOP
BEGIN
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
END;
END LOOP;
-- update flex fields
FOR rec IN c_flex
LOOP
BEGIN
PRS.upsertkenmerk (1000, rec.prs_key, rec.prs_kenmerk2); -- Kostenplaats
END;
END LOOP;
ELSE
fac.imp_writelog (
p_import_key,
'E',
'Afname van #personen door import te groot!',
'- #personen voor import = ['
|| TO_CHAR (v_count_prs_actual)
|| '] <br> '
|| '- #personen *na* import = ['
|| TO_CHAR (v_count_prs_import)
|| ']'
);
COMMIT;
END IF; -- Geldig importbestand wat betreft aantal inserts
COMMIT;
END aaen_update_perslid;
/
CREATE OR REPLACE PROCEDURE aaen_import_organisatie_mut (p_import_key IN NUMBER)
AS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000); -- Input line
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count NUMBER;
v_ongeldig NUMBER (1);
v_mode NUMBER (1);
v_aanduiding VARCHAR2 (200);
v_all_null BOOLEAN;
v_count_error NUMBER (10);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
-- De importvelden:
v_bedrijf_naam VARCHAR2 (256);
v_afdeling_naam VARCHAR2 (256);
v_afdeling_naam_parent VARCHAR2 (256);
v_afdeling_omschrijving VARCHAR2 (256);
v_afdeling_niveau_txt VARCHAR2(20);
v_afdeling_leiding_txt VARCHAR2(20);
v_afdeling_niveau NUMBER(10);
v_afdeling_leiding NUMBER (10);
-- PRS_BEDRIJF
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM aaen_imp_organisatie;
COMMIT;
v_count_error := 0;
header_is_valid := 0;
v_count_tot := 0;
v_count_import := 0;
FOR rec1 IN c1
LOOP
BEGIN
v_errormsg := 'Fout FETCH te importeren rij';
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout opvragen te importeren rij';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_fielddelimitor, v_bedrijf_naam);
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_naam_parent);
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_naam);
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_omschrijving);
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_niveau_txt);
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_leiding_txt);
v_aanduiding := v_bedrijf_naam || '|' || v_afdeling_naam || '|' || v_afdeling_omschrijving || '| ';
v_count_tot := v_count_tot + 1;
-- bedrijf komt standaard op Enexis te staan omdat ze nogal eens wijzigende bedrijfsnamen
-- hebben. AAEN#26821
v_bedrijf_naam := 'Enexis';
--
v_afdeling_naam := TRIM (v_afdeling_naam);
IF LENGTH (v_afdeling_naam) > 10
THEN
v_afdeling_naam := SUBSTR (v_afdeling_naam, 1, 10);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Afdeling-aanduiding is te lang',
'Aanduiding wordt afgebroken tot [' || v_afdeling_naam || ']'
);
END IF;
--
v_afdeling_naam_parent := TRIM (v_afdeling_naam_parent);
IF LENGTH (v_afdeling_naam_parent) > 10
THEN
v_afdeling_naam_parent := SUBSTR (v_afdeling_naam_parent, 1, 10);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Afdeling-aanduiding is te lang',
'Aanduiding wordt afgebroken tot [' || v_afdeling_naam_parent || ']'
);
END IF;
--
v_afdeling_omschrijving := TRIM (v_afdeling_omschrijving);
IF LENGTH (v_afdeling_omschrijving) > 60
THEN
v_afdeling_omschrijving := SUBSTR (v_afdeling_omschrijving, 1, 60);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Afdelingsomschrijving is te lang',
'Aanduiding wordt afgebroken tot [' || v_afdeling_omschrijving || ']'
);
END IF;
--
v_afdeling_niveau := fac.safe_to_number(v_afdeling_niveau_txt);
-- als het afdelingniveau 1 is (top element) dan doet de parent er niet meer toe.
IF v_afdeling_niveau = 1
THEN
v_afdeling_naam_parent := NULL;
END IF;
v_afdeling_leiding := fac.safe_to_number(v_afdeling_leiding_txt);
v_all_null :=
(v_bedrijf_naam IS NULL)
AND (v_afdeling_naam IS NULL)
AND (v_afdeling_naam_parent IS NULL)
AND (v_afdeling_omschrijving IS NULL);
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
v_errormsg := 'Fout bij toevoegen te impoteren bedrijf/afdeling [' || v_afdeling_naam || ']';
INSERT INTO aaen_imp_organisatie (
prs_bedrijf_naam,
prs_afdeling_naam,
prs_afdeling_naam_parent,
prs_afdeling_omschrijving,
prs_afdeling_niveau,
prs_afdeling_leiding
)
VALUES (
v_bedrijf_naam,
v_afdeling_naam,
v_afdeling_naam_parent,
v_afdeling_omschrijving,
v_afdeling_niveau,
v_afdeling_leiding
);
v_count_import := v_count_import + 1;
END IF;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'Bedrijf: aantal ingelezen regels: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key,
'S',
'Bedrijf: aantal ongeldige importregels: ' || TO_CHAR (v_count_tot - v_count_import),
''
);
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, '');
END aaen_import_organisatie_mut;
/
CREATE OR REPLACE PROCEDURE aaen_update_organisatie_mut (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT i.*, a.prs_afdeling_key
FROM aaen_imp_organisatie i, prs_afdeling a
WHERE i.prs_afdeling_naam = a.prs_afdeling_naam(+)
ORDER BY i.prs_afdeling_niveau;
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_mes VARCHAR2 (150);
v_maxvariation NUMBER;
currentversion fac_module.fac_module_version%TYPE;
v_aanduiding VARCHAR (100);
v_prs_bedrijf_key NUMBER;
v_prs_afd_parent_key NUMBER;
v_prs_kostenplaats_key NUMBER;
v_prs_afdeling_leiding NUMBER;
v_prs_afdeling_key NUMBER;
v_prs_afd_niveau_parent NUMBER;
v_count NUMBER;
v_newcount NUMBER;
v_oldcount NUMBER;
v_impcount NUMBER;
BEGIN
v_maxvariation := 0.8; -- Max new/old ratio to prevent undesired changes
SELECT MAX (fac_module_version)
INTO currentversion
FROM fac_module;
fac.imp_writelog (p_import_key,
'I',
'Facilitor afdeling import version ' || currentversion,
'$Revision$'
);
-- How many active records are now present?
SELECT COUNT ( * )
INTO v_oldcount
FROM prs_afdeling
WHERE (prs_afdeling_parentkey IS NULL OR prs_afdeling_parentkey <> 1)
AND prs_afdeling_verwijder IS NULL;
-- How many active records are imported?
SELECT COUNT ( * )
INTO v_impcount
FROM aaen_imp_organisatie;
IF (ABS ( (v_impcount) - v_oldcount) > v_maxvariation * v_oldcount)
THEN
fac.imp_writelog (p_import_key,
'E',
'Het verschil tussen de actieve afdelingen ('
|| TO_CHAR (v_oldcount)
|| ') en geimporteerde aantallen ('
|| TO_CHAR (v_impcount)
|| ') is te groot',
'Zie Specificaties: De afwijking is teveel en bedraagt '
|| TO_CHAR ( ( (v_impcount) - v_oldcount)
/ v_oldcount,
'999D9'
)
|| '%.'
);
RETURN;
END IF;
FOR rec IN c
LOOP
v_aanduiding := rec.prs_afdeling_naam;
v_errorhint := 'Kijk of bedrijf al bestaat';
-- Bestaat het bedrijf al?
BEGIN
SELECT prs_bedrijf_key
INTO v_prs_bedrijf_key
FROM prs_bedrijf
WHERE UPPER (prs_bedrijf_naam) = UPPER (rec.prs_bedrijf_naam)
AND prs_bedrijf_verwijder IS NULL;
v_errorhint := 'Kijk of leidinggevende bestaat';
IF rec.prs_afdeling_leiding IS NOT NULL
THEN
BEGIN
SELECT prs_perslid_key
INTO v_prs_afdeling_leiding
FROM prs_perslid
WHERE prs_perslid_verwijder IS NULL
AND prs_perslid_nr = rec.prs_afdeling_leiding;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
-- log geen leidinggevende gevonden
v_prs_afdeling_leiding := NULL;
END;
ELSE
v_prs_afdeling_leiding := NULL;
END IF;
v_errorhint := 'Kijk of kostenplaats al bestaat';
BEGIN
SELECT prs_kostenplaats_key
INTO v_prs_kostenplaats_key
FROM prs_kostenplaats
WHERE prs_kostenplaats_verwijder IS NULL
AND prs_kostenplaats_nr = rec.prs_afdeling_naam;
UPDATE prs_kostenplaats
SET prs_kostenplaats_omschrijving =
rec.prs_afdeling_omschrijving,
prs_perslid_key = v_prs_afdeling_leiding
WHERE prs_kostenplaats_key = v_prs_kostenplaats_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errorhint := 'Nieuwe kostenplaats toevoegen';
INSERT INTO prs_kostenplaats
(
prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_kostenplaats_module,
prs_perslid_key
)
VALUES (
rec.prs_afdeling_naam,
rec.prs_afdeling_omschrijving,
'PRS',
v_prs_afdeling_leiding
)
RETURNING prs_kostenplaats_key INTO v_prs_kostenplaats_key;
END;
v_errorhint := 'Kijk of parent bestaat';
IF rec.prs_afdeling_naam_parent IS NOT NULL
THEN
SELECT prs_afdeling_key
INTO v_prs_afd_parent_key
FROM prs_afdeling
WHERE prs_afdeling_verwijder IS NULL
AND prs_afdeling_naam = rec.prs_afdeling_naam_parent;
ELSE
v_prs_afd_parent_key := NULL;
END IF;
v_errorhint := 'Zoek het niveau van de parent';
IF v_prs_afd_parent_key IS NOT NULL
THEN
SELECT prs_kenmerklink_waarde
INTO v_prs_afd_niveau_parent
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1081 -- afdelingsniveau
AND prs_link_key = v_prs_afd_parent_key;
ELSE
v_prs_afd_niveau_parent := 0;
END IF;
v_prs_afd_niveau_parent := v_prs_afd_niveau_parent +1;
IF rec.prs_afdeling_key IS NULL
THEN
-- toevoegen afdeling
v_errorhint := 'Toevoegen afdeling';
INSERT INTO prs_afdeling
(
prs_bedrijf_key,
prs_afdeling_parentkey,
prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_kostenplaats_key
)
VALUES (
v_prs_bedrijf_key,
NULL,
rec.prs_afdeling_naam,
rec.prs_afdeling_omschrijving,
v_prs_kostenplaats_key
)
RETURNING prs_afdeling_key INTO v_prs_afdeling_key;
ELSE
-- aanpassen afdeling
v_errorhint := 'Aanpassen afdeling';
UPDATE prs_afdeling
SET prs_bedrijf_key = v_prs_bedrijf_key,
prs_afdeling_parentkey = NULL,
prs_afdeling_naam = rec.prs_afdeling_naam,
prs_afdeling_omschrijving = rec.prs_afdeling_omschrijving,
prs_kostenplaats_key = v_prs_kostenplaats_key
WHERE prs_afdeling_key = rec.prs_afdeling_key;
v_prs_afdeling_key := rec.prs_afdeling_key;
END IF;
aaxx.set_prs_kenmerk(p_import_key, 'A', 1020, v_prs_afdeling_key, v_prs_afdeling_leiding);
aaxx.set_prs_kenmerk(p_import_key, 'A', 1080, v_prs_afdeling_key, v_prs_afd_parent_key);
aaxx.set_prs_kenmerk(p_import_key, 'A', 1081, v_prs_afdeling_key, v_prs_afd_niveau_parent);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'error ' || SQLCODE || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint || '-' || v_aanduiding
);
END;
END LOOP;
SELECT COUNT ( * )
INTO v_newcount
FROM prs_afdeling
WHERE (prs_afdeling_parentkey IS NULL OR prs_afdeling_parentkey <> 1)
AND prs_afdeling_verwijder IS NULL;
fac.imp_writelog (p_import_key,
'S',
'Aantal ingelezen afdelingen: ' || TO_CHAR (v_impcount),
''
);
fac.imp_writelog (p_import_key,
'S',
'Aantal afdelingen vooraf: '
|| TO_CHAR (v_oldcount)
|| ' nu: '
|| TO_CHAR (v_newcount),
''
);
-- postprocessing
-- voeg alle leidinggevenden toe aan de groep Enexis leidinggevenden (key 141)
INSERT INTO fac_gebruikersgroep
(
prs_perslid_key, fac_groep_key
)
SELECT DISTINCT prs_perslid_key, 141
FROM prs_kostenplaats k
WHERE NOT EXISTS
(SELECT prs_perslid_key
FROM fac_gebruikersgroep gg
WHERE k.prs_perslid_key = gg.prs_perslid_key
AND fac_groep_key = 141)
AND prs_perslid_key IS NOT NULL;
-- verwijder personen als leidinggevende als ze geen budgethouder meer zijn
DELETE fac_gebruikersgroep gg
WHERE fac_groep_key = 141
AND NOT EXISTS (SELECT prs_perslid_key
FROM prs_kostenplaats k
WHERE k.prs_perslid_key = gg.prs_perslid_key);
-- set het profiel van alle leidinggevenden.
UPDATE prs_perslid p
SET fac_profiel_key = 1
WHERE EXISTS (SELECT prs_perslid_key
FROM prs_kostenplaats kp
WHERE kp.prs_perslid_key = p.prs_perslid_key);
-- reset het profiel van alle oud-leidinggevenden.
UPDATE prs_perslid p
SET fac_profiel_key = NULL
WHERE NOT EXISTS (SELECT prs_perslid_key
FROM prs_kostenplaats kp
WHERE kp.prs_perslid_key = p.prs_perslid_key)
AND fac_profiel_key = 1;
-- todo afdelingen verwijderen;
END aaen_update_organisatie_mut;
/
CREATE OR REPLACE VIEW aaen_v_afdeling_ban
(
prs_afdeling_key,
fac_usrdata_code,
fac_usrdata_omschr
)
AS
SELECT prs_afdeling_key, fac_usrdata_code, fac_usrdata_omschr
FROM (SELECT prs_afdeling_key,
COALESCE (
al6,
COALESCE (
al5,
COALESCE (al4, COALESCE (al3, COALESCE (al2, al1)))))
ban_key
FROM (SELECT a.prs_afdeling_key,
(SELECT kl.prs_kenmerklink_waarde
FROM prs_kenmerklink kl
WHERE a.prs_afdeling_key1 = kl.prs_link_key
AND kl.prs_kenmerk_key = 1021)
al1,
(SELECT kl.prs_kenmerklink_waarde
FROM prs_kenmerklink kl
WHERE a.prs_afdeling_key2 = kl.prs_link_key
AND kl.prs_kenmerk_key = 1021)
al2,
(SELECT kl.prs_kenmerklink_waarde
FROM prs_kenmerklink kl
WHERE a.prs_afdeling_key3 = kl.prs_link_key
AND kl.prs_kenmerk_key = 1021)
al3,
(SELECT kl.prs_kenmerklink_waarde
FROM prs_kenmerklink kl
WHERE a.prs_afdeling_key4 = kl.prs_link_key
AND kl.prs_kenmerk_key = 1021)
al4,
(SELECT kl.prs_kenmerklink_waarde
FROM prs_kenmerklink kl
WHERE a.prs_afdeling_key5 = kl.prs_link_key
AND kl.prs_kenmerk_key = 1021)
al5,
(SELECT kl.prs_kenmerklink_waarde
FROM prs_kenmerklink kl
WHERE a.prs_afdeling_key6 = kl.prs_link_key
AND kl.prs_kenmerk_key = 1021)
al6
FROM aaen_v_afdeling_boom a)) a,
fac_usrdata ud
WHERE a.ban_key = fac_usrdata_key;
--------------------------------
-- import contractorders
--------------------------------
CREATE OR REPLACE PROCEDURE aaen_import_contract (
p_import_key IN NUMBER
) IS
BEGIN
aaxx_import_contract (p_import_key);
END aaen_import_contract;
/
CREATE OR REPLACE PROCEDURE aaen_update_contract (p_import_key IN NUMBER)
AS
BEGIN
aaxx_update_contract (p_import_key);
END aaen_update_contract;
/
CREATE OR REPLACE PROCEDURE aaen_import_ruimte (p_import_key IN NUMBER)
AS
BEGIN
aaxx_import_ruimte(p_import_key);
END;
/
CREATE OR REPLACE PROCEDURE aaen_update_ruimte (p_import_key IN NUMBER)
AS
BEGIN
aaxx_update_ruimte(p_import_key);
END;
/
CREATE OR REPLACE VIEW aaen_v_export_ruimte_xml (
result,
result_order
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = SUBSTR ('RUIMTE_XML', 1, 12);
CREATE OR REPLACE PROCEDURE aaen_select_ruimte_xml (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR c_loc
IS
SELECT alg_locatie_key,
alg_locatie_code,
alg_locatie_omschrijving,
alg_locatie_adres,
alg_locatie_plaats
FROM alg_locatie
WHERE alg_locatie_verwijder IS NULL;
-- ruimtenummer 000 wordt gebruikt om personen te plaatsen die alleen een locatie en gebouw code kennen.
CURSOR c_bld (c_alg_locatie_key number
)
IS
SELECT g.alg_gebouw_code,
DECODE(r.alg_ruimte_nr, '000', '', r.alg_ruimte_nr) alg_ruimte_nr,
DECODE(r.alg_ruimte_nr, '000', '', r.alg_ruimte_omschrijving) alg_ruimte_omschrijving,
DECODE(r.alg_ruimte_nr, '000', '', v.alg_verdieping_code) alg_verdieping_code,
DECODE(r.alg_ruimte_nr, '000', '', v.alg_verdieping_omschrijving) alg_verdieping_omschrijving,
p.prs_perslid_nr,
p.prs_perslid_telefoonnr,
p.prs_perslid_mobiel,
sg.alg_srtgebouw_omschrijving
FROM alg_gebouw g,
alg_verdieping v,
alg_ruimte r,
prs_werkplek wp,
prs_perslidwerkplek pwp,
prs_perslid p,
alg_srtgebouw sg
WHERE prs_perslid_verwijder IS NULL
AND g.alg_locatie_key = c_alg_locatie_key
AND g.alg_srtgebouw_key = sg.alg_srtgebouw_key(+)
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = wp.prs_alg_ruimte_key
AND wp.prs_werkplek_key = pwp.prs_werkplek_key
AND pwp.prs_perslid_key = p.prs_perslid_key;
v_first NUMBER;
v_count NUMBER;
PROCEDURE add_row (p_regel IN varchar2)
AS
BEGIN
INSERT INTO fac_rapport
(
fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel
)
VALUES (SUBSTR (p_applname, 1, 12), v_count, p_regel);
v_count := v_count + 1;
END;
PROCEDURE add_element (p_tag IN varchar2, p_value IN varchar2)
AS
BEGIN
add_row( '<'
|| p_tag
|| '>'
|| xml.char_to_html (p_value)
|| '</'
|| p_tag
|| '>');
END;
BEGIN
v_count := 0;
DELETE fac_rapport
WHERE fac_rapport_node = SUBSTR (p_applname, 1, 12);
-- header
add_row ('<?xml version="1.0" encoding="windows-1252" standalone="yes" ?>');
add_row ('<FACILITYTALK>');
add_row ('<HEADER>');
add_element ('INTERFACEID', 'Ruimten');
add_element ('DOCUMENTID', 'ExportPersRmt');
add_element ('DESCRIPTION', 'Export personen met bijbehorende ruimten');
add_element ('DATEFORMAT', 'd/M/yyyy');
add_element ('DATESEPARATOR', '-');
add_element ('DECIMALSEPARATOR', ',');
add_element ('TRANSACTIONID', '{4F7D4E95-2FCB-4C2E-8FCE-3E0AD3BC39D0}');
add_element ('FORMATTEDDATECREATED', TO_CHAR (SYSDATE, 'dd-mm-yyyy'));
add_element ('DATETIMECREATED', TO_CHAR (SYSDATE, 'dd-mm-yyyy hh24:mi:ss')
);
add_element ('PLANONLICENCENAME', 'Enexis');
add_element ('PLANONLICENCECODE', 'NL3087');
add_element ('PLANONSUITERELEASE', '200710');
add_element ('PLANONDBSERVICEPACK', '0');
add_row ('</HEADER>');
add_row ('<SET>');
FOR rec_loc IN c_loc
LOOP
BEGIN
add_row ('<ROW>');
add_element ('OBJECTCODE', rec_loc.alg_locatie_code);
add_element ('PARENTOBJECTCODE', '');
add_element ('OBJECTPLAATS', rec_loc.alg_locatie_plaats);
add_element ('OBJECTADRES', rec_loc.alg_locatie_adres);
add_element ('RUIMTENUMMER', '');
add_element ('RUIMTENAAM', '');
add_element ('ETAGECODE', '');
add_element ('PERSONEELSNUMMER',
'LOC' || SUBSTR (rec_loc.alg_locatie_code, 1, 3)
);
add_element ('TELEFOONVOLLEDIG', '');
add_element ('MOBIELVOLLEDIG', '');
add_element ('TELEFOON', '');
add_element ('MOBIEL', '');
add_element ('TYPE', '');
add_row ('</ROW>');
FOR rec_bld IN c_bld (rec_loc.alg_locatie_key)
LOOP
BEGIN
add_row ('<ROW>');
add_element ('OBJECTCODE', rec_bld.alg_gebouw_code);
add_element ('PARENTOBJECTCODE', rec_loc.alg_locatie_code);
add_element ('OBJECTPLAATS', rec_loc.alg_locatie_plaats);
add_element ('OBJECTADRES', rec_loc.alg_locatie_adres);
add_element ('RUIMTENUMMER', rec_bld.alg_ruimte_nr);
add_element ('RUIMTENAAM', rec_bld.alg_ruimte_omschrijving);
add_element ('ETAGECODE', rec_bld.alg_verdieping_code);
add_element ('PERSONEELSNUMMER', rec_bld.prs_perslid_nr);
add_element ('TELEFOONVOLLEDIG',
rec_bld.prs_perslid_telefoonnr
);
add_element ('MOBIELVOLLEDIG', rec_bld.prs_perslid_mobiel);
add_element ('TELEFOON', '');
add_element ('MOBIEL', '');
add_element ('TYPE', rec_bld.alg_srtgebouw_omschrijving);
add_row ('</ROW>');
END;
END LOOP;
END;
END LOOP;
add_row ('</SET>');
add_row ('</FACILITYTALK>');
END;
/
CREATE OR REPLACE VIEW aaen_v_export_res_ruimte_xml (
result,
result_order
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = SUBSTR ('RES_RUIMTE_XML', 1, 12);
CREATE OR REPLACE PROCEDURE aaen_select_res_ruimte_xml (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR c_gebouw
IS
SELECT g.alg_gebouw_key, alg_gebouw_code, alg_gebouw_omschrijving
FROM res_v_alg_ruimte_gegevens rarg, alg_gebouw g
WHERE g.alg_gebouw_key = rarg.alg_gebouw_key
AND rarg.res_ruimte_key IS NOT NULL
GROUP BY g.alg_gebouw_key, alg_gebouw_code, alg_gebouw_omschrijving
ORDER BY alg_gebouw_code;
CURSOR c_ruimte (c_alg_gebouw_key number
)
IS
SELECT rr.res_ruimte_key,
rr.res_ruimte_nr,
r.alg_ruimte_nr,
rr.res_ruimte_omschrijving,
v.alg_verdieping_code,
v.alg_verdieping_omschrijving,
r.alg_ruimte_key
FROM res_v_alg_ruimte_gegevens rarg,
alg_ruimte r,
res_ruimte rr,
alg_verdieping v
WHERE rarg.alg_gebouw_key = c_alg_gebouw_key
AND rarg.alg_ruimte_key = r.alg_ruimte_key
AND rarg.res_ruimte_key = rr.res_ruimte_key
AND rarg.alg_verdieping_key = v.alg_verdieping_key
ORDER BY res_ruimte_key;
CURSOR c_res (c_alg_ruimte_key number
)
IS
SELECT rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_omschrijving,
rrr.res_rsv_ruimte_contact_key,
rrr.res_rsv_ruimte_host_key,
rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
rrr.res_rsv_ruimte_bezoekers,
DECODE ( (SELECT COUNT ( * )
FROM res_rsv_artikel rra
WHERE rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rra.res_rsv_artikel_verwijder IS NULL),
0, 'Nee',
'Ja')
catering
FROM res_rsv_ruimte rrr, res_v_rsv_ruimte_2_alg_ruimte rarg
WHERE rarg.alg_ruimte_key = c_alg_ruimte_key
AND rarg.res_ruimte_key IS NOT NULL
AND rarg.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND TRUNC (rrr.res_rsv_ruimte_van) = TRUNC(SYSDATE)
ORDER BY rarg.alg_ruimte_key;
v_first NUMBER;
v_count NUMBER;
PROCEDURE add_row (p_regel IN varchar2)
AS
BEGIN
INSERT INTO fac_rapport
(
fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel
)
VALUES (SUBSTR (p_applname, 1, 12), v_count, p_regel);
v_count := v_count + 1;
END;
PROCEDURE add_element (p_tag IN varchar2, p_value IN varchar2)
AS
BEGIN
add_row( '<'
|| p_tag
|| '>'
|| xml.char_to_html (p_value)
|| '</'
|| p_tag
|| '>');
END;
PROCEDURE add_perslid (p_prs_perslid_key IN number)
AS
v_prs_perslid_nr VARCHAR2 (16);
v_prs_perslid_voornaam VARCHAR2 (30);
v_prs_perslid_tussenvoegsel VARCHAR2 (15);
v_prs_perslid_naam VARCHAR2 (60);
v_prs_perslid_telefoonnr VARCHAR2 (15);
v_prs_perslid_mobiel VARCHAR2 (15);
BEGIN
SELECT prs_perslid_nr,
prs_perslid_voornaam,
prs_perslid_tussenvoegsel,
prs_perslid_naam,
prs_perslid_telefoonnr,
prs_perslid_mobiel
INTO v_prs_perslid_nr,
v_prs_perslid_voornaam,
v_prs_perslid_tussenvoegsel,
v_prs_perslid_naam,
v_prs_perslid_telefoonnr,
v_prs_perslid_mobiel
FROM prs_perslid
WHERE prs_perslid_key = p_prs_perslid_key;
add_row ('<ROW>');
add_element ('CODE', v_prs_perslid_nr);
add_element ('VOORNAAM', v_prs_perslid_voornaam);
add_element ('TUSSENVOEGSEL', v_prs_perslid_tussenvoegsel);
add_element ('ACHTERNAAM', v_prs_perslid_naam);
add_element ('TELEFOON ', v_prs_perslid_telefoonnr);
add_element ('MOBIEL', v_prs_perslid_mobiel);
add_row ('</ROW>');
END;
BEGIN
v_count := 0;
DELETE fac_rapport
WHERE fac_rapport_node = SUBSTR (p_applname, 1, 12);
-- header
add_row ('<?xml version="1.0" encoding="windows-1252" standalone="yes" ?>');
add_row ('<FACILITYTALK>');
add_row ('<HEADER>');
add_element ('INTERFACEID', 'ExportRes');
add_element ('DOCUMENTID', 'ExportRes');
add_element ('DESCRIPTION', 'Export Reserveringen');
add_element ('DATEFORMAT', 'd/M/yyyy');
add_element ('DATESEPARATOR', '-');
add_element ('DECIMALSEPARATOR', ',');
add_element ('TRANSACTIONID', '{905FF3EB-8BDE-4BDF-827E-6DAA24B6D101}');
add_element ('FORMATTEDDATECREATED', TO_CHAR (SYSDATE, 'dd-mm-yyyy'));
add_element ('DATETIMECREATED', TO_CHAR (SYSDATE, 'dd-mm-yyyy hh24:mi:ss')
);
add_element ('PLANONLICENCENAME', 'Enexis');
add_element ('PLANONLICENCECODE', 'NL3087');
add_element ('PLANONSUITERELEASE', '200710');
add_element ('PLANONDBSERVICEPACK', '0');
add_row ('</HEADER>');
add_row ('<SET>');
FOR rec_gebouw IN c_gebouw
LOOP
BEGIN
add_row ('<ROW>');
add_element ('GEBOUWSYSCODE', rec_gebouw.alg_gebouw_key);
add_element ('GEBOUWCODE', rec_gebouw.alg_gebouw_code);
add_element ('GEBOUWNAAM', rec_gebouw.alg_gebouw_omschrijving);
add_row ('<ROWSET NAME="RUIMTEN">');
FOR rec_ruimte IN c_ruimte (rec_gebouw.alg_gebouw_key)
LOOP
BEGIN
add_row ('<ROW>');
add_element ('RESEENHSYSCODE', rec_ruimte.res_ruimte_key);
add_element ('RESERVERINGSEENHEIDCODE',
rec_ruimte.res_ruimte_nr
);
add_element ('RUIMTECODE', rec_ruimte.alg_ruimte_nr);
add_element ('RUIMTENAAM', rec_ruimte.res_ruimte_omschrijving);
add_element ('ETAGECODE', rec_ruimte.alg_verdieping_code);
add_element ('ETAGENAAM',
rec_ruimte.alg_verdieping_omschrijving
);
add_element ('RUIMTECODE', rec_ruimte.alg_ruimte_nr);
add_row ('<ROWSET NAME="RESERVERINGEN">');
FOR rec_res IN c_res (rec_ruimte.alg_ruimte_key)
LOOP
BEGIN
add_row ('<ROW>');
add_element ('RESERVERINGCODE',
rec_res.res_reservering_key
|| '/'
|| rec_res.res_rsv_ruimte_volgnr
);
add_element ('RESERVERINGNAAM',
rec_res.res_rsv_ruimte_omschrijving
);
add_element ('SYSMELDER',
rec_res.res_rsv_ruimte_contact_key
);
add_element ('VRIJ1', rec_res.res_rsv_ruimte_host_key);
add_element ('STARTDATUM',
TO_CHAR (rec_res.res_rsv_ruimte_van,
'dd-mm-yyyy'
)
);
add_element ('STARTTIJD',
TO_CHAR (rec_res.res_rsv_ruimte_van,
'hh24-mi-ss'
)
);
add_element ('EINDDATUM',
TO_CHAR (rec_res.res_rsv_ruimte_tot,
'dd-mm-yyyy'
)
);
add_element ('EINDTIJD',
TO_CHAR (rec_res.res_rsv_ruimte_tot,
'hh24-mi-ss'
)
);
add_element ('AANTALPERSONEN',
rec_res.res_rsv_ruimte_bezoekers
);
add_element ('CATERING', rec_res.catering);
add_row ('<ROWSET NAME="MELDER">');
add_perslid (rec_res.res_rsv_ruimte_contact_key);
add_row ('</ROWSET>');
add_row ('<ROWSET NAME="VOORWIE">');
add_perslid (rec_res.res_rsv_ruimte_host_key);
add_row ('</ROWSET>');
add_row ('</ROW>');
END;
END LOOP;
add_row ('</ROWSET>');
add_row ('</ROW>');
END;
END LOOP;
add_row ('</ROWSET>');
add_row ('</ROW>');
END;
END LOOP;
add_row ('</SET>');
add_row ('</FACILITYTALK>');
END;
/
CREATE OR REPLACE FORCE VIEW aaen_v_info_vergaderruimte (
alg_ruimte_key,
alg_ruimte_nr,
van1,
tot1,
naam1,
bez1,
cat1,
van2,
tot2,
naam2,
bez2,
cat2
)
AS
SELECT rar.alg_ruimte_key,
r.alg_ruimte_nr,
to_char(rrr.res_rsv_ruimte_van, 'hh24:mi') van1,
to_char(rrr.res_rsv_ruimte_tot, 'hh24:mi') tot1,
(SELECT prs_perslid_voornaam || ' '
|| DECODE (prs_perslid_tussenvoegsel,
NULL, '',
prs_perslid_tussenvoegsel || ' ')
|| prs_perslid_naam
FROM prs_perslid p
WHERE p.prs_perslid_key = rrr.res_rsv_ruimte_host_key)
naam1,
rrr.res_rsv_ruimte_bezoekers bez1,
(SELECT COUNT ( * )
FROM res_rsv_artikel rra
WHERE res_rsv_artikel_verwijder IS NULL
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
cat1,
to_char(rrrn.res_rsv_ruimte_van,'hh24:mi') van2,
to_char(rrrn.res_rsv_ruimte_tot,'hh24:mi') tot2,
(SELECT prs_perslid_voornaam || ' '
|| DECODE (prs_perslid_tussenvoegsel,
NULL, '',
prs_perslid_tussenvoegsel || ' ')
|| prs_perslid_naam
FROM prs_perslid p
WHERE p.prs_perslid_key = rrrn.res_rsv_ruimte_host_key)
naam2,
rrrn.res_rsv_ruimte_bezoekers bez2,
(SELECT COUNT ( * )
FROM res_rsv_artikel rra
WHERE res_rsv_artikel_verwijder IS NULL
AND rra.res_rsv_ruimte_key = rrrn.res_rsv_ruimte_key)
cat2
FROM res_rsv_ruimte rrr,
res_rsv_ruimte rrrn,
res_alg_ruimte rar,
alg_ruimte r,
(SELECT rr.res_ruimte_key,
(SELECT MAX (res_rsv_ruimte_key)
FROM res_rsv_ruimte rrr
WHERE res_rsv_ruimte_verwijder IS NULL
AND res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND rrr.res_rsv_ruimte_van < SYSDATE
AND rrr.res_rsv_ruimte_tot > SYSDATE)
huidige,
(SELECT res_rsv_ruimte_key
FROM res_rsv_ruimte rrr
WHERE res_rsv_ruimte_verwijder IS NULL
AND res_rsv_ruimte_van > SYSDATE
AND TRUNC (res_rsv_ruimte_van) = TRUNC (SYSDATE)
AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND NOT EXISTS
(SELECT rrr2.res_rsv_ruimte_key
FROM res_rsv_ruimte rrr2
WHERE rrr2.res_rsv_ruimte_van <
rrr.res_rsv_ruimte_van
AND rrr2.res_ruimte_opstel_key =
rrr.res_ruimte_opstel_key
AND rrr2.res_rsv_ruimte_van > SYSDATE))
volgende
FROM res_ruimte_opstelling ro, res_ruimte rr
WHERE ro.res_ruimte_key = rr.res_ruimte_key) beschikbaar
WHERE beschikbaar.huidige = rrr.res_rsv_ruimte_key(+)
AND beschikbaar.volgende = rrrn.res_rsv_ruimte_key(+)
AND beschikbaar.res_ruimte_key = rar.res_ruimte_key
AND rar.res_alg_ruimte_verwijder is NULL
AND rar.alg_ruimte_key = r.alg_ruimte_key
AND r.alg_ruimte_verwijder is NULL;
-- view die gebruikt wordt door het aaen infobord om de vrije ruimten aan te geven.
CREATE OR REPLACE VIEW aaen_v_rap_res_ruimte_free
(
ruimte,
locatie_code,
gebouw_code,
verdieping_code,
personen,
van,
status,
van_org
)
AS
SELECT rr.res_ruimte_nr,
(SELECT alg_locatie_code
FROM alg_locatie l
WHERE l.alg_locatie_key = rarg.alg_locatie_key)
locatie_code,
(SELECT alg_gebouw_upper
FROM alg_gebouw g
WHERE g.alg_gebouw_key = rarg.alg_gebouw_key)
gebouw_code,
(SELECT alg_verdieping_code
FROM alg_verdieping v
WHERE v.alg_verdieping_key = rarg.alg_verdieping_key)
verdieping_code,
(SELECT DECODE (
COUNT (ro.res_ruimte_key),
1,
TO_CHAR (MAX (res_ruimte_opstel_bezoekers)),
TO_CHAR (MIN (res_ruimte_opstel_bezoekers))
|| '-'
|| TO_CHAR (MAX (res_ruimte_opstel_bezoekers)))
FROM res_ruimte_opstelling ro
WHERE ro.res_ruimte_key = rr.res_ruimte_key)
personen,
DECODE (TO_CHAR (MIN (van), 'yyyymmdd'),
TO_CHAR (SYSDATE, 'yyyymmdd'),
TO_CHAR (MIN (van), 'hh24:mi'),
NULL)
van,
DECODE (SIGN (MIN (van) - SYSDATE), -1, 'active', 'free') status,
MIN (van) van_org
FROM res_ruimte rr,
res_v_alg_ruimte_gegevens rarg,
( SELECT MIN (res_rsv_ruimte_van) van, rarg.alg_ruimte_key
FROM res_ruimte rr,
res_rsv_ruimte rrr,
res_ruimte_opstelling ror,
res_v_alg_ruimte_gegevens rarg
WHERE rr.res_ruimte_key = ror.res_ruimte_key(+)
AND ror.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key(+)
AND rrr.res_rsv_ruimte_tot > SYSDATE
AND rr.res_ruimte_key = rarg.res_ruimte_key
GROUP BY rarg.alg_ruimte_key) bez
WHERE rr.res_ruimte_key = rarg.res_ruimte_key
AND rarg.alg_ruimte_key = bez.alg_ruimte_key(+)
GROUP BY rr.res_ruimte_nr,
rarg.alg_locatie_key,
rarg.alg_gebouw_key,
rarg.alg_verdieping_key,
rr.res_ruimte_key;
CREATE OR REPLACE VIEW AAEN_V_RUIMTE_BEZETTING
(
MLD_ADRES_NAAM,
MLD_ADRES_BEZOEK_PLAATS,
MLD_ADRES_BEZOEK_ADRES,
ALG_LOCATIE_CODE,
ALG_GEBOUW_OMSCHRIJVING,
HULPKOSTENPLAATS,
ALG_VERDIEPING_OMSCHRIJVING,
ALG_RUIMTE_KEY,
ALG_VERDIEPING_KEY,
ALG_RUIMTE_NR,
ALG_SRTRUIMTE_OMSCHRIJVING,
FACILITAIR_ACTIEF,
PRS_RUIMTEAFDELING_BEZETTING,
ALG_RUIMTE_BRUTO_VLOEROPP,
ALG_RUIMTE_OMSCHRIJVING,
ALG_RUIMTE_OPP_ALT1,
ALG_RUIMTE_OPP_ALT2,
WERKPLEKKEN,
KANTOOR,
PRS_AFDELING_NAAM,
PRS_AFDELING_OMSCHRIJVING
)
AS
SELECT mld_adres_naam,
mld_adres_bezoek_plaats,
mld_adres_bezoek_adres,
alg_locatie_code,
alg_gebouw_omschrijving,
hulpkostenplaats,
alg_verdieping_omschrijving,
r.alg_ruimte_key,
r.alg_verdieping_key,
r.alg_ruimte_nr,
r.alg_srtruimte_omschrijving,
DECODE(r.alg_srtgebouw_passief, 1, 'Nee', 'Ja') facilitair_actief,
ra.prs_ruimteafdeling_bezetting,
ROUND( (COALESCE(ra.prs_ruimteafdeling_bezetting, 1) -- bvo ook tonen als niet bezet
/ COALESCE (rab.bezetting, 1))
* r.alg_ruimte_bruto_vloeropp)
alg_ruimte_bruto_vloeropp,
r.alg_ruimte_omschrijving,
r.alg_ruimte_opp_alt1,
r.alg_ruimte_opp_alt2,
ROUND( (COALESCE(ra.prs_ruimteafdeling_bezetting, 1) -- werkplekken ook tonen als niet bezet
/ COALESCE (rab.bezetting, 1))
* werkplekken),
kantoor werkplekken,
prs_afdeling_naam,
prs_afdeling_omschrijving
FROM (SELECT adr.mld_adres_naam,
adr.mld_adres_bezoek_plaats,
adr.mld_adres_bezoek_adres,
alg_l.alg_locatie_code,
alg_g.alg_gebouw_omschrijving,
hulpkostenplaats,
alg_v.alg_verdieping_omschrijving,
alg_r.alg_ruimte_key alg_ruimte_key,
alg_v.alg_verdieping_key alg_verdieping_key,
alg_r.alg_ruimte_omschrijving alg_ruimte_omschrijving,
alg_r.alg_ruimte_nr alg_ruimte_nr,
alg_s.alg_srtruimte_omschrijving alg_srtruimte_omschrijving,
alg_sg.alg_srtgebouw_passief alg_srtgebouw_passief,
alg_r.alg_ruimte_bruto_vloeropp,
alg_r.alg_ruimte_opp_alt1,
alg_r.alg_ruimte_opp_alt2,
DECODE (alg_s.alg_srtruimte_key, 20, 1, 81, 1, 82, 1, 0) kantoor, -- kantoor, kantoor primair of kantoor sec
fac.safe_to_number (werkplekken) werkplekken
FROM alg_locatie alg_l,
alg_gebouw alg_g,
alg_verdieping alg_v,
alg_v_aanwezigruimte alg_r,
alg_srtruimte alg_s,
alg_srtgebouw alg_sg,
mld_adres adr,
(SELECT alg_onrgoed_key alg_ruimte_key,
alg_onrgoedkenmerk_waarde werkplekken
FROM alg_onrgoedkenmerk k
WHERE k.alg_kenmerk_key = 1000 -- aantal werkplekken
AND k.alg_onrgoedkenmerk_verwijder IS NULL) wp,
(SELECT alg_onrgoed_key alg_gebouw_key,
alg_onrgoedkenmerk_waarde hulpkostenplaats
FROM alg_onrgoedkenmerk k
WHERE k.alg_kenmerk_key = 1060 -- hulpkostenplaats
AND k.alg_onrgoedkenmerk_verwijder IS NULL) hkp
WHERE alg_l.alg_locatie_key = alg_g.alg_locatie_key
AND alg_v.alg_verdieping_key = alg_r.alg_verdieping_key
AND alg_g.alg_gebouw_key = alg_v.alg_gebouw_key
AND alg_r.alg_ruimte_key = wp.alg_ruimte_key(+)
AND alg_g.alg_gebouw_key = hkp.alg_gebouw_key(+)
AND alg_g.alg_srtgebouw_key = alg_sg.alg_srtgebouw_key(+)
AND alg_g.mld_adres_key = adr.mld_adres_key(+)
AND alg_r.alg_srtruimte_key = alg_s.alg_srtruimte_key(+)) r,
prs_ruimteafdeling ra,
prs_afdeling a,
( SELECT alg_ruimte_key,
SUM (prs_ruimteafdeling_bezetting) bezetting
FROM prs_ruimteafdeling rab
WHERE rab.prs_ruimteafdeling_verwijder IS NULL
GROUP BY alg_ruimte_key) rab
WHERE ra.alg_ruimte_key(+) = r.alg_ruimte_key
AND r.alg_ruimte_key = rab.alg_ruimte_key(+)
AND ra.prs_afdeling_key = a.prs_afdeling_key(+)
AND ra.prs_ruimteafdeling_verwijder IS NULL;
CREATE OR REPLACE VIEW AAEN_V_RAP_RUIMTE_BEZETTING
(
HULPKOSTENPLAATS,
FCLT_F_GEBOUW,
PLAATS,
ADRES,
RUIMTE,
FCLT_F_FUNCTIE,
WERKPLEKKEN,
FCLT_F_AFDELING_CODE,
FCLT_F_AFDELING_OMSCHRIJVING,
BVO,
OMSCHRIJVING,
HOEVEELHEID,
FCLT_F_LOCATIE,
FCLT_F_VERDIEPING,
BEZETTING,
FCLT_X_FACILITAIR_ACTIEF
)
AS
SELECT
hulpkostenplaats,
alg_gebouw_omschrijving,
mld_adres_bezoek_plaats,
mld_adres_bezoek_adres,
alg_ruimte_nr,
alg_srtruimte_omschrijving,
werkplekken,
prs_afdeling_naam,
prs_afdeling_omschrijving,
alg_ruimte_bruto_vloeropp,
alg_ruimte_omschrijving,
DECODE (kantoor, 1, werkplekken, alg_ruimte_bruto_vloeropp)
hoeveelheid,
alg_locatie_code,
alg_verdieping_omschrijving,
prs_ruimteafdeling_bezetting,
facilitair_actief
FROM aaen_v_ruimte_bezetting;
CREATE OR REPLACE VIEW aaen_v_sync_alg_ruimte (
alg_ruimte_key,
alg_verdieping_key,
cadlabel
)
AS
SELECT r.alg_ruimte_key,
r.alg_verdieping_key,
c.cad_imp_contour_nr
FROM alg_v_aanwezigruimte r, cad_tekening t, cad_imp_contour c
WHERE r.alg_verdieping_key = t.alg_verdieping_key
AND t.cad_tekening_key = c.cad_tekening_key
AND upper(alg_ruimte_nr) = upper(substr(cad_imp_contour_nr, 1, instr(cad_imp_contour_nr,'\P')-1))
UNION ALL
SELECT r.alg_ruimte_key,
r.alg_verdieping_key,
r.alg_ruimte_nr
FROM alg_v_aanwezigruimte r where not exists (select alg_ruimte_key from cad_tekening t, cad_imp_contour c
WHERE r.alg_verdieping_key = t.alg_verdieping_key
AND t.cad_tekening_key = c.cad_tekening_key
AND upper(alg_ruimte_nr) = upper(substr(cad_imp_contour_nr, 1, instr(cad_imp_contour_nr,'\P')-1)));
CREATE OR REPLACE VIEW aaen_v_hr_adviseur (
prs_perslid_key,
prs_perslid_naam_full
)
AS
SELECT p.prs_perslid_key, prs_perslid_naam_full
FROM prs_v_perslid_fullnames p, fac_gebruikersgroep gg
WHERE p.prs_perslid_key = gg.prs_perslid_key AND gg.fac_groep_key = 122;
CREATE OR REPLACE VIEW AAEN_V_LEIDINGGEVENDE
(
PRS_PERSLID_KEY,
PRS_AFDELING_KEY,
PRS_PERSLID_KEY_LEID,
NIVEAU2,
NIVEAU1
)
AS
SELECT prs_perslid_key,
prs_afdeling_key,
COALESCE (al5, COALESCE (al4, COALESCE (al3, COALESCE (al2, al1)))),
al2,
al1
FROM (SELECT prs_perslid_key,
p.prs_afdeling_key,
(SELECT fac.safe_to_number(kl.prs_kenmerklink_waarde)
FROM prs_kenmerklink kl
WHERE a.prs_afdeling_key1 = kl.prs_link_key
AND kl.prs_kenmerklink_waarde <> p.prs_perslid_key
AND kl.prs_kenmerk_key = 1020)
al1,
(SELECT fac.safe_to_number(kl.prs_kenmerklink_waarde)
FROM prs_kenmerklink kl
WHERE a.prs_afdeling_key2 = kl.prs_link_key
AND kl.prs_kenmerklink_waarde <> p.prs_perslid_key
AND kl.prs_kenmerk_key = 1020)
al2,
(SELECT fac.safe_to_number(kl.prs_kenmerklink_waarde)
FROM prs_kenmerklink kl
WHERE a.prs_afdeling_key3 = kl.prs_link_key
AND kl.prs_kenmerklink_waarde <> p.prs_perslid_key
AND kl.prs_kenmerk_key = 1020)
al3,
(SELECT fac.safe_to_number(kl.prs_kenmerklink_waarde)
FROM prs_kenmerklink kl
WHERE a.prs_afdeling_key4 = kl.prs_link_key
AND kl.prs_kenmerklink_waarde <> p.prs_perslid_key
AND kl.prs_kenmerk_key = 1020)
al4,
(SELECT fac.safe_to_number(kl.prs_kenmerklink_waarde)
FROM prs_kenmerklink kl
WHERE a.prs_afdeling_key5 = kl.prs_link_key
AND kl.prs_kenmerklink_waarde <> p.prs_perslid_key
AND kl.prs_kenmerk_key = 1020)
al5,
(SELECT fac.safe_to_number(kl.prs_kenmerklink_waarde)
FROM prs_kenmerklink kl
WHERE a.prs_afdeling_key6 = kl.prs_link_key
AND kl.prs_kenmerklink_waarde <> p.prs_perslid_key
AND kl.prs_kenmerk_key = 1020)
al6,
(SELECT fac.safe_to_number(kl.prs_kenmerklink_waarde)
FROM prs_kenmerklink kl
WHERE a.prs_afdeling_key7 = kl.prs_link_key
AND kl.prs_kenmerklink_waarde <> p.prs_perslid_key
AND kl.prs_kenmerk_key = 1020)
al7
FROM prs_perslid p, aaen_v_afdeling_boom a
WHERE p.prs_afdeling_key = a.prs_afdeling_key);
-- rapport goedkeuring leidinggevende voor aanvragen lease-auto
CREATE OR REPLACE VIEW aaen_v_rap_fiat_leiding
(
NUMMER,
DATUM,
VAKGROEP,
MELDING,
MELDING_TEKST,
MELDER,
MLD_STATUSES_KEY,
STATUS,
GEPLANDE_EINDDATUM,
HIDE_F_MLD_MELDING_KEY,
MLD_STDMELDING_KEY,
FCLT_3D_USER_KEY
)
AS
SELECT DECODE (COALESCE (sd.ins_srtdiscipline_prefix, ''),
'', '',
sd.ins_srtdiscipline_prefix)
|| TO_CHAR (m.mld_melding_key)
nummer,
TO_CHAR (m.mld_melding_datum, 'dd-mm-yyyy') datum,
DECODE (COALESCE (sd.ins_srtdiscipline_prefix, ''),
'', '',
sd.ins_srtdiscipline_prefix || '-')
|| td.ins_discipline_omschrijving
vakgroep,
sm.mld_stdmelding_omschrijving melding,
'Prive adres: '
|| (SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 1)
|| CHR (13)
|| 'Postcode / Woonplaats: '
|| (SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 2)
|| CHR (13)
|| 'Huidige merk en kenteken: '
|| (SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 3)
|| CHR (13)
|| 'Prognose zakelijk per jaar: '
|| (SELECT fac_usrdata_omschr
FROM fac_usrdata ud, mld_kenmerkmelding km, mld_kenmerk k
WHERE fac.safe_to_number (mld_kenmerkmelding_waarde) =
fac_usrdata_key
AND km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 4)
|| CHR (13)
|| 'Prognose prive per jaar: '
|| (SELECT fac_usrdata_omschr
FROM fac_usrdata ud, mld_kenmerkmelding km, mld_kenmerk k
WHERE fac.safe_to_number (mld_kenmerkmelding_waarde) =
fac_usrdata_key
AND km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 6)
|| CHR (13)
|| 'Prognose woon- werk per jaar: '
|| (SELECT fac_usrdata_omschr
FROM fac_usrdata ud, mld_kenmerkmelding km, mld_kenmerk k
WHERE fac.safe_to_number (mld_kenmerkmelding_waarde) =
fac_usrdata_key
AND km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 7)
|| CHR (13)
|| 'Voorstel categorieindeling: '
|| (SELECT fac_usrdata_omschr
FROM fac_usrdata ud, mld_kenmerkmelding km, mld_kenmerk k
WHERE fac.safe_to_number (mld_kenmerkmelding_waarde) =
fac_usrdata_key
AND km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_srtkenmerk_key = 5)
|| CHR (13)
|| 'Omschrijving: '
|| SUBSTR(mld_melding_omschrijving,1,2000),
pf.prs_perslid_naam_full melder,
s.mld_statuses_key,
s.mld_statuses_omschrijving status,
m.mld_melding_einddatum geplande_einddatum,
m.mld_melding_key mld_key,
sm.mld_stdmelding_key,
DECODE (
sm.mld_stdmelding_key,
144,
l.prs_perslid_key_leid,
143,
DECODE (l.prs_perslid_key_leid,
l.niveau1, NULL,
l.niveau2, l.niveau1,
l.niveau2)
)
leidinggevende
FROM mld_melding m,
mld_statuses s,
mld_stdmelding sm,
ins_tab_discipline td,
ins_srtdiscipline sd,
prs_v_perslid_fullnames_all pf,
aaen_v_leidinggevende l
WHERE m.mld_melding_status IN (2, 3, 4) -- Te behandelen! + in behandeling.
AND m.mld_melding_status = s.mld_statuses_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND (sm.mld_stdmelding_key = 144 -- Goedkeuring lease auto door 1e leid.
OR sm.mld_stdmelding_key = 143) -- Goedkeuring lease auto door 2e leid.
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.prs_perslid_key = pf.prs_perslid_key
AND pf.prs_perslid_key = l.prs_perslid_key;
CREATE OR REPLACE VIEW aaen_v_noti_leaseaanvraag
(
code,
sender,
receiver,
xemail,
text,
key,
xkey,
xmobile
)
AS
SELECT 'CUST01',
NULL,
NULL,
mail,
'Jouw goedkeuring is vereist voor '
|| COUNT (mld_melding_key)
|| ' aanvragen (aanvraag auto van de zaak)',
MAX (mld_melding_key),
NULL,
NULL
FROM (SELECT COALESCE (p.prs_perslid_email, 'vervoer@enexis.nl')
mail,
mld_melding_key
FROM mld_melding m, aaen_v_leidinggevende l, prs_perslid p
WHERE m.prs_perslid_key = l.prs_perslid_key
AND l.prs_perslid_key_leid = p.prs_perslid_key(+)
AND m.mld_stdmelding_key = 144
AND m.mld_melding_status IN (2, 3, 4)
-- 2e leidinggevende notificeren
UNION ALL
SELECT COALESCE (
(SELECT prs_perslid_email
FROM prs_perslid p
WHERE prs_perslid_key =
(DECODE (l.prs_perslid_key_leid,
l.niveau1, NULL,
l.niveau2, l.niveau1,
l.niveau2))),
'vervoer@enexis.nl'
)
mail,
mld_melding_key
FROM mld_melding m, aaen_v_leidinggevende l
WHERE m.prs_perslid_key = l.prs_perslid_key
AND m.mld_stdmelding_key = 143
AND m.mld_melding_status IN (2, 3, 4))
GROUP BY mail;
CREATE OR REPLACE VIEW AAEN_V_NOTI_ORDREMINDER
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
PAR1,
PAR2,
XKEY
)
AS
SELECT 'CUST02',
'',
prs.getkpverantwoordelijke (o.prs_kostenplaats_key, 2, -1)
budgethouder,
'REMINDER: '
|| COUNT (o.mld_opdr_key)
|| ' Service Request'
|| DECODE (COUNT (o.mld_opdr_key), 1, '', 's'),
MIN (o.mld_opdr_key), -- Dummy key, althans een willekeurige; nog testen of dit werkt???
NULL,
NULL,
NULL
FROM mld_opdr o
WHERE o.mld_statusopdr_key = 3
GROUP BY prs.getkpverantwoordelijke (prs_kostenplaats_key, 2, -1);
-- AAEN#30105 inspectie reminder BHV middelen. Key 1841 = Bedrijfshulpverlening
CREATE OR REPLACE VIEW AAEN_V_NOTI_INSPECTIEREMINDER
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
PAR1,
PAR2,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT sn.fac_srtnotificatie_code code,
NULL sender,
NULL, --x.receiver,
REPLACE (
REPLACE (
sn.fac_srtnotificatie_oms,
'##SRTGROEP##',
DECODE (
x.min_srtgroep_oms,
x.max_srtgroep_oms,
x.min_srtgroep_oms
|| DECODE (x.aantal, 1, '-' || max_controle_oms, ''),
x.min_srtgroep_oms || ', ...'
)
),
'##AANTAL##',
x.aantal
)
subject,
x.dummy_deel_key, -- Dummy key!!!
NULL,
NULL,
NULL,
(SELECT prs_perslid_email
FROM prs_perslid
WHERE prs_perslid_key = x.receiver),
NULL
FROM ( SELECT MIN (gv.prs_perslid_key_verantw) receiver,
MAX (cso.ins_srtcontrole_omschrijving) max_controle_oms,
MIN (o.ins_srtgroep_omschrijving) min_srtgroep_oms,
MAX (o.ins_srtgroep_omschrijving) max_srtgroep_oms,
MIN (o.ins_deel_key) dummy_deel_key,
MIN (o.alg_gebouw_key) gebouw_key,
COUNT (DISTINCT o.ins_deel_key) aantal
FROM (SELECT scs.ins_srtinstallatie_key
ins_srtdeel_key,
scs.ins_srtcontrole_key,
scs.ins_srtcontrole_omschrijving,
scs.ins_srtcontrole_periode
FROM ins_srtcontrole scs
WHERE scs.ins_srtcontrole_niveau = 'S'
UNION ALL
SELECT sd.ins_srtdeel_key,
scg.ins_srtcontrole_key,
scg.ins_srtcontrole_omschrijving,
scg.ins_srtcontrole_periode
FROM ins_srtcontrole scg,
ins_srtdeel sd
WHERE scg.ins_srtcontrole_niveau = 'G'
AND scg.ins_srtinstallatie_key =
sd.ins_srtgroep_key
UNION ALL
SELECT sd.ins_srtdeel_key,
scd.ins_srtcontrole_key,
scd.ins_srtcontrole_omschrijving,
scd.ins_srtcontrole_periode
FROM ins_srtcontrole scd,
ins_srtgroep sg,
ins_srtdeel sd
WHERE scd.ins_srtcontrole_niveau = 'D'
AND scd.ins_srtinstallatie_key =
sg.ins_discipline_key
AND sg.ins_srtgroep_key =
sd.ins_srtgroep_key) cso -- ControleSoortObjecten
LEFT JOIN
(SELECT d.ins_deel_key,
d.ins_deel_aanmaak,
d.ins_alg_ruimte_key,
d.ins_alg_ruimte_type,
sd.ins_srtdeel_key,
sg.ins_srtgroep_omschrijving,
td.ins_discipline_key,
td.ins_discipline_omschrijving,
onr.alg_gebouw_key alg_gebouw_key
FROM ins_v_aanwezigdeel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_tab_discipline td,
alg_v_onroerendgoed onr
WHERE d.ins_srtdeel_key =
sd.ins_srtdeel_key
AND sd.ins_srtgroep_key =
sg.ins_srtgroep_key
AND sg.ins_discipline_key =
td.ins_discipline_key
AND d.ins_alg_ruimte_type = 'R'
AND onr.alg_ruimte_key =
d.ins_alg_ruimte_key
AND td.ins_discipline_key = 1841)
o -- Objecten
ON cso.ins_srtdeel_key = o.ins_srtdeel_key
LEFT JOIN
(SELECT alg_gebouw_key,
prs_perslid_key_verantw
FROM alg_gebouw ag) gv -- GebouwVerantwoordelijke
ON o.alg_gebouw_key = gv.alg_gebouw_key
LEFT JOIN
(SELECT ins_deel_key,
ins_kenmerkdeel_waarde afgekeurd
FROM ins_v_aanwezigkenmerkdeel kd,
ins_kenmerk k
WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = -1) oa -- ObjectAfgekeurd
ON o.ins_deel_key = oa.ins_deel_key
LEFT JOIN
(SELECT dsc.ins_deel_key,
dsc.ins_srtcontrole_key,
dsc.ins_deelsrtcontrole_datum,
dsc.ins_deelsrtcontrole_opmerking
FROM ins_deelsrtcontrole dsc
WHERE dsc.ins_deelsrtcontrole_datum =
(SELECT MAX (
ins_deelsrtcontrole_datum
)
FROM ins_deelsrtcontrole
WHERE ins_deel_key =
dsc.ins_deel_key
AND ins_srtcontrole_key =
dsc.ins_srtcontrole_key))
olc -- ObjectLaatsteControle
ON o.ins_deel_key = olc.ins_deel_key
AND cso.ins_srtcontrole_key =
olc.ins_srtcontrole_key
WHERE (oa.afgekeurd IS NULL OR oa.afgekeurd = -1) -- 'Nee'
AND COALESCE (olc.ins_deelsrtcontrole_datum,
o.ins_deel_aanmaak)
+ cso.ins_srtcontrole_periode BETWEEN TRUNC(SYSDATE
+ 61)
AND TRUNC(SYSDATE
+ 68)
GROUP BY o.alg_gebouw_key) x,
fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_code = 'CUST07';
------ 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