AAZC#34674 -- ZKHM toegevoegd.

svn path=/Customer/trunk/; revision=27765
This commit is contained in:
Arthur Egberink
2016-01-14 12:40:43 +00:00
parent df16a9c002
commit 081b0c6bb7

816
AA/ZKHM/zkhm.sql Normal file
View File

@@ -0,0 +1,816 @@
-- Script containing customer specific configuration sql statements for zkhm: Arcadis Aqumen Facility Management
-- (c) 2005-2007 Dijkoraad IT bv
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800700
@aaxx.sql;
SPOOL xzkhm.lst
SET ECHO ON
-- script om dagelijks terugkerende scripts aan te roepen.
CREATE OR REPLACE PROCEDURE zkhm_select_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
aaxx_daily_task (p_applname, p_applrun);
END;
/
-- budgettracker overrules
CREATE OR REPLACE VIEW zkhm_v_export_budget_tracker (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_budget_tracker;
-- export overrules
-- exact
CREATE OR REPLACE VIEW zkhm_v_export_exact (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_xml;
CREATE OR REPLACE PROCEDURE zkhm_select_exact (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
aaxx_select_exact_xml(p_applname, p_applrun);
END;
/
CREATE OR REPLACE PROCEDURE zkhm_export_exact (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_exact(p_applname, p_applrun, p_filedir, p_filename);
END;
/
CREATE OR REPLACE VIEW zkhm_v_export_verwerk_exact (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_verwerk_exact;
CREATE OR REPLACE PROCEDURE zkhm_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(p_applname, p_applrun, p_filedir, p_filename);
END;
/
-- bundel catering
CREATE OR REPLACE VIEW zkhm_v_export_bundel_catering (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_bundel_catering;
-- exact verkoop
CREATE OR REPLACE VIEW zkhm_v_export_exact_verkoop (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop;
CREATE OR REPLACE PROCEDURE zkhm_select_exact_verkoop (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
aaxx_select_exact_verkoop(p_applname, p_applrun, to_char(sysdate, 'yyyy'));
END;
/
CREATE OR REPLACE PROCEDURE zkhm_export_exact_verkoop (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_exact_verkoop(p_applname, p_applrun, p_filedir, p_filename, to_char(sysdate, 'yyyy'));
END;
/
-- exact verkoop over het vorige jaar
CREATE OR REPLACE VIEW zkhm_v_export_exact_verkoop_vj (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop;
CREATE OR REPLACE PROCEDURE zkhm_select_exact_verkoop_vj (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
aaxx_select_exact_verkoop(p_applname, p_applrun, to_char(to_number(to_char(sysdate, 'yyyy'))-1));
END;
/
CREATE OR REPLACE PROCEDURE zkhm_export_exact_verkoop_vj (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_exact_verkoop(p_applname, p_applrun, p_filedir, p_filename, to_char(to_number(to_char(sysdate, 'yyyy'))-1));
END;
/
CREATE OR REPLACE PROCEDURE zkhm_import_contract (p_import_key IN NUMBER)
AS
BEGIN
aaxx_import_contract(p_import_key);
END;
/
CREATE OR REPLACE PROCEDURE zkhm_update_contract (p_import_key IN NUMBER)
AS
BEGIN
aaxx_update_contract(p_import_key);
END;
/
CREATE OR REPLACE PROCEDURE zkhm_import_ruimte (p_import_key IN NUMBER)
AS
BEGIN
aaxx_import_ruimte(p_import_key);
END;
/
CREATE OR REPLACE PROCEDURE zkhm_update_ruimte (p_import_key IN NUMBER)
AS
BEGIN
aaxx_update_ruimte(p_import_key);
END;
/
CREATE OR REPLACE PROCEDURE zkhm_export_bundel_catering (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_bundel_catering(p_applname, p_applrun, p_filedir, p_filename);
END;
/
-- exact projecturen (XML)
CREATE OR REPLACE VIEW zkhm_v_export_exact_uren (result, result_order)
AS SELECT result, result_order FROM aaxx_v_export_exact_uren_xml;
CREATE OR REPLACE PROCEDURE zkhm_select_exact_uren (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
aaxx_select_exact_uren_xml(p_applname, p_applrun, '');
END;
/
-- verwerk exact projecturen (XML)
CREATE OR REPLACE PROCEDURE zkhm_export_verwerk_exact_uren (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_verwerk_exact_uren(p_applname, p_applrun, p_filedir, p_filename, '');
END;
/
CREATE OR REPLACE PROCEDURE zkhm_import_perslid_mut (p_import_key IN NUMBER)
AS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000); -- Input line
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count NUMBER;
v_ongeldig NUMBER (1);
v_mode NUMBER (1);
v_aanduiding VARCHAR2 (200);
v_all_null BOOLEAN;
v_count_error NUMBER (10);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
-- De importvelden:
v_alg_locatie_code VARCHAR2 (256);
v_alg_gebouw_code VARCHAR2 (256);
v_alg_verdieping_volgnr VARCHAR2 (256);
v_alg_verdieping_volgnr_num NUMBER (3);
v_alg_ruimte_nr VARCHAR2 (256);
v_prs_werkplek_volgnr VARCHAR2 (256);
v_prs_werkplek_volgnr_num NUMBER (3);
v_prs_werkplek_omschrijving VARCHAR2 (256);
v_prs_afdeling_naam VARCHAR2 (256);
v_prs_afdeling_omschrijving VARCHAR2 (256);
v_prs_perslid_naam VARCHAR2 (256);
v_prs_perslid_tussenvoegsel VARCHAR2 (256);
v_prs_perslid_voorletters VARCHAR2 (256);
v_prs_perslid_voornaam VARCHAR2 (256);
v_prs_perslid_titel VARCHAR2 (256);
v_prs_perslid_telefoonnr VARCHAR2 (256);
v_prs_perslid_mobiel VARCHAR2 (256);
v_prs_perslid_email VARCHAR2 (256);
v_prs_srtperslid_omschrijving VARCHAR2 (256);
v_prs_perslid_nr VARCHAR2 (256);
v_prs_perslid_oslogin VARCHAR2 (256);
v_old_login VARCHAR2 (256);
v_dummy VARCHAR2 (256);
v_tekst VARCHAR2 (4000);
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
-- cursor om de tussenvoegsels goed in te kunnen vullen. Deze staan nu achter de achternaam.
CURSOR c (p_persoonachternaam VARCHAR2)
IS
SELECT fac_usrdata_omschr
FROM fac_usrdata u
WHERE UPPER(p_persoonachternaam) LIKE '%' || ' ' || UPPER(u.fac_usrdata_omschr)
AND fac_usrtab_key = 61
ORDER BY LENGTH (fac_usrdata_omschr) DESC;
BEGIN
DELETE FROM fac_imp_perslid;
COMMIT;
v_count_error := 0;
header_is_valid := 0;
v_count_tot := 0;
v_count_import := 0;
v_aanduiding := '';
v_old_login := 'QueQeLeQue';
FOR rec1 IN c1
LOOP
BEGIN
v_errormsg := 'Fout FETCH te importeren rij';
v_newline := rec1.fac_imp_file_line;
v_errormsg := '';
v_errorhint := 'Fout opvragen te importeren rij';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
-- 01
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam);
-- 02
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_oslogin);
-- 03
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_telefoonnr);
-- 04
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
-- 05
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_ruimte_nr);
-- 06
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_srtperslid_omschrijving);
-- 07
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_omschrijving);
-- 08 kostenplaats
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_naam);
-- 09
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr);
-- 10 Vestiging
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
-- 11 Gebouw
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
-- 12
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_gebouw_code);
-- 13
fac.imp_getfield (v_newline, c_fielddelimitor, v_tekst);
--
v_aanduiding := v_prs_perslid_naam || ' - ';
-- Controleer alle veldwaarde
IF (header_is_valid = 0)
THEN
IF UPPER (v_prs_perslid_naam) = 'PERSOON'
AND UPPER (v_prs_perslid_oslogin) = 'LOGINNAAMNETWERK'
AND UPPER (v_alg_gebouw_code) = 'CODE BOUWDEEL'
THEN
IF v_tekst IS NULL -- tekst kolom bevat cr/lf die niet door de import begrepen worden.
THEN
header_is_valid := 1;
END IF;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
v_errorhint := 'Ongeldige kamer';
v_alg_locatie_code := NULL;
v_alg_gebouw_code := NULL;
v_alg_verdieping_volgnr := NULL;
IF v_alg_ruimte_nr IS NOT NULL
THEN
BEGIN
SELECT alg_locatie_code, alg_gebouw_upper, alg_verdieping_volgnr
INTO v_alg_locatie_code, v_alg_gebouw_code, v_alg_verdieping_volgnr
FROM alg_v_ruimte_gegevens
WHERE alg_ruimte_nr = v_alg_ruimte_nr;
EXCEPTION WHEN OTHERS THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || ' [' || v_alg_ruimte_nr || ']', v_errorhint);
v_alg_ruimte_nr := NULL;
END;
END IF;
--
v_errorhint := 'Ongeldige afdelingscode';
IF v_prs_afdeling_naam IS NULL OR v_prs_afdeling_naam = 'BLANKO'
THEN
v_prs_afdeling_naam := 'Onbekend';
ELSE
v_prs_afdeling_naam := SUBSTR(v_prs_afdeling_naam, 1, 4);
END IF;
BEGIN
SELECT prs_afdeling_naam
INTO v_prs_afdeling_naam
FROM prs_afdeling
WHERE UPPER(prs_afdeling_naam) = UPPER(v_prs_afdeling_naam)
AND prs_afdeling_verwijder IS NULL;
EXCEPTION WHEN NO_DATA_FOUND THEN
fac.imp_writelog (p_import_key, 'E', v_aanduiding, v_prs_afdeling_naam || ' - Afdeling kan niet gevonden worden!');
v_prs_afdeling_naam := NULL;
END;
--
v_errorhint := 'Ongeldige naam persoon';
-- verwijder de tussenvoegsels
v_prs_perslid_tussenvoegsel := NULL;
FOR rec1 IN c (v_prs_perslid_naam)
LOOP
BEGIN
IF v_old_login <> v_prs_perslid_oslogin THEN
v_prs_perslid_tussenvoegsel := rec1.fac_usrdata_omschr;
v_prs_perslid_naam := TRIM(SUBSTR (v_prs_perslid_naam, 1, INSTR(v_prs_perslid_naam, rec1.fac_usrdata_omschr)-2));
v_old_login := v_prs_perslid_oslogin;
END IF;
END;
END LOOP;
v_prs_perslid_voorletters := NULL;
IF INSTR(v_prs_perslid_naam, ',') >0 THEN
-- achternaam bevat ook voornaam
v_prs_perslid_voornaam := substr(v_prs_perslid_naam, INSTR(v_prs_perslid_naam, ',')+2);
IF INSTR(v_prs_perslid_voornaam, '.') <> 0
THEN -- voorletters ipv voornaam
v_prs_perslid_voorletters := SUBSTR(v_prs_perslid_voornaam,1,10);
v_prs_perslid_voornaam := NULL;
END IF;
v_prs_perslid_naam := substr(v_prs_perslid_naam, 1, INSTR(v_prs_perslid_naam, ',') -1);
END IF;
-- todo: moeten we nog checken op voorletters?
--
v_errorhint := 'Ongeldige telefoonnr. persoon';
v_prs_perslid_telefoonnr := TRIM (v_prs_perslid_telefoonnr);
IF LENGTH (v_prs_perslid_telefoonnr) > 15
THEN
v_prs_perslid_telefoonnr := SUBSTR (v_prs_perslid_telefoonnr, 1, 15);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Telefoonnr. persoon is te lang',
'Aanduiding wordt afgebroken tot [' || v_prs_perslid_telefoonnr || ']'
);
END IF;
--
v_errorhint := 'Ongeldige email persoon';
v_prs_perslid_email := TRIM (v_prs_perslid_email);
IF LENGTH (v_prs_perslid_email) > 200
THEN
v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 200);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Email persoon is te lang',
'Aanduiding wordt afgebroken tot [' || v_prs_perslid_email || ']'
);
END IF;
--
v_errorhint := 'Ongeldige functie persoon';
v_prs_srtperslid_omschrijving := TRIM (v_prs_srtperslid_omschrijving);
IF v_prs_srtperslid_omschrijving IS NULL
THEN
v_prs_srtperslid_omschrijving := 'Onbekend';
END IF;
IF LENGTH (v_prs_srtperslid_omschrijving) > 60
THEN
v_prs_srtperslid_omschrijving := SUBSTR (v_prs_srtperslid_omschrijving, 1, 60);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Functie-aanduiding persoon is te lang',
'Aanduiding wordt afgebroken tot [' || v_prs_srtperslid_omschrijving || ']'
);
ELSE
IF (v_prs_srtperslid_omschrijving IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'E',
v_aanduiding,
'Functie persoon moet worden opgegeven'
);
END IF;
END IF;
--
v_errorhint := 'Ongeldige persoonnr.';
v_prs_perslid_nr := TRIM (v_prs_perslid_nr);
IF fac.safe_to_number(v_prs_perslid_nr) IS NULL
THEN
v_prs_perslid_nr := NULL;
END IF;
IF LENGTH (v_prs_perslid_nr) > 16
THEN
v_prs_perslid_nr := SUBSTR (v_prs_perslid_nr, 1, 16);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Persoonnr. persoon is te lang',
'Aanduiding wordt afgebroken tot [' || v_prs_perslid_nr || ']'
);
END IF;
--
v_errorhint := 'Ongeldige loginnaam';
v_prs_perslid_oslogin := TRIM (v_prs_perslid_oslogin);
IF LENGTH (v_prs_perslid_oslogin) > 30
THEN
v_prs_perslid_oslogin := SUBSTR (v_prs_perslid_oslogin, 1, 30);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Loginnaam persoon is te lang',
'Aanduiding wordt afgebroken tot [' || v_prs_perslid_oslogin || ']'
);
END IF;
--
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
v_errormsg := 'Fout bij toevoegen te impoteren bedrijf/afdeling [' || v_prs_afdeling_naam || ']';
INSERT INTO fac_imp_perslid (
alg_locatie_code,
alg_gebouw_code,
alg_verdieping_volgnr,
alg_ruimte_nr,
prs_werkplek_volgnr,
prs_werkplek_omschrijving,
prs_afdeling_naam,
prs_perslid_naam,
prs_perslid_tussenvoegsel,
prs_perslid_voorletters,
prs_perslid_voornaam,
prs_perslid_telefoonnr,
prs_perslid_email,
prs_srtperslid_omschrijving,
prs_perslid_nr,
prs_perslid_oslogin
)
VALUES (
v_alg_locatie_code,
v_alg_gebouw_code,
v_alg_verdieping_volgnr,
v_alg_ruimte_nr,
v_prs_werkplek_volgnr,
v_prs_werkplek_omschrijving,
v_prs_afdeling_naam,
v_prs_perslid_naam,
v_prs_perslid_tussenvoegsel,
v_prs_perslid_voorletters,
v_prs_perslid_voornaam,
v_prs_perslid_telefoonnr,
v_prs_perslid_email,
v_prs_srtperslid_omschrijving,
v_prs_perslid_nr,
UPPER(v_prs_perslid_oslogin)
);
v_count_import := v_count_import + 1;
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || 'Ongeldig importbestand',
'Geen geldige headerregel aanwezig'
);
ELSE
fac.imp_writelog (p_import_key, 'S', 'Persoon: aantal ingelezen regels: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key,
'S',
'Persoon: aantal ongeldige importregels: ' || TO_CHAR (v_count_tot - v_count_import),
''
);
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint);
END zkhm_import_perslid_mut;
/
CREATE OR REPLACE PROCEDURE zkhm_update_perslid_mut (p_import_key IN NUMBER)
IS
CURSOR c_del
IS
SELECT prs_perslid_key,
prs_perslid_naam,
prs_perslid_oslogin,
prs_perslid_oslogin2,
prs_perslid_login,
(SELECT COUNT ( * )
FROM prs_v_verplichting v
WHERE v.prs_perslid_key = p.prs_perslid_key)
verplichtingen
FROM prs_perslid p
WHERE NOT EXISTS
(SELECT prs_perslid_key
FROM fac_imp_perslid i
WHERE p.prs_perslid_oslogin = UPPER (i.prs_perslid_oslogin)
OR p.prs_perslid_oslogin2 = UPPER (i.prs_perslid_oslogin))
AND prs_afdeling_key <> 21 -- AAFM medewerkers gaan we niet verwijderen.
AND prs_perslid_verwijder IS NULL
AND (prs_perslid_oslogin NOT LIKE '/_%' ESCAPE ('/')
OR prs_perslid_oslogin IS NULL);
v_count NUMBER;
v_aanduiding VARCHAR2(100);
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
SELECT count(*)
INTO v_count
FROM fac_imp_perslid;
IF v_count > 3000 THEN
-- generic update
aaxx.fac_gen_update_perslid (p_import_key, 'LOGIN', 1, '');
FOR rec IN c_del
LOOP
BEGIN
v_aanduiding := rec.prs_perslid_naam||' ('
|| rec.prs_perslid_oslogin||'/'||rec.prs_perslid_oslogin2||') ';
UPDATE prs_perslid p
SET prs_perslid_oslogin = NULL,
prs_perslid_oslogin2 = NULL
WHERE p.prs_perslid_key = rec.prs_perslid_key;
IF rec.verplichtingen = 0 THEN
UPDATE prs_perslid p
SET prs_perslid_verwijder = sysdate
WHERE p.prs_perslid_key = rec.prs_perslid_key;
fac.imp_writelog (p_import_key, 'I', v_aanduiding || '- Persoon is verwijderd', '');
ELSE
UPDATE prs_perslid p
SET prs_perslid_naam = substr('Inactief ' || prs_perslid_naam, 1,60)
WHERE p.prs_perslid_key = rec.prs_perslid_key
AND p.prs_perslid_naam not like 'Inactief%';
fac.imp_writelog (p_import_key, 'I', v_aanduiding || '- Persoon is als Inactief gemarkeerd', '');
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Fout bij verwijderen persoon.'
);
END;
END LOOP;
ELSE
fac.imp_writelog (p_import_key, 'E', 'Te weinig records in personenbestand [' || v_count || ']', '');
END IF;
END;
/
CREATE OR REPLACE VIEW zkhm_v_rap_catering
(
naam,
gastheer,
kostenplaats,
locatie,
gebouw,
verdieping,
ruimte,
reserveringnr,
fclt_d_datum,
van,
tot,
status,
artikel,
aantal,
prijs,
totaal
)
AS
SELECT pf_c.prs_perslid_naam_full pfc,
pf_h.prs_perslid_naam_full pfh,
k.prs_kostenplaats_nr || '-' || prs_kostenplaats_omschrijving,
rg.alg_locatie_omschrijving,
rg.alg_gebouw_omschrijving,
rg.alg_verdieping_omschrijving,
rg.alg_ruimte_nr,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr resnr,
TO_CHAR (rrr.res_rsv_ruimte_van, 'dd-mm-yyyy'),
TO_CHAR (rrr.res_rsv_ruimte_van, 'hh24:mi') van,
TO_CHAR (rrr.res_rsv_ruimte_tot, 'hh24:mi') tot,
s.res_status_bo_omschrijving,
rrp.omschrijving,
rrp.aantal,
rrp.artikel_prijs,
rrp.prijs
FROM res_rsv_ruimte rrr,
(SELECT rrr.res_rsv_ruimte_key,
ra.res_artikel_omschrijving omschrijving,
rra.res_rsv_artikel_aantal aantal,
round(res.getartikelprijs (rra.res_rsv_artikel_key)/rra.res_rsv_artikel_aantal,2) artikel_prijs,
res.getartikelprijs (rra.res_rsv_artikel_key) prijs,
rra.res_status_bo_key
FROM res_rsv_ruimte rrr, res_rsv_artikel rra, res_artikel ra
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key
AND rra.res_rsv_artikel_verwijder IS NULL
UNION
SELECT rrr.res_rsv_ruimte_key,
'Ruimte',
1 aantal,
res.getruimteprijs (rrr.res_rsv_ruimte_key) artikel_prijs,
res.getruimteprijs (rrr.res_rsv_ruimte_key) prijs,
rrr.res_status_bo_key
FROM res_rsv_ruimte rrr
WHERE res.getruimteprijs (rrr.res_rsv_ruimte_key) <> 0
AND res_rsv_ruimte_verwijder IS NULL) rrp,
prs_v_perslid_fullnames_all pf_h,
prs_v_perslid_fullnames_all pf_c,
prs_kostenplaats k,
res_status_bo s,
( SELECT MAX (alg_ruimte_key) alg_ruimte_key, res_rsv_ruimte_key
FROM res_v_rsv_ruimte_2_alg_ruimte
GROUP BY res_rsv_ruimte_key
UNION ALL
SELECT alg_ruimte_key, res_rsv_ruimte_key
FROM res_rsv_ruimte
WHERE alg_ruimte_key IS NOT NULL) r,
alg_v_ruimte_gegevens rg
WHERE res_activiteit_key <> 30
AND rrp.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_host_key = pf_h.prs_perslid_key
AND rrr.res_rsv_ruimte_contact_key = pf_c.prs_perslid_key
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND rrr.res_rsv_ruimte_key = r.res_rsv_ruimte_key
AND r.alg_ruimte_key = rg.alg_ruimte_key
AND rrp.res_status_bo_key = s.res_status_bo_key;
CREATE OR REPLACE VIEW zkhm_v_rap_catering_derden
(
naam,
gastheer,
kostenplaats,
locatie,
gebouw,
verdieping,
ruimte,
client,
geboortedatum,
reserveringnr,
fclt_d_datum,
van,
tot,
status,
artikel,
aantal,
prijs,
totaal
)
AS
SELECT pf_c.prs_perslid_naam_full pfc,
pf_h.prs_perslid_naam_full pfh,
k.prs_kostenplaats_nr || '-' || prs_kostenplaats_omschrijving,
rg.alg_locatie_omschrijving,
rg.alg_gebouw_omschrijving,
rg.alg_verdieping_omschrijving,
rg.alg_ruimte_nr,
cl.res_kenmerkreservering_waarde naam,
gd.res_kenmerkreservering_waarde geb,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr resnr,
TO_CHAR (rrr.res_rsv_ruimte_van, 'dd-mm-yyyy'),
TO_CHAR (rrr.res_rsv_ruimte_van, 'hh24:mi') van,
TO_CHAR (rrr.res_rsv_ruimte_tot, 'hh24:mi') tot,
s.res_status_bo_omschrijving,
rrp.omschrijving,
rrp.aantal,
rrp.prijs,
( SELECT SUM (prijs)
FROM (SELECT res.getartikelprijs (res_rsv_artikel_key) prijs,
res_rsv_ruimte_key
FROM res_rsv_artikel) rra2
WHERE rra2.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
GROUP BY rra2.res_rsv_ruimte_key)
+ res.getruimteprijs (rrr.res_rsv_ruimte_key)
FROM res_rsv_ruimte rrr,
(SELECT rrr.res_rsv_ruimte_key,
ra.res_artikel_omschrijving omschrijving,
rra.res_rsv_artikel_aantal aantal,
res.getartikelprijs (rra.res_rsv_artikel_key) prijs,
rra.res_status_bo_key
FROM res_rsv_ruimte rrr, res_rsv_artikel rra, res_artikel ra
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key
AND rra.res_rsv_artikel_verwijder IS NULL
UNION
SELECT rrr.res_rsv_ruimte_key,
'Ruimte',
1 aantal,
res.getruimteprijs (rrr.res_rsv_ruimte_key) prijs,
rrr.res_status_bo_key
FROM res_rsv_ruimte rrr
WHERE res.getruimteprijs (rrr.res_rsv_ruimte_key) <> 0
AND res_rsv_ruimte_verwijder IS NULL) rrp,
(SELECT res_kenmerkreservering_waarde, res_rsv_ruimte_key
FROM res_kenmerkwaarde
WHERE res_kenmerk_key = 61) cl,
(SELECT res_kenmerkreservering_waarde, res_rsv_ruimte_key
FROM res_kenmerkwaarde
WHERE res_kenmerk_key = 62) gd,
prs_v_perslid_fullnames_all pf_h,
prs_v_perslid_fullnames_all pf_c,
prs_kostenplaats k,
res_status_bo s,
( SELECT MAX (alg_ruimte_key) alg_ruimte_key, res_rsv_ruimte_key
FROM res_v_rsv_ruimte_2_alg_ruimte
GROUP BY res_rsv_ruimte_key
UNION ALL
SELECT alg_ruimte_key, res_rsv_ruimte_key
FROM res_rsv_ruimte
WHERE alg_ruimte_key IS NOT NULL) r,
alg_v_ruimte_gegevens rg
WHERE res_activiteit_key = 30
AND rrp.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_key = cl.res_rsv_ruimte_key(+)
AND rrr.res_rsv_ruimte_key = gd.res_rsv_ruimte_key(+)
AND rrr.res_rsv_ruimte_host_key = pf_h.prs_perslid_key
AND rrr.res_rsv_ruimte_contact_key = pf_c.prs_perslid_key
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND rrr.res_rsv_ruimte_key = r.res_rsv_ruimte_key
AND r.alg_ruimte_key = rg.alg_ruimte_key
AND rrp.res_status_bo_key = s.res_status_bo_key;
BEGIN adm.systrackscriptId('$Id$', 0); END;
/
BEGIN fac.registercustversion('ZKHM', 1); END;
/
COMMIT;
SPOOL OFF