Files
Customer/AA/aaxx.sql
Arthur Egberink c637251655 AADS#27012 -- Ontbrekende facturen in verkoopinterface
AADO#26841 -- FEE ook meenemen in de groepering
AADO#27021 -- Aanpassing verkoopinterface.

svn path=/Customer/trunk/; revision=18402
2013-07-09 11:25:25 +00:00

9718 lines
399 KiB
SQL
Raw Blame History

-- Script containing customer generic configuration sql statements for AAFM
-- (c) 2009 SG|facilitor
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800710
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);
IF v_user = 'AAAR' THEN RETURN 'ARCADIS'; END IF;
IF v_user = 'AABT' THEN RETURN 'BT'; END IF;
IF v_user = 'AACE' THEN RETURN 'CE'; END IF;
IF v_user = 'AADO' THEN RETURN 'DOW'; END IF;
IF v_user = 'AADS' THEN RETURN 'DSM'; END IF;
IF v_user = 'AAEN' THEN RETURN 'ENEXIS'; END IF;
IF v_user = 'AAES' THEN RETURN 'ESSENT'; END IF;
IF v_user = 'AAFP' THEN RETURN 'FPC'; END IF;
IF v_user = 'AAHU' THEN RETURN 'HUNTSMAN'; END IF;
IF v_user = 'AAIT' THEN RETURN 'IT'; END IF;
IF v_user = 'AALB' THEN RETURN 'LB'; END IF;
IF v_user = 'AAME' THEN RETURN 'MEDIQ'; END IF;
IF v_user = 'AANS' THEN RETURN 'NS'; END IF;
IF v_user = 'AANX' THEN RETURN 'NXP'; END IF;
IF v_user = 'AAPM' THEN RETURN 'PM'; END IF;
IF v_user = 'AARW' THEN RETURN 'RWS'; END IF;
IF v_user = 'AASA' THEN RETURN 'SABIC'; END IF;
IF v_user = 'AAVL' THEN RETURN 'VL'; END IF;
IF v_user = 'AAZC' THEN RETURN 'ZCN'; END IF;
IF v_user = 'ASMS' THEN RETURN 'AMS'; END IF;
RETURN '';
END aaxx_get_user;
/
-- View om de exact code van een gebouw te bepalen.
-- Dit kenmerk heeft voor de verschillende klanten een andere key.
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
WHERE alg_onrgoed_niveau = 'G'
AND alg_kenmerk_key = DECODE(aaxx_get_user,
'VL', 1020,
'LB', 1020,
'SABIC', 1120,
'ESSENT', 1020,
'DOW', 1020,
'RWS', 1020,
'NXP', 1000,
1009);
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
BEGIN
SELECT fin_btwtabelwaarde_code
INTO v_code
FROM fin_btwtabelwaarde
WHERE fin_btwtabel_key = v_btwtabel_key
AND fin_btwtabelwaarde_perc = v_perc
AND COALESCE(fin_btwtabelwaarde_verlegd, 0) = 0;
EXCEPTION WHEN NO_DATA_FOUND
THEN
NULL; -- als we geen code kunnen vinden waarbij het percentage gelijk is maar die
-- niet verlegd is, dan geven we maar de originele code terug.
END;
END IF;
RETURN v_code;
END aaxx_get_verkoop_btw_code;
/
-- script om dagelijks terugkerende scripts aan te roepen.
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 <> 'AMS' THEN
aaxx_select_dwh_set_kenmerken (p_applname, p_applrun);
END IF;
-- job om gebruikers die recentelijk niet ingelogd zijn de rechten te ontnemen.
-- In ieder geval niet voor: AAES, AAEN, AANX, AAVL, AAZC
IF -- aaxx_get_user = 'ARCADIS' AAAR#26433
-- OR
aaxx_get_user = 'BT'
OR aaxx_get_user = 'CE'
OR aaxx_get_user = 'DOW'
OR aaxx_get_user = 'DSM'
OR aaxx_get_user = 'FPC'
OR aaxx_get_user = 'HUNTSMAN'
OR aaxx_get_user = 'LB'
OR aaxx_get_user = 'MEDIQ'
-- OR aaxx_get_user = 'NS' AANS#25534
OR aaxx_get_user = 'SABIC'
OR aaxx_get_user = 'AMS'
THEN
aaxx_delete_non_active_users (p_applname, p_applrun);
END IF;
-- job om bij to houden welke gebruikers vandaag ingelogd zijn geweest.
aaxx_export_login (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,
p_errormsg,
p_errorhint);
COMMIT;
END;
/
CREATE OR REPLACE PROCEDURE aaxx_add_xml_row (
p_bestand 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_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_row(p_bestand,
'<' || p_tag || '>'
|| xml.char_to_html(p_value)
|| '</' || p_tag || '>');
END;
/
CREATE OR REPLACE FUNCTION aaxx_get_kenmerkwaarde (
p_kenmerk_type VARCHAR2,
p_ref_objectnaam VARCHAR2,
p_ref_kolomnaam VARCHAR2,
p_ref_kolomtxt VARCHAR2,
p_fac_usrtab_key NUMBER,
p_kenmerk_waarde VARCHAR2)
RETURN VARCHAR2
AS
v_result VARCHAR2(2000);
sql_stmt VARCHAR2(2000);
BEGIN
IF p_kenmerk_type = 'R' OR p_kenmerk_type = 'S' THEN
sql_stmt :='SELECT MIN('
|| p_ref_kolomtxt
|| ')'
|| ' FROM '
|| p_ref_objectnaam
|| ' WHERE '
|| p_ref_kolomnaam
|| ' = '
|| p_kenmerk_waarde;
EXECUTE IMMEDIATE sql_stmt INTO v_result;
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;
END CASE;
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
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_key1 = 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_top_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 ( SYSDATE - prs_perslid_aanmaak > 90
AND ( prs_perslid_login IS NULL
OR SYSDATE - prs_perslid_login > 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')
AND SUBSTR(prs_perslid_oslogin, 1, 1) <> '_';
END;
/
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;
/
--=============================================================================
-- EXPORTFUNCTIES EXACT
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - Export exact
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_aanwezigfactuur
(
FIN_FACTUUR_KEY,
FIN_FACTUUR_NR,
FIN_FACTUUR_TOTAAL,
FIN_FACTUUR_TOTAAL_BTW,
MLD_OPDR_KEY,
CNT_CONTRACT_KEY,
BES_BESTELOPDR_KEY,
PRS_PERSLID_KEY_USER,
FIN_FACTUUR_DATUM,
FIN_FACTUUR_BOEKMAAND,
FIN_FACTUUR_DEBITEUR_NR,
PRS_KOSTENSOORT_KEY,
FIN_FACTUUR_OPMERKING,
FIN_FACTUUR_STATUSES_KEY,
FIN_FACTUUR_VERWIJDER
)
AS
SELECT FIN_FACTUUR_KEY,
FIN_FACTUUR_NR,
FIN_FACTUUR_TOTAAL,
FIN_FACTUUR_TOTAAL_BTW,
MLD_OPDR_KEY,
CNT_CONTRACT_KEY,
BES_BESTELOPDR_KEY,
PRS_PERSLID_KEY_USER,
FIN_FACTUUR_DATUM,
FIN_FACTUUR_BOEKMAAND,
FIN_FACTUUR_DEBITEUR_NR,
PRS_KOSTENSOORT_KEY,
FIN_FACTUUR_OPMERKING,
FIN_FACTUUR_STATUSES_KEY,
FIN_FACTUUR_VERWIJDER
FROM fin_factuur
WHERE fin_factuur_verwijder IS NULL AND fin_factuur_statuses_key > 1;
-- fin_kenmerk_key 2 is de keuze of dit de laatste factuur van de opdracht is.
CREATE OR REPLACE VIEW aaxx_v_factuur_gegevens (
fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_btwtabelwaarde_code,
fin_btwtabelwaarde_key,
fin_factuurregel_nr,
fin_factuur_debiteur_nr,
fin_factuur_opmerking,
fin_factuur_boekmaand,
opdr_datum,
laatste_factuur,
project_nummer,
project_naam,
prs_kostensoort_oms,
prs_kostensoort_refcode,
vk_prs_kostensoort_refcode,
prs_kostensoort_key,
prs_kostenplaats_key,
mld_opdr_key,
cnt_contract_key,
bes_bestelopdr_key,
fin_factuur_statuses_key,
lev_kpn
)
AS
SELECT f.fin_factuur_key,
DECODE (c.cnt_contract_key, null,
DECODE (bo.bes_bestelopdr_key, null,
(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 m.mld_melding_key = o.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)
, bo.bes_bestelopdr_id)
, 'C' || TO_CHAR (cnt_contract_nummer_intern)
)
opdracht_id,
DECODE (to_char(f.fin_factuur_datum, 'yyyy'),
'2010', to_date('20110102', 'YYYYMMDD'),
'2011', to_date('20120102', 'YYYYMMDD'),
f.fin_factuur_datum),
f.fin_factuur_nr,
COALESCE (b_c.prs_bedrijf_key, COALESCE(b_o.prs_bedrijf_key, b_b.prs_bedrijf_key)) prs_bedrijf_key,
fr.fin_factuurregel_totaal,
round(fr.fin_factuurregel_totaal* DECODE(btw.fin_btwtabelwaarde_verlegd, 1, 0, btw.fin_btwtabelwaarde_perc/100),2) fin_factuurregel_btw,
btw.fin_btwtabelwaarde_code,
btw.fin_btwtabelwaarde_key,
fr.fin_factuurregel_nr,
f.fin_factuur_debiteur_nr,
f.fin_factuur_opmerking,
f.fin_factuur_boekmaand,
coalesce (o.mld_opdr_datumbegin, coalesce(c.cnt_contract_looptijd_tot, bo.bes_bestelopdr_datum)),
COALESCE ( (SELECT fac.safe_to_number (fac_usrdata_code)
FROM fin_kenmerkfactuur fk, fac_usrdata ud
WHERE fk.fin_factuur_key = f.fin_factuur_key
AND fk.fin_kenmerk_key = 2
AND fac.safe_to_number (fin_kenmerkfactuur_waarde) =
fac_usrdata_key),
1
),
TO_CHAR (DECODE (ot.mld_typeopdr_omschrijving,
'Projectorder', ( (SELECT sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd
WHERE m.mld_melding_key =
o.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)),
NULL)
)
projectnummer,
TO_CHAR ((SELECT 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 sk.mld_srtkenmerk_omschrijving = 'Projectnaam')
)
projectnaam,
prs_kostensoort_oms,
DECODE (aaxx_get_user,
'ARCADIS', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2012', DECODE ( substr(prs_kostensoort_upper, 1, 2),'CF', '1350803',
'CV', '1350804',
'Onbekend'),
k.prs_kostensoort_refcode),
'BT', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2010', DECODE ( substr(prs_kostensoort_upper, instr(prs_kostensoort_upper, ' ')+1),
'C', '1350822',
'NC', '1350823',
'P', '1350823',
'Onbekend'),
'2011', DECODE ( substr(prs_kostensoort_upper, instr(prs_kostensoort_upper, ' ')+1),
'C', '1350827',
'NC', '1350828',
'P', '1350817',
'Onbekend'),
'2012', DECODE ( substr(prs_kostensoort_upper, instr(prs_kostensoort_upper, ' ')+1),
'C', '1350803',
'NC', '1350805',
'P', '1350817',
'Onbekend'),
k.prs_kostensoort_refcode),
'CE', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2010', DECODE (substr(k.prs_kostensoort_upper,1,2), 'VA', '1350822' ,
'GM', '1350822' ,
'NC', DECODE (ot.mld_typeopdr_omschrijving, 'Projectorder', '1350817',
'Workorder', '1350823',
'Onbekend'),
'Onbekend'),
'2011', DECODE (substr(k.prs_kostensoort_upper,1,2), 'VA', '1350830' ,
'GM', '1350827' ,
'NC', DECODE (ot.mld_typeopdr_omschrijving, 'Projectorder', '1350817',
'Workorder', '1350828',
'1350828'), -- contractorder
'Onbekend'),
'2012', DECODE (substr(k.prs_kostensoort_upper,1,2), 'VA', '1350804' ,
'GM', '1350803' ,
'PR', '1350817' ,
'NC', '1350805' ,
'Onbekend'),
k.prs_kostensoort_refcode),
'DOW', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2010', DECODE (substr(k.prs_kostensoort_upper,1,2), 'CO', '1350822' ,
'NC', DECODE (ot.mld_typeopdr_omschrijving, 'Projectorder', '1350817',
'Workorder', '1350823',
'Onbekend'),
'Onbekend'),
'2011', DECODE (substr(k.prs_kostensoort_upper,1,2), 'CO', '1350827' ,
'NC', DECODE (ot.mld_typeopdr_omschrijving, 'Projectorder', '1350817',
'Workorder', '1350828',
'1350828'),
'Onbekend'),
'2012', DECODE (substr(k.prs_kostensoort_upper,1,2), 'CO', DECODE (substr(k.prs_kostensoort_upper,1,7), 'COR VAR', '1350803', '1350803'),
'NC', DECODE (substr(k.prs_kostensoort_upper,1,5), 'NC P ', '1350817', '1350805'),
'Onbekend'),
k.prs_kostensoort_refcode),
'DSM', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2010', DECODE (substr(k.prs_kostensoort_upper,1,3), 'ST ', '1350822' ,
'STB', '1350822' ,
'AS ', '1350822' ,
'AE ', DECODE (ot.mld_typeopdr_omschrijving, 'Projectorder', '1350817',
'Workorder', '1350823',
'Onbekend'),
'Onbekend'),
'2011', DECODE (substr(k.prs_kostensoort_upper,1,3), 'ST ', '1350827' ,
'STB', '1350827' ,
'AS ', '1350827' ,
'AE ', DECODE (ot.mld_typeopdr_omschrijving, 'Projectorder', '1350817',
'Workorder', '1350828',
'1350828'),
'Onbekend'),
'2012', DECODE (substr(k.prs_kostensoort_upper,1,3), 'ST ', '1350803' ,
'STB', '1350803' ,
'AS ', '1350803' ,
'AE ', DECODE (substr(k.prs_kostensoort_upper,1,7), 'AE PROJ', '1350817', '1350805'),
'Onbekend'),
k.prs_kostensoort_refcode),
'ENEXIS', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2011', DECODE (substr(k.prs_kostensoort_upper,1,2), 'C ', '1350827' ,
'CC', '1350827' ,
'NC', DECODE (substr(k.prs_kostensoort_upper,1,5), 'NC P ', '1350817', '1350828'),
'Onbekend'),
'2012', DECODE (substr(k.prs_kostensoort_upper,1,2), 'C ', '1350803' ,
'CC', '1350803' ,
'NC', DECODE (substr(k.prs_kostensoort_upper,1,5), 'NC P ', '1350817', '1350805'),
'Onbekend'),
k.prs_kostensoort_refcode),
'ESSENT', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2012', DECODE (substr(k.prs_kostensoort_upper,1,2), 'CF', '1350803' ,
'CV', '1350804' ,
'NC', '1350817' ,
'Onbekend'),
k.prs_kostensoort_refcode),
'FPC', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2011', DECODE (kg.prs_kostensoortgrp_oms, 'Core', '1350827' ,
'Non Core', '1350830' ,
'Core Contingency','1350828' ,
'Onbekend'),
'2012', DECODE (kg.prs_kostensoortgrp_oms, 'Core', '1350803' ,
'Non Core', '1350805' ,
'Core Contingency','1350804' ,
'Onbekend'),
k.prs_kostensoort_refcode),
'HUNTSMAN', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2011', DECODE (substr(k.prs_kostensoort_upper,1,2), 'CF', '1350827' ,
'CV', '1350830' ,
'NC', '1350828' ,
'Onbekend'),
'2012', DECODE (substr(k.prs_kostensoort_upper,1,2), 'CF', '1350803' ,
'CV', '1350804' ,
'NC', '1350805' ,
'Onbekend'),
k.prs_kostensoort_refcode),
'IT', k.prs_kostensoort_refcode, -- geen jaarafsluiting
'LB', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2010', DECODE (substr(k.prs_kostensoort_upper,1,2), 'CO', '1350822' ,
'NC', DECODE (ot.mld_typeopdr_omschrijving, 'Projectorder', '1350817',
'Workorder', '1350823',
'1350823'),
'Onbekend'),
'2011', DECODE (substr(k.prs_kostensoort_upper,1,2), 'CO', '1350827' ,
'CV', '1350827' ,
'NC', DECODE (ot.mld_typeopdr_omschrijving, 'Projectorder', '1350817',
'Workorder', '1350828',
'1350828'),
'Onbekend'),
'2012', DECODE (substr(k.prs_kostensoort_upper,1,2), 'CO', '1350803' ,
'CF', '1350803' ,
'CV', '1350804' ,
'NC', '1350805' ,
'Onbekend'),
k.prs_kostensoort_refcode),
'MEDIQ', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2011', DECODE (substr(k.prs_kostensoort_upper,1,2), 'CF', '1350827' ,
'CV', '1350830' ,
'NC', '1350828' ,
'Onbekend'),
'2012', DECODE (substr(k.prs_kostensoort_upper,1,2), 'CF', '1350803' ,
'CV', '1350804' ,
'Onbekend'),
k.prs_kostensoort_refcode),
'NS', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2009', DECODE (substr(k.prs_kostensoort_upper,1,2), 'PR', '1350819' , '1350818'),
'2010', DECODE (substr(k.prs_kostensoort_upper,1,2), 'PR', '1350817' ,
'MW', '1350823' ,
'1350822'),
'2011', DECODE (substr(k.prs_kostensoort_upper,1,2), 'PR', '1350817' ,
'MW', '1350828' ,
'1350827'),
'2012', DECODE (substr(k.prs_kostensoort_upper,1,2), 'PR', '1350817' ,
'MW', '1350804' ,
'1350803'),
k.prs_kostensoort_refcode),
'NXP', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2011', DECODE (substr(k.prs_kostensoort_upper,1,2), 'C ', '1350827' ,
'NC', '1350828' ,
'Onbekend'),
'2012', DECODE (substr(k.prs_kostensoort_upper,1,2), 'C ', '1350803' ,
'NC', '1350805' ,
'Onbekend'),
k.prs_kostensoort_refcode),
'SABIC', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2011', DECODE (kg.prs_kostensoortgrp_oms, 'Non Core', '1350828' ,
'Core', '1350827' ,
'Projecten','1350817' ,
'Onbekend'),
'2012', DECODE (kg.prs_kostensoortgrp_oms, 'Non Core', '1350805' ,
'Core', '1350803' ,
'Projecten','1350817' ,
'Onbekend'),
k.prs_kostensoort_refcode),
'VL', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2012', DECODE (substr(k.prs_kostensoort_upper,1,2), 'CF', '1350803' ,
'CV', '1350804' ,
'NC', DECODE (substr(k.prs_kostensoort_upper,1,7), 'NC PROJ', '1350817', '1350805'),
'Onbekend'),
k.prs_kostensoort_refcode),
'AMS', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2011', DECODE (substr(k.prs_kostensoort_upper,1,2), 'CF', '1350827' ,
'CV', '1350830' ,
'Onbekend'),
k.prs_kostensoort_refcode),
k.prs_kostensoort_refcode),
DECODE (aaxx_get_user,
'CE', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2013', DECODE (substr(k.prs_kostensoort_upper,1,2), 'VA', '8210531' ,
'GM', 'nvt' ,
'NC', DECODE (ot.mld_typeopdr_omschrijving, 'Projectorder', '8110555',
'Workorder', '8210532',
'8210532'),
'Onbekend'),
DECODE (substr(k.prs_kostensoort_upper,1,2), 'VA', '1033306' ,
'GM', '1033303' ,
'PR', '1033302' ,
'NC', '1033304' ,
'Onbekend')),
'DOW', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2013', DECODE (substr(k.prs_kostensoort_upper,1,2), 'CO', '8210530' ,
'NC', DECODE (substr(k.prs_kostensoort_upper,1,4), 'NC P', '8110555', '8210532'),
'Onbekend'),
DECODE (substr(k.prs_kostensoort_upper,1,2), 'CO', DECODE (substr(k.prs_kostensoort_upper,1,7), 'COR VAR', '1033306', '1033303'),
'NC', DECODE (substr(k.prs_kostensoort_upper,1,5), 'NC P ', '1033302', '1033304'),
'Onbekend')),
'DSM', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2013', '8' || substr(prs_kostensoort_refcode,2,10),
DECODE (substr(k.prs_kostensoort_upper,1,3), 'ST ', '1033303' ,
'STB', '1033303' ,
'AS ', '1033303' ,
'AE ', DECODE (substr(k.prs_kostensoort_upper,1,7), 'AE PROJ', '1033302', '1033304'),
'Onbekend')),
'ENEXIS', '8110556',
'ESSENT', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2013', '8210532'),
'LB', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2013' , DECODE (substr(k.prs_kostensoort_upper,1,2), 'NC', DECODE (ot.mld_typeopdr_omschrijving, 'Projectorder', '8110555',
'Workorder', '8210532',
'8210532'),
'Onbekend'),
DECODE (substr(k.prs_kostensoort_upper,1,2), 'CO', '1033303' ,
'CF', '1033303' ,
'CV', '1033306' ,
'NC', '1033304' ,
'Onbekend')),
'NXP', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2013' , DECODE (substr(k.prs_kostensoort_upper,1,2), 'NC', '8210532',
'Onbekend')
),
'SABIC', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2013', DECODE (k.prs_kostensoort_upper, 'HNM-NC', '8110566',
'MCI-NC', '8110566',
'MEW-NC', '8110566',
'RAS-NC', '8210561',
'TAS-NC', '8210561',
'HOS-NC', '8210562',
'RES-NC', '8210563',
'Onbekend'),
DECODE (kg.prs_kostensoortgrp_oms, 'Non Core', '1033304' ,
'Core', '1033303' ,
'Projecten','1033302' ,
'Onbekend')),
'VL', DECODE (coalesce (to_char(o.mld_opdr_datumbegin, 'yyyy'), coalesce(to_char(c.cnt_contract_looptijd_tot,'yyyy'), to_char(bo.bes_bestelopdr_datum, 'yyyy'))),
'2013', DECODE (substr(k.prs_kostensoort_upper,1,2), 'NC', '8210532',
'CV', '8210531',
'Onbekend'),
DECODE (substr(k.prs_kostensoort_upper,1,2), 'CF', '1033303' ,
'CV', '1033306' ,
'NC', DECODE (substr(k.prs_kostensoort_upper,1,7), 'NC PROJ', '1033302', '1033304'),
'Onbekend')),
'Onbekend') vk_prs_kostensoort_refcode,
k.prs_kostensoort_key,
COALESCE(o.prs_kostenplaats_key,
COALESCE(c.prs_kostenplaats_key,
(SELECT DISTINCT b.prs_kostenplaats_key
FROM bes_bestelling b,
bes_bestelopdr_item boi,
bes_bestelling_item bi
WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND bi.bes_bestelling_key = b.bes_bestelling_key)
)
),
o.mld_opdr_key,
c.cnt_contract_key,
bo.bes_bestelopdr_key,
( -- status van de factuur is ingevoerd als er facturen van dezelfde leverancier en nummer zijn
-- met status ingevoerd, afgewezen of incompleet
SELECT DECODE(count(*), 0, f.fin_factuur_statuses_key, 2)
FROM fin_factuur f_t, cnt_contract c_t, bes_bestelopdr b_t, mld_opdr o_t
WHERE f_t.fin_factuur_verwijder is null
AND f_t.mld_opdr_key = o_t.mld_opdr_key(+)
AND f_t.cnt_contract_key = c_t.cnt_contract_key(+)
AND f_t.bes_bestelopdr_key = b_t.bes_bestelopdr_key(+)
AND COALESCE(o_t.mld_uitvoerende_keys, COALESCE(b_t.prs_bedrijf_key, c_t.cnt_prs_bedrijf_key))
= COALESCE(o.mld_uitvoerende_keys, COALESCE(bo.prs_bedrijf_key, c.cnt_prs_bedrijf_key))
AND f.fin_factuur_nr = f_t.fin_factuur_nr
AND f_t.fin_factuur_statuses_key in (1,2,3)
AND f.fin_factuur_statuses_key = 6) fin_factuur_statuses_key,
lk.prs_kostenplaats_nr lev_kpn
FROM fin_factuur f,
fin_factuurregel fr,
fin_btwtabelwaarde btw,
mld_opdr o,
mld_typeopdr ot,
cnt_contract c,
bes_bestelopdr bo,
prs_bedrijf b_o,
prs_bedrijf b_c,
prs_bedrijf b_b,
prs_kostensoort k,
prs_kostensoortgrp kg,
prs_kostenplaats lk
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
AND f.mld_opdr_key = o.mld_opdr_key(+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_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 f.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND k.prs_kostenplaats_key = lk.prs_kostenplaats_key(+)
AND k.prs_kostensoortgrp_key = kg.prs_kostensoortgrp_key(+)
AND f.fin_factuur_verwijder IS NULL;
CREATE OR REPLACE VIEW aaxx_v_export_exact_xml (
result,
result_order
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = 'EXACT';
CREATE OR REPLACE VIEW aaxx_v_bron_export_exact_xml
(
bkstnr,
oms25,
datum,
crdnr,
projectnr,
projectnaam,
bedrag_txt,
bedrag,
bedrag_incl,
betaalref,
itemcode,
reknr,
kstplcode,
kstdrcode,
btw_code,
lev_kpn
)
AS
SELECT TO_CHAR (fin_factuur_key) bkstnr,
opdracht_id
|| ' - '
|| REPLACE (SUBSTR (fin_factuur_opmerking, 1, 30), ',', '')
oms25,
TO_CHAR (fin_factuur_datum, 'yyyy-mm-dd') datum,
(SELECT prs_leverancier_nr
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key)
crdnr,
project_nummer,
project_naam,
REPLACE (TO_CHAR (bedrag), ',', '.') bedrag_txt,
bedrag,
bedrag_incl,
fin_factuur_nr || '/' || fin_factuur_debiteur_nr betaalref,
prs_kostensoort_oms itemcode,
prs_kostensoort_refcode reknr,
DECODE (
aaxx_get_user,
'IT', DECODE (lev_kpn,
'2000700', '00100002',
(SELECT DECODE (SUBSTR (PRS_KOSTENPLAATS_NR, 1, 1),
'2', '999999',
PRS_KOSTENPLAATS_NR)
FROM prs_kostenplaats kp
WHERE kp.prs_kostenplaats_key = fg.prs_kostenplaats_key
)
),
'CE',
'02410001',
'LB',
'02610001',
'FPC',
'00780164',
'999999'
) kstplcode,
( SELECT prs_kostenplaats_nr
FROM prs_kostenplaats kp
WHERE kp.prs_kostenplaats_key = fg.prs_kostenplaats_key ) kstdrcode,
fin_btwtabelwaarde_code btw_code,
lev_kpn
FROM ( SELECT fin_factuur_key,
opdracht_id,
project_nummer,
project_naam,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuur_debiteur_nr,
fin_factuur_opmerking,
SUM (fin_factuurregel_totaal) bedrag,
SUM (fin_factuurregel_totaal + fin_factuurregel_btw) bedrag_incl,
fin_btwtabelwaarde_code,
prs_kostensoort_oms,
prs_kostensoort_refcode,
mld_opdr_key,
prs_kostenplaats_key,
lev_kpn
FROM aaxx_v_factuur_gegevens g
WHERE fin_factuur_statuses_key = 6
GROUP BY fin_factuur_key,
opdracht_id,
project_nummer,
project_naam,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuur_debiteur_nr,
fin_factuur_opmerking,
fin_btwtabelwaarde_code,
prs_kostensoort_oms,
prs_kostensoort_refcode,
mld_opdr_key,
prs_kostenplaats_key,
lev_kpn) fg;
-- Procedure om alle facturen te exporteren naar exact.
-- Administratie geeft aan dat de export voor twee of meerdere gescheiden
-- administraties zal plaatsvinden.
CREATE OR REPLACE PROCEDURE aaxx_select_exact_xml_adm (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_administratie IN VARCHAR2
)
AS
CURSOR c
IS
SELECT bkstnr, oms25, datum
FROM aaxx_v_bron_export_exact_xml
WHERE (p_administratie = 'FAC' AND lev_kpn = '2000700')
OR (p_administratie = 'IT' AND COALESCE(lev_kpn, 'GEEN') <> '2000700')
OR p_administratie IS NULL
GROUP BY bkstnr, oms25, datum;
CURSOR c_sub (c_bkstnr VARCHAR2)
IS
SELECT *
FROM aaxx_v_bron_export_exact_xml
WHERE bkstnr = c_bkstnr;
v_order_count NUMBER;
v_amount_sum NUMBER(10,2);
v_amount_sum_incl NUMBER(10,2);
v_count NUMBER;
v_sub_count NUMBER;
v_bestand VARCHAR2(12);
BEGIN
v_order_count := 0;
v_amount_sum := 0;
v_amount_sum_incl := 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;
-- 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 status="E" entry="' || xml.char_to_html(rec.bkstnr) || '">');
aaxx_add_xml_element (v_bestand, 'Description', rec.oms25);
aaxx_add_xml_element (v_bestand, 'Date', rec.datum);
aaxx_add_xml_element (v_bestand, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') );
aaxx_add_xml_row (v_bestand, '<Journal type="I" code="42"/>');
v_sub_count := 1;
FOR rec1 IN c_sub (rec.bkstnr)
LOOP
BEGIN
aaxx_add_xml_row (v_bestand, '<FinEntryLine number="' || v_sub_count || '" subtype="T" type="N">');
aaxx_add_xml_element (v_bestand, 'Date', rec1.datum);
aaxx_add_xml_row (v_bestand, '<GLAccount code="' || xml.char_to_html(rec1.reknr) || '"/>');
-- Meldingnummer alleen vermelden voor opdrachten met type 'Projectorder'
IF (rec1.projectnr IS NOT NULL)
THEN
aaxx_add_xml_row (v_bestand, '<Project code="' || rec1.projectnr || '" type="I" status="A">');
aaxx_add_xml_element (v_bestand, 'Description', rec1.projectnaam);
aaxx_add_xml_row (v_bestand, '</Project>');
ELSE
aaxx_add_xml_element (v_bestand, 'Description', rec1.oms25);
END IF;
aaxx_add_xml_row (v_bestand, '<Costcenter code="' || xml.char_to_html(rec1.kstplcode) || '"/>');
IF aaxx_get_user = 'IT' AND p_administratie = 'FAC'
THEN
aaxx_add_xml_row (v_bestand, '<Costunit code="C0000014"/>'); -- afwijkend voor AAIT facilitaire kosten AAIT#25528.
ELSIF aaxx_get_user = 'AMS' OR aaxx_get_user = 'ZCN'
THEN
aaxx_add_xml_row (v_bestand, '<Costunit code="' || xml.char_to_html(rec1.kstdrcode) || '"/>');
ELSE
aaxx_add_xml_row (v_bestand, '<Costunit code="KD999999"/>');
END IF;
aaxx_add_xml_row (v_bestand, '<Creditor number="' || xml.char_to_html(rec1.crdnr) || '"/>');
-- AAIT#23838: kostensoort niet opnemen voor inkoopfacturen IT
IF ( NOT(aaxx_get_user = 'IT' AND p_administratie = 'IT' AND p_administratie IS NOT NULL) )
THEN
aaxx_add_xml_row (v_bestand, '<Item code="' || xml.char_to_html(rec1.itemcode) || '"/>');
END IF;
aaxx_add_xml_row (v_bestand, '<Amount>');
aaxx_add_xml_element (v_bestand, 'Debit', rec1.bedrag_txt);
aaxx_add_xml_row (v_bestand, '<VAT code="' || xml.char_to_html(rec1.btw_code) || '"/>');
aaxx_add_xml_row (v_bestand, '</Amount>');
aaxx_add_xml_row (v_bestand, '<Payment>');
aaxx_add_xml_element (v_bestand, 'Reference', rec1.betaalref);
aaxx_add_xml_element (v_bestand, 'InvoiceNumber', rec1.bkstnr);
aaxx_add_xml_row (v_bestand, '</Payment>');
aaxx_add_xml_row (v_bestand, '<FinReferences>');
aaxx_add_xml_element (v_bestand, 'YourRef', rec1.betaalref);
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>');
v_sub_count := v_sub_count + 1;
v_amount_sum := v_amount_sum + rec1.bedrag;
v_amount_sum_incl := v_amount_sum_incl + rec1.bedrag_incl;
END;
END LOOP;
aaxx_add_xml_row (v_bestand, '</GLEntry>');
END;
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 || ' Totaal bedrag (incl): ' || v_amount_sum_incl, '');
END;
/
-- voor niet AAIT klanten die niet van de administratie gebruik maken
-- zij kunnen deze procedure aanroepen.
CREATE OR REPLACE PROCEDURE aaxx_select_exact_xml (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
aaxx_select_exact_xml_adm (p_applname, p_applrun, null);
END;
/
-- Procedure om alle facturen te exporteren naar exact.
-- Administratie geeft aan dat de export voor twee of meerdere gescheiden
-- administraties zal plaatsvinden.
CREATE OR REPLACE PROCEDURE aaxx_export_exact_adm (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2,
p_administratie IN VARCHAR2
)
AS
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
-- Bewaar de factuur keys in een tijdelijke tabel zodat bij het verwerken (nieuwe export)
-- deze keys gebruikt kunnen worden.
DELETE aaxx_exp_factuur WHERE COALESCE(p_administratie, 'GEEN') = COALESCE(administratie,'GEEN');
INSERT INTO aaxx_exp_factuur (fin_factuur_key, administratie)
( SELECT DISTINCT fin_factuur_key, p_administratie
FROM aaxx_v_factuur_gegevens
WHERE fin_factuur_statuses_key = 6
AND ( p_administratie IS NULL
OR
(p_administratie = 'FAC' AND lev_kpn = '2000700')
OR
(p_administratie = 'IT' AND COALESCE (lev_kpn, 'GEEN') <> '2000700')
)
);
END;
/
-- voor de niet AAIT accounts is de administratie niet belangrijk. Zij kunnen deze
-- procedure blijven aanroepen.
CREATE OR REPLACE PROCEDURE aaxx_export_exact (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_exact_adm (p_applname, p_applrun, p_filedir, p_filename, null);
END;
/
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - Export exact verwerk
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_export_verwerk_exact (
result,
result_order
)
AS
SELECT REPLACE(REPLACE(f.fin_factuur_key
|| ';'
|| opdracht_id
|| ';'
|| fin_factuur_datum
|| ';'
|| fin_factuur_nr
|| ';'
|| prs_bedrijf_key
|| ';'
|| fin_factuurregel_totaal
|| ';'
|| fin_factuurregel_btw
|| ';'
|| fin_factuurregel_nr
|| ';'
|| fin_factuur_debiteur_nr
|| ';'
|| project_nummer
|| ';'
|| prs_kostensoort_refcode
|| ';'
|| mld_opdr_key
|| ';'
|| cnt_contract_key
,CHR (13), ''), CHR (10), '<ret>'), 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;
-- Procedure om alle geexporteerde facturen naar status verwerkt te zetten.
CREATE OR REPLACE PROCEDURE aaxx_export_verwerk_exact_adm (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2,
p_administratie 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
AND COALESCE(f.administratie, 'GEEN') = COALESCE(p_administratie,'GEEN');
CURSOR c_opdr
IS
SELECT distinct fg.mld_opdr_key, mld_statusopdr_key, m.mld_melding_status, m.mld_melding_key
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
AND COALESCE(f.administratie, 'GEEN') = COALESCE(p_administratie,'GEEN');
CURSOR c_bes
IS
SELECT bo.*
FROM aaxx_exp_factuur f
, aaxx_v_factuur_gegevens fg
, bes_bestelopdr bo
WHERE f.fin_factuur_key = fg.fin_factuur_key
AND fg.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND laatste_factuur = 1
AND fg.fin_factuur_statuses_key = 6
AND COALESCE(f.administratie, 'GEEN') = COALESCE(p_administratie,'GEEN');
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
IF aaxx_get_user = 'DSM' THEN v_aanvrager := 6524; END IF;
IF aaxx_get_user = 'NS' THEN v_aanvrager := 4; END IF;
IF aaxx_get_user = 'ENEXIS' THEN v_aanvrager := 4; END IF;
IF aaxx_get_user = 'IT' THEN v_aanvrager := 4; END IF;
v_logdate := SYSDATE;
-- voeg SA en ST opdrachten toe aan de verkoopbuffer
-- BTW tarief in verkoopbuffer is altijd 19 procent (AADS#18338)
INSERT INTO aaxx_verkoopbuffer
(
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
)
SELECT 'MLD',
v_logdate,
DECODE (aaxx_get_user, 'DOW', k.prs_kostenplaats_nr,
'DSM', aaxx_get_dep_code(k.prs_kostenplaats_nr),
'ESSENT', '912001',
'CE', aaxx_get_dep_code(k.prs_kostenplaats_nr),
'LB', exact_code,
'NXP', DECODE(g.alg_locatie_key, 21, '0000004', '0000003'), -- locatie 21 = eindhoven
'SABIC', k.prs_kostenplaats_nr,
'VL', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
SUBSTR (prs_kostenplaats_nr, 1, 30)) prs_kostenplaats_nr,
DECODE (aaxx_get_user, 'DOW', substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,6),
'DSM', aaxx_get_dep_code(k.prs_kostenplaats_nr),
'ESSENT', '912001',
'CE', aaxx_get_dep_code(k.prs_kostenplaats_nr),
'LB', exact_code,
'NXP', 2,
'SABIC', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
'VL', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
SUBSTR (prs_kostenplaats_nr, 1, 30)) debiteur,
ks.prs_kostensoort_oms || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), ' VJ','') ,
ks.prs_kostensoort_opmerking,
vk_prs_kostensoort_refcode,
DECODE (aaxx_get_user,
'DOW', 'Service Charges',
'VL', 'Core Variabel',
'NXP', 'NC ' || DECODE (g.alg_locatie_key, 21, 'Eindhoven', 'Nijmegen'),
(SELECT prs_kostensoortgrp_oms || DECODE (aaxx_get_user, 'LB', ' ' || exact_code, 'SABIC', ' ' || k.prs_kostenplaats_nr)
FROM prs_kostensoortgrp ksg
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key)
) prs_kostensoortgrp_oms,
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,
ROUND (fg.bedrag
* COALESCE ( (SELECT u.uplift
FROM aaxx_imp_uplift u
WHERE u.prs_leverancier_nr = b.prs_leverancier_nr
AND UPPER(soort_order) = 'WO'
AND UPPER (u.prs_kostensoort_oms) =
ks.prs_kostensoort_upper
AND fg.fin_factuur_boekmaand =
u.jaar
|| '-'
|| LTRIM (TO_CHAR (u.maand, '00'))),
DECODE (aaxx_get_user, 'NS', 1.065, 1)
),
2
),
0 btw, -- deprecated
DECODE (aaxx_get_user,
'SABIC', DECODE (ks.prs_kostensoort_oms, 'RAS-NC', 2, 5),
'DSM', DECODE (fg.prs_kostensoort_refcode, '4321006', fin_btwtabelwaarde_code, 5), --AADS#21168
fin_btwtabelwaarde_code) fin_btwtabelwaarde_code,
to_char(opdr_datum, 'YYYY'),
COALESCE(exact_code, alg_gebouw_code),
DECODE (aaxx_get_user, 'DSM', (SELECT fac_usrdata_omschr
FROM alg_onrgoedkenmerk, fac_usrdata ud
WHERE alg_onrgoed_key = g.alg_gebouw_key
AND alg_kenmerk_key = 1060 -- rema contract
AND ud.fac_usrdata_key =
fac.safe_to_number (alg_onrgoedkenmerk_waarde)
AND ( ks.prs_kostensoort_upper LIKE 'ST ONDH%'
OR ks.prs_kostensoort_upper LIKE 'STB ONDH%')),
'DOW', substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,6),
'') groepering,
DECODE (aaxx_get_user, 'LB', prs_kostensoort_oms || '1',
'DOW', 'A' || prs_kostensoort_oms,
'ESSENT', (SELECT uplift
FROM aaxx_imp_uplift u
WHERE u.prs_kostensoort_oms = ks.prs_kostensoort_oms),
'') 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,
prs_kostensoort_refcode,
vk_prs_kostensoort_refcode,
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,
vk_prs_kostensoort_refcode,
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 (( sd.ins_srtdiscipline_prefix = 'SA'
AND aaxx_get_user <> 'VL'
AND aaxx_get_user <> 'SABIC'
AND aaxx_get_user <> 'NXP'
AND aaxx_get_user <> 'DOW'
AND aaxx_get_user <> 'ESSENT')
OR ( aaxx_get_user = 'DSM'
AND ( ks.prs_kostensoort_upper LIKE 'ST ONDH%'
OR ks.prs_kostensoort_upper LIKE 'STB ONDH%')
AND ot.mld_typeopdr_omschrijving = 'Workorder'
)
OR ( aaxx_get_user = 'DOW'
AND ( ot.mld_typeopdr_omschrijving = 'Workorder'
OR ot.mld_typeopdr_omschrijving = 'Projectorder')
AND ( ks.prs_kostensoort_upper LIKE 'NC %'
OR ks.prs_kostensoort_upper LIKE 'NC P %'
)
)
OR ( aaxx_get_user = 'ESSENT'
AND ks.prs_kostensoort_upper LIKE 'CVE%'
AND ot.mld_typeopdr_omschrijving = 'Workorder'
)
OR ( aaxx_get_user = 'NXP'
AND ks.prs_kostensoort_upper LIKE 'NC%'
)
OR ( aaxx_get_user = 'LB'
AND ks.prs_kostensoort_upper LIKE 'NC%'
)
OR ( aaxx_get_user = 'SABIC'
AND ks.prs_kostensoort_upper LIKE '%NC'
AND ot.mld_typeopdr_omschrijving = 'Workorder'
)
OR ( aaxx_get_user = 'CE'
AND ( ot.mld_typeopdr_omschrijving = 'Workorder'
OR ot.mld_typeopdr_omschrijving = 'Projectorder')
AND ( ks.prs_kostensoort_upper LIKE 'NC%'
OR ( to_char(opdr_datum, 'YYYY') = '2011'
AND ks.prs_kostensoort_upper LIKE 'VAR%')
)
)
OR ( aaxx_get_user = 'VL'
AND ks.prs_kostensoort_upper IN (
'CV OND',
'CV TERR OVR',
'CV BEWAK OVR',
'CV ARCH',
'CV BOUW PLAN',
'CV CONS REST',
'CV SCH',
'CV WP',
'CV GEB NIET PLAN',
'CV CONS SERV',
'CV SCH GLAS',
'CV KART',
'CV INSTAL PLAN',
'CV BEWAK',
'CV VERH',
'CV GROEN',
'CV INSTAL NIET PLAN',
'CV PREV CAL',
'CV DOC POST',
'CV BEW',
'CV TERR VERHARD',
'CV REC',
'CV DOC REP',
'CV VERV PERS',
'CV OND TERR',
'CV ACHT OND',
'CV EIG INST PL',
'CV EIG BOUW PL',
'NC ACHT OND',
'NC INV BOUW',
'NC INV WP',
'NC INV INST')
)
)
AND fg.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND COALESCE(f.administratie, 'GEEN') = COALESCE(p_administratie,'GEEN');
-- voeg contract orders toe aan de verkoopbuffer
-- bij DSM wordt gegroepeerd op REMA contract
IF aaxx_get_user = 'DSM' THEN
INSERT INTO aaxx_verkoopbuffer
(
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
)
SELECT 'CNT',
v_logdate,
aaxx_get_dep_code (k.prs_kostenplaats_nr),
aaxx_get_dep_code (k.prs_kostenplaats_nr),
ks.prs_kostensoort_oms || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), ' VJ','') ,
ks.prs_kostensoort_opmerking,
vk_prs_kostensoort_refcode,
(SELECT prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key),
'C'
|| cnt_contract_nummer_intern
|| DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie)
omschrijving,
COALESCE((SELECT ROUND (COALESCE(cp.gewicht,1) * fg.bedrag * u.uplift, 2)
FROM aaxx_imp_uplift u
WHERE u.prs_leverancier_nr = b.prs_leverancier_nr
AND UPPER (soort_order) = 'CO'
AND UPPER (u.prs_kostensoort_oms) = ks.prs_kostensoort_upper
AND fg.fin_factuur_boekmaand =
TO_CHAR (u.jaar) || '-' || LTRIM (TO_CHAR (u.maand, '00'))), ROUND ((cp.gewicht * fg.bedrag), 2)),
0 btw, -- deprecated
5, -- AADS#21168 , AADS#26856
to_char(opdr_datum, 'YYYY'),
cp.alg_gebouw_code,
cp.rema,
''
FROM cnt_contract c,
prs_bedrijf b,
prs_kostenplaats k,
ins_tab_discipline d,
prs_kostensoort ks,
aaxx_exp_factuur f,
(SELECT fin_factuur_key,
cnt_contract_key,
SUM (fin_factuurregel_totaal) bedrag,
fin_factuurregel_btw btw,
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key) fin_btwtabelwaarde_code,
prs_kostenplaats_key,
prs_kostensoort_key,
vk_prs_kostensoort_refcode,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum
FROM aaxx_v_factuur_gegevens
WHERE fin_factuur_statuses_key = 6
GROUP BY fin_factuur_key,
cnt_contract_key,
prs_kostenplaats_key,
prs_kostensoort_key,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum,
fin_factuurregel_btw,
fin_btwtabelwaarde_key,
fin_btwtabelwaarde_code,
vk_prs_kostensoort_refcode,
fin_factuurregel_totaal) fg,
(SELECT cnt_contract_key,
alg_gebouw_code,
rema.fac_usrdata_omschr rema,
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
AND cp2.cnt_contract_plaats_verwijder IS NULL
GROUP BY cp.cnt_contract_key)
gewicht
FROM cnt_contract_plaats cp,
alg_gebouw g,
(SELECT k.alg_onrgoed_key, ud.fac_usrdata_omschr
FROM alg_onrgoedkenmerk k, fac_usrdata ud
WHERE k.alg_kenmerk_key = 1060
AND fac.safe_to_number (alg_onrgoedkenmerk_waarde) =
fac_usrdata_key) rema
WHERE cp.cnt_contract_plaats_verwijder IS NULL
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
AND g.alg_gebouw_key = rema.alg_onrgoed_key(+)) cp
WHERE fg.prs_kostenplaats_key = k.prs_kostenplaats_key
AND fg.cnt_contract_key = c.cnt_contract_key
AND c.cnt_contract_key = cp.cnt_contract_key(+)
AND fg.fin_factuur_key = f.fin_factuur_key
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.ins_discipline_key = d.ins_discipline_key
AND fg.prs_kostensoort_key = ks.prs_kostensoort_key
AND aaxx_get_user = 'DSM'
AND ( ks.prs_kostensoort_upper LIKE 'AE%'
OR ks.prs_kostensoort_upper LIKE 'AS ONDH%'
OR ks.prs_kostensoort_upper LIKE 'ST ONDH%'
OR ks.prs_kostensoort_upper LIKE 'STB ONDH%'
)
AND COALESCE(f.administratie, 'GEEN') = COALESCE(p_administratie,'GEEN');
ELSE
INSERT INTO aaxx_verkoopbuffer
(
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
)
SELECT 'CNT',
v_logdate,
DECODE (aaxx_get_user,
'LB', exact_code,
'DOW', k.prs_kostenplaats_nr,
'CE', aaxx_get_dep_code (k.prs_kostenplaats_nr),
'NS', SUBSTR (prs_kostenplaats_nr, 1, 30),
'NXP', DECODE(g.alg_locatie_key, 21, '0000004', '0000003'), -- locatie 21 = eindhoven
'VL', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)
),
DECODE (aaxx_get_user,
'LB', exact_code,
'DOW', substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,6),
'CE', aaxx_get_dep_code (k.prs_kostenplaats_nr),
'NS', SUBSTR (prs_kostenplaats_nr, 1, 30),
'NXP', 2,
'VL', aaxx_get_top_dep_code(k.prs_kostenplaats_nr)
),
ks.prs_kostensoort_oms || DECODE(TO_CHAR(opdr_datum,'YYYY'), TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE, 'yyyy'))-1), ' VJ','') ,
ks.prs_kostensoort_opmerking,
vk_prs_kostensoort_refcode,
DECODE (aaxx_get_user,
'DOW', 'Service Charges',
'NXP', 'NC ' || DECODE (g.alg_locatie_key, 21, 'Eindhoven', 'Nijmegen'),
(SELECT prs_kostensoortgrp_oms || DECODE (aaxx_get_user, 'LB', ' ' || exact_code, 'SABIC', ' ' || k.prs_kostenplaats_nr)
FROM prs_kostensoortgrp ksg
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key)
) prs_kostensoortgrp_oms,
'C'
|| cnt_contract_nummer_intern
|| DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie)
omschrijving,
DECODE (aaxx_get_user,
'NS', ROUND (fg.bedrag * 1.065,2),
fg.bedrag),
0 btw, -- deprecated
fin_btwtabelwaarde_code, -- AADS#21168
to_char(opdr_datum, 'YYYY'),
DECODE (aaxx_get_user, 'LB', exact_code,
'VL', exact_code,
'NXP', exact_code,
'DOW', '',
alg_gebouw_code) exact_code,
DECODE (aaxx_get_user, 'DOW', substr(aaxx_get_top_dep_code(k.prs_kostenplaats_nr),1,6),
'') groepering,
DECODE (aaxx_get_user, 'LB', prs_kostensoort_oms || '1',
'DOW', 'A' || prs_kostensoort_oms, '') subregelvolgorde
FROM cnt_contract c,
prs_bedrijf b,
prs_kostenplaats k,
ins_tab_discipline d,
prs_kostensoort ks,
aaxx_exp_factuur f,
(SELECT cnt_contract_key, alg_gebouw_code, exact_code, ag.alg_gebouw_key, ag.alg_locatie_key
FROM
(SELECT cnt_contract_key, MIN (cp.cnt_alg_plaats_key) cnt_alg_plaats_key
FROM cnt_contract_plaats cp
WHERE cp.cnt_contract_plaats_verwijder IS NULL
AND cp.cnt_alg_plaats_code = 'G'
GROUP BY cnt_contract_key) cp,
alg_gebouw ag,
aaxx_v_exact_code_gebouw ae
WHERE cp.cnt_alg_plaats_key = ag.alg_gebouw_key
AND cp.cnt_alg_plaats_key = ae.alg_gebouw_key) g,
(SELECT fin_factuur_key,
cnt_contract_key,
SUM (fin_factuurregel_totaal) bedrag,
fin_factuurregel_btw btw,
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key) fin_btwtabelwaarde_code,
prs_kostenplaats_key,
prs_kostensoort_key,
vk_prs_kostensoort_refcode,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum
FROM aaxx_v_factuur_gegevens
WHERE fin_factuur_statuses_key = 6
GROUP BY fin_factuur_key,
cnt_contract_key,
prs_kostenplaats_key,
prs_kostensoort_key,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum,
fin_factuurregel_btw,
fin_btwtabelwaarde_key,
fin_btwtabelwaarde_code,
vk_prs_kostensoort_refcode,
fin_factuurregel_totaal) fg
WHERE fg.prs_kostenplaats_key = k.prs_kostenplaats_key
AND fg.cnt_contract_key = c.cnt_contract_key
AND fg.fin_factuur_key = f.fin_factuur_key
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.ins_discipline_key = d.ins_discipline_key
AND c.cnt_contract_key = g.cnt_contract_key(+)
AND fg.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND ( ( aaxx_get_user = 'CE' AND ( ks.prs_kostensoort_upper LIKE 'NC%'
OR ( to_char(opdr_datum, 'YYYY') = '2011'
AND ks.prs_kostensoort_upper LIKE 'VAR%'
)
)
)
OR
( aaxx_get_user = 'NXP' AND ks.prs_kostensoort_upper LIKE 'NC%'
)
OR
( aaxx_get_user = 'LB' AND ks.prs_kostensoort_upper LIKE 'NC%'
)
OR
( aaxx_get_user = 'DOW'
AND ( ks.prs_kostensoort_upper = 'COR VAR CATE COFFE'
OR ks.prs_kostensoort_upper = 'COR VAR IND CLO')
)
OR
( aaxx_get_user = 'VL'
AND ks.prs_kostensoort_upper IN (
'CV OND',
'CV TERR OVR',
'CV BEWAK OVR',
'CV ARCH',
'CV BOUW PLAN',
'CV CONS REST',
'CV SCH',
'CV WP',
'CV GEB NIET PLAN',
'CV CONS SERV',
'CV SCH GLAS',
'CV KART',
'CV INSTAL PLAN',
'CV BEWAK',
'CV VERH',
'CV GROEN',
'CV INSTAL NIET PLAN',
'CV PREV CAL',
'CV DOC POST',
'CV BEW',
'CV TERR VERHARD',
'CV REC',
'CV DOC REP',
'CV VERV PERS',
'CV OND TERR',
'CV ACHT OND',
'NC ACHT OND',
'CV EIG INST PL',
'CV EIG BOUW PL',
'NC INV BOUW',
'NC INV WP',
'NC INV INST')
)
)
AND COALESCE(f.administratie, 'GEEN') = COALESCE(p_administratie,'GEEN');
END IF;
-- voeg bestelorders toe aan de verkoopbuffer
INSERT INTO aaxx_verkoopbuffer
(
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, subregelvolgorde
)
SELECT 'BES',
v_logdate,
DECODE (aaxx_get_user,
'DOW', '911791',
'DSM', aaxx_get_dep_code (k.prs_kostenplaats_nr),
'CE', aaxx_get_dep_code (k.prs_kostenplaats_nr),
'LB', exact_code,
'VL', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
SUBSTR (prs_kostenplaats_nr, 1, 30)),
DECODE (aaxx_get_user,
'DOW', '911791',
'DSM', aaxx_get_dep_code (k.prs_kostenplaats_nr),
'CE', aaxx_get_dep_code (k.prs_kostenplaats_nr),
'LB', exact_code,
'VL', aaxx_get_top_dep_code(k.prs_kostenplaats_nr),
SUBSTR (prs_kostenplaats_nr, 1, 30)),
ks.prs_kostensoort_oms
|| DECODE (TO_CHAR (opdr_datum, 'YYYY'),
TO_CHAR (TO_NUMBER (TO_CHAR (SYSDATE, 'yyyy')) - 1), ' VJ',
''),
ks.prs_kostensoort_opmerking,
vk_prs_kostensoort_refcode,
(SELECT prs_kostensoortgrp_oms || DECODE (aaxx_get_user, 'LB', ' ' || exact_code, 'SABIC', ' ' || k.prs_kostenplaats_nr)
FROM prs_kostensoortgrp ksg
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key),
bestel.bes_bestelopdr_id || ' ' || d.ins_discipline_omschrijving
omschrijving,
fin_factuurregel_totaal,
TO_NUMBER(NULL) btw, -- deprecated
DECODE (aaxx_get_user, 'DSM', 5, fin_btwtabelwaarde_code) fin_btwtabelwaarde_code,
TO_CHAR (opdr_datum, 'YYYY'),
COALESCE (exact_code, alg_gebouw_code),
DECODE (aaxx_get_user, 'LB', prs_kostensoort_oms || '1', '')
FROM ( SELECT boi.bes_bestelopdr_key,
bes_bestelopdr_id,
sg.ins_discipline_key,
be.mld_adres_key_lev
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
GROUP BY boi.bes_bestelopdr_key,
bes_bestelopdr_id,
sg.ins_discipline_key,
be.mld_adres_key_lev) bestel,
mld_adres ad,
prs_kostenplaats k,
ins_tab_discipline d,
prs_kostensoort ks,
aaxx_exp_factuur f,
alg_gebouw g,
aaxx_v_exact_code_gebouw exact,
( SELECT fin_factuur_key,
bes_bestelopdr_key,
prs_kostenplaats_key,
prs_kostensoort_key,
vk_prs_kostensoort_refcode,
fin_factuur_boekmaand,
opdr_datum,
fin_factuur_datum,
aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key) fin_btwtabelwaarde_code,
sum(fin_factuurregel_totaal) fin_factuurregel_totaal
FROM aaxx_v_factuur_gegevens
WHERE fin_factuur_statuses_key = 6
AND bes_bestelopdr_key IS NOT NULL
GROUP BY fin_factuur_key,
bes_bestelopdr_key,
prs_kostenplaats_key,
prs_kostensoort_key,
fin_factuur_boekmaand,
fin_btwtabelwaarde_key,
opdr_datum,
fin_factuur_datum,
vk_prs_kostensoort_refcode,
fin_btwtabelwaarde_code) fg
WHERE fg.bes_bestelopdr_key = bestel.bes_bestelopdr_key
AND fg.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND bestel.ins_discipline_key = d.ins_discipline_key
AND bestel.mld_adres_key_lev = ad.mld_adres_key(+)
AND ad.mld_adres_gebouw_ruimte = g.alg_gebouw_code(+)
AND g.alg_gebouw_key = exact.alg_gebouw_key(+)
AND fg.fin_factuur_key = f.fin_factuur_key
AND ( ( aaxx_get_user = 'DSM'
AND ks.prs_kostensoort_upper LIKE 'AE%' -- DSM
)
OR
( aaxx_get_user = 'LB'
AND ks.prs_kostensoort_upper LIKE 'NC%' -- LyondellBasell
)
OR
( aaxx_get_user = 'VL'
AND ks.prs_kostensoort_upper IN (
'CV OND',
'CV TERR OVR',
'CV BEWAK OVR',
'CV ARCH',
'CV BOUW PLAN',
'CV CONS REST',
'CV SCH',
'CV WP',
'CV GEB NIET PLAN',
'CV CONS SERV',
'CV SCH GLAS',
'CV KART',
'CV INSTAL PLAN',
'CV BEWAK',
'CV VERH',
'CV GROEN',
'CV INSTAL NIET PLAN',
'CV PREV CAL',
'CV DOC POST',
'CV BEW',
'CV TERR VERHARD',
'CV REC',
'CV DOC REP',
'CV VERV PERS',
'CV OND TERR',
'CV ACHT OND',
'NC ACHT OND',
'NC INV BOUW',
'NC INV WP',
'NC INV INST')
)
)
AND fg.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND COALESCE(f.administratie, 'GEEN') = COALESCE(p_administratie,'GEEN');
-- bereken per klant de FEE over de omzet.
IF aaxx_get_user = 'CE' THEN
INSERT INTO aaxx_verkoopbuffer
(
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
)
SELECT module, export_datum, prs_kostenplaats_nr, debiteur, 'BASE FEE' || DECODE (instr(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoort_opmerking, decode(substr(prs_kostensoort_refcode, 1,1), '8', '8210511', '1033305'), prs_kostensoortgrp_oms, 'BASE FEE 6.75%', round(bedrag*0.0675,2), btw, fin_btwtabelwaarde_code, opdr_jaar, 'X'
FROM aaxx_verkoopbuffer
WHERE export_datum = v_logdate;
END IF;
IF aaxx_get_user = 'DOW' THEN
INSERT INTO aaxx_verkoopbuffer
(
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, subregelvolgorde, groepering
)
SELECT module, export_datum, '', debiteur, 'BASE FEE' || DECODE (instr(v.prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', '8210511', prs_kostensoortgrp_oms, 'BASE FEE' , round(sum(bedrag) * 0.04, 2), 0, fin_btwtabelwaarde_code, opdr_jaar, 'X', 'X', groepering
FROM aaxx_verkoopbuffer v
WHERE export_datum = v_logdate
GROUP BY module, export_datum, debiteur, DECODE (instr(v.prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, opdr_jaar, groepering;
END IF;
IF aaxx_get_user = 'ESSENT' THEN
INSERT INTO aaxx_verkoopbuffer
(
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, subregelvolgorde
)
SELECT module, export_datum, prs_kostenplaats_nr, debiteur, 'BASE FEE ' || to_char(u.uplift) || '%' || DECODE (instr(v.prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), '', '8210511', prs_kostensoortgrp_oms, 'BASE FEE ' || to_char(u.uplift) || '%' , round(sum(bedrag) * (u.uplift/100),2), btw, 5, opdr_jaar, 'X', u.uplift || 'X'
FROM aaxx_verkoopbuffer v, aaxx_imp_uplift u
WHERE REPLACE(v.prs_kostensoort_oms, ' VJ', '') = u.prs_kostensoort_oms
AND export_datum = v_logdate
GROUP BY module, export_datum, prs_kostenplaats_nr, debiteur, instr(v.prs_kostensoort_oms, ' VJ'), prs_kostensoortgrp_oms, uplift, btw, opdr_jaar;
END IF;
IF aaxx_get_user = 'LB' THEN
INSERT INTO aaxx_verkoopbuffer
(
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, subregelvolgorde
)
SELECT module, export_datum, prs_kostenplaats_nr, debiteur, 'BASE FEE' || DECODE (instr(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoort_opmerking, decode(substr(prs_kostensoort_refcode, 1,1), '8', '8210511', '1033305'), prs_kostensoortgrp_oms, 'FEE ' || prs_kostensoort_oms, round(sum(bedrag)*0.075,2), null, fin_btwtabelwaarde_code, opdr_jaar, 'X', prs_kostensoort_oms || '2'
FROM aaxx_verkoopbuffer
WHERE export_datum = v_logdate
GROUP BY module, export_datum, prs_kostenplaats_nr, debiteur, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_btwtabelwaarde_code, opdr_jaar, decode(substr(prs_kostensoort_refcode, 1,1), '8', '8210511', '1033305');
END IF;
IF aaxx_get_user = 'VL' THEN
INSERT INTO aaxx_verkoopbuffer
(
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
)
SELECT module, export_datum, prs_kostenplaats_nr, debiteur, 'FEE' || DECODE (instr(prs_kostensoort_oms, ' VJ'), 0 , '', ' VJ'), prs_kostensoort_opmerking, '8210513', prs_kostensoortgrp_oms, 'FEE', round(bedrag*0.025,2), btw, fin_btwtabelwaarde_code, opdr_jaar, 'X'
FROM aaxx_verkoopbuffer
WHERE prs_kostensoort_oms = 'NC ACHT OND'
AND export_datum = v_logdate;
END IF;
FOR rec1 IN c_bes
LOOP
BEGIN
-- indien nog niet afgemeld, dan maar even afmelden.
IF rec1.bes_bestelopdr_status = 3 THEN -- in behandeling
UPDATE bes_bestelopdr
SET bes_bestelopdr_status = 4
WHERE bes_bestelopdr_key= rec1.bes_bestelopdr_key
AND bes_bestelopdr_status = 3;
END IF;
IF rec1.bes_bestelopdr_status = 5 -- bevestigd
OR rec1.bes_bestelopdr_status = 4 -- in bestelling
OR rec1.bes_bestelopdr_status = 3 THEN
UPDATE bes_bestelopdr_item B
SET bes_bestelopdr_item_aantalontv = COALESCE(bes_bestelopdr_item_aantal, 0),
bes_bestelopdr_item_ontvangen = SYSDATE
WHERE b.bes_bestelopdr_key = rec1.bes_bestelopdr_key;
UPDATE bes_bestelling_item bi
SET bes_bestelling_item_aantalontv = COALESCE(bes_bestelling_item_aantal, 0)
WHERE EXISTS (SELECT bes_bestelopdr_key
FROM bes_bestelopdr_item boi
WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bes_bestelopdr_key = rec1.bes_bestelopdr_key);
SELECT distinct bes_bestelling_key
INTO v_bestelling_key
FROM bes_bestelling_item bi, bes_bestelopdr_item boi
WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bes_bestelopdr_key = rec1.bes_bestelopdr_key;
bes.updatebestelopdrstatus(rec1.bes_bestelopdr_key, v_aanvrager);
bes.updatebestellingstatus(v_bestelling_key, v_aanvrager);
END IF;
END;
END LOOP;
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 aaxx_v_aanwezigfactuur 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
-- update meldingstatus
mld.updatemeldingstatusAV (rec1.mld_melding_key, 0, v_aanvrager, 0);
-- zet de status naar verwerkt (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;
/
CREATE OR REPLACE PROCEDURE aaxx_export_verwerk_exact (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_verwerk_exact_adm (p_applname, p_applrun, p_filedir, p_filename, null);
END;
/
--=============================================================================
-- EXPORTFUNCTIES VERKOOPFACTUREN
-------------------------------------------------------------------------------
-- btw code is 19 procent als percentage is 19 of 0;
CREATE OR REPLACE VIEW aaxx_v_export_exact_verkoop_t (
result,
opdr_jaar,
result_order
)
AS
SELECT '0' || ',' || '3' || ',' || debiteur
|| ','
|| DECODE(aaxx_get_user, 'ENEXIS', 'Diensten derden PR', replace(prs_kostensoortgrp_oms, ',', '')) -- AAEN#26838
|| ','
|| DECODE(aaxx_get_user, 'ENEXIS', replace(prs_kostensoortgrp_oms, ',', ''), '') -- AAEN#26838
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| TO_CHAR (SYSDATE, 'ddmmyyyy')
|| ','
|| '1'
|| ','
|| ''
|| ','
|| ''
|| ','
|| DECODE(aaxx_get_user, 'LB', '02610001', 'DOW', '02510001', 'DSM', '02210001', 'CE', '02410001', 'NS',exact_code_gebouw)
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| 'EUR'
|| ','
|| ''
|| ','
|| DECODE(aaxx_get_user, 'LB', '60', 'DOW', '60', 'DSM', 'E9', 'NS','E6', 'CE', '45')
|| ','
|| '1'
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| TO_CHAR (0)
|| ','
|| TO_CHAR (0)
|| ','
|| TO_CHAR (0)
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| 'V'
|| ','
|| ''
|| ','
|| ''
|| ','
|| 'N'
|| ','
|| debiteur
|| ','
|| ''
|| ','
|| '',
opdr_jaar,
groepering || replace(prs_kostensoortgrp_oms, ',', '') || DECODE(aaxx_get_user, 'DOW', '', prs_kostenplaats_nr) || '0'
FROM aaxx_verkoopbuffer
WHERE naar_exact IS NULL
GROUP BY replace(prs_kostensoortgrp_oms, ',', ''), debiteur, DECODE(aaxx_get_user, 'DOW', '', prs_kostenplaats_nr), groepering, DECODE(aaxx_get_user, 'LB', '02610001', 'DOW', '02510001', 'DSM', '02210001','CE', '02410001', 'NS',exact_code_gebouw), opdr_jaar
UNION ALL
SELECT '1'
|| ','
|| '3'
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| '1'
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ' '
|| prs_kostensoort_oms
|| ','
|| 'V'
|| ','
|| replace(omschrijving, ',', '')
|| ','
|| '1'
|| ','
|| fin_btwtabelwaarde_code
|| ','
|| ''
|| ','
|| '0'
|| ','
|| REPLACE (TO_CHAR (sum(bedrag)), ',', '.')
|| ','
|| ''
|| ','
|| DECODE (aaxx_get_user, 'DSM', substr(prs_kostensoort_oms, 1, instr(prs_kostensoort_oms, ' ')-1)||prs_kostenplaats_nr,
'CE', DECODE (omschrijving, 'BASE FEE 2%', '999999', prs_kostenplaats_nr),
'DOW', DECODE (omschrijving, 'BASE FEE 3%', '999999', prs_kostenplaats_nr),
prs_kostenplaats_nr)
|| ','
|| ''
|| ','
|| prs_kostensoort_refcode
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| ''
|| ','
|| DECODE (aaxx_get_user, 'LB', '02600013',
'CE', DECODE (omschrijving, 'BASE FEE 2%', '999999', prs_kostenplaats_nr),
'ENEXIS', '02100004',
exact_code_gebouw)
|| ','
|| '',
opdr_jaar,
groepering || replace(prs_kostensoortgrp_oms, ',', '') || DECODE(aaxx_get_user, 'DOW', '', prs_kostenplaats_nr)|| '1' || subregelvolgorde || replace(omschrijving, ',', '')
FROM aaxx_verkoopbuffer
WHERE naar_exact IS NULL
GROUP BY subregelvolgorde, replace(prs_kostensoortgrp_oms, ',', ''), omschrijving, replace(omschrijving, ',', ''), prs_kostenplaats_nr, groepering, exact_code_gebouw, prs_kostensoort_oms, fin_btwtabelwaarde_code, prs_kostensoort_refcode, opdr_jaar;
CREATE OR REPLACE VIEW aaxx_v_export_exact_verkoop (
result,
result_order
)
AS
SELECT result,
result_order
FROM aaxx_exp_exact_verkoop;
-- Voordat de verkoopfacturen naar Exact geexporteerd wordt moet de volgorde van de subregels gecorrigeerd worden
CREATE OR REPLACE PROCEDURE aaxx_select_exact_verkoop (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_opdr_jaar IN VARCHAR2
)
AS
CURSOR c1 IS
SELECT result, result_order
FROM aaxx_v_export_exact_verkoop_t
WHERE opdr_jaar = p_opdr_jaar
ORDER BY result_order;
v_first NUMBER;
v_count NUMBER;
BEGIN
v_count := 0;
DELETE aaxx_exp_exact_verkoop;
FOR rec IN c1
LOOP
BEGIN
v_first := substr(rec.result, 1,1);
IF v_first = 0 THEN
v_count := 0;
ELSE
v_count := v_count + 1;
END IF;
INSERT INTO aaxx_exp_exact_verkoop (
result,
result_order)
VALUES (
v_count || substr (rec.result, 2),
rec.result_order||to_char(1000+v_count)); -- forceer sortering bij count > 9
END;
END LOOP;
END;
/
-- Na dat de verkoopfacturen naar Exact geexporteerd zijn wordt de timestamp gezet.
CREATE OR REPLACE PROCEDURE aaxx_export_exact_verkoop (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2,
p_opdr_jaar IN VARCHAR2
)
AS
BEGIN
UPDATE aaxx_verkoopbuffer
SET naar_exact = sysdate
WHERE naar_exact IS NULL
AND opdr_jaar = p_opdr_jaar;
INSERT INTO imp_schedule (imp_schedule_name) VALUES ('EXACT_VERKOOP_VJ');
END;
/
--=============================================================================
-- 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)
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,
kpn.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,
fac.safe_To_Number(ut.mld_kenmerkopdr_waarde) uurtarief_opdr,
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_v_aanwezigperslid 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) ) 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 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 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 entry="' || rec.mld_opdr_uren_key || '">');
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) || '"/>');
aaxx_add_xml_row (v_bestand, '<Resource number="'|| rec.aafm_perslid_nr ||'"/>');
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,
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)
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 kpp.prs_link_key = o.mld_uitvoerende_keys
AND ap.prs_perslid_key = o.mld_uitvoerende_keys;
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).
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;
BEGIN
-- 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;
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
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
IF aaxx_get_user = 'DSM' THEN
-- DSM: Sodexo BV
v_prs_bedrijf_key := 10442;
-- DSM: Servicedesk AA
v_aanvrager := 6524;
-- DSM: Arcadis Aqumen
v_prs_kostenplaats_key := 209;
-- key van opdrachttype workorder
v_mld_workorder_key := 167;
END IF;
IF aaxx_get_user = 'NS' THEN
-- NS: Eurest catering
v_prs_bedrijf_key := 1581;
-- NS: xxx
v_aanvrager := 4;
-- NS: xxx
v_prs_kostenplaats_key := 0;
-- key van opdrachttype workorder
v_mld_workorder_key := 121;
END IF;
v_errormsg := 'Controle exportdatum';
SELECT max(export_datum)
INTO v_laatste_export
FROM aaxx_verkoopbuffer
WHERE module = 'RES';
IF v_laatste_export IS NOT NULL AND v_laatste_export >
TO_DATE ( TO_CHAR (SYSDATE, 'yyyy')
|| TO_CHAR (SYSDATE, 'mm')
|| '01',
'yyyymmdd') THEN
-- foutmelding bundeling voor deze maand heeft al plaatsgevonden op v_laatste_export
fac.writelog (p_applname, 'E', 'bundeling voor deze maand heeft al plaatsgevonden op: ' || v_laatste_export, '');
RETURN;
END IF;
v_errormsg := 'Aanmaken catering melding';
BEGIN
INSERT INTO mld_melding
(
mld_melding_omschrijving,
mld_kosten_klant,
prs_perslid_key,
prs_kostenplaats_key,
mld_stdmelding_key,
mld_alg_locatie_key,
mld_melding_einddatum,
mld_melding_datum,
mld_melding_uitvoertijd,
mld_meldbron_key,
mld_melding_module,
mld_melding_spoed
)
VALUES (
'Hospitality maand:' || TO_CHAR (TO_DATE ( '01'
|| TO_CHAR (SYSDATE, 'mm')
|| TO_CHAR (SYSDATE, 'yyyy'),
'ddmmyyyy'
)
- 1,
'Mon'
),
1,
v_aanvrager,
v_prs_kostenplaats_key,
DECODE (aaxx_get_user, 'DSM', 603, 'NS', 641),
DECODE (aaxx_get_user, 'DSM', 1, 'NS', 0), -- alg_locatie
sysdate + 14,
sysdate,
2,
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;
v_errormsg := 'Voeg catering to aan verkoopbuffer';
-- rra.res_status_bo_key = 5 is afgemeld
INSERT INTO aaxx_verkoopbuffer
(
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
)
SELECT 'RES',
SYSDATE,
DECODE (aaxx_get_user, 'DSM', aaxx_get_dep_code(k.prs_kostenplaats_nr), 'NS', SUBSTR (prs_kostenplaats_nr, 1, 30)),
DECODE (aaxx_get_user, 'DSM', aaxx_get_dep_code(k.prs_kostenplaats_nr), 'NS', SUBSTR (prs_kostenplaats_nr, 1, 30)),
SUBSTR (prs_kostensoort_oms, 1, 60),
SUBSTR (prs_kostensoort_opmerking, 1, 255),
SUBSTR (prs_kostensoort_refcode, 1, 255),
(SELECT SUBSTR(prs_kostensoortgrp_oms,1,60) FROM prs_kostensoortgrp ksg WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key),
SUBSTR ('Hospitality' || ' '
|| TO_CHAR (TO_DATE ( '01'
|| TO_CHAR (SYSDATE, 'mm')
|| TO_CHAR (SYSDATE, 'yyyy'),
'ddmmyyyy'
)
- 1,
'Mon'
),
1,
100
),
SUM (rra.res_rsv_artikel_prijs),
0, -- deprecated
DECODE (res_artikel_btw, 19, '4', 6, '2', 0, '4', '-1'),
to_char(add_months(sysdate, -1),'yyyy'),
COALESCE(exact_code, alg_gebouw_code)
FROM res_rsv_ruimte rrr,
res_rsv_artikel rra,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
res_artikel ra,
ins_tab_discipline d,
prs_kostensoort ks,
prs_kostenplaats k,
aaxx_v_exact_code_gebouw exact,
(SELECT COALESCE (MAX (ir2a.alg_ruimte_key), irrr.alg_ruimte_key)
alg_ruimte_key,
irrr.res_rsv_ruimte_key
FROM res_rsv_ruimte irrr, res_v_rsv_ruimte_2_alg_ruimte 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 = exact.alg_gebouw_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
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 rra.res_rsv_artikel_levering <
TO_DATE ( TO_CHAR (SYSDATE, 'yyyy')
|| TO_CHAR (SYSDATE, 'mm')
|| '01',
'yyyymmdd'
)
GROUP BY prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
k.prs_kostenplaats_key,
prs_kostensoort_oms,
prs_kostensoort_opmerking,
prs_kostensoort_refcode,
ks.prs_kostensoortgrp_key,
res_artikel_btw,
alg_gebouw_code,
exact_code;
v_errormsg := 'Meld de catering af die zojuist in de verkoopbuffer geplaatst zijn';
-- pas alle cateringartikelen aan die hierboven in de verkoopbuffer geplaatst zijn
-- res_status_bo_key = 6 is verwerkt
UPDATE res_rsv_artikel
SET res_rsv_artikel_verwerkt = SYSDATE, res_status_bo_key = 6
WHERE res_rsv_artikel_key IN
(SELECT res_rsv_artikel_key
FROM res_rsv_ruimte rrr,
res_rsv_artikel rra,
res_artikel ra,
ins_tab_discipline d,
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 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'
));
v_errormsg := 'Zoek kostenplaats';
SELECT prs_kostenplaats_key
INTO v_prs_kostenplaats_key
FROM mld_melding
WHERE mld_melding_key = v_mld_melding_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
-- de cateraar hoeft de opslag van 6,5% niet te ontvangen
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
, sysdate
, FAC.DatumTijdPlusUitvoerTijd(sysdate, 1, 'DAGEN')
, 'MLD'
, max(omschrijving)
, round((sum(bedrag)/1.065),2)
, round((sum(bedrag)/1.065),2)
, v_mld_opdr_bedrijfopdr_volgnr
FROM aaxx_verkoopbuffer
WHERE module = 'RES'
AND trunc(export_datum) = trunc(sysdate));
v_errormsg := 'Update melding status';
MLD.updatemeldingstatusAV (v_mld_melding_key, 0, v_aanvrager, 0); -- Facilitor
EXCEPTION WHEN OTHERS THEN
ROLLBACK;
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, '');
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 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
)
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
FROM prs_bedrijf
WHERE prs_bedrijf_verwijder IS NULL;
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_PRS_AFDELING
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_prs_afdeling
(
prs_afdeling_parent_naam,
prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_kostenplaats_nr,
prs_bedrijf_naam,
niveau
)
AS
SELECT ap.prs_afdeling_naam,
a.prs_afdeling_naam,
a.prs_afdeling_omschrijving,
k.prs_kostenplaats_nr,
prs_bedrijf_naam,
niveau
FROM prs_v_afdeling a,
prs_kostenplaats k,
prs_bedrijf b,
prs_afdeling ap
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(+);
-------------------------------------------------------------------------------
-- 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
)
AS
SELECT p.prs_perslid_key,
DECODE (aaxx_get_user,
'CE', a.prs_afdeling_omschrijving,
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
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_PRS_KOSTENPLAATS
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_prs_kostenplaats
(
prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_kostenplaats_budgethouder,
prs_kostenplaats_aanmaak,
prs_kostenplaats_verwijder
)
AS
SELECT k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving,
pf.prs_perslid_naam_full,
k.prs_kostenplaats_aanmaak,
k.prs_kostenplaats_verwijder
FROM prs_kostenplaats k, prs_v_perslid_fullnames_all pf
WHERE k.prs_perslid_key = pf.prs_perslid_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
)
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
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,
DECODE (
k.prs_kenmerk_kenmerktype,
'R',
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key =
fac.safe_to_number (prs_kenmerklink_waarde)),
'S',
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key =
fac.safe_to_number (prs_kenmerklink_waarde)),
'D',
TO_CHAR (
fac.safe_to_date (prs_kenmerklink_waarde, 'dd-mm-yyyy'),
'yyyy-mm-dd'),
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
(
internnr,
externnr,
beschrijving,
contractsoort,
typecontract,
versie,
status,
ingangsdatum,
rappeldatum,
opzegdatum,
einddatum,
aanmaakdatum,
verwijderdatum,
eigenaar,
beheerder,
uitvoerder,
kostenplaats,
termijnbedrag,
contractbedrag,
volgnummer,
locatie_code,
gebouw_code,
gebouw_kosten,
gebouw_gefactureerd
)
AS
SELECT 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,
prs_bedrijf_naam,
kp.prs_kostenplaats_nr,
cnt_contract_termijnkosten,
cnt_contract_kosten,
aaxx_get_cnt_cont_plaats_index (cp.cnt_contract_plaats_key),
alg_locatie_code,
COALESCE (
(SELECT exact_code
FROM aaxx_v_exact_code_gebouw ogk
WHERE ogk.alg_gebouw_key = g.alg_gebouw_key),
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)
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 pf,
alg_locatie l,
alg_gebouw g,
( 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
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.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 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 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(+);
-------------------------------------------------------------------------------
-- 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,
fin_factuurregel_nr,
fin_factuurregel_totaal,
fin_factuurregel_btw,
uplift,
incl_uplift,
fin_factuurregel_omschrijving,
fin_factuurregel_referentie
)
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'),
fr.fin_factuurregel_nr,
fr.fin_factuurregel_totaal,
ROUND (fr.fin_factuurregel_btw, 2),
uplift,
uplift * fr.fin_factuurregel_totaal,
fr.fin_factuurregel_omschrijving,
fr.fin_factuurregel_referentie
FROM fin_factuur f,
fin_factuurregel fr,
(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(+);
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_MLD_ALGEMEEN
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_mld_melding
(
mld_melding_key,
meldingnummer,
mld_melding_start_key,
alg_district_omschrijving,
locatie,
locatie_omschrijving,
alg_locatie_key,
gebouw,
gebouw_naam,
verdieping,
ruimtenr,
ruimte_omschrijving,
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,
ingezien,
geaccepteerd,
afgemeld,
doorlooptijd_werkdgn,
omschrijving,
opmerking,
object_omschrijving,
opdracht_key,
opdracht_volgnummer,
opdracht_type,
opdracht_status,
opdracht_duur_gepland,
opdracht_datum,
opdracht_verzonden,
opdracht_geaccepteerd,
opdracht_afgemeld,
opdracht_doorlooptijd,
opdracht_omschrijving,
opdracht_opmerking,
opdracht_uitvoerende,
opdracht_contract,
opdracht_behandelaar,
opdracht_behandelaar_key,
opdracht_uren,
opdracht_correctie,
opdracht_materiaal,
opdracht_uurtarief,
opdracht_kosten,
opdracht_kostenplaats,
opdracht_kostenplaats_oms
)
AS
SELECT m.mld_melding_key,
TO_CHAR (m.mld_melding_key) meldingnummer,
m.mld_melding_start_key,
alg_district_omschrijving,
alg_locatie_code locatie,
alg_locatie_omschrijving locatie_omschrijving,
l.alg_locatie_key,
og.alg_gebouw_code gebouw,
og.alg_gebouw_naam gebouw_naam,
og.alg_verdieping_code verdieping,
og.alg_ruimte_nr ruimte,
og.alg_ruimte_omschrijving ruimte_omschrijving,
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 (
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 = m.mld_melding_status)
status,
aaxx.count_work_days (m.mld_melding_datum, mld_melding_einddatum)
sla_werkdgn,
m.mld_melding_uitvoertijd plan_uitvoertijd,
m.mld_melding_datum datum,
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,
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,
m.mld_melding_omschrijving omschrijving,
m.mld_melding_opmerking opmerking,
(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,
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_verzonden opdracht_verzonden,
fac.gettrackingdate ('ORDACP', o.mld_opdr_key)
opdracht_geaccepteerd,
mld.getopdrachtstatusdate (o.mld_opdr_key, 6) opdracht_afgemeld,
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,
o.mld_opdr_uren opdracht_uren,
o.mld_opdr_kosten
- o.mld_opdr_materiaal
- (o.mld_opdr_uren * o.mld_opdr_uurloon)
opdracht_correctie,
o.mld_opdr_materiaal opdracht_materiaal,
o.mld_opdr_uurloon opdracht_uurtarief,
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
FROM mld_melding m,
mld_stdmelding s,
alg_locatie l,
alg_district d,
alg_v_allonrgoed_gegevens og,
mld_discipline md,
ins_srtdiscipline sd,
mld_opdr o
WHERE s.mld_stdmelding_key = m.mld_stdmelding_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(+)
UNION ALL
SELECT cnt_contract_key,
cnt_contract_nummer_intern
|| '.'
|| COALESCE (cnt_contract_versie, '0'),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_CHAR (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 (
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),
TO_DATE (NULL),
TO_DATE (NULL),
TO_DATE (NULL),
TO_DATE (NULL),
TO_NUMBER (NULL),
c.cnt_contract_document,
TO_CHAR (NULL),
TO_CHAR (NULL),
TO_NUMBER (NULL), -- object omschrijving
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_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_kosten,
kp.prs_kostenplaats_nr,
prs_kostenplaats_omschrijving
FROM cnt_contract c,
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.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_NUMBER (NULL),
alg_district_omschrijving,
alg_locatie_code,
alg_locatie_omschrijving,
alg_locatie_key,
alg_gebouw_code,
alg_gebouw_naam,
TO_CHAR (NULL), -- verdieping
TO_CHAR (NULL), -- ruimte_nr
TO_CHAR (NULL), -- ruimte_omschrijving
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,
besteldatum,
TO_DATE (NULL), -- datum ingezien
acceptatie_datum,
ontvangen_datum,
doorlooptijd_werkdgn,
omschrijving,
TO_CHAR (NULL), -- opmerking
TO_CHAR (NULL), -- object omschrijving
bes_bestelopdr_key,
opdr_volgnr,
'Purchase Order',
opdr_status,
DECODE (opdr_volgnr, NULL, TO_NUMBER (NULL), sla_tijd),
opdr_datum,
TO_DATE (NULL), -- opdr geaccepteerd
verzonden_datum,
opdr_ontv_datum,
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), -- 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)
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,
b.bes_bestelling_ordernr,
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,
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 =
fac.gettrackinguserkey ('BESAP2',
b.bes_bestelling_key))
invoerder,
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,
(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 alg_gebouw
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,
DECODE (
sk.mld_srtkenmerk_kenmerktype,
'R',
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key = mld_kenmerkmelding_waarde),
'S',
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key = mld_kenmerkmelding_waarde),
'D',
TO_CHAR (
fac.safe_to_date (mld_kenmerkmelding_waarde,
'dd-mm-yyyy'),
'yyyy-mm-dd'),
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,
DECODE (sk.mld_srtkenmerk_kenmerktype,
'R',
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key = mld_kenmerkopdr_waarde),
'S',
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key = mld_kenmerkopdr_waarde),
'D',
TO_CHAR (
fac.safe_to_date (mld_kenmerkopdr_waarde,
'dd-mm-yyyy'),
'yyyy-mm-dd'),
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,
nummer,
res_omschrijving,
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,
verdieping,
ruimte,
opstelling,
no_show,
mandaat,
personeelsnr,
werkplek,
ins_discipline_key,
catalogus_ins_discipline_key,
catalogus,
reserveerbare_ruimte,
bezoekers,
van,
tot,
duur,
status,
activiteit,
voorziening_ins_discipline_key,
voorziening_catalogus,
voorziening_product,
voorziening_totaalprijs,
voorziening_van,
voorziening_tot,
voorziening_aantal,
voorziening_prijs,
voorziening_inkoopprijs,
voorziening_btw,
voorziening_afgemeld
)
AS
SELECT res.res_reservering_key,
res.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_omschrijving,
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_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.opstelling,
rrr.res_rsv_ruimte_noshow,
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_activiteit_omschrijving
FROM res_activiteit ra
WHERE ra.res_activiteit_key = rrr.res_activiteit_key),
voorz.ins_discipline_key,
voorz.catalogus,
voorz.product,
voorz.totaalprijs,
voorz.van,
voorz.tot,
voorz.aantal,
voorz.prijs,
voorz.inkoopprijs,
voorz.btw,
voorz.afgemeld
FROM res_v_aanwezigrsv_ruimte rrr,
res_reservering res,
prs_kostenplaats k,
prs_perslid p,
prs_afdeling a,
( 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_rsv_ruimte_verwijder IS NULL
AND 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
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,
TO_DATE (NULL) afgemeld,
c.ins_discipline_key ins_discipline_key,
c.ins_discipline_omschrijving catalogus
FROM res_v_aanwezigrsv_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,
TO_DATE (NULL) afgemeld,
c.ins_discipline_key ins_discipline_key,
c.ins_discipline_omschrijving catalogus
FROM res_v_aanwezigrsv_artikel rra,
res_artikel ra,
ins_tab_discipline c
WHERE rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = c.ins_discipline_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_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 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
)
AS
SELECT rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
sk.res_srtkenmerk_omschrijving,
DECODE (
sk.res_srtkenmerk_kenmerktype,
'R',
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key = res_kenmerkreservering_waarde),
'S',
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key = res_kenmerkreservering_waarde),
'D',
TO_CHAR (
fac.safe_to_date (res_kenmerkreservering_waarde,
'dd-mm-yyyy'),
'yyyy-mm-dd'),
res_kenmerkreservering_waarde)
FROM res_kenmerk k,
res_srtkenmerk sk,
res_kenmerkwaarde kw,
res_v_aanwezigrsv_ruimte rrr
WHERE rrr.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,
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 =
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,
bi.bes_bestelling_item_prijs * bi.bes_bestelling_item_aantal prijs,
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,
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,
bi.bes_bestelling_item_prijs itemprijs,
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,
fkd.fac_kenmerkdomein_objectnaam,
fkd.fac_kenmerkdomein_kolomnaam,
fkd.fac_kenmerkdomein_kolomtxt,
fkd.fac_usrtab_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
AND sk.fac_kenmerkdomein_key = fkd.fac_kenmerkdomein_key(+);
-------------------------------------------------------------------------------
-- EXPORTFUNCTIE - DWH_ALG_ONRGOED
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_alg_onrgoed
(
alg_onroerendgoed_keys,
alg_onroerendgoed_code,
alg_onroerendgoed_omschrijving,
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_terreinsector_key,
alg_terreinsector_code,
alg_terreinsector_naam,
alg_gebouw_key,
alg_gebouw_code,
alg_gebouw_naam,
alg_verdieping_key,
alg_verdieping_code,
alg_verdieping_omschrijving,
alg_ruimte_key,
alg_ruimte_nr,
alg_ruimte_omschrijving
)
AS
SELECT alg_onroerendgoed_keys,
DECODE (alg_type,
'T', alg_terreinsector_code,
'G', alg_gebouw_code,
'V', alg_verdieping_code,
'R', alg_ruimte_nr),
DECODE (alg_type,
'T', alg_terreinsector_naam,
'G', alg_gebouw_naam,
'V', alg_verdieping_omschrijving,
'R', alg_ruimte_omschrijving),
DECODE (alg_type,
'T', alg_terreinsector_verwijder,
'G', alg_gebouw_verwijder,
'V', alg_verdieping_verwijder,
'R', alg_ruimte_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,
t.alg_terreinsector_key,
t.alg_terreinsector_code,
t.alg_terreinsector_naam,
g.alg_gebouw_key,
g.alg_gebouw_code,
g.alg_gebouw_naam,
v.alg_verdieping_key,
v.alg_verdieping_code,
v.alg_verdieping_omschrijving,
ru.alg_ruimte_key,
ru.alg_ruimte_nr,
ru.alg_ruimte_omschrijving
FROM alg_v_allonroerendgoed aog,
alg_ruimte ru,
alg_verdieping v,
alg_terreinsector t,
alg_gebouw g,
alg_locatie l,
alg_district d,
alg_regio r
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
UNION ALL
SELECT TO_NUMBER (NULL),
alg_locatie_code,
alg_locatie_omschrijving,
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,
TO_NUMBER (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_CHAR (NULL),
TO_CHAR (NULL)
FROM alg_locatie l, alg_district d, alg_regio r
WHERE l.alg_district_key = d.alg_district_key
AND d.alg_regio_key = r.alg_regio_key
UNION ALL
SELECT TO_NUMBER (NULL),
TO_CHAR (NULL),
alg_district_omschrijving,
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_NUMBER (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_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_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_NUMBER (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_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,
DECODE (
k.alg_kenmerk_kenmerktype,
'R',
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key =
fac.safe_to_number (alg_onrgoedkenmerk_waarde)),
'S',
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key =
fac.safe_to_number (alg_onrgoedkenmerk_waarde)),
'D',
TO_CHAR (
fac.safe_to_date (alg_onrgoedkenmerk_waarde, 'dd-mm-yyyy'),
'yyyy-mm-dd'),
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_UREN
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW aaxx_v_dwh_uren
(
mld_opdr_id,
prs_perslid_key,
datum,
uren_besteed,
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,
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_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,
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,
sn.fac_srtnotificatie_code 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;
-------------------------------------------------------------------------------
-- 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;
-------------------------------------------------------------------------------
-- GRANTS naar AAFM database.
-------------------------------------------------------------------------------
GRANT SELECT ON aaxx_v_dwh_prs_bedrijf TO aafm;
GRANT SELECT ON aaxx_v_dwh_cnt_contract 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_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_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_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_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_lcrap_key_stats TO aafm;
--=============================================================================
-- 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,
leveranciernr,
factuurnr,
factuurdatum,
ordernr,
locatie,
afleverdatum,
omschrijving,
aantal,
kostprijs,
btwbedrag,
btw,
docid,
debiteurnummer,
opmerking,
lastinvoice,
btwverlegd,
gebouw,
orderomschrijving
)
AS
SELECT prs_bedrijf_naam bedrijfsnaam,
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
FROM prs_bedrijf b,
mld_opdr o,
mld_melding m,
mld_typeopdr ot
WHERE o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND o.mld_melding_key = m.mld_melding_key
AND o.mld_statusopdr_key = 9 -- Afgerond
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND ( ot.mld_typeopdr_omschrijving = 'Workorder'
OR ot.mld_typeopdr_omschrijving = 'Projectorder')
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, 'DSM', 321, -- Reden 0 order
'ENEXIS', 221,
'FPC', 1,
'IT', 381,
'NS', 661,
'SABIC', 34,
2
)
);
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_empty);
-- 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_kenmerk1: 17
-- v_kenmerk1: 18
-- v_kenmerk1: 19
-- v_kenmerk1: 20
-- 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);
-- 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';
fac_import_factuur_body(p_import_key, v_seq_of_columns);
END;
/
CREATE OR REPLACE PROCEDURE aaxx_update_factuur (p_import_key IN NUMBER)
AS
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 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);
END;
/
--------------------------------
-- 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_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';
v_aanduiding := '';
v_ongeldig := 0;
IF (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);
--
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);
--
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
IF v_gebouw_code IS NOT NULL
THEN
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,
fac.safe_to_number (
REPLACE (v_bedrag, ',', '.')),
fac.safe_to_number (
REPLACE (v_termijnbedrag, ',', '.')),
v_dienst,
SUBSTR(v_contractsoort,1,30),
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 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 DISTINCT contractsoort
FROM aaxx_imp_contract
WHERE NOT EXISTS
(SELECT ins_discipline_key
FROM cnt_discipline
WHERE UPPER (TRIM (ins_discipline_omschrijving)) =
UPPER (TRIM (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 := ' 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_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,
rec.bedrag,
rec.termijnbedrag,
v_bedrijf_key,
v_afdeling_key,
v_discipline_key,
v_perslid_man_key,
v_perslid_key,
v_kostenplaats_key,
rec.versie,
1,
1)
RETURNING cnt_contract_key
INTO v_contract_key;
IF rec.contractnummer IS NULL
THEN
UPDATE cnt_contract
SET cnt_contract_nummer = cnt_contract_key,
cnt_contract_nummer_intern = cnt_contract_key,
cnt_contract_versie = '0'
WHERE cnt_contract_key = v_contract_key;
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 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 personen die gedefinieerd zijn in de AAIT database ook in
-- de klantdatabase toe te voegen.
-- 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 i.*, p.prs_perslid_key, p.prs_perslid_nr
FROM aait.aait_imp_perslid i,
(SELECT prs_perslid_key, prs_perslid_nr, prs_kenmerklink_waarde aafm_prs_perslid_nr
FROM prs_perslid p, prs_kenmerklink kl
WHERE p.prs_perslid_key = kl.prs_link_key
AND kl.prs_kenmerk_key = 3) p
WHERE i.personeelsnummer = p.aafm_prs_perslid_nr(+)
AND i.personeelsnummer <> 'N/A';
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_errormsg VARCHAR2 (1000);
v_error_hint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (2000);
BEGIN
v_errormsg := 'Check of autorisatiegroep al bestaat';
IF aaxx_get_user = 'DSM'
THEN
v_prs_bedrijf_naam := 'DERDEN';
ELSE
v_prs_bedrijf_naam := 'AAFM';
END IF;
BEGIN
SELECT fac_groep_key
INTO v_fac_groep_key
FROM fac_groep
WHERE UPPER (fac_groep_omschrijving) = 'AAFM PROJECTUREN';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO fac_groep (fac_groep_omschrijving)
VALUES ('AAFM Projecturen')
RETURNING fac_groep_key
INTO v_fac_groep_key;
END;
-- Check of bedrijf AAFM 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 = 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 ('AAFM', 1)
RETURNING prs_bedrijf_key
INTO v_prs_bedrijf_key;
END;
-- Check of afdeling AAFM al bestaat
v_errormsg := 'Check of afdeling bestaat';
BEGIN
IF aaxx_get_user = 'DSM'
THEN
SELECT prs_afdeling_key
INTO v_prs_afdeling_key
FROM prs_afdeling
WHERE prs_afdeling_naam = '284'
AND prs_bedrijf_key = v_prs_bedrijf_key
AND prs_afdeling_verwijder IS NULL;
ELSE
SELECT prs_afdeling_key
INTO v_prs_afdeling_key
FROM prs_afdeling
WHERE prs_afdeling_omschrijving = 'AAFM'
AND prs_bedrijf_key = v_prs_bedrijf_key
AND prs_afdeling_verwijder IS NULL;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO prs_afdeling (prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_bedrijf_key)
VALUES ('AAFM', 'AAFM', 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
-- 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 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_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,
NULL,
fac.safe_to_number (
REPLACE (rec.dienstverband, ',', '.')),
fac.safe_to_number (REPLACE (rec.uurloon, ',', '.')))
RETURNING prs_perslid_key
INTO v_prs_perslid_key;
-- aangezien het personeelsnummer de key is naar de importtabel mag
-- deze alleen aangemaakt worden als een nieuw perslidrecord wordt
-- toegevoegd.
v_errormsg :=
'Toevoegen persoonsnummer kenmerk ' || v_prs_perslid_key;
aaxx.set_prs_kenmerk (p_import_key,
'P',
3,
v_prs_perslid_key,
rec.personeelsnummer);
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 = SUBSTR(rec.telefoonnummer,1,15),
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_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 (key = 1).
DELETE fac_gebruikersgroep
WHERE fac_groep_key = 1
AND prs_perslid_key = v_prs_perslid_key;
END IF;
-- voeg iedereen toe aan de gebruikersgroep AAFM projecturen
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);
v_errormsg := 'Toevoegen kostenplaats kenmerk ' || v_prs_perslid_key;
IF v_prs_perslid_key IS NOT NULL THEN
aaxx.set_prs_kenmerk (p_import_key,
'P',
2,
v_prs_perslid_key,
rec.kostenplaats);
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);
END;
/
-------------------------------------------------------------------------------
-- 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 (1000);
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);
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 NO_DATA_FOUND 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
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 || ']';
v_datumtijd :=
fac.safe_to_date (
REPLACE (
SUBSTR (v_datumtijd_tekst,
1,
INSTR (v_datumtijd_tekst, '.') - 1),
'T',
' '),
'yyyy-mm-dd hh24:mi:ss');
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(v_mld_opdr_opmerking, 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,
replace(v_opmerking, '@@',CHR (13)));
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
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'');
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 :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || 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;
IF aaxx_get_user = 'SABIC' THEN v_mld_srtkenmerk_key := 35; END IF;
IF aaxx_get_user = 'ENEXIS' THEN v_mld_srtkenmerk_key := 381; END IF;
IF aaxx_get_user = 'ESSENT' THEN v_mld_srtkenmerk_key := 741; END IF;
IF aaxx_get_user = 'NS' THEN v_mld_srtkenmerk_key := 761; END IF;
IF aaxx_get_user = 'DSM' THEN v_mld_srtkenmerk_key := 123; END IF;
IF aaxx_get_user = 'DSM'
THEN
v_user_key := 6524;
ELSE
v_user_key := 4;
END IF;
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
UPDATE mld_melding
SET mld_melding_opmerking =
DECODE (
mld_melding_opmerking,
NULL,
rec.opmerking,
rec.opmerking || CHR (13) || CHR (10)
|| SUBSTR (mld_melding_opmerking,
1,
(4000 - v_count)))
WHERE mld_melding_key = v_mld_key
AND mld_melding_status IN (v_user_key, 7);
v_errormsg := 'Fout bij sluiten melding.';
SELECT COUNT ( * )
INTO v_count
FROM (SELECT m.mld_melding_key,
(SELECT COUNT ( * )
FROM mld_opdr o
WHERE mld_melding_key = m.mld_melding_key)
aanw_opdr,
(SELECT COUNT ( * )
FROM mld_opdr o
WHERE mld_melding_key = m.mld_melding_key
AND o.mld_statusopdr_key NOT IN
(1, 2, 6, 7, 9))
open_opdr
FROM mld_melding m
WHERE m.mld_melding_key = v_mld_key
AND m.mld_melding_status IN (v_user_key, 7))
niet_opgelost
WHERE aanw_opdr > 0 AND open_opdr = 0;
IF (v_count = 1)
THEN
MLD.setmeldingstatus (v_mld_key, 5, v_user_key); -- Facilitor
MLD.mld_nextworkflowstep (v_mld_key, 1); -- Succes
ELSE
BEGIN
MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0);
END;
END IF;
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;
/
-------------------------------------------------------------------------------
-- 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 nvl (p.prs_perslid_oslogin, 'QueQueLeQue') NOT LIKE '\_%' ESCAPE '\';
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_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;
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
)
AS
SELECT cnt_contract_nummer_intern * 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
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
AND c.cnt_contract_looptijd_tot
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 (cnt_contract_nummer_intern * 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
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
AND c.cnt_contract_looptijd_tot
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_gegevens (
vakgroeptype,
vakgroep,
melding,
groep,
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,
m.mld_stdmelding_urgentie,
m.mld_stdmelding_uitvoertijd,
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;
-- 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_orderadres,
stylesheet
)
AS
SELECT prs_bedrijf_naam,
prs_bedrijf_bezoek_plaats,
prs_leverancier_nr,
prs_bedrijf_email,
prs_bedrijf_mldorder_adres,
prs_bedrijf_xsl
FROM prs_bedrijf
WHERE prs_bedrijf_verwijder IS NULL AND NVL (prs_bedrijf_intern, 0) <> 1;
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 (
(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 ( ( aaxx_get_user = 'ENEXIS' AND ogk.alg_onrgoed_key = g.alg_locatie_key)
OR ( aaxx_get_user <> 'ENEXIS' AND ogk.alg_onrgoed_key = g.alg_gebouw_key)
)
AND k.alg_kenmerk_key =
DECODE (aaxx_get_user, 'BT', 1020,
'CE', 1040,
'DSM', 1180,
'ENEXIS', 1140, -- locatie niveau
'ESSENT', 1040,
'FPC', 1020,
'IT', 1060,
'NS', 1160,
'NXP', 1020,
'SABIC', 1040,
1000)),
'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, 'DSM', 1160, -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_omschrijving,
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,
prs_bedrijf b,
alg_v_onroerendgoed alg,
alg_gebouw g,
alg_locatie l,
alg_district d,
(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 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 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;
CREATE OR REPLACE VIEW aaxx_v_rap_catering_export
(
RESERVERING,
FCLT_F_AFDELINGSCODE,
AFDELINGS_OMSCHRIJVING,
BOEKINGSDATUM,
AFMELDDATUM,
FCLT_F_PERIODE,
AANVRAGER,
GEBOUW,
BTW,
TOTAAL
)
AS
SELECT reservering,
kostenplaats_nr,
kostenplaats,
boekingsdatum,
afmelddatum,
periode,
aanvrager,
gebouw,
TO_CHAR (btw),
SUM (totaalprijs)
FROM (SELECT rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
reservering,
k.prs_kostenplaats_nr kostenplaats_nr,
k.prs_kostenplaats_omschrijving kostenplaats,
res_rsv_artikel_levering boekingsdatum,
res_rsv_artikel_afgemeld afmelddatum,
TO_CHAR (ADD_MONTHS (rra.res_rsv_artikel_verwerkt, -1),
'yyyy-mm')
periode,
pf.prs_perslid_naam_full aanvrager,
g.alg_gebouw_code gebouw,
ra.res_artikel_btw btw,
rra.res_rsv_artikel_prijs totaalprijs
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 DISTINCT
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(+))
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(+))
GROUP BY reservering,
kostenplaats_nr,
kostenplaats,
boekingsdatum,
afmelddatum,
periode,
aanvrager,
gebouw,
btw;
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
)
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
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;
-------------------------------------------------------------------------------
-- 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
|| '")''>'
|| 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 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 alg_gebouw_omschrijving
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 alg_gebouw
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_uitvoertijd,
'DAGEN')
- COALESCE (
fac.gettrackingdate (
'MLDREJ',
m.mld_melding_key),
COALESCE (
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_urgentie,
'UREN')
- COALESCE (
fac.gettrackingdate ('MLDREJ',
m.mld_melding_key),
COALESCE (
fac.gettrackingdate ('MLDACP',
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_uitvoertijd,
'DAGEN')
- COALESCE (
fac.gettrackingdate (
'MLDREJ',
m.mld_melding_key),
COALESCE (
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 <> 'IT' OR d.ins_srtdiscipline_key = 22) -- IT helpdesk
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',
'ENEXIS', 'Enexis',
'ARCADIS', 'Arcadis',
'AAFM')
|| ' bevestigingmail afspraak '
|| TO_CHAR (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,
kw.bez_kenmerkwaarde_waarde xemail,
NULL xmobile
FROM fac_tracking t,
bez_afspraak a,
bez_bezoekers b,
bez_kenmerkwaarde kw
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 = kw.bez_bezoekers_key
AND kw.bez_kenmerk_key = DECODE (aaxx_get_user, 'ESSENT', 1001,
'IT', 1022,
'ARCADIS', 1003,
'ENEXIS', 1023);
-- 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,
gastheer.prs_perslid_naam_full 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,
alg_gebouw_omschrijving 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,
gastheer.prs_perslid_naam_full 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';
/* Formatted on 9-11-2012 12:12:12 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW aaxx_v_rap_mld_qrc
(
fclt_3d_locatie_key,
fclt_3d_discipline_key,
fclt_f_soortmelding,
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_verdieping,
plaats,
ruimtefunctie,
fclt_f_objectdiscipline,
fclt_f_objectgroep,
objectsoort_key,
fclt_f_objectsoort,
objectsoort_code,
ins_deel_key,
ins_deel_omschrijving,
ins_deel_upper,
--ins_alg_ruimte_key,
--ins_alg_ruimte_type,
hide_f_bookmark_id
)
AS
SELECT l.alg_locatie_key,
disc.ins_discipline_key,
msd.mld_stdmelding_omschrijving,
l.alg_locatie_omschrijving,
o.alg_gebouw_omschrijving,
o.alg_verdieping_omschrijving,
o.alg_plaatsaanduiding plaats,
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,
--d.ins_alg_ruimte_key,
--d.ins_alg_ruimte_type,
b.fac_bookmark_id
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,
sm.ins_srtinst_key ins_srtdeel_key
FROM mld_stdmelding sm
WHERE sm.mld_stdmelding_verwijder IS NULL
AND sm.ins_srtinst_niveau = 'S'
UNION ALL
SELECT sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
sd.ins_srtdeel_key
FROM mld_stdmelding sm, ins_srtdeel sd
WHERE sm.mld_stdmelding_verwijder IS NULL
AND sm.ins_srtinst_niveau = 'G'
AND sm.ins_srtinst_key = sd.ins_srtgroep_key
UNION ALL
SELECT sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
sd.ins_srtdeel_key
FROM mld_stdmelding sm, ins_srtgroep sg, ins_srtdeel sd
WHERE sm.mld_stdmelding_verwijder IS NULL
AND sm.ins_srtinst_niveau = 'D'
AND sm.ins_srtinst_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;
-- AAFM#26513 Notificatie goedgekeurde offerte naar autorisatiegroep "AAFM 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)
-- Bestemming zijn de personen(0..n) in autorisatiegroep AAFM 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_functie f,
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 = 'AAFM SERVICEDESK'
AND gg.fac_groep_key = g.fac_groep_key;
BEGIN adm.systrackscript('$Workfile: aaxx.sql $', '$Revision$', 0); END;
/
COMMIT;