Files
Customer/AKZA/AKZA.SQL
Peter Koerhuis 8b6143d0ba AKZA#21931
svn path=/Customer/trunk/; revision=15037
2011-12-05 08:32:50 +00:00

6096 lines
259 KiB
SQL

--
-- AKZA.SQL
-- Facilitor inrichting voor Akzo Nobel Arnhem
-- (c) 1999-2010 SG|facilitor bv
--
-- $Revision: 116 $
-- $Modtime: 2-12-11 15:21 $
--
SPOOL xAKZA.LST
SET ECHO ON
--------------------------------------- VASTE RAPPORTAGES ----------------------------------------
--------------------------------------- VASTE RAPPORTAGES ----------------------------------------
--------------------------------------- VASTE RAPPORTAGES ----------------------------------------
-- Utilities
-- De totalen aan verhuurbare ruimte(Opp) per CompanyCode,Afdeling,Soort
CREATE OR REPLACE PACKAGE AKZ AS
FUNCTION akz_f_cad_ruimte_bezetting(pBezettingswaarde IN NUMBER) RETURN NUMBER;
FUNCTION akz_f_pct_gemeensch(VerdiepingKey IN NUMBER) RETURN NUMBER;
PROCEDURE Ins_Update_Kenmerkdeel(kenmerkdeel_key IN NUMBER
,deel_key IN NUMBER
,kenmerk_key IN NUMBER
,waarde IN VARCHAR2
,historymode IN VARCHAR2
,mselect IN VARCHAR2);
PROCEDURE Kmd_Update_Kenmerkdeel(kenmerkdeel_key IN NUMBER
,deel_key IN NUMBER
,kenmerk_key IN NUMBER
,waarde IN VARCHAR2
,historymode IN VARCHAR2
,mselect IN VARCHAR2);
PROCEDURE Kmd_Insert(p_deel_key IN NUMBER
,p_kenmerk_key IN NUMBER
,p_waarde IN VARCHAR2
,p_historymode IN VARCHAR2);
PROCEDURE Kmd_Delete(p_kenmerkdeel_key IN NUMBER
,p_historymode IN VARCHAR2);
PROCEDURE Kmd_Update(p_kenmerkdeel_key IN NUMBER
,p_waarde IN VARCHAR2
,p_historymode IN VARCHAR2);
PROCEDURE Ins_Update_Kenmerkdeel_WEB(kenmerkdeel_key IN NUMBER
,deel_key IN NUMBER
,kenmerk_key IN NUMBER
,waarde IN VARCHAR2
,historymode IN VARCHAR2
,mselect IN VARCHAR2);
PRAGMA RESTRICT_REFERENCES (akz_f_pct_gemeensch,WNDS, WNPS);
END akz;
/
CREATE OR REPLACE PACKAGE BODY AKZ AS
FUNCTION akz_f_cad_ruimte_bezetting(pBezettingswaarde IN NUMBER) RETURN NUMBER IS
-- PRE: pBezettingswaarde IS NOT NULL
v_result NUMBER(3,0);
BEGIN
IF (pBezettingswaarde <= 0) THEN
v_result := 0;
ELSE
IF (pBezettingswaarde > 0) AND (pBezettingswaarde < 100) THEN
v_result := 50;
ELSE
v_result := 100;
END IF;
END IF;
RETURN v_result;
END akz_f_cad_ruimte_bezetting;
FUNCTION akz_f_pct_gemeensch (VerdiepingKey IN NUMBER) RETURN NUMBER IS
GebouwKey NUMBER(10,2);
opp_verhuurbaar_ver NUMBER(10,2);
opp_verhuurbaar_hor NUMBER(10,2);
opp_gemeenschappelijk_ver NUMBER(10,2);
opp_gemeenschappelijk_hor NUMBER(10,2);
BEGIN
-- Levert het percentage van de ruimte dat van gebouw met de gegeven key gemeenschappelijk
-- zijnde de opp_gemeenschappelijk/opp_netto. Hiermee kan de bruto oppervlakte van een
-- netto oppervlakte worden berekend met bruto=netto+ pct*netto = (1+pct)*netto
SELECT ALG_GEBOUW_KEY
INTO GebouwKey
FROM ALG_VERDIEPING
WHERE ALG_VERDIEPING_KEY=VerdiepingKey;
SELECT NVL(SUM(alg_ruimte_bruto_vloeropp),1) -- minstens 1 tegen het delen door nul
INTO opp_verhuurbaar_ver
FROM alg_v_aanwezigruimte R, alg_srtruimte SR, alg_verdieping V
WHERE V.alg_gebouw_key = GebouwKey
AND V.alg_verdieping_key=R.alg_verdieping_key
AND R.alg_srtruimte_key=SR.alg_srtruimte_key
AND SR.prs_verhuurbaar is not null
AND SR.prs_bevat_werkplek is not null;
SELECT NVL(SUM(alg_ruimte_bruto_vloeropp),1) -- minstens 1 tegen het delen door nul
INTO opp_verhuurbaar_hor
FROM alg_v_aanwezigruimte R, alg_srtruimte SR, alg_verdieping V
WHERE V.alg_verdieping_key=VerdiepingKey -- Alleen deze verdieping
AND V.alg_verdieping_key=R.alg_verdieping_key
AND R.alg_srtruimte_key=SR.alg_srtruimte_key
AND SR.prs_verhuurbaar is not null
AND SR.prs_bevat_werkplek is not null;
SELECT NVL(SUM(alg_ruimte_bruto_vloeropp),0)
INTO opp_gemeenschappelijk_ver
FROM alg_v_aanwezigruimte R, alg_srtruimte SR, alg_verdieping V
WHERE V.alg_gebouw_key = GebouwKey
AND V.alg_verdieping_key=R.alg_verdieping_key
AND R.alg_srtruimte_key=SR.alg_srtruimte_key
AND SR.prs_verhuurbaar is not null
AND SR.alg_srtruimte_upper like '%VERTICAAL%'
AND SR.prs_bevat_werkplek is null;
SELECT NVL(SUM(alg_ruimte_bruto_vloeropp),0)
INTO opp_gemeenschappelijk_hor
FROM alg_v_aanwezigruimte R, alg_srtruimte SR, alg_verdieping V
WHERE V.alg_verdieping_key=VerdiepingKey
AND V.alg_verdieping_key=R.alg_verdieping_key
AND R.alg_srtruimte_key=SR.alg_srtruimte_key
AND SR.prs_verhuurbaar is not null
AND SR.alg_srtruimte_upper like '%HORIZONTAAL%'
AND SR.prs_bevat_werkplek is null;
RETURN (opp_gemeenschappelijk_ver/opp_verhuurbaar_ver)+(opp_gemeenschappelijk_hor/opp_verhuurbaar_hor);
END akz_f_pct_gemeensch;
FUNCTION akz_f_pct_gemeensch_hor (VerdiepingKey IN NUMBER) RETURN NUMBER IS
GebouwKey NUMBER(10,2);
opp_verhuurbaar_hor NUMBER(10,2);
opp_gemeenschappelijk_hor NUMBER(10,2);
BEGIN
-- Levert het percentage van de ruimte dat van gebouw met de gegeven key gemeenschappelijk
-- zijnde de opp_gemeenschappelijk/opp_netto. Hiermee kan de bruto oppervlakte van een
-- netto oppervlakte worden berekend met bruto=netto+ pct*netto = (1+pct)*netto
SELECT NVL(SUM(alg_ruimte_bruto_vloeropp),1) -- minstens 1 tegen het delen door nul
INTO opp_verhuurbaar_hor
FROM alg_v_aanwezigruimte R, alg_srtruimte SR, alg_verdieping V
WHERE V.alg_verdieping_key=VerdiepingKey
AND V.alg_verdieping_key=R.alg_verdieping_key
AND R.alg_srtruimte_key=SR.alg_srtruimte_key
AND SR.prs_verhuurbaar is not null
AND SR.prs_bevat_werkplek is not null;
SELECT NVL(SUM(alg_ruimte_bruto_vloeropp),0)
INTO opp_gemeenschappelijk_hor
FROM alg_v_aanwezigruimte R, alg_srtruimte SR, alg_verdieping V
WHERE V.alg_verdieping_key=VerdiepingKey
AND V.alg_verdieping_key=R.alg_verdieping_key
AND R.alg_srtruimte_key=SR.alg_srtruimte_key
AND SR.prs_verhuurbaar is not null
AND SR.alg_srtruimte_upper like '%HORIZONTAAL%'
AND SR.prs_bevat_werkplek is null;
RETURN opp_gemeenschappelijk_hor/opp_verhuurbaar_hor;
END akz_f_pct_gemeensch_hor;
FUNCTION akz_f_pct_gemeensch_ver (VerdiepingKey IN NUMBER) RETURN NUMBER IS
GebouwKey NUMBER(10,2);
opp_verhuurbaar_ver NUMBER(10,2);
opp_gemeenschappelijk_ver NUMBER(10,2);
BEGIN
-- Levert het percentage van de ruimte dat van gebouw met de gegeven key gemeenschappelijk
-- zijnde de opp_gemeenschappelijk/opp_netto. Hiermee kan de bruto oppervlakte van een
-- netto oppervlakte worden berekend met bruto=netto+ pct*netto = (1+pct)*netto
SELECT ALG_GEBOUW_KEY
INTO GebouwKey
FROM ALG_VERDIEPING
WHERE ALG_VERDIEPING_KEY=VerdiepingKey;
SELECT NVL(SUM(alg_ruimte_bruto_vloeropp),1) -- minstens 1 tegen het delen door nul
INTO opp_verhuurbaar_ver
FROM alg_v_aanwezigruimte R, alg_srtruimte SR, alg_verdieping V
WHERE V.alg_gebouw_key = GebouwKey
AND V.alg_verdieping_key=R.alg_verdieping_key
AND R.alg_srtruimte_key=SR.alg_srtruimte_key
AND SR.prs_verhuurbaar is not null
AND SR.prs_bevat_werkplek is not null;
SELECT NVL(SUM(alg_ruimte_bruto_vloeropp),0)
INTO opp_gemeenschappelijk_ver
FROM alg_v_aanwezigruimte R, alg_srtruimte SR, alg_verdieping V
WHERE V.alg_gebouw_key = GebouwKey
AND V.alg_verdieping_key=R.alg_verdieping_key
AND R.alg_srtruimte_key=SR.alg_srtruimte_key
AND SR.prs_verhuurbaar is not null
AND SR.alg_srtruimte_upper like '%VERTICAAL%'
AND SR.prs_bevat_werkplek is null;
RETURN opp_gemeenschappelijk_ver/opp_verhuurbaar_ver;
END akz_f_pct_gemeensch_ver;
PROCEDURE Ins_Update_Kenmerkdeel(kenmerkdeel_key IN NUMBER
,deel_key IN NUMBER
,kenmerk_key IN NUMBER
,waarde IN VARCHAR2
,historymode IN VARCHAR2
,mselect IN VARCHAR2) IS
v_history_mode fac_message.fac_message_text%TYPE;
BEGIN
-- Het is eigenlijk voldoende om hier alleen Kmd_Update()
-- aan te roepen omdat daar alle situaties worden
-- gecontroleerd en de bijbehorende actie wordt uitgevoerd.
-- De onderstaande Select zorgt er dus alleen voor dat
-- indien er geen actueel record bestaat, of een die
-- vandaag is gesloten er een nieuw record wordt gemaakt,
-- hetgeen in Kmd_Update() ook wordt gedaan zodat de tweede
-- insert een foutmelding geeft.
-- Daarom alleen Kmd_Update() aanroepen met een dummy waarde
-- voor ins_kenmerkdeel_key.
--
IF historymode IS NULL THEN
BEGIN
SELECT DECODE(fac_message_text,'TRUE','1','FALSE','0','0')
INTO v_history_mode
FROM fac_message
WHERE fac_message_code = 'FAC_HISTORYMODE_VALUE';
EXCEPTION
WHEN NO_DATA_FOUND THEN v_history_mode := '0';
END;
ELSE
v_history_mode := historymode;
END IF;
--
AKZ.Kmd_Update_Kenmerkdeel(kenmerkdeel_key,deel_key,kenmerk_key,waarde,v_history_mode,mselect);
END Ins_Update_Kenmerkdeel;
PROCEDURE Kmd_Insert(p_deel_key IN NUMBER
,p_kenmerk_key IN NUMBER
,p_waarde IN VARCHAR2
,p_historymode IN VARCHAR2) IS
BEGIN
IF p_waarde IS NOT NULL
THEN
INSERT INTO ins_kenmerkdeel
( ins_kenmerk_key
, ins_deel_Key
, ins_kenmerkdeel_waarde)
VALUES(p_kenmerk_key
, p_deel_key
, p_waarde);
END IF;
END Kmd_Insert;
PROCEDURE Kmd_Delete(p_kenmerkdeel_key IN NUMBER
,p_historymode IN VARCHAR2) IS
BEGIN
IF p_historymode = '0'
THEN
--NON HISTORY MODE
DELETE
FROM ins_kenmerkdeel
WHERE ins_kenmerkdeel_key = p_kenmerkdeel_key;
ELSE
--HISTORY MODE
UPDATE ins_kenmerkdeel
SET ins_kenmerkdeel_verwijder = SYSDATE
WHERE ins_kenmerkdeel_key = p_kenmerkdeel_key;
END IF;
END Kmd_Delete;
PROCEDURE Kmd_update(p_kenmerkdeel_key IN NUMBER
,p_waarde IN VARCHAR2
,p_historymode IN VARCHAR2) IS
BEGIN
UPDATE ins_kenmerkdeel
SET ins_kenmerkdeel_waarde = p_waarde
, ins_kenmerkdeel_verwijder = NULL
WHERE ins_kenmerkdeel_key = p_kenmerkdeel_key;
END Kmd_Update;
PROCEDURE Kmd_Update_Kenmerkdeel(kenmerkdeel_key IN NUMBER
,deel_key IN NUMBER
,kenmerk_key IN NUMBER
,waarde IN VARCHAR2
,historymode IN VARCHAR2
,mselect IN VARCHAR2) IS
v_kenmerkdeelkey NUMBER(10);
BEGIN
IF historymode = '0'
THEN
IF waarde IS NOT NULL
THEN
IF kenmerkdeel_key IS NOT NULL AND mselect='0'
THEN
AKZ.Kmd_Update(kenmerkdeel_key,waarde,historymode);
ELSIF kenmerkdeel_key IS NULL AND mselect='1'
THEN
-- kenmerkdeel vanuit form in mselectmode is null
-- deelkey komt uit fac_selectie daar kan kenmerkdeel niet aan toegevoegd worden.
-- Oplossing : zoek a.h.v. Deelkey en Kenmerkkey de kenmerkdeel_key
-- Bij Insert is kenmerkdeel_key ook NULL, maar dit gaat goed aangezien mselect daar nooit '1' kan zijn.
BEGIN
SELECT ins_kenmerkdeel_Key
INTO v_kenmerkdeelkey
FROM ins_v_aanwezigkenmerkdeel
WHERE ins_deel_key = deel_key
AND ins_kenmerk_key = kenmerk_key;
--
AKZ.Kmd_Update(v_kenmerkdeelkey,waarde,historymode);
EXCEPTION
WHEN NO_DATA_FOUND THEN
AKZ.Kmd_Insert(deel_key,kenmerk_key,waarde,historymode);
END;
ELSE
AKZ.Kmd_Insert(deel_key,kenmerk_key,waarde,historymode);
END IF;
ELSE
AKZ.Kmd_Delete(kenmerkdeel_key,historymode);
END IF;
ELSIF historymode = '1'
THEN
DECLARE
-- Zoek alle records voor een gegeven object en kenmerk
-- en zet de meest recente bovenaan.
--
CURSOR c_kenmerkdeel(p_kenmerk_key IN NUMBER
,p_deel_key IN NUMBER) IS
SELECT ins_kenmerkdeel_key
, TRUNC(ins_kenmerkdeel_aanmaak) ins_kenmerkdeel_aanmaak
, TRUNC(ins_kenmerkdeel_verwijder) ins_kenmerkdeel_verwijder
, ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel
WHERE ins_kenmerk_key = p_kenmerk_key
AND ins_deel_key = p_deel_key
ORDER BY ins_kenmerkdeel_key DESC
;
r_kenmerkdeel c_kenmerkdeel%ROWTYPE;
BEGIN
OPEN c_kenmerkdeel(kenmerk_key,deel_key);
FETCH c_kenmerkdeel INTO r_kenmerkdeel;
IF c_kenmerkdeel%NOTFOUND THEN
-- Voor dit object en kenmerk bestaat nog geen record
-- dus toevoegen. Behalve als de toe te voegen waarde
-- null is, dan wil je niets toevoegen dus dan ook
-- geen actie.
IF waarde IS NOT NULL
THEN
AKZ.Kmd_Insert(deel_key,kenmerk_key,waarde,historymode);
END IF;
ELSE
-- Er bestaat een record voor het object en kenmerk.
--
IF waarde IS NOT NULL
THEN
-- Er is een nieuwe waarde voor een bepaald object en kenmerk.
--
IF r_kenmerkdeel.ins_kenmerkdeel_aanmaak <= TRUNC(sysdate)
AND r_kenmerkdeel.ins_kenmerkdeel_verwijder IS NULL
THEN
-- Het record is nog actueel, dus moet eerst gesloten worden
-- door het als verwijderd te markeren.
--
AKZ.Kmd_Delete(r_kenmerkdeel.ins_kenmerkdeel_key,historymode);
END IF;
--
-- Er bestaat nu tijdelijk geen actueel record meer voor
-- het object en kenmerk !!
--
IF r_kenmerkdeel.ins_kenmerkdeel_aanmaak < TRUNC(sysdate)
AND ( r_kenmerkdeel.ins_kenmerkdeel_verwijder <= TRUNC(sysdate)
OR r_kenmerkdeel.ins_kenmerkdeel_verwijder IS NULL)
THEN
-- Het laatste record voor kenmerk bij een object heeft langer
-- dan een dag bestaan. Voeg daarom een nieuwe toe.
--
AKZ.Kmd_Insert(deel_key,kenmerk_key,waarde,historymode);
ELSIF r_kenmerkdeel.ins_kenmerkdeel_aanmaak = TRUNC(sysdate)
THEN
-- Het record voor kenmerk bij een object is vandaag
-- aangemaakt dus wordt er geen nieuwe toegevoegd maar
-- de huidige aangepast.
--
AKZ.Kmd_Update(r_kenmerkdeel.ins_kenmerkdeel_key,waarde,historymode);
END IF;
ELSE
-- De nieuwe waarde voor het object en kenmerk is leeg, dus
-- moet het als verwijderd gemarkeerd worden.
-- Behalve als er in MSelect-mode gewijzigd wordt.
--
IF mselect = '0'
THEN
AKZ.Kmd_Delete(r_kenmerkdeel.ins_kenmerkdeel_key,historymode);
END IF;
END IF;
END IF;
CLOSE c_kenmerkdeel;
END;
END IF;
END Kmd_Update_Kenmerkdeel;
PROCEDURE Ins_Update_Kenmerkdeel_WEB(kenmerkdeel_key IN NUMBER
,deel_key IN NUMBER
,kenmerk_key IN NUMBER
,waarde IN VARCHAR2
,historymode IN VARCHAR2
,mselect IN VARCHAR2)
IS
k_key NUMBER(10);
waarde2 VARCHAR2(255);
BEGIN
k_key := kenmerkdeel_key;
waarde2 := NULL;
IF kenmerkdeel_key IS NULL THEN
BEGIN
SELECT ins_kenmerkdeel_key, ins_kenmerkdeel_waarde INTO k_key, waarde2 FROM ins_kenmerkdeel
WHERE INS_KENMERKDEEL_VERWIJDER IS NULL
AND INS_KENMERK_KEY = kenmerk_key AND INS_DEEL_KEY = deel_key;
EXCEPTION WHEN NO_DATA_FOUND THEN NULL;
END;
END IF;
IF (waarde IS NOT NULL AND waarde2 IS NOT NULL AND waarde <> waarde2) OR
(waarde IS NOT NULL AND waarde2 IS NULL ) OR
(waarde IS NULL AND waarde2 IS NOT NULL ) THEN
akz.Ins_Update_Kenmerkdeel(k_key,deel_key,kenmerk_key,waarde,historymode,mselect);
END IF;
END Ins_Update_Kenmerkdeel_WEB;
END AKZ;
/
-- Rapportages
-- Now with 3D authorization on Building
CREATE OR REPLACE VIEW AKZ_VERDIEPINGOPP
(FCLT_F_GEBOUW, HIDE_F_VOLGNR, VERDIEPING, FCLT_3D_GEBOUW_KEY, OPPERVLAKTE)
AS
SELECT l.alg_locatie_code || '-'
|| alg_gebouw_omschrijving fclt_f_gebouw,
v.alg_verdieping_volgnr,
v.alg_verdieping_omschrijving,
g.alg_gebouw_key,
SUM (r.alg_ruimte_bruto_vloeropp) oppervlakte
FROM alg_v_aanweziggebouw g,
alg_v_aanwezigverdieping v,
alg_v_aanwezigruimte r,
alg_v_aanweziglocatie l
WHERE v.alg_gebouw_key = g.alg_gebouw_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND g.alg_locatie_key = l.alg_locatie_key
GROUP BY l.alg_locatie_code || '-' || alg_gebouw_omschrijving,v.alg_verdieping_volgnr,v.alg_verdieping_omschrijving,g.alg_gebouw_key;
-- Now with 3D authorization on Building
CREATE OR REPLACE VIEW AKZ_GEBOUWOPP
(FCLT_F_GEBOUW, FCLT_3D_GEBOUW_KEY, OPPERVLAKTE)
AS
SELECT l.alg_locatie_code || '-' || g.alg_gebouw_omschrijving,
g.alg_gebouw_key,
SUM (r.alg_ruimte_bruto_vloeropp) oppervlakte
FROM alg_v_aanweziggebouw g,
alg_v_aanwezigverdieping v,
alg_v_aanwezigruimte r,
alg_v_aanweziglocatie l
WHERE v.alg_gebouw_key = g.alg_gebouw_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND g.alg_locatie_key = l.alg_locatie_key
GROUP BY l.alg_locatie_code || '-' || alg_gebouw_omschrijving, g.alg_gebouw_key;
-- Now with 3D authorization on Building and organization
CREATE OR REPLACE VIEW AKZ_GEBRUIKER_PER_RUIMTE
(FCLT_F_GEBOUW, BOUWLAAG, RUIMTE, FCLT_F_AFDELING, GEBRUIKER,
OPPERVLAKTE, BEZETTINGSGRAAD, BEZETOPP, TELEFOON, FCLT_3D_GEBOUW_KEY, FCLT_3D_AFDELING_KEY)
AS
SELECT w.alg_gebouw_omschrijving gebouw, w.alg_verdieping_code bouwlaag,
w.alg_ruimte_nr ruimte, a.prs_afdeling_naam afdeling,
w.prs_afd_perslid_naam gebruiker,
ROUND (w.prs_werkplek_opp, 2) oppervlakte,
w.prs_perslidwerkplek_bezetting bezettingsgraad,
ROUND (w.prs_werkplek_opp * w.prs_perslidwerkplek_bezetting / 100,
2
) bezetopp,
p.prs_perslid_telefoonnr telefoon,
w.alg_gebouw_key,
a.prs_afdeling_key
FROM prs_v_perslidwerkplek_gegevens w,
prs_v_aanwezigafdeling a,
prs_v_aanwezigperslid p
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND w.prs_perslid_key = p.prs_perslid_key;
/* Formatted on 2005/06/13 10:45 (Formatter Plus v4.8.5) */
CREATE OR REPLACE VIEW akz_v_ruimte_gegevens
AS
SELECT r.*,
( (akz.akz_f_pct_gemeensch (r.alg_verdieping_key) + 1)
* (NVL (r.alg_ruimte_bruto_vloeropp, 0))
) alg_ruimte_bruto_vloeropp_vh
FROM alg_ruimte r, alg_srtruimte sr
WHERE alg_ruimte_verwijder IS NULL
AND sr.alg_srtruimte_key = r.alg_srtruimte_key
AND sr.prs_verhuurbaar IS NOT NULL
AND sr.prs_bevat_werkplek IS NOT NULL;
-- Now with 3D authorization on Building
/* Formatted on 2005/06/13 10:46 (Formatter Plus v4.8.5) */
CREATE OR REPLACE VIEW akz_verhruimte_per_gebouw (fclt_f_gebouw,
fclt_3d_gebouw_key,
oppervlakte,
oppervlakte_bruto,
fclt_3d_locatie_key
)
AS
SELECT g.alg_gebouw_omschrijving gebouw, g.alg_gebouw_key,
SUM (NVL (r.alg_ruimte_bruto_vloeropp, 0)) oppervlakte,
SUM (NVL (r.alg_ruimte_bruto_vloeropp_vh, 0)) oppervlakte_bruto,
g.alg_locatie_key
FROM alg_gebouw g, alg_verdieping v, akz_v_ruimte_gegevens r
WHERE r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
GROUP BY g.alg_gebouw_omschrijving, g.alg_gebouw_key, g.alg_locatie_key;
-- BELANGRIJKE VIEW, zorgt voor juiste formatting bij exports
-- Gaat uit van een kostenplaats_nr van maximaal 7 significante postities!
CREATE OR REPLACE VIEW akza_v_kostenplaats
AS
SELECT prs_kostenplaats_key,
DECODE (INSTR (prs_kostenplaats_nr, '('),
0, LPAD (prs_kostenplaats_nr, 10, '0'),
SUBSTR ('000' || prs_kostenplaats_nr, 1, 10)
) prs_kostenplaats_nr,
UPPER (DECODE (INSTR (prs_kostenplaats_nr, '('),
0, LPAD (prs_kostenplaats_nr, 10, '0'),
SUBSTR ('000' || prs_kostenplaats_nr, 1, 10)
)
) prs_kostenplaats_upper,
prs_kostenplaats_nr fclt_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_perslid_key,
prs_kostenplaats_module, prs_kostenplaats_begin, prs_kostenplaats_eind, prs_kostenplaatsgrp_key,
prs_kostenplaats_aanmaak, prs_kostenplaats_verwijder
FROM prs_kostenplaats;
-- Now with 3D authorization on Building and organization
/* Formatted on 2005/04/06 23:48 (Formatter Plus v4.8.5) */
--CREATE OR REPLACE VIEW akz_huur_verhuurbaar (fclt_f_companycode,
-- fclt_f_companynaam,
-- fclt_f_kostenplaats,
-- afdeling,
-- gebouw,
-- ruimtesoort,
-- fclt_3d_gebouw_key,
-- fclt_3d_afdeling_key,
-- netto,
-- bruto
-- )
--AS
-- SELECT e.prs_afdeling_naam companycode,
-- e.prs_afdeling_omschrijving companynaam,
-- kp.prs_kostenplaats_nr kostenplaats,
-- a.prs_afdeling_naam afdeling, w.alg_gebouw_omschrijving gebouw,
-- sr.alg_srtruimte_omschrijving ruimtesoort, w.alg_gebouw_key,
-- a.prs_afdeling_key,
-- TO_NUMBER
-- (TO_CHAR (SUM (NVL ( w.prs_werkplek_opp
-- * w.prs_perslidwerkplek_bezetting
-- / 100,
-- 0
-- )
-- ),
-- '9999999D9'
-- )
-- ) netto,
-- TO_NUMBER
-- (TO_CHAR (SUM ( NVL ( w.prs_werkplek_opp
-- * w.prs_perslidwerkplek_bezetting
-- / 100,
-- 0
-- )
-- * ( 1
-- + akz.akz_f_pct_gemeensch
-- (w.alg_verdieping_key)
-- )
-- ),
-- '9999999D9'
-- )
-- ) bruto
-- FROM prs_v_perslidwerkplek_gegevens w,
-- prs_v_aanwezigafdeling a,
-- akza_v_kostenplaats kp,
-- prs_v_aanwezigperslid p,
-- alg_ruimte r,
-- alg_srtruimte sr,
-- prs_afdeling e
-- WHERE w.prs_perslid_key = p.prs_perslid_key
-- AND p.prs_afdeling_key = a.prs_afdeling_key
-- AND a.prs_afdeling_parentkey = e.prs_afdeling_key(+)
-- AND e.prs_afdeling_parentkey IS NULL
-- AND w.prs_perslid_key IS NOT NULL
-- AND r.alg_ruimte_key = w.alg_ruimte_key
-- AND r.alg_srtruimte_key = sr.alg_srtruimte_key
-- AND sr.prs_verhuurbaar IS NOT NULL
-- AND sr.prs_bevat_werkplek IS NOT NULL
-- AND kp.prs_kostenplaats_key = a.prs_kostenplaats_key
-- GROUP BY e.prs_afdeling_naam,
-- e.prs_afdeling_omschrijving,
-- kp.prs_kostenplaats_nr,
-- a.prs_afdeling_naam,
-- w.alg_gebouw_omschrijving,
-- sr.alg_srtruimte_omschrijving,
-- w.alg_gebouw_key,
-- a.prs_afdeling_key
-- UNION
-- SELECT e.prs_afdeling_naam companycode,
-- e.prs_afdeling_omschrijving companynaam,
-- kp.prs_kostenplaats_nr kostenplaats,
-- a.prs_afdeling_naam afdeling, w.alg_gebouw_omschrijving gebouw,
-- sr.alg_srtruimte_omschrijving ruimtesoort, w.alg_gebouw_key,
-- a.prs_afdeling_key,
-- TO_NUMBER
-- (TO_CHAR (SUM (NVL ( w.prs_werkplek_opp
-- * w.prs_perslidwerkplek_bezetting
-- / 100,
-- 0
-- )
-- ),
-- '9999999D9'
-- )
-- ) netto,
-- TO_NUMBER
-- (TO_CHAR (SUM ( NVL ( w.prs_werkplek_opp
-- * w.prs_perslidwerkplek_bezetting
-- / 100,
-- 0
-- )
-- * ( 1
-- + akz.akz_f_pct_gemeensch
-- (w.alg_verdieping_key)
-- )
-- ),
-- '9999999D9'
-- )
-- ) bruto
-- FROM prs_v_perslidwerkplek_gegevens w,
-- prs_v_aanwezigafdeling a,
-- akza_v_kostenplaats kp,
-- alg_ruimte r,
-- alg_srtruimte sr,
-- prs_afdeling e
-- WHERE w.prs_afdeling_key = a.prs_afdeling_key
-- AND w.prs_afdeling_key IS NOT NULL
-- AND a.prs_afdeling_parentkey = e.prs_afdeling_key(+)
-- AND e.prs_afdeling_parentkey IS NULL
-- AND r.alg_ruimte_key = w.alg_ruimte_key
-- AND r.alg_srtruimte_key = sr.alg_srtruimte_key
-- AND sr.prs_verhuurbaar IS NOT NULL
-- AND sr.prs_bevat_werkplek IS NOT NULL
-- AND kp.prs_kostenplaats_key = a.prs_kostenplaats_key
-- GROUP BY e.prs_afdeling_naam,
-- e.prs_afdeling_omschrijving,
-- kp.prs_kostenplaats_nr,
-- a.prs_afdeling_naam,
-- w.alg_gebouw_omschrijving,
-- sr.alg_srtruimte_omschrijving,
-- w.alg_gebouw_key,
-- a.prs_afdeling_key;
CREATE OR REPLACE VIEW akz_huur_verhuurbaar
(
FCLT_F_COMPANYCODE,
FCLT_F_COMPANYNAAM,
FCLT_F_KOSTENPLAATS,
AFDELING,
GEBOUW,
RUIMTESOORT,
FCLT_3D_GEBOUW_KEY,
FCLT_3D_AFDELING_KEY,
NETTO,
BRUTO
)
AS
SELECT e.prs_afdeling_naam companycode,
e.prs_afdeling_omschrijving companynaam,
kp.prs_kostenplaats_nr kostenplaats,
a.prs_afdeling_naam afdeling,
rg.alg_gebouw_omschrijving gebouw,
sr.alg_srtruimte_omschrijving ruimtesoort,
rg.alg_gebouw_key,
a.prs_afdeling_key,
TO_NUMBER( TO_CHAR( SUM( NVL( rg.alg_ruimte_bruto_vloeropp
* ra.prs_ruimteafdeling_bezetting
/ 100,
0)),
'9999999D9'))
netto,
TO_NUMBER( TO_CHAR( SUM( NVL ( rg.alg_ruimte_bruto_vloeropp
* ra.prs_ruimteafdeling_bezetting
/ 100,
0)
* (1 + akz.akz_f_pct_gemeensch (
rg.alg_verdieping_key))),
'9999999D9'))
bruto
FROM prs_v_aanwezigafdeling a,
prs_v_aanwezigafdeling e,
prs_v_aanwezigruimteafdeling ra,
alg_v_ruimte_gegevens rg,
alg_srtruimte sr,
akza_v_kostenplaats kp
WHERE e.prs_afdeling_key(+) = a.prs_afdeling_parentkey
AND e.prs_afdeling_parentkey IS NULL
AND kp.prs_kostenplaats_key = a.prs_kostenplaats_key
AND ra.prs_afdeling_key = a.prs_afdeling_key
AND rg.alg_ruimte_key = ra.alg_ruimte_key
AND sr.alg_srtruimte_key = rg.alg_srtruimte_key
AND sr.prs_verhuurbaar IS NOT NULL
AND sr.prs_bevat_werkplek IS NOT NULL
GROUP BY e.prs_afdeling_naam,
e.prs_afdeling_omschrijving,
kp.prs_kostenplaats_nr,
a.prs_afdeling_naam,
rg.alg_gebouw_omschrijving,
rg.alg_gebouw_key,
sr.alg_srtruimte_omschrijving,
a.prs_afdeling_key;
-- Now with 3D authorization on Building and organization
--CREATE OR REPLACE VIEW AKZ_HUUR_VERHUURBAAR_RUIMTE
--(FCLT_F_COMPANYCODE, FCLT_F_KOSTENPLAATS, AFDELING, FCLT_F_GEBOUW, HIDE_F_VERDIEPINGNR, VERDIEPING,
-- RUIMTENR, RUIMTESOORT, FCLT_3D_GEBOUW_KEY, FCLT_3D_AFDELING_KEY, NETTO, BRUTO)
--AS
--SELECT E.prs_afdeling_naam CompanyCode
-- , KP.prs_kostenplaats_nr
-- , A.prs_afdeling_omschrijving
-- , W.alg_gebouw_omschrijving
-- , W.alg_verdieping_volgnr
-- , W.alg_verdieping_code
-- , 'R'||R.alg_ruimte_nr
-- , SR.alg_srtruimte_omschrijving
-- , w.alg_gebouw_key
-- , a.prs_afdeling_key
-- , TO_NUMBER(TO_CHAR(SUM(NVL(W.prs_werkplek_opp*W.prs_perslidwerkplek_bezetting/100,0)) ,'9999999D9')) Netto
-- , TO_NUMBER(TO_CHAR(SUM(NVL(W.prs_werkplek_opp*W.prs_perslidwerkplek_bezetting/100,0)*(1+Akz.akz_f_pct_gemeensch(W.alg_verdieping_key))), '9999999D9')) Bruto
-- FROM prs_v_perslidwerkplek_gegevens W
-- , prs_v_aanwezigafdeling A
-- , prs_v_aanwezigperslid P
-- , ALG_RUIMTE R
-- , ALG_SRTRUIMTE SR
-- , PRS_AFDELING E
-- , akza_v_kostenplaats KP
-- WHERE W.prs_perslid_key = P.prs_perslid_key
-- AND P.prs_afdeling_key = A.prs_afdeling_key
-- AND A.prs_afdeling_parentkey = E.prs_afdeling_key(+)
-- AND E.prs_afdeling_parentkey IS NULL
-- AND A.prs_kostenplaats_key = KP.prs_kostenplaats_key
-- AND W.prs_perslid_key IS NOT NULL
-- AND R.alg_ruimte_key = W.alg_ruimte_key
-- AND R.alg_srtruimte_key = SR.alg_srtruimte_key
-- AND SR.prs_verhuurbaar IS NOT NULL
-- AND SR.prs_bevat_werkplek IS NOT NULL
-- GROUP BY E.prs_afdeling_naam
-- , KP.prs_kostenplaats_nr
-- , A.prs_afdeling_omschrijving
-- , W.alg_gebouw_omschrijving
-- , W.alg_verdieping_volgnr
-- , W.alg_verdieping_code
-- , R.alg_ruimte_nr
-- , SR.alg_srtruimte_omschrijving
-- , w.alg_gebouw_key
-- , a.prs_afdeling_key
-- UNION
-- SELECT E.prs_afdeling_naam
-- , KP.prs_kostenplaats_nr
-- , A.prs_afdeling_omschrijving
-- , W.alg_gebouw_omschrijving
-- , W.alg_verdieping_volgnr
-- , W.alg_verdieping_code
-- , 'R'||R.alg_ruimte_nr Ruimtenr
-- , SR.alg_srtruimte_omschrijving
-- , w.alg_gebouw_key
-- , a.prs_afdeling_key
-- , TO_NUMBER(TO_CHAR(SUM(NVL(W.prs_werkplek_opp*W.prs_perslidwerkplek_bezetting/100,0)) ,'9999999D9')) Netto
-- , TO_NUMBER(TO_CHAR(SUM(NVL(W.prs_werkplek_opp*W.prs_perslidwerkplek_bezetting/100,0)*(1+Akz.akz_f_pct_gemeensch(W.alg_verdieping_key))), '9999999D9')) Bruto
-- FROM prs_v_perslidwerkplek_gegevens W
-- , prs_v_aanwezigafdeling A
-- , ALG_RUIMTE R
-- , ALG_SRTRUIMTE SR
-- , PRS_AFDELING E
-- , akza_v_kostenplaats KP
-- WHERE W.prs_afdeling_key = A.prs_afdeling_key
-- AND W.prs_afdeling_key IS NOT NULL
-- AND A.prs_afdeling_parentkey = E.prs_afdeling_key(+)
-- AND E.prs_afdeling_parentkey IS NULL
-- AND A.prs_kostenplaats_key = KP.prs_kostenplaats_key
-- AND R.alg_ruimte_key = W.alg_ruimte_key
-- AND R.alg_srtruimte_key = SR.alg_srtruimte_key
-- AND SR.prs_verhuurbaar IS NOT NULL
-- AND SR.prs_bevat_werkplek IS NOT NULL
-- GROUP BY E.prs_afdeling_naam
-- , KP.prs_kostenplaats_nr
-- , A.prs_afdeling_omschrijving
-- , W.alg_gebouw_omschrijving
-- , W.alg_verdieping_volgnr
-- , W.alg_verdieping_code
-- , R.alg_ruimte_nr
-- , SR.alg_srtruimte_omschrijving
-- , w.alg_gebouw_key
-- , a.prs_afdeling_key;
CREATE OR REPLACE VIEW akz_huur_verhuurbaar_ruimte
(
FCLT_F_COMPANYCODE,
FCLT_F_KOSTENPLAATS,
AFDELING,
FCLT_F_GEBOUW,
HIDE_F_VERDIEPINGNR,
VERDIEPING,
RUIMTENR,
RUIMTESOORT,
FCLT_3D_GEBOUW_KEY,
FCLT_3D_AFDELING_KEY,
NETTO,
BRUTO
)
AS
SELECT e.prs_afdeling_naam companycode,
kp.prs_kostenplaats_nr,
a.prs_afdeling_omschrijving,
rg.alg_gebouw_omschrijving,
rg.alg_verdieping_volgnr,
rg.alg_verdieping_code,
'R' || rg.alg_ruimte_nr,
sr.alg_srtruimte_omschrijving,
rg.alg_gebouw_key,
a.prs_afdeling_key,
TO_NUMBER( TO_CHAR( SUM( NVL( rg.alg_ruimte_bruto_vloeropp
* ra.prs_ruimteafdeling_bezetting
/ 100,
0)),
'9999999D9'))
netto,
TO_NUMBER( TO_CHAR( SUM( NVL( rg.alg_ruimte_bruto_vloeropp
* ra.prs_ruimteafdeling_bezetting
/ 100,
0)
* (1 + akz.akz_f_pct_gemeensch (
rg.alg_verdieping_key))),
'9999999D9'))
bruto
FROM prs_v_aanwezigafdeling a,
prs_v_aanwezigafdeling e,
prs_v_aanwezigruimteafdeling ra,
alg_v_ruimte_gegevens rg,
alg_srtruimte sr,
akza_v_kostenplaats kp
WHERE e.prs_afdeling_parentkey(+) = a.prs_afdeling_key
AND e.prs_afdeling_parentkey IS NULL
AND kp.prs_kostenplaats_key = a.prs_kostenplaats_key
AND ra.prs_afdeling_key = a.prs_afdeling_key
AND rg.alg_ruimte_key = ra.alg_ruimte_key
AND sr.alg_srtruimte_key = rg.alg_srtruimte_key
AND sr.prs_verhuurbaar IS NOT NULL
AND sr.prs_bevat_werkplek IS NOT NULL
GROUP BY e.prs_afdeling_naam,
kp.prs_kostenplaats_nr,
a.prs_afdeling_omschrijving,
rg.alg_gebouw_omschrijving,
rg.alg_gebouw_key,
rg.alg_verdieping_volgnr,
rg.alg_verdieping_code,
rg.alg_ruimte_nr,
sr.alg_srtruimte_omschrijving,
a.prs_afdeling_key;
-- Now with 3D authorization on Building
CREATE OR REPLACE VIEW akz_schoonmaakrapport (fclt_f_gebouw,
hide_f_verdieping_volgnummer,
verdieping,
ruimte,
omschrijving,
opp,
fclt_f_vloerafwerking,
fclt_f_schoonmaakniveau,
kosten,
fclt_3d_gebouw_key
)
AS
SELECT alg_g.alg_gebouw_omschrijving fclt_f_gebouw,
alg_v.alg_verdieping_volgnr,
alg_v.alg_verdieping_omschrijving verdieping,
'R' || alg_r.alg_ruimte_nr ruimte,
alg_r.alg_ruimte_omschrijving omschrijving,
alg_r.alg_ruimte_bruto_vloeropp opp,
u.fac_usrdata_omschr fclt_f_vloerafwerking,
n.akz_schnivo_omschrijving fclt_f_schoonmaakniveau,
ROUND(n.akz_schnivo_kengetal * alg_r.alg_ruimte_bruto_vloeropp,2) kosten,
alg_g.alg_gebouw_key
FROM alg_v_aanweziggebouw alg_g,
alg_v_aanwezigverdieping alg_v,
alg_v_aanwezigruimte alg_r,
alg_onrgoedkenmerk alg_k1,
alg_onrgoedkenmerk alg_k2,
akz_schnivo n,
fac_usrdata u
WHERE alg_v.alg_gebouw_key = alg_g.alg_gebouw_key
AND alg_v.alg_verdieping_key = alg_r.alg_verdieping_key
AND alg_r.alg_ruimte_key = alg_k1.alg_onrgoed_key(+)
AND alg_k1.alg_kenmerk_key(+) = 1001 --nivo
AND alg_k1.alg_onrgoedkenmerk_waarde = n.akz_schnivo_key
AND alg_r.alg_ruimte_key = alg_k2.alg_onrgoed_key(+)
AND alg_k2.alg_kenmerk_key(+) = 2 -- srtvloer
AND alg_k2.alg_onrgoedkenmerk_waarde = u.fac_usrdata_key(+)
AND u.fac_usrtab_key(+) = 1
ORDER BY alg_v.alg_verdieping_volgnr, alg_r.alg_ruimte_upper_nr;
-- AKZA#476/AKZA#669
CREATE OR REPLACE VIEW akz_v_jaarkosten_per_ordernr (fclt_f_ordernr,
gebouw,
fclt_f_jaar,
besteding
)
AS
SELECT ordernr fclt_f_ordernr,
MIN ( gebouw_omschrijving
|| DECODE ((SELECT COUNT (alg_gebouw_omschrijving)
FROM ALG_GEBOUW
WHERE alg_gebouw_ordernr = ordernr),
'1', '',
', .....'
)
) gebouw,
jaar fclt_f_jaar, SUM (besteding_som) besteding
FROM (SELECT g.alg_gebouw_ordernr ordernr,
g.alg_gebouw_omschrijving gebouw_omschrijving,
TO_CHAR (m.mld_melding_datum, 'YYYY') jaar,
SUM
( o.mld_opdr_kosten
+ NVL
((SELECT Fac.safe_to_number
(mld_kenmerkopdr_waarde)
FROM MLD_KENMERKOPDR ko
WHERE mld_kenmerk_key = 2
AND mld_kenmerkopdr_verwijder IS NULL
AND o.mld_opdr_key = ko.mld_opdr_key),
0
)
) besteding_som
FROM MLD_MELDING m,
MLD_OPDR o,
ALG_GEBOUW g,
alg_v_onroerendgoed og,
akza_v_kostenplaats k
WHERE m.mld_melding_key = o.mld_melding_key
AND og.alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys
AND og.alg_gebouw_key = g.alg_gebouw_key
AND o.prs_kostenplaats_key = k.prs_kostenplaats_key
AND k.prs_kostenplaats_module = 'ALG'
GROUP BY g.alg_gebouw_ordernr,
g.alg_gebouw_omschrijving,
TO_CHAR (m.mld_melding_datum, 'YYYY'))
GROUP BY ordernr, jaar
UNION ALL
SELECT ordernr fclt_f_ordernr,
MIN
( terein_omschrijving
|| DECODE ((SELECT COUNT (alg_terreinsector_omschrijving)
FROM ALG_TERREINSECTOR
WHERE alg_terreinsector_ordernr = ordernr),
'1', '',
', .....'
)
) terrein,
jaar fclt_f_jaar, SUM (besteding_som) besteding
FROM (SELECT g.alg_terreinsector_ordernr ordernr,
g.alg_terreinsector_omschrijving terein_omschrijving,
TO_CHAR (m.mld_melding_datum, 'YYYY') jaar,
SUM
( o.mld_opdr_kosten
+ NVL
((SELECT Fac.safe_to_number
(mld_kenmerkopdr_waarde)
FROM MLD_KENMERKOPDR ko
WHERE mld_kenmerk_key = 2
AND mld_kenmerkopdr_verwijder IS NULL
AND o.mld_opdr_key = ko.mld_opdr_key),
0
)
) besteding_som
FROM MLD_MELDING m,
MLD_OPDR o,
ALG_TERREINSECTOR g,
alg_v_onroerendgoed og,
akza_v_kostenplaats k
WHERE m.mld_melding_key = o.mld_melding_key
AND og.alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys
AND og.alg_terreinsector_key = g.alg_terreinsector_key
AND o.prs_kostenplaats_key = k.prs_kostenplaats_key
AND k.prs_kostenplaats_module = 'ALG'
GROUP BY g.alg_terreinsector_ordernr,
g.alg_terreinsector_omschrijving,
TO_CHAR (m.mld_melding_datum, 'YYYY'))
GROUP BY ordernr, jaar
/
-- AKZA#494: rapportage "doorbelasting outlets" uses this table
CREATE OR REPLACE VIEW PRS_EENHEID
(prs_eenheid_key, prs_eenheid_code, prs_eenheid_upper, prs_eenheid_omschrijving,
prs_eenheid_aanmaak, prs_eenheid_verwijder, prs_bedrijf_key)
AS
SELECT a.prs_afdeling_key,
a.prs_afdeling_naam,
a.prs_afdeling_upper,
a.prs_afdeling_omschrijving,
a.prs_afdeling_aanmaak,
a.prs_afdeling_verwijder,
a.prs_bedrijf_key
FROM prs_afdeling a
WHERE a.prs_afdeling_parentkey IS NULL;
--------------------------------------- MAPGUIDE VIEWS ----------------------------------------
--------------------------------------- MAPGUIDE VIEWS ----------------------------------------
--------------------------------------- MAPGUIDE VIEWS ----------------------------------------
--- voor room_dep thema
CREATE OR REPLACE VIEW akza_v_cad_ruimte_eenheid (parentkey, code, waarde)
AS
SELECT r.alg_verdieping_key, r.alg_ruimte_nr, 'NIETVERH'
FROM prs_perslidwerkplek pw,
prs_werkplek w,
prs_afdeling a,
prs_afdeling e,
prs_perslid p,
alg_ruimte r
WHERE a.prs_afdeling_parentkey = e.prs_afdeling_key
AND w.prs_alg_ruimte_key = r.alg_ruimte_key
AND e.prs_afdeling_parentkey IS NULL
AND pw.prs_perslidwerkplek_verwijder IS NULL
AND w.prs_werkplek_verwijder IS NULL
AND pw.prs_werkplek_key = w.prs_werkplek_key
AND a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_naam = 'NIET VERH'
AND p.prs_perslid_verwijder IS NULL
AND pw.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
GROUP BY r.alg_verdieping_key, r.alg_ruimte_nr
UNION
SELECT r.alg_verdieping_key, r.alg_ruimte_nr, MAX (e.prs_afdeling_naam)
FROM prs_perslidwerkplek pw,
prs_werkplek w,
prs_afdeling a,
prs_afdeling e,
prs_perslid p,
alg_ruimte r
WHERE a.prs_afdeling_parentkey = e.prs_afdeling_key
AND w.prs_alg_ruimte_key = r.alg_ruimte_key
AND e.prs_afdeling_parentkey IS NULL
AND pw.prs_perslidwerkplek_verwijder IS NULL
AND w.prs_werkplek_verwijder IS NULL
AND pw.prs_werkplek_key = w.prs_werkplek_key
AND a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_naam <> 'NIET VERH'
AND p.prs_perslid_verwijder IS NULL
AND pw.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
GROUP BY r.alg_verdieping_key, r.alg_ruimte_nr;
--- voor room_cyl thema
CREATE OR REPLACE VIEW akza_v_cad_ruimte_gasfles (ALG_RUIMTE_KEY, WAARDE)
AS
SELECT r.alg_ruimte_key, COUNT (d.ins_deel_key)
FROM alg_v_aanwezigruimte r, ins_v_aanwezigdeel d
WHERE r.alg_ruimte_key = d.ins_alg_ruimte_key AND d.ins_srtdeel_key = 425
GROUP BY r.alg_ruimte_key;
--- voor room_occ thema
--CREATE OR REPLACE VIEW akza_v_cad_ruimte_bezetting (ALG_RUIMTE_KEY, WAARDE)
--AS
--SELECT r.alg_ruimte_key,
-- to_char(DECODE (SUM (arno),
-- 0, akz.akz_f_cad_ruimte_bezetting( (COUNT (prs_werkplek_key) - SUM (aantal_leeg))
-- / COUNT (prs_werkplek_key)
-- * 100
-- ),
-- 150
-- ))
-- FROM (SELECT w.prs_alg_ruimte_key alg_ruimte_key, w.prs_werkplek_key,
-- SUM (prs_perslidwerkplek_bezetting) "PRS_WERKPLEK_BEZETTING",
-- SUM (DECODE (INSTR (prs_perslid_upper, 'LEEG'), 0, 0, 1)) "AANTAL_LEEG",
-- SUM (DECODE (INSTR (prs_afdeling_upper, 'NIET VERH'), 0, 0, 1)) "ARNO"
-- FROM prs_v_aanwezigperslidwerkplek pw,
-- prs_v_aanwezigwerkplek w,
-- prs_perslid p,
-- prs_afdeling a
-- WHERE p.prs_perslid_key = pw.prs_perslid_key
-- AND p.prs_afdeling_key = a.prs_afdeling_key
-- AND w.prs_werkplek_key = pw.prs_werkplek_key(+)
-- GROUP BY prs_alg_ruimte_key, w.prs_werkplek_key) x,
-- alg_ruimte r
-- WHERE r.alg_ruimte_key = x.alg_ruimte_key
-- GROUP BY r.alg_ruimte_key;
CREATE OR REPLACE VIEW akza_v_cad_ruimte_bezetting
(
ALG_RUIMTE_KEY,
WAARDE
)
AS
SELECT ar.alg_ruimte_key,
-- bepaal bezetting: wel/niet verhuurd, alle/een paar/geen werkplekken vrij
TO_CHAR(DECODE (
SUM (bezetting) / (COUNT (prs_werkplek_key) * 100),
0,
-- 150 = geen afdeling toegewezen, dus niet verhuurd
-- 0 = wel een afdeling, maar alle werkplekken vrij
DECODE ( ( SELECT COUNT (prs_afdeling_key)
FROM prs_v_aanwezigruimteafdeling ara
WHERE ara.alg_ruimte_key = ar.alg_ruimte_key
GROUP BY alg_ruimte_key),
NULL, 150,
0, 150,
0),
-- alles tussen 0 en 100 wordt 50 ('deels bezet')
akz.akz_f_cad_ruimte_bezetting (
SUM (bezetting) / (COUNT (prs_werkplek_key)))))
FROM ( SELECT awp.prs_alg_ruimte_key alg_ruimte_key,
awp.prs_werkplek_key,
SUM (COALESCE (prs_perslidwerkplek_bezetting, 0)) bezetting,
a2.prs_afdeling_key
FROM alg_v_aanwezigruimte ar,
prs_v_aanwezigwerkplek awp,
prs_v_aanwezigperslidwerkplek apwp,
prs_v_aanwezigperslid ap,
prs_afdeling a1,
prs_afdeling a2,
prs_v_aanwezigruimteafdeling ara
WHERE awp.prs_alg_ruimte_key = ar.alg_ruimte_key
AND apwp.prs_werkplek_key(+) = awp.prs_werkplek_key
AND ap.prs_perslid_key(+) = apwp.prs_perslid_key
AND a1.prs_afdeling_key(+) = ap.prs_afdeling_key
AND ara.alg_ruimte_key(+) = ar.alg_ruimte_key
AND a2.prs_afdeling_key(+) = ara.prs_afdeling_key
GROUP BY prs_alg_ruimte_key,
awp.prs_werkplek_key,
a2.prs_afdeling_key) x,
alg_v_aanwezigruimte ar
WHERE ar.alg_ruimte_key = x.alg_ruimte_key
GROUP BY ar.alg_ruimte_key;
CREATE OR REPLACE VIEW akza_v_thema_ruimteafd
(
ALG_RUIMTE_KEY,
WAARDE,
WAARDE_KEY
)
AS
SELECT x.alg_ruimte_key,
DECODE (y.aantal,
NULL, '[Leegstand]',
1, SUBSTR (y.sp, 1, 60),
'[Meerdere afdelingen]'),
DECODE (y.aantal, NULL, -1, 1, y.sp_key, NULL)
FROM (SELECT r.alg_ruimte_key
FROM alg_v_aanwezigruimte r,
alg_v_aanwezigsrtruimte sr
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key
AND sr.prs_verhuurbaar IS NOT NULL
AND sr.alg_srtruimte_upper NOT LIKE '%VERKEER%') x
LEFT JOIN
( SELECT ra.alg_ruimte_key,
MIN (a.prs_afdeling_naam1) sp,
MIN (a.prs_afdeling_key) sp_key,
COUNT (ra.prs_afdeling_key) aantal
FROM prs_v_aanwezigruimteafdeling ra,
prs_v_aanwezigafdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
GROUP BY ra.alg_ruimte_key) y
ON x.alg_ruimte_key = y.alg_ruimte_key
UNION ALL
SELECT NULL, SUBSTR (a.prs_afdeling_naam1, 1, 60), a.prs_afdeling_key
FROM prs_v_aanwezigafdeling a
WHERE NOT EXISTS (SELECT ra.prs_afdeling_key
FROM prs_v_aanwezigruimteafdeling ra
WHERE ra.prs_afdeling_key = a.prs_afdeling_key);
--- voor room_cov thema
CREATE OR REPLACE VIEW akza_v_cad_ruimte_vloersoort (ALG_RUIMTE_KEY, WAARDE)
AS
SELECT r.alg_ruimte_nr, COUNT (d.ins_deel_key)
FROM alg_v_aanwezigruimte r, ins_v_aanwezigdeel d
WHERE r.alg_ruimte_key = d.ins_alg_ruimte_key AND d.ins_srtdeel_key = 425
GROUP BY r.alg_ruimte_nr;
------------------------------------ SERVICEDESK RAPPORTAGE FUNCTIES-----------------------------------
------------------------------------ SERVICEDESK RAPPORTAGE FUNCTIES-----------------------------------
------------------------------------ SERVICEDESK RAPPORTAGE FUNCTIES-----------------------------------
-- 001 Uitgegeven aan uitvoerende: Servicedesk.
/* Formatted on 30-6-2010 6:50:07 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW akza_v_rap_uitg_servicedesk
(
fclt_f_uitvoerende,
fclt_f_mldnr,
omschrijving,
fclt_f_meldernaam,
begindatum,
dagen,
afmelddatum
)
AS
SELECT prs_bedrijf_naam fclt_f_uitvoerende,
TO_CHAR (m.mld_melding_key) fclt_f_mldnr,
o.mld_opdr_omschrijving omschrijving,
pf.prs_perslid_naam_full fclt_f_meldernaam,
TO_CHAR (o.mld_opdr_datumbegin, 'DD-MM-YYYY') begindatum,
TO_CHAR (fac.count_Work_Days(o.mld_opdr_datumbegin, o.mld_opdr_einddatum)) dagen,
TO_CHAR (fac.gettrackingdate ('MLDAFM', m.mld_melding_key), 'DD-MM-YYYY') afmelddatum
FROM mld_opdr o, prs_bedrijf b, mld_melding m, prs_v_perslid_fullnames_all pf
WHERE o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND o.mld_melding_key = m.mld_melding_key
AND pf.prs_perslid_key = m.prs_perslid_key
AND (b.prs_bedrijf_key IN (7665, 7651, 7648))
AND o.mld_statusopdr_key = 5;
-- 002 Uitgegeven aan uitvoerenden: Schoonmaak.
/* Formatted on 30-6-2010 6:49:23 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW akza_v_rap_uitg_schoonmaak
(
fclt_f_uitvoerende,
fclt_f_mldnr,
omschrijving,
fclt_f_meldernaam,
begindatum,
dagen,
afmelddatum
)
AS
SELECT prs_bedrijf_naam fclt_f_uitvoerende,
TO_CHAR (m.mld_melding_key) fclt_f_mldnr,
o.mld_opdr_omschrijving omschrijving,
pf.prs_perslid_naam_full fclt_f_meldernaam,
TO_CHAR (o.mld_opdr_datumbegin, 'DD-MM-YYYY') begindatum,
TO_CHAR (fac.count_Work_Days(o.mld_opdr_datumbegin, o.mld_opdr_einddatum)) dagen,
TO_CHAR (fac.gettrackingdate ('MLDAFM', m.mld_melding_key), 'DD-MM-YYYY') afmelddatum
FROM mld_opdr o, prs_bedrijf b, mld_melding m, prs_v_perslid_fullnames_all pf
WHERE o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND o.mld_melding_key = m.mld_melding_key
AND pf.prs_perslid_key = m.prs_perslid_key
AND o.mld_statusopdr_key = 5
AND (b.prs_bedrijf_key IN (7622, 8062));
-- 003 Uitgegeven aan uitvoerenden: Verhuizen and Kantoorbeheer.
/* Formatted on 30-6-2010 6:48:43 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW akza_v_rap_uitg_kantoorbeheer
(
fclt_f_uitvoerende,
fclt_f_mldnr,
omschrijving,
fclt_f_meldernaam,
begindatum,
dagen,
afmelddatum
)
AS
SELECT prs_bedrijf_naam fclt_f_uitvoerende,
TO_CHAR (m.mld_melding_key) fclt_f_mldnr,
o.mld_opdr_omschrijving omschrijving,
pf.prs_perslid_naam_full fclt_f_meldernaam,
TO_CHAR (o.mld_opdr_datumbegin, 'DD-MM-YYYY') begindatum,
TO_CHAR (fac.count_Work_Days(o.mld_opdr_datumbegin, o.mld_opdr_einddatum)) dagen,
TO_CHAR (fac.gettrackingdate ('MLDAFM', m.mld_melding_key), 'DD-MM-YYYY') afmelddatum
FROM mld_opdr o, prs_bedrijf b, mld_melding m, prs_v_perslid_fullnames_all pf
WHERE o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND o.mld_melding_key = m.mld_melding_key
AND pf.prs_perslid_key = m.prs_perslid_key
AND b.prs_bedrijf_key IN (7643, 7644, 7646, 7654, 7662)
AND o.mld_statusopdr_key = 5;
-- 004 Uitgegeven aan ALF Elektro uitvoerenden.
/* Formatted on 30-6-2010 6:47:38 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW akza_v_rap_uitg_electro_alf
(
fclt_f_uitvoerende,
fclt_f_mldnr,
omschrijving,
fclt_f_meldernaam,
begindatum,
dagen,
afmelddatum
)
AS
SELECT prs_bedrijf_naam fclt_f_uitvoerende,
TO_CHAR (m.mld_melding_key) fclt_f_mldnr,
o.mld_opdr_omschrijving omschrijving,
pf.prs_perslid_naam_full fclt_f_meldernaam,
TO_CHAR (o.mld_opdr_datumbegin, 'DD-MM-YYYY') begindatum,
TO_CHAR (fac.count_Work_Days(o.mld_opdr_datumbegin, o.mld_opdr_einddatum)) dagen,
TO_CHAR (fac.gettrackingdate ('MLDAFM', m.mld_melding_key), 'DD-MM-YYYY') afmelddatum
FROM mld_opdr o, prs_bedrijf b, mld_melding m, prs_v_perslid_fullnames_all pf
WHERE o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND o.mld_melding_key = m.mld_melding_key
AND pf.prs_perslid_key = m.prs_perslid_key
AND b.prs_bedrijf_key IN (7667, 7672, 7676, 7683, 7960, 12393)
AND o.mld_statusopdr_key = 5;
-- 005 Uitgegeven aan uitvoerenden: vakgroepbeheer Elektro.
/* Formatted on 30-6-2010 6:46:48 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW akza_v_rap_uitg_electro
(
fclt_f_mldnr,
begindatum,
dagen,
opdrachtomschrijving,
fclt_f_uitvoerende,
afmelddatum
)
AS
SELECT TO_CHAR (m.mld_melding_key) fclt_f_mldnr,
TO_CHAR (o.mld_opdr_datumbegin, 'DD-MM-YYYY') begindatum,
TO_CHAR (fac.count_Work_Days(o.mld_opdr_datumbegin, o.mld_opdr_einddatum)) dagen,
o.mld_opdr_omschrijving opdrachtomschrijving,
prs_bedrijf_naam fclt_f_uitvoerende,
TO_CHAR (fac.gettrackingdate ('MLDAFM', m.mld_melding_key), 'DD-MM-YYYY') afmelddatum
FROM mld_melding m, mld_opdr o, prs_bedrijf b, prs_v_perslid_fullnames_all pf
WHERE m.mld_melding_key = o.mld_melding_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND pf.prs_perslid_key = m.prs_perslid_key
AND (UPPER (pf.prs_perslid_naam_full) LIKE 'PELGRIM%')
AND o.mld_statusopdr_key = 5;
-- 006 Uitgegeven aan uitvoerenden: accountmanager "Terrein & Derden".
/* Formatted on 30-6-2010 6:45:33 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW akza_v_rap_uitg_accman_td
(
fclt_f_mldnr,
begindatum,
dagen,
opdrachtomschrijving,
fclt_f_order_nr,
fclt_f_uitvoerende,
afmelddatum
)
AS
SELECT TO_CHAR (m.mld_melding_key) fclt_f_mldnr,
TO_CHAR (o.mld_opdr_datumbegin, 'DD-MM-YYYY') begindatum,
TO_CHAR (fac.count_Work_Days(o.mld_opdr_datumbegin, o.mld_opdr_einddatum)) dagen,
o.mld_opdr_omschrijving opdrachtomschrijving,
o.mld_opdr_ordernr fclt_f_order_nr,
prs_bedrijf_naam fclt_f_uitvoerende,
TO_CHAR (fac.gettrackingdate ('MLDAFM', m.mld_melding_key), 'DD-MM-YYYY') afmelddatum
FROM mld_melding m, mld_opdr o, prs_bedrijf b, prs_v_perslid_fullnames_all pf
WHERE m.mld_melding_key = o.mld_melding_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND pf.prs_perslid_key = m.prs_perslid_key
AND (UPPER (pf.prs_perslid_naam_full) LIKE 'SWEERS%')
AND o.mld_statusopdr_key = 5
ORDER BY b.prs_bedrijf_naam;
-- 007 Uitgegeven aan uitvoerenden: accountmanager "AHQ".
CREATE OR REPLACE VIEW akza_v_rap_uitg_accman_ahq
AS
SELECT b.prs_bedrijf_naam hide_f_prs_bedrijf_naam,
TO_CHAR (o.mld_melding_key) fclt_f_meldnr,
TO_CHAR (o.mld_opdr_datumbegin, 'DD-MM-YYYY') opdr_datum,
TO_CHAR (fac.count_Work_Days(o.mld_opdr_datumbegin, o.mld_opdr_einddatum)) uitv_dgn, o.mld_opdr_omschrijving meldtekst,
g.alg_gebouw_naam gebouw, b.prs_bedrijf_naam fclt_f_uitvoerende,
g.alg_verdieping_omschrijving verdieping,
o.mld_opdr_ordernr fclt_f_int_ord_nr
FROM mld_melding m, mld_opdr o, prs_bedrijf b, alg_v_allonrgoed_gegevens g, prs_v_perslid_fullnames_all pf
WHERE m.mld_melding_key = o.mld_melding_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND m.mld_alg_onroerendgoed_keys = g.alg_onroerendgoed_keys
AND pf.prs_perslid_key = m.prs_perslid_key
AND (UPPER (pf.prs_perslid_naam_full) LIKE 'RUTJES J%')
AND o.mld_statusopdr_key = 5;
/
-- 008 Kosten op internal- of bewonersordernummer per periode.
/* Formatted on 30-6-2010 6:42:27 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW akza_v_rap_kosten_pp
(
fclt_f_ord_nr,
melddatum,
datumverw,
mldnr,
meldernaam,
uitvoerder,
meldtekst,
meldstatus,
kosten_k,
kosten
)
AS
SELECT o.mld_opdr_ordernr fclt_f_ord_nr,
o.mld_opdr_datumbegin melddatum,
fac.gettrackingdate ('MLDVER', m.mld_melding_key) datumverw,
TO_CHAR (o.mld_melding_key) mldnr,
pf.prs_perslid_naam_full meldernaam,
b.prs_bedrijf_naam uitvoerder,
o.mld_opdr_omschrijving meldtekst,
o.mld_statusopdr_key || '. ' || mld_statusopdr_omschrijving meldstatus,
m.mld_kosten_klant kosten_k,
o.mld_opdr_kosten
+ NVL (
(SELECT fac.safe_to_number (mld_kenmerkopdr_waarde)
FROM mld_kenmerkopdr ko
WHERE mld_kenmerk_key = 2
AND mld_kenmerkopdr_verwijder IS NULL
AND o.mld_opdr_key = ko.mld_opdr_key),
0
)
kosten
FROM mld_melding m, mld_opdr o, prs_bedrijf b, mld_statusopdr so, prs_v_perslid_fullnames_all pf
WHERE m.mld_melding_key = o.mld_melding_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND so.mld_statusopdr_key = o.mld_statusopdr_key
AND m.mld_melding_status <> 6
AND pf.prs_perslid_key = m.prs_perslid_key
AND o.mld_statusopdr_key = 6
AND o.mld_opdr_kosten
+ (SELECT NVL (fac.safe_to_number (mld_kenmerkopdr_waarde), 0)
FROM mld_kenmerkopdr ko
WHERE mld_kenmerk_key = 2
AND mld_kenmerkopdr_verwijder IS NULL
AND o.mld_opdr_key = ko.mld_opdr_key) > 0
AND o.mld_opdr_ordernr IS NOT NULL
AND (o.mld_opdr_ordernr LIKE 'B-%' OR o.mld_opdr_ordernr LIKE 'I-%' OR o.mld_opdr_ordernr LIKE 'O-%')
UNION ALL -- ALL want anders worden dubbelen er uit gehaald
SELECT o.mld_opdr_ordernr fclt_f_ord_nr,
o.mld_opdr_datumbegin melddatum,
fac.gettrackingdate ('MLDVER', m.mld_melding_key) datumverw,
TO_CHAR (o.mld_melding_key) mldnr,
pf.prs_perslid_naam_full meldernaam,
b.prs_bedrijf_naam uitvoerder,
o.mld_opdr_omschrijving meldtekst,
o.mld_statusopdr_key || '. ' || mld_statusopdr_omschrijving meldstatus,
m.mld_kosten_klant kosten_k,
o.mld_opdr_kosten
+ NVL (
(SELECT fac.safe_to_number (mld_kenmerkopdr_waarde)
FROM mld_kenmerkopdr ko
WHERE mld_kenmerk_key = 2
AND mld_kenmerkopdr_verwijder IS NULL
AND o.mld_opdr_key = ko.mld_opdr_key),
0
)
kosten
FROM mld_melding m, mld_opdr o, prs_bedrijf b, mld_statusopdr so, prs_v_perslid_fullnames_all pf
WHERE m.mld_melding_key = o.mld_melding_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND so.mld_statusopdr_key = o.mld_statusopdr_key
AND pf.prs_perslid_key = m.prs_perslid_key
AND TO_CHAR (fac.gettrackingdate ('MLDVER', m.mld_melding_key), 'YYYY') > '2001'
AND o.mld_statusopdr_key = 7
AND o.mld_opdr_kosten
+ (SELECT NVL (fac.safe_to_number (mld_kenmerkopdr_waarde), 0)
FROM mld_kenmerkopdr ko
WHERE mld_kenmerk_key = 2
AND mld_kenmerkopdr_verwijder IS NULL
AND o.mld_opdr_key = ko.mld_opdr_key) > 0
AND o.mld_opdr_ordernr IS NOT NULL
AND (o.mld_opdr_ordernr LIKE 'B-%' OR o.mld_opdr_ordernr LIKE 'I-%' OR o.mld_opdr_ordernr LIKE 'O-%');
/* Formatted on 30-6-2010 6:43:54 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW akza_v_rap_uitg
(
fclt_f_uitvoerende,
fclt_f_mldnr,
omschrijving,
fclt_f_meldernaam,
begindatum,
dagen,
afmelddatum
)
AS
SELECT prs_bedrijf_naam fclt_f_uitvoerende,
TO_CHAR (m.mld_melding_key) fclt_f_mldnr,
o.mld_opdr_omschrijving omschrijving,
pf.prs_perslid_naam_full fclt_f_meldernaam,
o.mld_opdr_datumbegin begindatum,
TO_CHAR (fac.count_Work_Days(o.mld_opdr_datumbegin, o.mld_opdr_einddatum)) dagen,
fac.gettrackingdate ('MLDAFM', m.mld_melding_key) afmelddatum
FROM mld_opdr o, prs_bedrijf b, mld_melding m, prs_v_perslid_fullnames_all pf
WHERE o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND o.mld_melding_key = m.mld_melding_key
AND pf.prs_perslid_key = m.prs_perslid_key
AND o.mld_statusopdr_key = 5;
-- 010 Uitgegeven aan uitvoerenden: vakgroepbeheer Werktuigbouw
--aka Toms view
/* Formatted on 30-6-2010 6:51:06 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW akza_v_rap_uitg_wtb
(
fclt_f_uitvoerende,
fclt_f_mldnr,
melding_opdracht_omschrijving,
datum_opdr,
dagen,
afgemeld,
fclt_f_meldernaam
)
AS
SELECT prs_bedrijf.prs_bedrijf_naam,
TO_CHAR (mld_opdr.mld_melding_key),
mld_opdr.mld_opdr_omschrijving,
TO_CHAR (mld_opdr.mld_opdr_datumbegin, 'DD-MM-YYYY') mld_opdr_datumbegin,
TO_CHAR (fac.count_Work_Days(mld_opdr.mld_opdr_datumbegin, mld_opdr.mld_opdr_einddatum)),
TO_CHAR (fac.gettrackingdate ('MLDAFM', m.mld_melding_key), 'DD-MM-YYYY') mld_melding_afgemeld,
pf.prs_perslid_naam_full
FROM mld_opdr, prs_bedrijf, mld_melding m, prs_v_perslid_fullnames_all pf
WHERE mld_opdr.mld_uitvoerende_keys = prs_bedrijf.prs_bedrijf_key
AND mld_opdr.mld_melding_key = m.mld_melding_key
AND pf.prs_perslid_key = m.prs_perslid_key
AND mld_opdr.mld_statusopdr_key = 5
AND ( prs_bedrijf.prs_bedrijf_key = 7657
OR prs_bedrijf.prs_bedrijf_key = 8143
OR prs_bedrijf.prs_bedrijf_key = 8144);
CREATE OR REPLACE VIEW FAC_V_RAP_GROEPLEDEN
(NAAM, FCLT_F_LOGIN, FCLT_F_GROEP, AANTAL_RECHTEN)
AS
SELECT p.prs_perslid_naam, p.prs_perslid_oslogin,
gr.fac_groep_omschrijving, TO_CHAR(COUNT(*))
FROM FAC_GEBRUIKERSGROEP gg,
prs_v_aanwezigperslid p,
FAC_GROEP gr,
FAC_GROEPRECHTEN grr
WHERE p.prs_perslid_key = gg.prs_perslid_key
AND gg.fac_groep_key = gr.fac_groep_key
AND gr.FAC_GROEP_KEY = grr.fac_groep_key
AND gr.fac_groep_verwijder IS NULL
GROUP BY p.prs_perslid_naam, p.prs_perslid_oslogin,
gr.fac_groep_omschrijving;
/
-- views for report INS039
CREATE OR REPLACE VIEW AKZ_V_OUTLET_PRIJS
(INS_DEEL_KEY, INS_DEEL_OMSCHRIJVING, INS_DEEL_UPPER, ALG_PLAATSAANDUIDING,
AANSLUITTYPE_PRIJS, NETWERK_PRIJS, OPTIE2_PRIJS, OPTIE3_PRIJS, OPTIE4_PRIJS, KAMERHUB_PRIJS,
TOTAALPRIJS, AANSLUITTYPE)
AS
SELECT od.ins_deel_key,
od.ins_deel_omschrijving,
od.ins_deel_upper,
(SELECT alg_l.alg_locatie_code
|| '-'
|| alg_g.alg_gebouw_code
|| '-'
|| alg_v.alg_verdieping_code
|| '-'
|| alg_r.alg_ruimte_nr
FROM alg_ruimte alg_r,
alg_verdieping alg_v,
alg_gebouw alg_g,
alg_locatie alg_l
WHERE alg_r.alg_verdieping_key = alg_v.alg_verdieping_key
AND alg_v.alg_gebouw_key = alg_g.alg_gebouw_key
AND alg_g.alg_locatie_key = alg_l.alg_locatie_key
AND alg_r.alg_ruimte_key = od.ins_alg_ruimte_key) alg_plaatsaanduiding,
NVL(fuda.fac_usrdata_prijs, 0) aansluittype_prijs,
NVL(fudn.fac_usrdata_prijs, 0) netwerk_prijs,
NVL(fudo2.fac_usrdata_prijs, 0) optie2_prijs,
NVL(fudo3.fac_usrdata_prijs, 0) optie3_prijs,
NVL(fudo4.fac_usrdata_prijs, 0) optie4_prijs,
NVL(fudk.fac_usrdata_prijs, 0) kamerhub_prijs,
(NVL(fuda.fac_usrdata_prijs, 0)
+ NVL(fudn.fac_usrdata_prijs, 0)
+ NVL(fudk.fac_usrdata_prijs, 0)
+ NVL(fudo2.fac_usrdata_prijs, 0)
+ NVL(fudo3.fac_usrdata_prijs, 0)
+ NVL(fudo4.fac_usrdata_prijs, 0)) totaalprijs,
fuda.fac_usrdata_omschr aansluittype
FROM ins_v_aanwezigkenmerkdeel kd,
ins_v_aanwezigkenmerkdeel ka,
ins_v_aanwezigkenmerkdeel kn,
ins_v_aanwezigkenmerkdeel kk,
ins_v_aanwezigkenmerkdeel ko2,
ins_v_aanwezigkenmerkdeel ko3,
ins_v_aanwezigkenmerkdeel ko4,
fac_usrdata fuda,
fac_usrdata fudn,
fac_usrdata fudk,
fac_usrdata fudo2,
fac_usrdata fudo3,
fac_usrdata fudo4,
ins_deel od
WHERE od.ins_deel_key = kd.ins_deel_key
AND od.ins_deel_key = ka.ins_deel_key(+)
AND od.ins_deel_key = kn.ins_deel_key(+)
AND od.ins_deel_key = kk.ins_deel_key(+)
AND od.ins_deel_key = ko2.ins_deel_key(+)
AND od.ins_deel_key = ko3.ins_deel_key(+)
AND od.ins_deel_key = ko4.ins_deel_key(+)
AND od.ins_deel_verwijder IS NULL
AND kd.ins_kenmerkdeel_waarde = TO_CHAR (181) -- doorbelasten_key is ja
AND kd.ins_kenmerk_key = 51 -- doorbelasten
AND ka.ins_kenmerk_key(+) = 48 -- type aansluiting
AND kn.ins_kenmerk_key(+) = 53 -- netwerk
AND kk.ins_kenmerk_key(+) = 54 -- KamerHUB
AND ko2.ins_kenmerk_key(+) = 55 -- optie2
AND ko3.ins_kenmerk_key(+) = 56 -- optie3
AND ko4.ins_kenmerk_key(+) = 57 -- optie4
AND ka.ins_kenmerkdeel_waarde = TO_CHAR(fuda.fac_usrdata_key(+))
AND kn.ins_kenmerkdeel_waarde = TO_CHAR(fudn.fac_usrdata_key(+))
AND kk.ins_kenmerkdeel_waarde = TO_CHAR(fudk.fac_usrdata_key(+))
AND ko2.ins_kenmerkdeel_waarde = TO_CHAR(fudo2.fac_usrdata_key(+))
AND ko3.ins_kenmerkdeel_waarde = TO_CHAR(fudo3.fac_usrdata_key(+))
AND ko4.ins_kenmerkdeel_waarde = TO_CHAR(fudo4.fac_usrdata_key(+))
AND od.ins_srtdeel_key = 646 --'OUTLET'
ORDER BY 1
/
CREATE OR REPLACE VIEW AKZ_V_OUTLET_KOSTPL
(INS_DEEL_KEY, INS_DEEL_OMSCHRIJVING, KOSTENPLAATS)
AS
SELECT ins_deel_key, ins_deel_omschrijving,
NVL (rkostenplaats, skostenplaats) kostenplaats
FROM (SELECT od.ins_deel_key, od.ins_deel_omschrijving,
(select k.prs_kostenplaats_nr from akza_v_kostenplaats k where k.prs_kostenplaats_key = pa.prs_kostenplaats_key) skostenplaats,
NULL rkostenplaats, 1 speciaal
FROM ins_deel od, prs_afdeling pa, ins_v_aanwezigkenmerkdeel ik
WHERE pa.prs_afdeling_key =
fac.safe_to_number (ik.ins_kenmerkdeel_waarde)
AND ik.ins_kenmerk_key = 47
AND ik.ins_deel_key = od.ins_deel_key
AND od.ins_deel_parent_key IS NOT NULL
AND od.ins_deel_verwijder IS NULL
AND od.ins_srtdeel_key = 646 --'OUTLET'
UNION
SELECT od.ins_deel_key, od.ins_deel_omschrijving,
NULL skostenplaats,
(select k.prs_kostenplaats_nr from akza_v_kostenplaats k where k.prs_kostenplaats_key = pa.prs_kostenplaats_key) rkostenplaats, 0 speciaal
FROM ins_deel od, prs_afdeling pa, prs_v_werkplekafdeling_geg wa
WHERE pa.prs_afdeling_key = wa.prs_afdeling_key
AND wa.alg_ruimte_key = od.ins_alg_ruimte_key
AND od.ins_alg_ruimte_type IN ('R', 'W')
AND od.ins_deel_parent_key IS NOT NULL
AND od.ins_deel_verwijder IS NULL
AND od.ins_srtdeel_key = 646 --'OUTLET'
AND od.ins_deel_key NOT IN (
SELECT od.ins_deel_key
FROM ins_deel od,
prs_afdeling pa,
ins_v_aanwezigkenmerkdeel ik
WHERE pa.prs_afdeling_key =
fac.safe_to_number (ik.ins_kenmerkdeel_waarde)
AND ik.ins_kenmerk_key = 47
AND ik.ins_deel_key = od.ins_deel_key
AND od.ins_deel_parent_key IS NOT NULL
AND od.ins_deel_verwijder IS NULL
AND od.ins_srtdeel_key = 646) --'OUTLET'
)
ORDER BY 1;
/
CREATE OR REPLACE VIEW AKZ_V_OUTLET_PRIJS_KOSTPL
(FCLT_F_KOSTENPLAATS, AANTAL, AANSLUITTYPE, TOTAALPRIJS)
AS
SELECT ok.kostenplaats,
COUNT(*) aantal,
op.aansluittype,
SUM(op.totaalprijs)
FROM akz_v_outlet_prijs op,
akz_v_outlet_kostpl ok
WHERE op.ins_deel_key = ok.ins_deel_key
GROUP BY ok.kostenplaats, op.aansluittype
/
-- views for report INS040
CREATE OR REPLACE VIEW AKZ_V_WALLPLATE_PLAATS_KENM
(INS_DEEL_KEY, INS_DEEL_OMSCHRIJVING, MODULE, POORT, NETWERK,
ALG_PLAATSAANDUIDING, OUTLETTYPE, OPMERKING, ALG_GEBOUW_KEY, ALG_GEBOUW_OMSCHRIJVING,
ALG_VERDIEPING_KEY, ALG_VERDIEPING_OMSCHRIJVING, ALG_RUIMTE_KEY)
AS
SELECT od.ins_deel_key,
od.ins_deel_omschrijving,
UPPER(a.ins_deel_hub),
UPPER(a.ins_deel_poort),
fud2.fac_usrdata_omschr netwerk,
l.alg_locatie_code
|| '-'
|| g.alg_gebouw_code
|| '-'
|| v.alg_verdieping_code
|| '-'
|| r.alg_ruimte_nr,
fud.fac_usrdata_omschr outlettype,
k3.ins_kenmerkdeel_waarde opmerking,
g.alg_gebouw_key,
g.alg_gebouw_omschrijving,
v.alg_verdieping_key alg_verdieping_key,
v.alg_verdieping_omschrijving,
od.ins_alg_ruimte_key
FROM ins_deel od,
alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r,
-- type aansluiting
ins_v_aanwezigkenmerkdeel k1,
fac_usrdata fud,
-- module
ins_v_aanwezigkenmerkdeel k2,
ins_v_ins_poorten a,
-- opmerking
ins_v_aanwezigkenmerkdeel k3,
-- netwerk
ins_v_aanwezigkenmerkdeel k4,
fac_usrdata fud2
WHERE od.ins_deel_verwijder IS NULL
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 l.alg_locatie_key = od.ins_alg_locatie_key
AND r.alg_ruimte_key = od.ins_alg_ruimte_key
AND od.ins_srtdeel_key = 646 --'OUTLET'
-- type aansluiting
AND od.ins_deel_key = k1.ins_deel_key(+)
AND k1.ins_kenmerk_key(+) = 48
AND k1.ins_kenmerkdeel_waarde = TO_CHAR (fud.fac_usrdata_key(+))
-- module
AND od.ins_deel_key = k2.ins_deel_key(+)
AND k2.ins_kenmerkdeel_waarde = TO_CHAR (a.ins_deel_key(+))
AND k2.ins_kenmerk_key(+) = 50
-- opmerking
AND od.ins_deel_key = k3.ins_deel_key(+)
AND k3.ins_kenmerk_key(+) = 58
-- netwerk
AND od.ins_deel_key = k4.ins_deel_key(+)
AND k4.ins_kenmerk_key(+) = 53
AND k4.ins_kenmerkdeel_waarde = TO_CHAR (fud2.fac_usrdata_key(+))
ORDER BY od.ins_deel_omschrijving
/
CREATE OR REPLACE VIEW AKZ_V_WALLPLATE_HUURDER
(INS_DEEL_KEY, HUURDER)
AS
SELECT g_outlet.ins_deel_key, MIN (wa.prs_afdeling_naam) huurder
FROM ins_deel g_outlet,
(SELECT prs_a.prs_afdeling_naam, prs_w.prs_alg_ruimte_key alg_ruimte_key,
prs_w.prs_werkplek_volgnr
FROM prs_perslidwerkplek prs_pw,
prs_perslid prs_p,
prs_afdeling prs_a,
prs_werkplek prs_w
WHERE prs_pw.prs_perslid_key = prs_p.prs_perslid_key
AND prs_p.prs_afdeling_key = prs_a.prs_afdeling_key
AND prs_pw.prs_werkplek_key = prs_w.prs_werkplek_key
UNION
SELECT to_char(null), alg_ruimte_key,-1 FROM alg_v_aanwezigruimte) wa
WHERE g_outlet.ins_deel_verwijder IS NULL
and g_outlet.ins_deel_parent_key IS NOT NULL
AND g_outlet.ins_alg_ruimte_key = wa.alg_ruimte_key(+)
AND g_outlet.ins_srtdeel_key = 646 -- OUTLET
AND wa.prs_werkplek_volgnr =
NVL((SELECT MIN (prs_werkplek_volgnr)
FROM prs_v_aanwezigperslidwerkplek prs_pw, prs_werkplek prs_w
WHERE g_outlet.ins_alg_ruimte_key = prs_w.prs_alg_ruimte_key
AND prs_pw.prs_werkplek_key = prs_w.prs_werkplek_key),-1)
GROUP BY g_outlet.ins_deel_key;
/
CREATE OR REPLACE VIEW AKZ_V_WALLPLATE_RAPPORT
(OUTLET, FCLT_F_MODULE, FCLT_F_POORT, FCLT_F_RUIMTE, FCLT_F_HUURDER,
FCLT_F_TYPE_OUTLET, FCLT_F_NETWERK, OPMERKING, FCLT_3D_GEBOUW, FCLT_3D_VERDIEPING)
AS
SELECT wpk.ins_deel_omschrijving outlet,
wpk.module module,
wpk.poort poort,
wpk.alg_plaatsaanduiding ruimte,
wh.huurder fclt_f_huurder,
wpk.outlettype fclt_f_type_outlet,
wpk.netwerk,
wpk.opmerking opmerking,
wpk.alg_gebouw_key,
wpk.alg_verdieping_key
FROM akz_v_wallplate_plaats_kenm wpk,
akz_v_wallplate_huurder wh
WHERE wpk.ins_deel_key = wh.ins_deel_key
/
------------------------------------ VIEWS voor de RITTENADMINISTRATIE ----------------------------
CREATE OR REPLACE VIEW akza_v_rit_adres
as select mld_adres_key, mld_adres_naam, mld_adres_upper, mld_adres_bezoek_adres, mld_adres_bezoek_plaats,
mld_adres_bezoek_plaats || ', ' || mld_adres_bezoek_adres ||
decode( substr(mld_adres_naam,1,5), substr(mld_adres_bezoek_plaats,1,5),'', ', '|| mld_adres_naam) mld_adres_plaats_adres_naam
from mld_adres
where mld_adres_verwijder is null;
/
--- Rittentariefgroep, die uit 3 kosten kan bestaan: constante kosten (c_tarief), km-kosten (km_tarief) en uur-kosten (uur_tarief).
CREATE OR REPLACE VIEW akza_v_rit_tariefgroep
as select fac_usrdata_key akza_v_rit_tariefgroep_key, fac_usrdata_code akza_v_rit_tariefgroep_naam,
fac.safe_to_number(trim(substr(fac_usrdata_omschr, 1, instr(fac_usrdata_omschr, '-', 1, 1) - 1))) c_tarief,
fac.safe_to_number(trim(substr(fac_usrdata_omschr, instr(fac_usrdata_omschr, '-', 1, 1) + 1, instr(fac_usrdata_omschr, '-', 1, 2) - 1 - instr(fac_usrdata_omschr, '-', 1, 1) ))) km_tarief,
fac.safe_to_number(trim(substr(fac_usrdata_omschr, instr(fac_usrdata_omschr, '-', 1, 2) + 1))) uur_tarief
from fac_usrdata
where fac_usrtab_key = 460
and fac_usrdata_volgnr > 0
and fac_usrdata_verwijder is null;
/
CREATE OR REPLACE VIEW akza_v_ritten_reservering
as select res.res_reservering_key
from res_v_aanwezigreservering res, res_v_aanwezigrsv_ruimte ruim
where res.res_reservering_key = ruim.res_reservering_key
-- key van activiteit Rit
and ruim.res_activiteit_key = 41;
/
CREATE OR REPLACE VIEW akza_v_ritten_reservering_geg
as SELECT res.res_reservering_key,
ruim.res_rsv_ruimte_key,
ruim.res_rsv_ruimte_volgnr,
chauf.res_ruimte_nr AS chauffeur,
ruim.res_rsv_ruimte_omschrijving AS omschrijving,
ruim.res_rsv_ruimte_opmerking AS opmerking,
auto.ins_deel_omschrijving AS auto,
ruim.res_rsv_ruimte_van datum_van,
TO_CHAR (ruim.res_rsv_ruimte_van, 'HH24:MI') tijd_van,
ruim.res_rsv_ruimte_tot datum_tot,
TO_CHAR (ruim.res_rsv_ruimte_tot, 'HH24:MI') tijd_tot,
p.prs_perslid_naam
|| DECODE (COALESCE (p.prs_perslid_voorletters, ''),
'', '',
', ' || p.prs_perslid_voorletters)
|| DECODE (COALESCE (p.prs_perslid_tussenvoegsel, ''),
'', '',
' ' || p.prs_perslid_tussenvoegsel)
|| DECODE (COALESCE (p.prs_perslid_voornaam, ''),
'', '',
' (' || p.prs_perslid_voornaam || ')')
gastheervrouw,
p.prs_perslid_key,
afd.prs_afdeling_naam,
kpl.prs_kostenplaats_nr,
kpl.prs_kostenplaats_omschrijving
FROM res_v_aanwezigreservering res,
res_v_aanwezigrsv_ruimte ruim,
res_v_aanwezigrsv_deel deel,
(SELECT INS_DI.ins_discipline_key,
INS_SG.ins_srtgroep_key,
INS_SD.ins_srtdeel_key,
INS_SD.ins_srtdeel_code
|| ' - '
|| INS_SD.ins_srtdeel_omschrijving,
INS_DE.ins_alg_locatie_key,
INS_AO.alg_gebouw_key,
INS_AO.alg_verdieping_key,
INS_AO.alg_ruimte_key,
INS_AO.prs_werkplek_key,
INS_AO.alg_terreinsector_key,
INS_AO.alg_plaatsaanduiding,
INS_DE.ins_deel_key,
INS_DE.ins_deel_omschrijving,
RES_DE.res_deel_key,
RES_DE.res_deel_eenheid,
RES_DE.res_deel_prijs,
DECODE (RES_DE.res_deel_key, NULL, 0, 1)
FROM ins_v_aanwezigdeel INS_DE,
ins_tab_discipline INS_DI,
ins_v_alg_overzicht INS_AO,
ins_srtdeel INS_SD,
ins_srtgroep INS_SG,
res_v_aanwezigdeel RES_DE
WHERE INS_DE.ins_deel_key = RES_DE.res_ins_deel_key(+)
AND INS_DE.ins_deel_module = 'INS'
AND INS_DE.ins_deel_parent_key IS NULL
AND INS_AO.alg_onroerendgoed_keys =
INS_DE.ins_alg_ruimte_key
AND INS_AO.alg_onroerendgoed_type =
INS_DE.ins_alg_ruimte_type
AND INS_AO.alg_locatie_key = INS_DE.ins_alg_locatie_key
AND INS_SD.ins_srtdeel_key = INS_DE.ins_srtdeel_key
AND INS_SG.ins_srtgroep_key = INS_SD.ins_srtgroep_key
AND INS_DI.ins_discipline_key =
INS_DE.ins_discipline_key
AND INS_DE.ins_discipline_key IN
(SELECT ins_discipline_key
FROM ins_discipline)) auto,
res_ruimte_opstelling opstel,
res_ruimte chauf,
prs_perslid p,
prs_afdeling afd,
prs_kostenplaats kpl
WHERE res.res_reservering_key = ruim.res_reservering_key
AND ruim.res_rsv_ruimte_key = deel.res_rsv_ruimte_key(+)
AND deel.res_deel_key = auto.res_deel_key(+)
AND ruim.res_ruimte_opstel_key = opstel.res_ruimte_opstel_key
AND opstel.res_ruimte_key = chauf.res_ruimte_key
AND p.prs_perslid_key = ruim.res_rsv_ruimte_host_key
AND p.prs_afdeling_key = afd.prs_afdeling_key
AND ruim.prs_kostenplaats_key = kpl.prs_kostenplaats_key(+)
-- activiteit Rit
AND ruim.res_activiteit_key = 41;
/
CREATE OR REPLACE VIEW akza_v_ritten_rapportage
AS
SELECT ritres.res_reservering_key,
ritres.res_rsv_ruimte_volgnr,
ritres.res_rsv_ruimte_key,
ritres.chauffeur,
ritres.omschrijving,
ritres.opmerking,
ritres.auto,
ritres.datum_van,
ritres.tijd_van,
ritres.datum_tot,
ritres.tijd_tot,
ritres.prs_perslid_key,
ritres.gastheervrouw,
ritres.prs_afdeling_naam,
ritres.prs_kostenplaats_nr,
ritres.prs_kostenplaats_omschrijving,
-- 'Vertrektijd (afwijkend)'
(SELECT fd.fac_usrdata_omschr
FROM fac_usrdata fd, res_kenmerkwaarde k
WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
AND k.res_kenmerk_key = 87
AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = fd.fac_usrdata_key)
afwijkend_van_tijd,
-- 'Via-tijd'
(SELECT fd.fac_usrdata_omschr
FROM fac_usrdata fd, res_kenmerkwaarde k
WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
AND k.res_kenmerk_key = 127
AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = fd.fac_usrdata_key)
via_tijd,
-- 'Aankomsttijd (afwijkend)'
(SELECT fd.fac_usrdata_omschr
FROM fac_usrdata fd, res_kenmerkwaarde k
WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
AND k.res_kenmerk_key = 94
AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = fd.fac_usrdata_key)
afwijkend_tot_tijd,
-- 'Standaard vertrekplaats'
(SELECT van.mld_adres_plaats_adres_naam
FROM res_kenmerkwaarde k, akza_v_rit_adres van
WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
AND k.res_kenmerk_key = 82
AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = van.mld_adres_key)
standaard_van,
-- 'Standaard vertrekplaats'
(SELECT van.mld_adres_bezoek_plaats
FROM res_kenmerkwaarde k, akza_v_rit_adres van
WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
AND k.res_kenmerk_key = 82
AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = van.mld_adres_key)
standaard_van_plaatsnaam,
-- 'Vertrekplaatsnaam (afwijkend)'
(SELECT k.res_kenmerkreservering_waarde
FROM res_kenmerkwaarde k
WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
AND k.res_kenmerk_key = 85)
afwijkend_van_plaats,
-- 'Vertrekadres (afwijkend)'
(SELECT k.res_kenmerkreservering_waarde
FROM res_kenmerkwaarde k
WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
AND k.res_kenmerk_key = 86)
afwijkend_van_adres,
-- 'Standaard via-adres'
(SELECT van.mld_adres_plaats_adres_naam
FROM res_kenmerkwaarde k, akza_v_rit_adres van
WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
AND k.res_kenmerk_key = 124
AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = van.mld_adres_key)
standaard_via,
-- 'Standaard via-adres'
(SELECT van.mld_adres_bezoek_plaats
FROM res_kenmerkwaarde k, akza_v_rit_adres van
WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
AND k.res_kenmerk_key = 124
AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = van.mld_adres_key)
standaard_via_plaatsnaam,
-- 'Via-plaatsnaam (afwijkend)'
(SELECT k.res_kenmerkreservering_waarde
FROM res_kenmerkwaarde k
WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
AND k.res_kenmerk_key = 126)
afwijkend_via_plaats,
-- 'Via-adres (afwijkend)'
(SELECT k.res_kenmerkreservering_waarde
FROM res_kenmerkwaarde k
WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
AND k.res_kenmerk_key = 125)
afwijkend_via_adres,
-- 'Standaard aankomstplaats'
(SELECT naar.mld_adres_plaats_adres_naam
FROM akza_v_rit_adres naar, res_kenmerkwaarde k
WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
AND k.res_kenmerk_key = 89
AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = naar.mld_adres_key)
standaard_naar,
-- 'Standaard aankomstplaats'
(SELECT naar.mld_adres_bezoek_plaats
FROM akza_v_rit_adres naar, res_kenmerkwaarde k
WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
AND k.res_kenmerk_key = 89
AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = naar.mld_adres_key)
standaard_naar_plaatsnaam,
-- 'Aankomstplaatsnaam (afwijkend)'
(SELECT k.res_kenmerkreservering_waarde
FROM res_kenmerkwaarde k
WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
AND k.res_kenmerk_key = 92)
afwijkend_naar_plaats,
-- 'Aankomstadres (afwijkend)'
(SELECT k.res_kenmerkreservering_waarde
FROM res_kenmerkwaarde k
WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
AND k.res_kenmerk_key = 93)
afwijkend_naar_adres,
-- 'Vertrektijd (werkelijk)'
(SELECT fd.fac_usrdata_omschr
FROM fac_usrdata fd, res_kenmerkwaarde k
WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
AND k.res_kenmerk_key = 96
AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = fd.fac_usrdata_key)
chauff_van_tijd,
-- 'Aankomsttijd (werkelijk)'
(SELECT fd.fac_usrdata_omschr
FROM fac_usrdata fd, res_kenmerkwaarde k
WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
AND k.res_kenmerk_key = 97
AND fac.safe_to_number (k.res_kenmerkreservering_waarde) = fd.fac_usrdata_key)
chauff_tot_tijd,
-- 'Gereden km'
(SELECT fac.safe_to_number (
REPLACE (k.res_kenmerkreservering_waarde, ',', '.'))
FROM res_kenmerkwaarde k
WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
AND k.res_kenmerk_key = 98)
chauff_km,
-- 'Aantal uren'
(SELECT fac.safe_to_number (
REPLACE (k.res_kenmerkreservering_waarde, ',', '.'))
FROM res_kenmerkwaarde k
WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
AND k.res_kenmerk_key = 101)
doorbelast_uren,
-- 'Aantal km'
(SELECT fac.safe_to_number (
REPLACE (k.res_kenmerkreservering_waarde, ',', '.'))
FROM res_kenmerkwaarde k
WHERE k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
AND k.res_kenmerk_key = 100)
doorbelast_km
FROM akza_v_ritten_reservering_geg ritres;
/
CREATE OR REPLACE VIEW akza_v_ritten_doorbelasting
AS
SELECT res.res_reservering_key,
ruim.res_rsv_ruimte_volgnr,
ruim.res_rsv_ruimte_key,
stat.res_status_bo_omschrijving status,
tariefgrp.akza_v_rit_tariefgroep_naam tariefgroep,
tariefgrp.c_tarief,
tariefgrp.km_tarief,
tariefgrp.uur_tarief
FROM res_v_aanwezigreservering res,
res_v_aanwezigrsv_ruimte ruim,
res_status_bo stat,
akza_v_rit_tariefgroep tariefgrp,
res_kenmerkwaarde k_tariefgrp
WHERE res.res_reservering_key = ruim.res_reservering_key
AND ruim.res_status_bo_key = stat.res_status_bo_key
-- key van kenmerk Tariefgroep
AND k_tariefgrp.res_kenmerk_key = 102
AND fac.safe_to_number (k_tariefgrp.res_kenmerkreservering_waarde) =
tariefgrp.akza_v_rit_tariefgroep_key
AND ruim.res_rsv_ruimte_key = k_tariefgrp.res_rsv_ruimte_key
-- key van activiteit Rit
AND ruim.res_activiteit_key = 41;
/
-- key van de special prs_perslid "Non resident passenger"
CREATE OR REPLACE VIEW akza_v_rit_nonresident_pass
AS
SELECT 43667 prs_perslid_key
FROM DUAL;
/
CREATE OR REPLACE VIEW akza_v_ritten_all_doorbelast
AS
SELECT rit_rap.*,
rit_doorb.status,
rit_doorb.tariefgroep,
rit_doorb.c_tarief,
rit_doorb.km_tarief,
rit_doorb.uur_tarief,
ROUND (
(rit_doorb.c_tarief
+ (rit_doorb.km_tarief
* COALESCE (fac.safe_to_number (rit_rap.doorbelast_km), 0))
+ (rit_doorb.uur_tarief
* COALESCE (fac.safe_to_number (rit_rap.doorbelast_uren), 0))),
2)
AS totaal
FROM akza_v_ritten_rapportage rit_rap,
akza_v_ritten_doorbelasting rit_doorb
WHERE rit_rap.res_rsv_ruimte_key = rit_doorb.res_rsv_ruimte_key(+);
/
CREATE OR REPLACE VIEW akza_v_ritten_doorbelast_sap
AS
SELECT a.*, b.prs_perslid_key AS rit_nonresidentpass
FROM akza_v_ritten_all_doorbelast a, akza_v_rit_nonresident_pass b
WHERE a.prs_perslid_key = b.prs_perslid_key(+);
/
CREATE OR REPLACE VIEW akza_v_rit_km_spec
AS
SELECT chauffeur AS fclt_f_chauffeur,
auto AS fclt_f_voertuig,
DECODE (TO_CHAR (datum_van, 'D'),
1, 'Zondag',
2, 'Maandag',
3, 'Dinsdag',
4, 'Woensdag',
5, 'Donderdag',
6, 'Vrijdag',
7, 'Zaterdag',
'')
AS Dag,
TO_CHAR (datum_van, 'dd-mm-yyyy') AS fclt_d_datum,
chauff_van_tijd AS Vertrek,
chauff_tot_tijd AS Aankomst,
prs_afdeling_naam AS fclt_f_Opdrachtgever,
DECODE (afwijkend_van_plaats || ', ' || afwijkend_van_adres,
', ', standaard_van,
afwijkend_van_plaats || ', ' || afwijkend_van_adres)
AS Van,
DECODE (afwijkend_naar_plaats || ', ' || afwijkend_naar_adres,
', ', standaard_naar,
afwijkend_naar_plaats || ', ' || afwijkend_naar_adres)
AS Naar,
TO_NUMBER (chauff_km) AS Kilometers
FROM akza_v_ritten_rapportage;
/
CREATE OR REPLACE VIEW akza_v_rit_geplande_ritten
AS
SELECT TO_CHAR (datum_van, 'dd-mm-yyyy') AS fclt_d_datum,
DECODE (TO_CHAR (datum_van, 'D'),
1, 'Zondag',
2, 'Maandag',
3, 'Dinsdag',
4, 'Woensdag',
5, 'Donderdag',
6, 'Vrijdag',
7, 'Zaterdag',
'')
AS Dag,
COALESCE (chauff_van_tijd, afwijkend_van_tijd, tijd_van) AS Starttijd,
via_tijd AS Viatijd,
COALESCE (chauff_tot_tijd, afwijkend_tot_tijd, tijd_tot) AS Tottijd,
DECODE (afwijkend_van_plaats || ', ' || afwijkend_van_adres,
', ', standaard_van,
afwijkend_van_plaats || ', ' || afwijkend_van_adres)
AS Van,
DECODE (afwijkend_via_plaats || ', ' || afwijkend_via_adres,
', ', standaard_via,
afwijkend_via_plaats || ', ' || afwijkend_via_adres)
AS Via,
DECODE (afwijkend_naar_plaats || ', ' || afwijkend_naar_adres,
', ', standaard_naar,
afwijkend_naar_plaats || ', ' || afwijkend_naar_adres)
AS Naar,
prs_afdeling_naam AS fclt_f_Opdrachtgever,
chauffeur AS fclt_f_chauffeur,
auto AS fclt_f_auto,
opmerking AS Toelichtingen,
res_reservering_key AS hide_f_reserveringkey,
res_rsv_ruimte_volgnr AS hide_f_reserveringvolgnr,
gastheervrouw AS hide_f_gastheervrouw,
prs_kostenplaats_nr || ' ' || prs_kostenplaats_omschrijving
AS fclt_f_kostenplaats,
prs_afdeling_naam AS hide_f_afdeling
FROM akza_v_ritten_rapportage;
/
CREATE OR REPLACE VIEW akza_v_rit_kostenoverzicht
AS
SELECT TO_CHAR (res_reservering_key) AS Code,
TO_CHAR (datum_van, 'dd-mm-yyyy') AS fclt_d_datum,
COALESCE (afwijkend_van_plaats, standaard_van_plaatsnaam) AS Van,
COALESCE (afwijkend_naar_plaats, standaard_naar_plaatsnaam) AS Naar,
chauffeur AS fclt_f_chauffeur,
auto AS fclt_f_voertuig,
prs_afdeling_naam AS fclt_f_Opdrachtgever,
fac.safe_to_number (doorbelast_km) AS Km,
fac.safe_to_number (doorbelast_uren) AS Uren,
status,
tariefgroep,
totaal
FROM akza_v_ritten_all_doorbelast;
/
------------------------------------ OVERIGE RAPPORTAGE FUNCTIES-----------------------------------
-- NB: deze view wordt (ook) gebruikt voor de exportfunctie AKZA_SELECT_EXPLANON
-- Aanpassingen zullen dus mogelijk ook daar effect hebben!
CREATE OR REPLACE VIEW akza_v_personenvoorplanon (naam,
keynr,
company,
kostenplaats,
gebouw,
etage,
kamernummer,
telefoon,
mobiel_tel,
email,
loginnaam,
bron
)
AS
SELECT p.prs_perslid_naam naam, TO_CHAR (p.prs_perslid_key) keynr,
a0.prs_afdeling_naam company,
(select k.prs_kostenplaats_nr from akza_v_kostenplaats k where k.prs_kostenplaats_key = a1.prs_kostenplaats_key) kostenplaats,
wp.alg_gebouw_code gebouw, wp.alg_verdieping_code etage,
wp.alg_ruimte_nr kamernummer, p.prs_perslid_telefoonnr telefoon,
p.prs_perslid_mobiel mobiel_tel,
p.prs_perslid_email email, prs_perslid_oslogin loginnaam,
'ALF_TB/Facilitor' bron
FROM prs_v_aanwezigperslid p,
prs_afdeling a0,
prs_afdeling a1,
prs_perslidwerkplek pwp,
prs_v_werkplek_gegevens wp
WHERE p.prs_afdeling_key = a1.prs_afdeling_key
AND a0.prs_afdeling_key = a1.prs_afdeling_parentkey
AND p.prs_perslid_key = pwp.prs_perslid_key(+)
AND pwp.prs_werkplek_key = wp.prs_werkplek_key
AND p.prs_perslid_naam NOT LIKE '%]'
AND ( wp.alg_gebouw_code NOT LIKE 'Z99' -- Niet verhuisgebouw maar wel ruimte 994 daarin
OR (wp.alg_verdieping_code = '99' AND wp.alg_ruimte_nr = '994')
)
AND p.prs_perslid_naam NOT LIKE 'SYSTEEM%'
AND p.prs_perslid_verwijder IS NULL
/
-- AKZA#566
CREATE OR REPLACE VIEW AKZA_V_PERSONENVOORPLANONCSV
(EXPORT)
AS
SELECT p.prs_perslid_naam||';'||TO_CHAR (p.prs_perslid_key)||';'||
a0.prs_afdeling_naam||';'||
(select k.prs_kostenplaats_nr from akza_v_kostenplaats k where k.prs_kostenplaats_key = a1.prs_kostenplaats_key)
||';'||wp.alg_gebouw_code||';'||wp.alg_verdieping_code||';'||wp.alg_ruimte_nr||';'||
p.prs_perslid_telefoonnr||';'||k2.prs_kenmerklink_waarde||';'||
k1.prs_kenmerklink_waarde||';'||prs_perslid_oslogin||';'||
'ALF_TB/Facilitor' export
FROM prs_v_aanwezigperslid p,
PRS_KENMERKLINK k1,
PRS_KENMERKLINK k2,
PRS_AFDELING a0,
PRS_AFDELING a1,
PRS_PERSLIDWERKPLEK pwp,
prs_v_werkplek_gegevens wp
WHERE k1.prs_kenmerk_key(+) = 5
AND k2.prs_kenmerk_key(+) = 1020
AND k1.prs_link_key(+) = p.prs_perslid_key
AND k2.prs_link_key(+) = p.prs_perslid_key
AND p.prs_afdeling_key = a1.prs_afdeling_key
AND a0.prs_afdeling_key = a1.prs_afdeling_parentkey
AND p.prs_perslid_key = pwp.prs_perslid_key(+)
AND pwp.prs_werkplek_key = wp.prs_werkplek_key
AND p.prs_perslid_naam NOT LIKE '%]'
AND wp.alg_gebouw_code NOT LIKE 'Z99'
AND p.prs_perslid_naam NOT LIKE 'SYSTEEM%'
AND p.prs_perslid_verwijder IS NULL
ORDER BY 1;
/* Formatted on 30-6-2010 6:54:49 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW akza_v_export_resdeel
(
volgnr,
res_rsv_ruimte_key,
res_rsv_artikel_key,
res_rsv_deel_key,
res_rsv_ruimte_kosten_klant,
res_rsv_ruimte_ordernr,
ins_discipline_key,
companycode,
kostenplaatscode,
exportdatum,
bedrag,
postkey,
valuta,
aantal,
btw,
res_reservering_key,
datum,
spatie,
ruimte_art_oms,
melder,
stukprijs,
artikelgroep,
catalogus,
alg_locatie_key
)
AS
SELECT 10 volgnr,
rr.res_rsv_ruimte_key,
rr.res_rsv_artikel_key,
rr.res_rsv_deel_key,
rr.res_rsv_ruimte_kosten_klant,
res_rsv_ruimte_ordernr,
akza_ea.ins_discipline_key,
'cccccc' companycode,
akza_k.prs_kostenplaats_nr kostenplaatscode,
TO_CHAR (SYSDATE, 'YYYYMMDD') exportdatum,
LTRIM (TO_CHAR (ROUND (100 * COALESCE (res.getdeelprijs (rr.res_rsv_deel_key), 0)), '099999999')) bedrag,
'40' postkey,
'EUR' valuta,
LTRIM (TO_CHAR (akza_ea.aantal, '0999')) aantal,
'b' btw,
LTRIM (TO_CHAR (rr.res_reservering_key, '0999999')) res_reservering_key,
RPAD (
COALESCE (
TO_CHAR (rr.res_rsv_ruimte_van, 'dd-mm-yyyy')
|| DECODE (rr.res_rsv_ruimte_van, NULL, NULL, ' / ')
|| TO_CHAR (rr.res_rsv_ruimte_tot, 'dd-mm-yyyy'),
' '
),
23,
' '
)
datum,
' ' spatie,
RPAD (COALESCE (TRIM (akza_ea.res_deel_omschrijving), ' '), 26, ' ') ruimte_art_oms,
-- Indien non-resident host, dan de omschrijving (waar externe gastheer wordt ingevuld) naar SAP.
RPAD (
DECODE (pf.prs_perslid_key,
40727, COALESCE (res_rsv_ruimte_omschrijving, pf.prs_perslid_naam_full, ' '),
COALESCE (pf.prs_perslid_naam_full, ' ')
),
30,
' '
)
melder,
LTRIM(TO_CHAR (ROUND (100 * COALESCE (res.getdeelprijs (rr.res_rsv_deel_key), 0) / akza_ea.aantal),
'099999999'
))
stukprijs,
' ' artikelgroep,
RPAD (COALESCE (akza_ea.ins_discipline_omschrijving, ' '), 25, ' ') catalogus,
rg.alg_locatie_key
FROM (SELECT rr.*, -1 res_rsv_artikel_key, rd.res_rsv_deel_key
FROM res_rsv_ruimte rr, res_rsv_deel rd
WHERE 1 = 1
AND res_rsv_ruimte_verwijder IS NULL
AND rr.res_rsv_ruimte_key = rd.res_rsv_ruimte_key
AND rd.res_status_bo_key = 5) rr,
prs_perslid p,
prs_afdeling a,
akza_v_kostenplaats akza_k,
(SELECT rsv_d.res_rsv_deel_key,
d.res_deel_omschrijving,
rsv_d.res_rsv_ruimte_key,
ins_discipline_key,
ins_discipline_omschrijving,
rsv_d.res_rsv_deel_aantal aantal
FROM res_rsv_deel rsv_d, (SELECT rd.*, d.ins_deel_omschrijving res_deel_omschrijving
FROM res_deel rd, ins_deel d
WHERE rd.res_ins_deel_key = d.ins_deel_key) d, res_discipline dis
WHERE 1 = 1 AND rsv_d.res_deel_key = d.res_deel_key AND d.res_discipline_key = dis.ins_discipline_key)
akza_ea,
(SELECT l.alg_locatie_key,
rg.res_reservering_key,
rg.res_rsv_ruimte_key,
DECODE (
rg.res_ruimte_key,
NULL,
l.alg_locatie_code
|| '-'
|| g.alg_gebouw_code
|| '-'
|| v.alg_verdieping_volgnr
|| '-'
|| r.alg_ruimte_nr,
l.alg_locatie_code || '-' || rg.res_ruimte_nr
)
res_ruimte_omschrijving
FROM (SELECT rr2.res_reservering_key,
rr2.res_rsv_ruimte_key,
rr.alg_ruimte_key,
rr.res_ruimte_key,
r.res_ruimte_nr res_ruimte_nr
FROM res_v_rsv_ruimte_2_alg_ruimte rr, res_rsv_ruimte rr2, res_ruimte r
WHERE rr2.res_rsv_ruimte_key = rr.res_rsv_ruimte_key AND rr.res_ruimte_key = r.res_ruimte_key
UNION
SELECT rr2.res_reservering_key,
rr2.res_rsv_ruimte_key,
rr2.alg_ruimte_key,
NULL,
a.alg_ruimte_nr res_ruimte_nr
FROM res_rsv_ruimte rr2, alg_ruimte a
WHERE rr2.alg_ruimte_key IS NOT NULL AND rr2.alg_ruimte_key = a.alg_ruimte_key) rg,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l
WHERE 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 rg.alg_ruimte_key = r.alg_ruimte_key) rg,
prs_v_perslid_fullnames_all pf
WHERE 1 = 1
AND rr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND rr.prs_kostenplaats_key = akza_k.prs_kostenplaats_key
AND akza_ea.res_rsv_deel_key(+) = rr.res_rsv_deel_key
AND pf.prs_perslid_key(+) = rr.res_rsv_ruimte_host_key
AND rr.res_rsv_ruimte_key = rg.res_rsv_ruimte_key(+);
-- De te exporteren catering met kostenplaats opgevoerd bij een ruimte reservering of losse catering reservering
-- Locatiekey wordt meegeleverd om later deeloverzicht/export te kunnen doen.
/* Formatted on 22-1-2009 16:55:53 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW akza_v_export_catering
(
volgnr,
res_rsv_ruimte_key,
res_rsv_artikel_key,
res_rsv_deel_key,
res_rsv_ruimte_kosten_klant,
res_rsv_ruimte_ordernr,
ins_discipline_key,
companycode,
kostenplaatscode,
exportdatum,
bedrag,
postkey,
valuta,
aantal,
btw,
res_reservering_key,
datum,
spatie,
ruimte_art_oms,
melder,
stukprijs,
artikelgroep,
catalogus,
alg_locatie_key
)
AS
SELECT 20 volgnr,
rr.res_rsv_ruimte_key,
rr.res_rsv_artikel_key,
rr.res_rsv_deel_key,
rr.res_rsv_ruimte_kosten_klant,
res_rsv_ruimte_ordernr,
akza_ea.ins_discipline_key,
'cccccc' companycode,
akza_k.prs_kostenplaats_nr kostenplaatscode,
TO_CHAR (SYSDATE, 'YYYYMMDD') exportdatum,
LTRIM (TO_CHAR (ROUND (100 * COALESCE (res.getartikelprijs (rr.res_rsv_artikel_key), 0)), '099999999'))
bedrag,
'40' postkey,
'EUR' valuta,
LTRIM (TO_CHAR (akza_ea.aantal, '0999')) aantal,
'b' btw,
LTRIM (TO_CHAR (rr.res_reservering_key, '0999999')) res_reservering_key,
RPAD (
COALESCE (
TO_CHAR (COALESCE (rr.res_rsv_ruimte_van, res_rsv_artikel_levering), 'dd-mm-yyyy')
|| DECODE (COALESCE (rr.res_rsv_ruimte_van, res_rsv_artikel_levering), NULL, NULL, ' / ')
|| TO_CHAR (COALESCE (rr.res_rsv_ruimte_tot, res_rsv_artikel_levering), 'dd-mm-yyyy'),
' '
),
23,
' '
)
datum,
' ' spatie,
RPAD (COALESCE (TRIM (akza_ea.res_artikel_omschrijving), ' '), 26, ' ') ruimte_art_oms,
-- Indien non-resident host, dan de omschrijving (waar externe gastheer wordt ingevuld) naar SAP.
RPAD (DECODE(pf.prs_perslid_key, 40727, COALESCE(res_rsv_ruimte_omschrijving, pf.prs_perslid_naam_full, ' '), COALESCE (pf.prs_perslid_naam_full, ' ') ), 30, ' ') melder,
LTRIM(TO_CHAR (ROUND (100 * COALESCE (res.getartikelprijs (rr.res_rsv_artikel_key), 0) / akza_ea.aantal),
'099999999'
))
stukprijs,
' ' artikelgroep,
RPAD (COALESCE (akza_ea.ins_discipline_omschrijving, ' '), 25, ' ') catalogus,
rg.alg_locatie_key
FROM (SELECT rr.*, ra.res_rsv_artikel_key, -1 res_rsv_deel_key
FROM res_rsv_ruimte rr, res_rsv_artikel ra
WHERE 1 = 1
AND res_rsv_ruimte_verwijder IS NULL
AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
AND ra.res_status_bo_key = 5) rr,
prs_perslid p,
prs_afdeling a,
akza_v_kostenplaats akza_k,
(SELECT rsv_art.res_rsv_artikel_key,
art.res_artikel_omschrijving,
rsv_art.res_rsv_ruimte_key,
ins_discipline_key,
ins_discipline_omschrijving,
rsv_art.res_rsv_artikel_aantal aantal,
rsv_art.res_rsv_artikel_levering
FROM res_rsv_artikel rsv_art, res_artikel art, res_discipline dis
WHERE 1 = 1
AND rsv_art.res_artikel_key = art.res_artikel_key
AND art.res_discipline_key = dis.ins_discipline_key) akza_ea,
(SELECT l.alg_locatie_key,
rg.res_reservering_key,
rg.res_rsv_ruimte_key,
DECODE (rg.res_ruimte_key,null,
l.alg_locatie_code || '-' || g.alg_gebouw_code || '-' || v.alg_verdieping_volgnr || '-' || r.alg_ruimte_nr,
l.alg_locatie_code || '-' || rg.res_ruimte_nr) res_ruimte_omschrijving
FROM (SELECT rr2.res_reservering_key, rr2.res_rsv_ruimte_key, rr.alg_ruimte_key, rr.res_ruimte_key, r.res_ruimte_nr res_ruimte_nr
FROM res_v_rsv_ruimte_2_alg_ruimte rr, res_rsv_ruimte rr2, res_ruimte r
WHERE rr2.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
AND rr.res_ruimte_key = r.res_ruimte_key
UNION
SELECT rr2.res_reservering_key, rr2.res_rsv_ruimte_key, rr2.alg_ruimte_key, null, a.alg_ruimte_nr res_ruimte_nr
FROM res_rsv_ruimte rr2, alg_ruimte a
WHERE rr2.alg_ruimte_key is not null
AND rr2.alg_ruimte_key = a.alg_ruimte_key) rg,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l
WHERE 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 rg.alg_ruimte_key = r.alg_ruimte_key) rg,
prs_v_perslid_fullnames_all pf
WHERE 1 = 1
AND rr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND rr.prs_kostenplaats_key = akza_k.prs_kostenplaats_key
AND akza_ea.res_rsv_artikel_key(+) = rr.res_rsv_artikel_key
AND pf.prs_perslid_key(+) = rr.res_rsv_ruimte_host_key
AND rr.res_rsv_ruimte_key = rg.res_rsv_ruimte_key(+);
/* Formatted on 22-1-2009 17:02:40 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW akza_v_export_resruimten
(
volgnr,
res_rsv_ruimte_key,
res_rsv_artikel_key,
res_rsv_deel_key,
res_rsv_ruimte_kosten_klant,
res_rsv_ruimte_ordernr,
ins_discipline_key,
companycode,
kostenplaatscode,
exportdatum,
bedrag,
postkey,
valuta,
aantal,
btw,
res_reservering_key,
datum,
spatie,
ruimte_art_oms,
melder,
stukprijs,
artikelgroep,
catalogus,
alg_locatie_key
)
AS
SELECT 30 volgnr,
rr.res_rsv_ruimte_key,
rr.res_rsv_artikel_key,
rr.res_rsv_deel_key,
rr.res_rsv_ruimte_kosten_klant,
res_rsv_ruimte_ordernr,
akza_ea.ins_discipline_key,
'cccccc' companycode,
akza_k.prs_kostenplaats_nr kostenplaatscode,
TO_CHAR (SYSDATE, 'YYYYMMDD') exportdatum,
LTRIM (TO_CHAR (ROUND (100 * COALESCE (res.getruimteprijs (rr.res_rsv_ruimte_key), 0)), '099999999'))
bedrag,
'40' postkey,
'EUR' valuta,
LTRIM (TO_CHAR ('1', '0999')) aantal,
'b' btw,
LTRIM (TO_CHAR (rr.res_reservering_key, '0999999')) res_reservering_key,
RPAD (
COALESCE (
TO_CHAR (rr.res_rsv_ruimte_van, 'dd-mm-yyyy')
|| DECODE (rr.res_rsv_ruimte_van, NULL, NULL, ' / ')
|| TO_CHAR (rr.res_rsv_ruimte_tot, 'dd-mm-yyyy'),
' '
),
23,
' '
)
datum,
' ' spatie,
RPAD (COALESCE (TRIM (res_ruimte_omschrijving), ' '), 26, ' ') ruimte_art_oms,
-- Indien non-resident host, dan de omschrijving (waar externe gastheer wordt ingevuld) naar SAP.
RPAD (DECODE(pf.prs_perslid_key, 40727, COALESCE(res_rsv_ruimte_omschrijving, pf.prs_perslid_naam_full, ' '), COALESCE (pf.prs_perslid_naam_full, ' ') ), 30, ' ') melder,
LTRIM (TO_CHAR (ROUND (100 * COALESCE (res.getruimteprijs (rr.res_rsv_ruimte_key), 0)), '099999999'))
stukprijs,
' ' artikelgroep,
RPAD (COALESCE (akza_ea.ins_discipline_omschrijving, ' '), 25, ' ') catalogus,
rg.alg_locatie_key
FROM (SELECT rr.*, -1 res_rsv_artikel_key, -1 res_rsv_deel_key
FROM (SELECT rr.*, r.res_ruimte_key
FROM res_rsv_ruimte rr, res_ruimte_opstelling ro, res_ruimte r
WHERE rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = r.res_ruimte_key) rr
WHERE 1 = 1 AND res_rsv_ruimte_verwijder IS NULL AND rr.res_status_bo_key = 5) rr,
prs_perslid p,
prs_afdeling a,
akza_v_kostenplaats akza_k,
(SELECT rg.res_discipline_key ins_discipline_key, d.ins_discipline_omschrijving, rg.res_ruimte_key
FROM res_v_res_ruimte_gegevens rg, ins_tab_discipline d
WHERE d.ins_discipline_key = rg.res_discipline_key) akza_ea,
(SELECT l.alg_locatie_key,
rg.res_reservering_key,
rg.res_rsv_ruimte_key,
l.alg_locatie_code || '-' || rg.res_ruimte_nr res_ruimte_omschrijving
FROM (SELECT rr2.res_reservering_key, rr2.res_rsv_ruimte_key, rr.alg_ruimte_key, rr.res_ruimte_key, r.res_ruimte_nr res_ruimte_nr
FROM res_v_rsv_ruimte_2_alg_ruimte rr, res_rsv_ruimte rr2, res_ruimte r
WHERE rr2.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
AND rr.res_ruimte_key = r.res_ruimte_key) rg,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l
WHERE 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 rg.alg_ruimte_key = r.alg_ruimte_key) rg,
prs_v_perslid_fullnames_all pf
WHERE 1 = 1
AND rr.res_reservering_key NOT IN (select res_reservering_key from akza_v_ritten_reservering)
AND rr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND rr.prs_kostenplaats_key = akza_k.prs_kostenplaats_key
AND akza_ea.res_ruimte_key(+) = rr.res_ruimte_key
AND pf.prs_perslid_key(+) = rr.res_rsv_ruimte_host_key
AND rr.res_rsv_ruimte_key = rg.res_rsv_ruimte_key(+);
CREATE OR REPLACE VIEW akza_v_export_resritten
(
volgnr,
res_rsv_ruimte_key,
res_rsv_artikel_key,
res_rsv_deel_key,
res_rsv_ruimte_kosten_klant,
res_rsv_ruimte_ordernr,
ins_discipline_key,
companycode,
kostenplaatscode,
exportdatum,
bedrag,
postkey,
valuta,
aantal,
btw,
res_reservering_key,
datum,
spatie,
ruimte_art_oms,
melder,
stukprijs,
artikelgroep,
catalogus,
alg_locatie_key
)
AS
SELECT 40 volgnr,
rr.res_rsv_ruimte_key,
rr.res_rsv_artikel_key,
rr.res_rsv_deel_key,
rr.res_rsv_ruimte_kosten_klant,
res_rsv_ruimte_ordernr,
akza_ea.ins_discipline_key,
'cccccc' companycode,
akza_k.prs_kostenplaats_nr kostenplaatscode,
TO_CHAR (SYSDATE, 'YYYYMMDD') exportdatum,
LTRIM (TO_CHAR (ROUND (100 * COALESCE (rit_sap.totaal, 0)), '099999999'))
bedrag,
'40' postkey,
'EUR' valuta,
LTRIM (TO_CHAR ('1', '0999')) aantal,
'b' btw,
LTRIM (TO_CHAR (rr.res_reservering_key, '0999999')) res_reservering_key,
RPAD (
COALESCE (
TO_CHAR (rr.res_rsv_ruimte_van, 'dd-mm-yyyy')
|| DECODE (rr.res_rsv_ruimte_van, NULL, NULL, ' / ')
|| TO_CHAR (rr.res_rsv_ruimte_tot, 'dd-mm-yyyy'),
' '
),
23,
' '
)
datum,
' ' spatie,
RPAD (COALESCE (TRIM (rit_sap.chauffeur), ' '), 26, ' ') ruimte_art_oms,
DECODE(rit_sap.rit_nonresidentpass,null,
RPAD (COALESCE (pf.prs_perslid_naam_full, ' '), 30, ' '),
RPAD (COALESCE (res_rsv_ruimte_omschrijving, ' '), 30, ' ')
) melder,
LTRIM (TO_CHAR (ROUND (100 * COALESCE (rit_sap.totaal, 0)), '099999999'))
stukprijs,
' ' artikelgroep,
RPAD (COALESCE (akza_ea.ins_discipline_omschrijving, ' '), 25, ' ') catalogus,
0 alg_locatie_key
FROM (SELECT rr.*, -1 res_rsv_artikel_key, -1 res_rsv_deel_key
FROM (SELECT rr.*, r.res_ruimte_key
FROM res_rsv_ruimte rr, res_ruimte_opstelling ro, res_ruimte r
WHERE rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = r.res_ruimte_key) rr
WHERE 1 = 1 AND res_rsv_ruimte_verwijder IS NULL AND rr.res_status_bo_key = 5) rr,
prs_perslid p,
prs_afdeling a,
akza_v_kostenplaats akza_k,
(SELECT rg.res_discipline_key ins_discipline_key, d.ins_discipline_omschrijving, rg.res_ruimte_key
FROM res_v_res_ruimte_gegevens rg, ins_tab_discipline d
WHERE d.ins_discipline_key = rg.res_discipline_key) akza_ea,
prs_v_perslid_fullnames_all pf,
akza_v_ritten_doorbelast_sap rit_sap
WHERE rr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND rr.res_rsv_ruimte_key = rit_sap.res_rsv_ruimte_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND rr.prs_kostenplaats_key = akza_k.prs_kostenplaats_key
AND akza_ea.res_ruimte_key(+) = rr.res_ruimte_key
AND pf.prs_perslid_key(+) = rr.res_rsv_ruimte_host_key;
/
------------------------------------ COPIER RAPPORTAGE FUNCTIES-----------------------------------
------------------------------------ COPIER RAPPORTAGE FUNCTIES-----------------------------------
------------------------------------ COPIER RAPPORTAGE FUNCTIES-----------------------------------
DROP TABLE AKZA_COPY_XLS;
CREATE TABLE AKZA_COPY_XLS -- Temporary for copiers
(
COMPANY VARCHAR2(110),
KOSTENPLAATS VARCHAR2(110),
EIGENAAR VARCHAR2(130),
COPIER VARCHAR2(150),
BEHEERSKOSTEN NUMBER(9,2),
TIKKOSTEN_ZW NUMBER(9,2),
TIKKOSTEN_KL NUMBER(9,2),
TOTAAL_TIKKEN NUMBER(9,2),
PAPIER_A3_NR NUMBER(9),
PAPIER_A3 NUMBER(9,2),
PAPIER_A4_NR NUMBER(9),
PAPIER_A4 NUMBER(9,2),
TOTAAL_PAPIER NUMBER(9,2),
GEBRUIKSKOSTEN NUMBER(9,2),
HUUR_BASIS NUMBER(9,2),
HUUR_MODULES NUMBER(9,2),
BASISHUUR NUMBER(9,2),
TOTAAL_NASHUATEC NUMBER(9,2),
TOTAAL_COPIER NUMBER(9,2),
TOTAAL_EIGENAAR VARCHAR2(80),
TOTAAL_COMPANY VARCHAR2(50)
);
CREATE OR REPLACE PACKAGE AKZA_P_COPIERS AS
-- PACKAGES voor de AKZA specifieke COPIER rapportages
TYPE t_cursor IS REF CURSOR;
PROCEDURE akza_copiers (user_key IN NUMBER, p_session IN VARCHAR2, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_srt_export IN VARCHAR2, p_all_owner IN BOOLEAN);
PROCEDURE akza_cop_prn (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor);
PROCEDURE akza_cop_xls (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor);
PROCEDURE akza_cop_all (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 AKZA_P_COPIERS AS
v_srt_layout VARCHAR2(3);
v_tmp_aanmaak DATE;
v_tmp_datum_van DATE;
v_tmp_datum_tot DATE;
v_tmp_company VARCHAR2(10);
v_tmp_kostenplaats VARCHAR2(30);
v_tmp_eigenaar VARCHAR2(60);
v_tmp_copier VARCHAR2(50);
v_tmp_papier_a3_nr NUMBER(12);
v_tmp_papier_a4_nr NUMBER(12);
v_tmp_beheerskosten NUMBER(12,2);
v_tmp_tikkosten_zw NUMBER(12,2);
v_tmp_tikkosten_kl NUMBER(12,2);
v_tmp_papier_a3 NUMBER(12,2);
v_tmp_papier_a4 NUMBER(12,2);
v_tmp_gebruikskosten NUMBER(12,2);
v_tmp_huur_basis NUMBER(12,2);
v_tmp_huur_modules NUMBER(12,2);
v_tmp_basishuur NUMBER(12,2);
v_tmp_totaalcopier NUMBER(12,2);
v_tmp_totaaleigenaar NUMBER(12,2);
v_tmp_totaalcompany NUMBER(12,2);
--
--
-- Algemene procedures en functies.
--
--
FUNCTION PrintReplicate(cKarakter IN VARCHAR2
,nLengte IN NUMBER
) RETURN VARCHAR2 IS
cRegel VARCHAR2(132);
BEGIN
cRegel := cKarakter;
RETURN (RPAD(cRegel, nLengte, cKarakter));
END;
--
FUNCTION RPadEnNvl(cString IN VARCHAR2
,nAantal IN NUMBER
) RETURN VARCHAR2 IS
BEGIN
RETURN NVL(RPAD(cString, nAantal), PrintReplicate(' ', nAantal));
END;
--
FUNCTION LPadEnNvl(cString IN VARCHAR2
,nAantal IN NUMBER
) RETURN VARCHAR2 IS
BEGIN
RETURN NVL(LPAD(cString, nAantal), PrintReplicate(' ', nAantal));
END;
--
FUNCTION schrijf_rapport_regel(p_sessionid IN VARCHAR2
,p_regelnr IN NUMBER
,p_tekst IN VARCHAR2
) RETURN NUMBER IS
BEGIN
INSERT INTO FAC_RAPPORT
VALUES(p_sessionid,p_regelnr,p_tekst,1);
RETURN p_regelnr + 1;
END;
--
FUNCTION delete_rapport_regel(p_sessionid IN VARCHAR2
,p_regelnr_van IN NUMBER
,p_regelnr_tm IN NUMBER
) RETURN NUMBER IS
BEGIN
DELETE
FROM FAC_RAPPORT
WHERE fac_rapport_node = p_sessionid
AND fac_rapport_volgnr >= p_regelnr_van
AND fac_rapport_volgnr <= p_regelnr_tm;
RETURN p_regelnr_van;
END;
--
FUNCTION schrijf_sap_regel(p_sessionid IN VARCHAR2
,p_regelnr IN NUMBER
) RETURN NUMBER IS
v_regel VARCHAR2(2000);
i NUMBER(10);
v_totaal_tikken NUMBER(12,2);
v_totaal_papier NUMBER(12,2);
v_totaal_nashuatec NUMBER(12,2);
BEGIN
v_totaal_tikken := v_tmp_tikkosten_zw + v_tmp_tikkosten_kl;
v_totaal_papier := v_tmp_papier_a3 + v_tmp_papier_a4;
v_totaal_nashuatec := v_tmp_basishuur + v_totaal_tikken;
v_regel := RPadEnNvl(v_tmp_company , 6)
|| RPadEnNvl(v_tmp_kostenplaats,10)
|| RPadEnNvl(v_tmp_copier ,10)
|| 'EUR'
|| SUBSTR(REPLACE(TO_CHAR(NVL(v_tmp_beheerskosten ,0),'999990.90'),'.',''),2,8)
|| SUBSTR(REPLACE(TO_CHAR(NVL(v_totaal_nashuatec ,0),'999990.90'),'.',''),2,8)
|| SUBSTR(REPLACE(TO_CHAR(NVL(v_totaal_papier ,0),'999990.90'),'.',''),2,8)
|| SUBSTR(REPLACE(TO_CHAR(NVL(ABS(v_tmp_totaalcopier) ,0),'999990.90'),'.',''),2,8)
|| '2'
|| RPadEnNvl('Verrekening Kopieermachines',30);
IF v_tmp_totaalcopier >= 0
THEN
v_regel := v_regel || '40';
ELSE
v_regel := v_regel || '50'; -- AKZA#545: Het schijnt nog wel eens negatief te kunnen zijn
END IF;
i := schrijf_rapport_regel(p_sessionid,p_regelnr,v_regel);
RETURN i;
END;
--
-- Merk op dat schrijf_xls_regel nog altijd gewoon FAC_RAPPORT vult. Die vulling
-- wordt verder niet gebruikt, er wordt namelijk van akza_copy_xls gebruik gemaakt.
FUNCTION schrijf_xls_regel(p_sessionid IN VARCHAR2
,p_regelnr IN NUMBER
) RETURN NUMBER IS
v_regel VARCHAR2(2000);
i NUMBER(10);
v_totaal_tikken NUMBER(12,2);
v_totaal_papier NUMBER(12,2);
v_totaal_nashuatec NUMBER(12,2);
BEGIN
v_totaal_tikken := v_tmp_tikkosten_zw + v_tmp_tikkosten_kl;
v_totaal_papier := v_tmp_papier_a3 + v_tmp_papier_a4;
v_totaal_nashuatec := v_tmp_basishuur + v_totaal_tikken;
v_regel := RPadEnNvl(v_tmp_company ,10)
||','|| RPadEnNvl(v_tmp_kostenplaats,10)
||','|| RPadEnNvl(v_tmp_eigenaar ,30)
||','|| RPadEnNvl(v_tmp_copier ,50)
||','|| TO_CHAR(NVL(v_tmp_beheerskosten ,0),'99990.90')
||','|| TO_CHAR(NVL(v_tmp_tikkosten_zw ,0),'99990.90')
||','|| TO_CHAR(NVL(v_tmp_tikkosten_kl ,0),'99990.90')
||','|| TO_CHAR(NVL(v_totaal_tikken ,0),'99990.90')
||','|| TO_CHAR(NVL(v_tmp_papier_a3_nr ,0),'99990')
||','|| TO_CHAR(NVL(v_tmp_papier_a3 ,0),'99990.90')
||','|| TO_CHAR(NVL(v_tmp_papier_a4_nr ,0),'99990')
||','|| TO_CHAR(NVL(v_tmp_papier_a4 ,0),'99990.90')
||','|| TO_CHAR(NVL(v_totaal_papier ,0),'99990.90')
||','|| TO_CHAR(NVL(v_tmp_gebruikskosten,0),'99990.90')
||','|| TO_CHAR(NVL(v_tmp_huur_basis ,0),'99990.90')
||','|| TO_CHAR(NVL(v_tmp_huur_modules ,0),'99990.90')
||','|| TO_CHAR(NVL(v_tmp_basishuur ,0),'99990.90')
||','|| TO_CHAR(NVL(v_totaal_nashuatec ,0),'99990.90')
||','|| TO_CHAR(NVL(v_tmp_totaalcopier ,0),'99990.90')
||','|| v_tmp_eigenaar ||'_totaal'
||','|| v_tmp_company ||'_totaal';
i := schrijf_rapport_regel(p_sessionid,p_regelnr,v_regel);
INSERT INTO akza_copy_xls
VALUES (v_tmp_company, v_tmp_kostenplaats, v_tmp_eigenaar,
v_tmp_copier, v_tmp_beheerskosten, v_tmp_tikkosten_zw,
v_tmp_tikkosten_kl, v_totaal_tikken, v_tmp_papier_a3_nr,
v_tmp_papier_a3, v_tmp_papier_a4_nr, v_tmp_papier_a4,
v_totaal_papier, v_tmp_gebruikskosten, v_tmp_huur_basis,
v_tmp_huur_modules, v_tmp_basishuur, v_totaal_nashuatec,
v_tmp_totaalcopier, v_tmp_eigenaar || '_totaal',
v_tmp_company || '_totaal');
RETURN i;
END;
--
FUNCTION f_kenmerk(p_code IN VARCHAR2,
p_deel_key IN NUMBER
) RETURN NUMBER IS
v_kenmerk_key INS_KENMERK.ins_kenmerk_key%TYPE;
v_dimensie VARCHAR2(100);
BEGIN
BEGIN
SELECT K.ins_kenmerk_key
, S.ins_srtkenmerk_dimensie
INTO v_kenmerk_key
, v_dimensie
FROM INS_KENMERK K
, INS_SRTKENMERK S
, INS_SRTDEEL SD
, INS_DEEL D
WHERE S.ins_srtkenmerk_key = K.ins_srtkenmerk_key
AND S.ins_srtkenmerk_upper = p_code
AND sd.ins_srtgroep_key = K.ins_srtinstallatie_key
AND D.ins_srtdeel_key = sd.ins_srtdeel_key
AND d.ins_deel_key = p_deel_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN -- Perhaps on srt-level defined?
BEGIN
SELECT K.ins_kenmerk_key
, S.ins_srtkenmerk_dimensie
INTO v_kenmerk_key
, v_dimensie
FROM INS_KENMERK K
, INS_SRTKENMERK S
, INS_DEEL D
WHERE S.ins_srtkenmerk_key = K.ins_srtkenmerk_key
AND S.ins_srtkenmerk_upper = p_code
AND D.ins_srtdeel_key = K.ins_srtinstallatie_key
AND d.ins_deel_key = p_deel_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN v_kenmerk_key := -1;
WHEN TOO_MANY_ROWS THEN v_kenmerk_key := -2;
END;
END;
RETURN v_kenmerk_key;
END;
--
FUNCTION f_dimensie(p_code IN VARCHAR2
) RETURN VARCHAR2 IS
v_dimensie INS_SRTKENMERK.ins_srtkenmerk_dimensie%TYPE;
BEGIN
BEGIN
SELECT ins_srtkenmerk_dimensie
INTO v_dimensie
FROM INS_SRTKENMERK
WHERE ins_srtkenmerk_verwijder IS NULL
AND ins_srtkenmerk_upper = p_code;
EXCEPTION
WHEN NO_DATA_FOUND THEN v_dimensie := '?';
WHEN TOO_MANY_ROWS THEN v_dimensie := '?';
END;
RETURN UPPER(v_dimensie);
END;
--
FUNCTION f_dagprijs(p_dimensie IN VARCHAR2
,p_module_prijs IN NUMBER
) RETURN NUMBER IS
v_dagprijs NUMBER(12,4);
BEGIN
IF p_dimensie = 'JAAR'
THEN
v_dagprijs := (p_module_prijs / 365);
ELSIF p_dimensie = 'MAAND'
THEN
v_dagprijs := (p_module_prijs * 12)/365;
ELSIF p_dimensie = 'WEEK'
THEN
v_dagprijs := (p_module_prijs /7);
ELSE
-- Ga ervan uit dat de prijs per maand is indien
-- er niets is ingevuld voor ins_srtdeel_eenheid.
v_dagprijs := (p_module_prijs * 12)/365;
END IF;
RETURN NVL(v_dagprijs,0);
END;
--
FUNCTION f_onderdeel(p_parent_key IN NUMBER
,p_code IN VARCHAR2
) RETURN NUMBER IS
v_onderdeel_key INS_DEEL.ins_deel_key%TYPE;
BEGIN
BEGIN
SELECT ins_deel_key
INTO v_onderdeel_key
FROM INS_DEEL
WHERE ins_deel_parent_key = p_parent_key
AND ins_srtdeel_key = (SELECT ins_srtdeel_key
FROM ins_v_aanwezigsrtdeel
WHERE ins_srtdeel_code_upper = p_code
);
EXCEPTION
WHEN NO_DATA_FOUND THEN v_onderdeel_key := -1;
WHEN TOO_MANY_ROWS THEN v_onderdeel_key := -2;
END;
RETURN v_onderdeel_key;
END;
--
FUNCTION f_srtdeel(p_deel_key IN NUMBER
) RETURN VARCHAR2 IS
v_srtdeel_naam INS_SRTDEEL.ins_srtdeel_omschrijving%TYPE;
BEGIN
BEGIN
SELECT ins_srtdeel_omschrijving
INTO v_srtdeel_naam
FROM INS_DEEL D
, INS_SRTDEEL S
WHERE D.ins_srtdeel_key = S.ins_srtdeel_key
AND D.ins_deel_key = p_deel_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN v_srtdeel_naam := '';
WHEN TOO_MANY_ROWS THEN v_srtdeel_naam := '';
END;
RETURN v_srtdeel_naam;
END;
--
FUNCTION f_srtdeel_prijs(p_deel_key IN NUMBER
) RETURN NUMBER IS
v_srtdeel_prijs INS_SRTDEEL.ins_srtdeel_prijs%TYPE;
BEGIN
BEGIN
SELECT ins_srtdeel_prijs
INTO v_srtdeel_prijs
FROM INS_DEEL D
, INS_SRTDEEL S
WHERE D.ins_srtdeel_key = S.ins_srtdeel_key
AND D.ins_deel_key = p_deel_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN v_srtdeel_prijs := 0;
WHEN TOO_MANY_ROWS THEN v_srtdeel_prijs := 0;
END;
RETURN v_srtdeel_prijs;
END;
--
--
-- Subprocedures voor het rapport kostenoverzicht.
--
--
FUNCTION akzacopiers_6_basis(p_session IN VARCHAR2
,p_regelnr IN NUMBER
,p_deel_key IN NUMBER
,p_datum_van IN DATE
,p_datum_tot IN DATE
,p_berekening IN BOOLEAN
,p_kosten IN OUT NUMBER
) RETURN NUMBER IS
CURSOR c_basis(p_deel_key IN NUMBER
) IS
SELECT S.ins_srtdeel_omschrijving naam
, S.ins_srtdeel_prijs prijs
, S.ins_srtdeel_eenheid dimensie
, TRUNC(D.ins_deel_aanmaak) begindatum
, TRUNC(D.ins_deel_verwijder) einddatum
, TRUNC(S.ins_srtdeel_aanmaak) srt_begindatum
, TRUNC(S.ins_srtdeel_verwijder) srt_einddatum
FROM INS_DEEL D
, INS_SRTDEEL S
WHERE D.ins_srtdeel_key = S.ins_srtdeel_key
AND D.ins_deel_key = p_deel_key
;
CURSOR c_modules(p_deel_key IN NUMBER
) IS
SELECT S.ins_srtdeel_omschrijving naam
, S.ins_srtdeel_prijs prijs
, S.ins_srtdeel_eenheid dimensie
, TRUNC(D.ins_deel_aanmaak) begindatum
, TRUNC(D.ins_deel_verwijder) einddatum
, TRUNC(S.ins_srtdeel_aanmaak) srt_begindatum
, TRUNC(S.ins_srtdeel_verwijder) srt_einddatum
FROM INS_DEEL D
, INS_SRTDEEL S
, INS_SRTGROEP G
WHERE D.ins_srtdeel_key = S.ins_srtdeel_key
AND S.ins_srtgroep_key = G.ins_srtgroep_key
AND D.ins_deel_parent_key = p_deel_key
AND G.ins_srtgroep_upper = 'MODULES'
;
v_dimensie INS_SRTDEEL.ins_srtdeel_eenheid%TYPE;
v_module_prijs INS_SRTDEEL.ins_srtdeel_prijs%TYPE;
v_controle_regel VARCHAR2(200);
v_dagprijs NUMBER(12,4);
v_periode_kosten NUMBER(12,4);
v_totaal_object NUMBER(12,4);
v_begindatum DATE;
v_einddatum DATE;
v_beginperiode DATE;
v_eindeperiode DATE;
v_dagen NUMBER(12);
i NUMBER(12);
lab_basis VARCHAR2(50);
lab_object VARCHAR2(50);
--
FUNCTION f_startperiode(p_datum1 IN DATE
,p_datum2 IN DATE
) RETURN DATE IS
v_startperiode DATE;
BEGIN
IF p_datum1 < p_datum2
THEN
v_startperiode := p_datum2;
ELSE
v_startperiode := p_datum1;
END IF;
RETURN v_startperiode;
END;
--
FUNCTION f_eindeperiode(p_datum1 IN DATE
,p_datum2 IN DATE
) RETURN DATE IS
v_eindeperiode DATE;
BEGIN
IF p_datum2 IS NULL
THEN
v_eindeperiode := p_datum1;
ELSE
IF p_datum1 >= p_datum2
THEN
v_eindeperiode := p_datum2;
ELSE
v_eindeperiode := p_datum1 + 1;
END IF;
END IF;
RETURN v_eindeperiode;
END;
--
BEGIN
-- function: akzacopiers_6_basis
-- Bereken de kosten die verbonden zijn zijn aan de huur
-- van de basismodulen die bij de printer horen.
--
i := p_regelnr;
v_totaal_object := 0;
v_tmp_huur_basis := 0;
v_tmp_huur_modules := 0;
lab_object := SUBSTR('Totaal Basishuur',1,50);
--
FOR r_basis IN c_basis(p_deel_key)
LOOP
lab_basis := SUBSTR('Basishuur' ||' '|| r_basis.naam,1,50);
v_dimensie := UPPER(r_basis.dimensie);
v_module_prijs := r_basis.prijs;
v_begindatum := r_basis.begindatum;
v_einddatum := r_basis.einddatum;
v_dagprijs := f_dagprijs(v_dimensie,v_module_prijs);
v_beginperiode := f_startperiode(p_datum_van,v_begindatum);
v_eindeperiode := f_eindeperiode(p_datum_tot,v_einddatum);
IF v_eindeperiode < v_beginperiode
THEN
v_dagen := 0;
ELSE
v_dagen := v_eindeperiode - v_beginperiode;
END IF;
v_periode_kosten := v_dagen * v_dagprijs;
v_totaal_object := v_totaal_object + v_periode_kosten;
v_tmp_huur_basis := v_tmp_huur_basis + v_periode_kosten;
IF v_srt_layout = 'PRN'
THEN
IF p_berekening
THEN
v_controle_regel := NVL(TO_CHAR(v_begindatum ,'dd-mm-yyyy'),'00-00-0000')
||' '|| NVL(TO_CHAR(v_einddatum ,'dd-mm-yyyy'),'00-00-0000')
||' '|| NVL(TO_CHAR(v_module_prijs ,'999990.90'),' .........')
||' '|| NVL(TO_CHAR(v_dagprijs ,'9990.9990'),' .........')
||' '|| NVL(TO_CHAR(v_beginperiode ,'dd-mm-yyyy'),'00-00-0000')
||' '|| NVL(TO_CHAR(v_eindeperiode ,'dd-mm-yyyy'),'00-00-0000')
||' '|| NVL(TO_CHAR(v_dagen ,'9990'),' ....')
||' '|| NVL(TO_CHAR(v_periode_kosten,'99990.90'),' ........');
i := schrijf_rapport_regel(p_session,i,RPadEnNvl('* '|| v_controle_regel,98) ||' *');
END IF;
i:= schrijf_rapport_regel(p_session,i,PrintReplicate(' ',16)
|| RPadEnNvl(lab_basis,60)||': '
|| TO_CHAR(v_periode_kosten,'99990.90'));
END IF;
END LOOP;
--
FOR r_modules IN c_modules(p_deel_key)
LOOP
lab_basis := SUBSTR('Basishuur' ||' '|| r_modules.naam,1,50);
v_dimensie := UPPER(r_modules.dimensie);
v_module_prijs := r_modules.prijs;
--
IF r_modules.srt_begindatum > r_modules.begindatum
THEN
v_begindatum := r_modules.srt_begindatum;
ELSE
v_begindatum := r_modules.begindatum;
END IF;
IF r_modules.srt_einddatum > r_modules.einddatum
OR r_modules.srt_einddatum IS NULL
THEN
v_einddatum := r_modules.einddatum;
ELSE
v_einddatum := r_modules.srt_einddatum;
END IF;
--
v_begindatum := r_modules.begindatum;
v_einddatum := r_modules.einddatum;
v_dagprijs := f_dagprijs(v_dimensie,v_module_prijs);
v_beginperiode := f_startperiode(p_datum_van,v_begindatum);
v_eindeperiode := f_eindeperiode(p_datum_tot,v_einddatum);
--
IF v_eindeperiode < v_beginperiode
THEN
-- Als een module binnen de periode niet gebruikt is
-- dan deze ook niet vermelden.
v_dagen := 0;
ELSE
v_dagen := v_eindeperiode - v_beginperiode;
--
v_periode_kosten := v_dagen * v_dagprijs;
v_totaal_object := v_totaal_object + v_periode_kosten;
v_tmp_huur_modules := v_tmp_huur_modules + v_periode_kosten;
--
IF v_srt_layout = 'PRN'
THEN
IF p_berekening
THEN
v_controle_regel := NVL(TO_CHAR(v_begindatum ,'dd-mm-yyyy'),'00-00-0000')
||' '|| NVL(TO_CHAR(v_einddatum ,'dd-mm-yyyy'),'00-00-0000')
||' '|| NVL(TO_CHAR(v_module_prijs ,'999990.90'),' .........')
||' '|| NVL(TO_CHAR(v_dagprijs ,'9990.9990'),' .........')
||' '|| NVL(TO_CHAR(v_beginperiode ,'dd-mm-yyyy'),'00-00-0000')
||' '|| NVL(TO_CHAR(v_eindeperiode ,'dd-mm-yyyy'),'00-00-0000')
||' '|| NVL(TO_CHAR(v_dagen ,'9990'),' ....')
||' '|| NVL(TO_CHAR(v_periode_kosten,'99990.90'),' ........');
i := schrijf_rapport_regel(p_session,i,RPadEnNvl('* '|| v_controle_regel,98) ||' *');
END IF;
i:= schrijf_rapport_regel(p_session,i,PrintReplicate(' ',16)
|| RPadEnNvl(lab_basis,60)||': '
|| TO_CHAR(v_periode_kosten,'99990.90'));
END IF;
END IF;
END LOOP;
--
IF v_srt_layout = 'PRN'
THEN
i := schrijf_rapport_regel(p_session,i,PrintReplicate(' ',16)
|| PrintReplicate(' ',22)
|| RPadEnNvl(lab_object,28)||': '
|| TO_CHAR(v_totaal_object,'99990.90'));
END IF;
p_kosten := v_totaal_object;
RETURN i;
END; -- function: akzacopiers_6_basis
--
--
FUNCTION akzacopiers_5_papier(p_session IN VARCHAR2
,p_regelnr IN NUMBER
,p_deel_key IN NUMBER
,p_datum_van IN DATE
,p_datum_tot IN DATE
,p_berekening IN BOOLEAN
,p_kosten IN OUT NUMBER
) RETURN NUMBER IS
CURSOR c_onderdeel(p_parent_key IN NUMBER
) IS
SELECT ins_deel_key
FROM INS_DEEL
WHERE ins_deel_parent_key = p_parent_key
AND ins_srtdeel_key IN (SELECT ins_srtdeel_key
FROM ins_v_aanwezigsrtdeel
WHERE ins_srtdeel_code_upper IN ('PA3','PA4')
)
;
CURSOR c_leverdata(p_ins_deel_key IN NUMBER
,p_geleverd_key IN NUMBER
,p_datum_van IN DATE
,p_datum_tot IN DATE
) IS
SELECT ins_kenmerkdeel_aanmaak van
, ins_kenmerkdeel_verwijder tot
, ins_kenmerkdeel_key sleutel
, ins_kenmerkdeel_waarde aantal
FROM INS_KENMERKDEEL
WHERE ins_deel_key = p_ins_deel_key
AND ins_kenmerk_key = p_geleverd_key
AND ins_kenmerkdeel_aanmaak >= p_datum_van
AND ins_kenmerkdeel_aanmaak < p_datum_tot
;
i NUMBER(12);
v_periode_dozen NUMBER(12);
v_totaaldozen NUMBER(12);
v_leveringprijs NUMBER(12,2);
v_prijs NUMBER(12,2);
v_totaalprijs NUMBER(12,2);
v_papier_kosten NUMBER(12,2);
v_datum_van DATE;
v_datum_tot DATE;
v_srtdeel_naam INS_SRTDEEL.ins_srtdeel_omschrijving%TYPE;
v_onderdeel_key INS_DEEL.ins_deel_key%TYPE;
v_geleverd_key INS_KENMERK.ins_kenmerk_key%TYPE;
v_doosprijs_key INS_KENMERK.ins_kenmerk_key%TYPE;
v_controle_regel VARCHAR2(200);
lab_aantal VARCHAR2(50);
lab_kosten VARCHAR2(50);
--
FUNCTION f_laatste_waarde(p_deel_key IN NUMBER
,p_kenmerk_key IN NUMBER
,p_datum_aanmaak IN DATE
) RETURN VARCHAR2 IS
CURSOR c_laatste_waarde(p_ins_deel_key IN NUMBER
,p_ins_kenmerk_key IN NUMBER
,p_datum_aanmaak IN DATE
) IS
SELECT ins_kenmerkdeel_waarde waarde
, ins_kenmerkdeel_aanmaak van
, ins_kenmerkdeel_verwijder tot
FROM INS_KENMERKDEEL
WHERE ins_deel_key = p_ins_deel_key
AND ins_kenmerk_key = p_ins_kenmerk_key
AND ins_kenmerkdeel_aanmaak <= p_datum_aanmaak
ORDER BY ins_kenmerkdeel_aanmaak ASC
;
v_return INS_KENMERKDEEL.ins_kenmerkdeel_waarde%TYPE;
r_laatste_waarde c_laatste_waarde%ROWTYPE;
BEGIN
OPEN c_laatste_waarde(p_deel_key
,p_kenmerk_key
,p_datum_aanmaak);
FETCH c_laatste_waarde INTO r_laatste_waarde;
IF c_laatste_waarde%NOTFOUND
THEN
v_return := NULL;
ELSE
v_return := r_laatste_waarde.waarde;
END IF;
CLOSE c_laatste_waarde;
RETURN v_return;
END;
--
BEGIN
-- function: akzacopiers_5_papier
-- Bereken het aantal dozen A4 en A3 papier die bij de printer in
-- de opgegeven periode geleverd zijn, met de daarbijbehorende kosten.
--
i := p_regelnr;
v_datum_van := TO_DATE(TO_CHAR(p_datum_van,'dd-mm-yyyy')||' 00:00:00','dd-mm-yyyy hh24:mi:ss');
v_datum_tot := TO_DATE(TO_CHAR(p_datum_tot,'dd-mm-yyyy')||' 00:00:00','dd-mm-yyyy hh24:mi:ss');
v_papier_kosten := 0;
v_tmp_papier_a3 := 0;
v_tmp_papier_a4 := 0;
v_tmp_papier_a3_nr := 0;
v_tmp_papier_a4_nr := 0;
--
FOR r_onderdeel IN c_onderdeel(p_deel_key)
LOOP
v_onderdeel_key := r_onderdeel.ins_deel_key;
v_geleverd_key := f_kenmerk('AANTAL GELEVERD', v_onderdeel_key);
v_doosprijs_key := f_kenmerk('PRIJS PER DOOS', v_onderdeel_key);
v_prijs := 0;
v_leveringprijs := 0;
v_totaalprijs := 0;
v_totaaldozen := 0;
--
FOR r_leverdata IN c_leverdata(v_onderdeel_key
,v_geleverd_key
,v_datum_van
,v_datum_tot)
LOOP
v_periode_dozen := r_leverdata.aantal;
--
--IF v_doosprijs_key = -1 -- kenmerk voor prijs per doos bestaat niet !
--THEN
v_prijs := f_srtdeel_prijs(r_onderdeel.ins_deel_key);
--ELSE
-- v_prijs := to_number(f_laatste_waarde(v_onderdeel_key,v_doosprijs_key,r_wijzigdata.van));
--END IF;
--
-- Berekening van kosten papier.
v_leveringprijs := v_periode_dozen * v_prijs;
v_totaalprijs := v_totaalprijs + v_leveringprijs;
v_totaaldozen := v_totaaldozen + v_periode_dozen;
--
IF v_srt_layout = 'PRN'
THEN
IF p_berekening
THEN
v_controle_regel := NVL(TO_CHAR(r_leverdata.van ,'dd-mm-yyyy'),'00-00-0000')
||' '|| NVL(TO_CHAR(r_leverdata.tot ,'dd-mm-yyyy'),'00-00-0000')
||' '|| NVL(TO_CHAR(v_periode_dozen ,'9999999990'),' ..........')
||' '|| NVL(TO_CHAR(v_prijs ,'99990.9990'),' ..........')
||' '|| NVL(TO_CHAR(v_leveringprijs ,'99990.9990'),' ..........')
||' '|| NVL(TO_CHAR(v_totaaldozen ,'9999999990'),' ..........')
||' '|| NVL(TO_CHAR(v_totaalprijs ,'9999990.90'),' ..........')
;
i := schrijf_rapport_regel(p_session,i,RPadEnNvl('* '|| v_controle_regel,98) ||' *');
END IF;
END IF;
END LOOP;
v_papier_kosten := v_papier_kosten + v_totaalprijs;
v_srtdeel_naam := f_srtdeel(r_onderdeel.ins_deel_key);
--
IF INSTR(v_srtdeel_naam,'A3') > 0
THEN
v_tmp_papier_a3_nr := v_totaaldozen;
v_tmp_papier_a3 := v_totaalprijs;
ELSIF INSTR(v_srtdeel_naam,'A4') > 0
THEN
v_tmp_papier_a4_nr := v_totaaldozen;
v_tmp_papier_a4 := v_totaalprijs;
END IF;
--
lab_aantal := 'Aantal '|| v_srtdeel_naam;
lab_kosten := 'Kosten';
IF v_srt_layout = 'PRN'
THEN
i := schrijf_rapport_regel(p_session,i,PrintReplicate(' ',16)
|| RPadEnNvl(lab_aantal,22)||': '
|| TO_CHAR(v_totaaldozen,'99999990')
|| PrintReplicate(' ', 5)
|| RPadEnNvl(lab_kosten,22)||': '
|| TO_CHAR(v_totaalprijs,'99990.90'));
END IF;
END LOOP;
p_kosten := v_papier_kosten;
RETURN i;
END; -- function: akzacopiers_5_papier
--
--
FUNCTION akzacopiers_4_tikken(p_session IN VARCHAR2
,p_regelnr IN NUMBER
,p_deel_key IN NUMBER
,p_datum_van IN DATE
,p_datum_tot IN DATE
,p_berekening IN BOOLEAN
,p_kosten IN OUT NUMBER
) RETURN NUMBER IS
CURSOR c_afdruk(p_ins_deel_key IN NUMBER
,p_ins_kenmerk_key_1 IN NUMBER
,p_ins_kenmerk_key_2 IN NUMBER
) IS
SELECT DISTINCT
ins_kenmerk_key
FROM INS_KENMERKDEEL
WHERE ins_deel_key = p_ins_deel_key
AND ins_kenmerk_key IN (p_ins_kenmerk_key_1,p_ins_kenmerk_key_2)
;
CURSOR c_wijzigdata(p_ins_deel_key IN NUMBER
,p_tellerstand_key IN NUMBER
,p_datum_van IN DATE
,p_datum_tot IN DATE
) IS
SELECT ins_kenmerkdeel_waarde waarde
, ins_kenmerkdeel_aanmaak van
FROM INS_KENMERKDEEL
WHERE ins_deel_key = p_ins_deel_key
AND ins_kenmerk_key = p_tellerstand_key
AND ins_kenmerkdeel_aanmaak >= p_datum_van
AND ins_kenmerkdeel_aanmaak <= p_datum_tot
;
v_tellerstand_key INS_KENMERK.ins_kenmerk_key%TYPE;
v_prijspertik_key INS_KENMERK.ins_kenmerk_key%TYPE;
v_eerste_record BOOLEAN;
v_controle_regel VARCHAR2(200);
v_periode_van DATE;
v_periode_tot DATE;
v_datumvan DATE;
v_huidige_datum DATE;
i NUMBER(12);
v_subtotaal_tik NUMBER(12);
v_totaal_tikken NUMBER(12);
v_aantal_tikken NUMBER(12);
v_begin_stand NUMBER(12);
v_einde_stand NUMBER(12);
v_huidige_stand NUMBER(12);
v_vorige_stand NUMBER(12);
v_tikkosten NUMBER(12,4);
v_prijs NUMBER(12,4);
v_totaalprijs NUMBER(12,4);
v_totaal_zw_kl NUMBER(12,4);
v_afdruk VARCHAR2(10);
lab_aantal VARCHAR2(50);
lab_kosten VARCHAR2(50);
--
FUNCTION f_laatste_waarde(p_deel_key IN NUMBER
,p_kenmerk_key IN NUMBER
,p_datum_aanmaak IN OUT DATE
) RETURN NUMBER IS
CURSOR c_laatste_waarde(p_ins_deel_key IN NUMBER
,p_ins_kenmerk_key IN NUMBER
,p_datum_aanmaak IN DATE
) IS
SELECT ins_kenmerkdeel_waarde waarde
, ins_kenmerkdeel_aanmaak van
FROM INS_KENMERKDEEL
WHERE ins_deel_key = p_ins_deel_key
AND ins_kenmerk_key = p_ins_kenmerk_key
AND ins_kenmerkdeel_aanmaak <= p_datum_aanmaak
ORDER BY ins_kenmerkdeel_aanmaak ASC
;
v_return NUMBER;
BEGIN
v_return := NULL;
FOR r_laatste_waarde IN c_laatste_waarde(p_deel_key
,p_kenmerk_key
,p_datum_aanmaak)
LOOP
BEGIN
v_return := TO_NUMBER(r_laatste_waarde.waarde);
EXCEPTION
WHEN OTHERS THEN v_return := 0; -- Indien er geen getal in Waarde staat.
END;
p_datum_aanmaak := r_laatste_waarde.van;
END LOOP;
--
IF v_return IS NULL
THEN
v_return := 0;
p_datum_aanmaak := p_datum_aanmaak;
END IF;
RETURN v_return;
END;
--
BEGIN
-- function: akzacopiers_4_tikken
-- Bereken het aantal tikken dat de printer in de
-- opgegeven periode heeft verwerkt.
--
i := p_regelnr;
v_totaal_tikken := 0;
v_totaal_zw_kl := 0;
v_tmp_tikkosten_zw := 0;
v_tmp_tikkosten_kl := 0;
FOR r_afdruk IN c_afdruk(p_deel_key
,f_kenmerk('TELLERSTAND', p_deel_key)
,f_kenmerk('TELLERSTAND KLEUR', p_deel_key)
)
LOOP
IF r_afdruk.ins_kenmerk_key = f_kenmerk('TELLERSTAND', p_deel_key)
THEN
v_afdruk := 'z/w';
v_tellerstand_key := f_kenmerk('TELLERSTAND', p_deel_key);
v_prijspertik_key := f_kenmerk('PRIJS PER TIK', p_deel_key);
ELSE
v_afdruk := 'kleur';
v_tellerstand_key := f_kenmerk('TELLERSTAND KLEUR', p_deel_key);
v_prijspertik_key := f_kenmerk('PRIJS PER TIK KLEUR', p_deel_key);
END IF;
--
v_periode_van := TO_DATE(TO_CHAR(p_datum_van,'dd-mm-yyyy')||' 00:00:00','dd-mm-yyyy hh24:mi:ss');
v_periode_tot := TO_DATE(TO_CHAR(p_datum_tot,'dd-mm-yyyy')||' 23:59:59','dd-mm-yyyy hh24:mi:ss');
v_eerste_record := TRUE;
lab_aantal := 'Aantal Tikken';
lab_kosten := 'Kosten';
v_totaal_tikken := 0;
v_subtotaal_tik := 0;
v_huidige_stand := 0;
v_vorige_stand := 0;
v_prijs := 0;
v_aantal_tikken := 0;
v_tikkosten := 0;
v_totaalprijs := 0;
--
-- Bepalen van begin- en einddatum van de periode
-- waaruit de gegevens moeten worden gehaald.
--
v_begin_stand := f_laatste_waarde(p_deel_key,v_tellerstand_key,v_periode_van);
v_einde_stand := f_laatste_waarde(p_deel_key,v_tellerstand_key,v_periode_tot);
FOR r_wijzigdata IN c_wijzigdata(p_deel_key
,v_tellerstand_key
,v_periode_van
,v_periode_tot)
LOOP
v_huidige_datum := r_wijzigdata.van;
v_huidige_stand := r_wijzigdata.waarde;
v_datumvan := v_huidige_datum;
v_tikkosten := f_laatste_waarde(p_deel_key,v_prijspertik_key,v_datumvan);
--
IF v_eerste_record
THEN
v_vorige_stand := v_huidige_stand;
v_eerste_record := FALSE;
END IF;
--
-- Berekenen van kosten tikken.
--
v_aantal_tikken := v_huidige_stand - v_vorige_stand;
v_prijs := v_aantal_tikken * v_tikkosten;
v_totaalprijs := v_totaalprijs + v_prijs;
--
-- Tonen van de tijdsopbouw van de kosten.
--
IF v_srt_layout = 'PRN'
THEN
IF p_berekening
THEN
v_controle_regel := NVL(TO_CHAR(v_periode_van ,'dd-mm-yyyy'),'00-00-0000')
||' '|| NVL(TO_CHAR(v_periode_tot ,'dd-mm-yyyy'),'00-00-0000')
||' '|| NVL(TO_CHAR(v_huidige_datum ,'dd-mm-yyyy'),'00-00-0000')
||' '|| NVL(TO_CHAR(v_huidige_stand , '9999990'), ' .......')
||' '|| NVL(TO_CHAR(v_tikkosten , '90.9990'), ' .......')
||' ('|| NVL(TO_CHAR(v_datumvan ,'dd-mm-yyyy'),'00-00-0000')
||') '|| NVL(TO_CHAR(v_aantal_tikken , '9999990'), ' .......')
||' '|| NVL(TO_CHAR(v_prijs , '9990.90'), ' .......')
||' '|| NVL(TO_CHAR(v_totaalprijs , '9990.90'), ' .......');
i := schrijf_rapport_regel(p_session,i,RPadEnNvl('* '|| v_controle_regel,98) ||' *');
END IF;
END IF;
v_subtotaal_tik := v_subtotaal_tik + v_aantal_tikken;
v_vorige_stand := v_huidige_stand;
END LOOP;
v_totaal_tikken := v_totaal_tikken + v_subtotaal_tik;
--
IF v_afdruk = 'z/w'
THEN
v_tmp_tikkosten_zw := v_totaalprijs;
ELSIF v_afdruk = 'kleur'
THEN
v_tmp_tikkosten_kl := v_totaalprijs;
END IF;
--
IF v_srt_layout = 'PRN'
THEN
i := schrijf_rapport_regel(p_session,i,PrintReplicate(' ',16)
|| RPadEnNvl(lab_aantal ||' '|| v_afdruk,22)||': '
|| TO_CHAR(NVL(v_totaal_tikken,0) ,'99999990')
|| PrintReplicate(' ', 5)
|| RPadEnNvl(lab_kosten,22)||': '
|| TO_CHAR(NVL(v_totaalprijs,0) ,'99990.90'));
END IF;
v_totaal_zw_kl := v_totaal_zw_kl + v_totaalprijs;
END LOOP;
p_kosten := v_totaal_zw_kl;
RETURN i;
END; -- function: akzacopiers_4_tikken
--
--
FUNCTION akzacopiers_3_norm(p_session IN VARCHAR2
,p_regelnr IN NUMBER
,p_deel_key IN NUMBER
,p_datum_van IN DATE
,p_datum_tot IN DATE
,p_berekening IN BOOLEAN
) RETURN NUMBER IS
CURSOR c_laatste_waarde(p_ins_deel_key IN NUMBER
,p_ins_kenmerk_key IN NUMBER
,p_datum_aanmaak IN DATE
) IS
SELECT ins_kenmerkdeel_waarde waarde
, ins_kenmerkdeel_aanmaak van
, ins_kenmerkdeel_verwijder tot
FROM INS_KENMERKDEEL
WHERE ins_deel_key = p_ins_deel_key
AND ins_kenmerk_key = p_ins_kenmerk_key
AND ins_kenmerkdeel_aanmaak <= p_datum_aanmaak
ORDER BY ins_kenmerkdeel_aanmaak ASC
;
v_normverbruik_key INS_KENMERK.ins_kenmerk_key%TYPE;
i NUMBER(12);
v_normverbruik NUMBER(12) := 0;
lab_norm VARCHAR2(50);
v_datum_tot DATE;
BEGIN
-- function: akzacopiers_3_norm
-- Bepaal het norm aantal afdrukken voor een printer.
--
i := p_regelnr;
lab_norm := 'Normverbruik';
v_datum_tot := TO_DATE(TO_CHAR(p_datum_tot,'dd-mm-yyyy')||' 00:00:00','dd-mm-yyyy hh24:mi:ss');
v_normverbruik_key := f_kenmerk('NORMVERBRUIK', p_deel_key);
--
FOR r_normverbruik IN c_laatste_waarde(p_deel_key
,v_normverbruik_key
,v_datum_tot
)
LOOP
v_normverbruik := TO_NUMBER(r_normverbruik.waarde);
END LOOP;
--
IF v_srt_layout = 'PRN'
THEN
i := schrijf_rapport_regel(p_session,i,PrintReplicate(' ',16)
|| RPadEnNvl(lab_norm,22)||': '
|| TO_CHAR(v_normverbruik,'99999990'));
END IF;
--
RETURN i;
END; -- function: akzacopiers_3_norm
--
--
FUNCTION akzacopiers_2_beheer(p_session IN VARCHAR2
,p_regelnr IN NUMBER
,p_deel_key IN NUMBER
,p_datum_van IN DATE
,p_datum_tot IN DATE
,p_berekening IN BOOLEAN
,p_kosten IN OUT NUMBER
) RETURN NUMBER IS
CURSOR c_wijzigdata(p_ins_deel_key IN NUMBER
,p_kenmerk_key1 IN NUMBER
,p_datum_van IN DATE
,p_datum_tot IN DATE
) IS
SELECT TRUNC(ins_kenmerkdeel_aanmaak) van
, ins_kenmerkdeel_key sleutel
FROM INS_KENMERKDEEL
WHERE ins_deel_key = p_ins_deel_key
AND ins_kenmerk_key IN (p_kenmerk_key1)
AND( (ins_kenmerkdeel_aanmaak <= p_datum_van)
OR (ins_kenmerkdeel_aanmaak <= p_datum_tot)
)
AND( ( (ins_kenmerkdeel_verwijder >= p_datum_van)
OR (ins_kenmerkdeel_verwijder >= p_datum_tot)
)
OR ins_kenmerkdeel_verwijder IS NULL
)
;
CURSOR c_laatste_waarde(p_ins_deel_key IN NUMBER
,p_ins_kenmerk_key IN NUMBER
,p_datum_aanmaak IN DATE
) IS
SELECT ins_kenmerkdeel_waarde waarde
, TRUNC(ins_kenmerkdeel_aanmaak) van
, TRUNC(ins_kenmerkdeel_verwijder) tot
FROM INS_KENMERKDEEL
WHERE ins_deel_key = p_ins_deel_key
AND ins_kenmerk_key = p_ins_kenmerk_key
AND TRUNC(ins_kenmerkdeel_aanmaak) <= TRUNC(p_datum_aanmaak)
ORDER BY ins_kenmerkdeel_aanmaak ASC
;
v_beheerkosten_key INS_KENMERK.ins_kenmerk_key%TYPE;
v_periode_kosten NUMBER(12,4);
v_beheer_kosten NUMBER(12,4);
v_dimensie VARCHAR2(100);
v_dagkosten NUMBER(12,4);
v_totaal_beheer NUMBER(12,4);
v_controle_regel VARCHAR2(200);
v_begindatum DATE;
v_einddatum DATE;
v_beginperiode DATE;
v_eindeperiode DATE;
v_dagen NUMBER(12);
lab_beheer VARCHAR2(50);
i NUMBER(12);
BEGIN
-- function: akzacopiers_2_beheer
-- Subfunctie voor het berekenen van de beheerkosten per printer.
--
i := p_regelnr;
v_beheerkosten_key := f_kenmerk('BEHEERSKOSTEN', p_deel_key);
v_dimensie := f_dimensie('BEHEERSKOSTEN');
v_totaal_beheer := 0;
FOR r_wijzigdata IN c_wijzigdata(p_deel_key
,v_beheerkosten_key
,p_datum_van
,p_datum_tot
)
LOOP
SELECT ins_kenmerkdeel_aanmaak
, ins_kenmerkdeel_verwijder
, TO_NUMBER(NVL(ins_kenmerkdeel_waarde,'0'))
INTO v_begindatum
, v_einddatum
, v_beheer_kosten
FROM INS_KENMERKDEEL
WHERE ins_kenmerkdeel_key = r_wijzigdata.sleutel;
--
IF v_dimensie = 'EURO P JR'
THEN
v_dagkosten := (v_beheer_kosten / 365);
ELSIF v_dimensie = 'EURO P MND'
THEN
v_dagkosten := (v_beheer_kosten * 12)/365;
ELSIF v_dimensie = 'EURO P WK'
THEN
v_dagkosten := (v_beheer_kosten /7);
ELSIF v_dimensie = 'EURO P DAG'
THEN
v_dagkosten := v_beheer_kosten;
ELSE
-- Ga ervan uit dat indien er geen eenheid is ingevuld
-- hiervoor een maand bedoeld wordt.
v_dagkosten := (v_beheer_kosten * 12)/365;
END IF;
--
IF p_datum_van < v_begindatum
THEN
v_beginperiode := v_begindatum;
ELSE
v_beginperiode := p_datum_van;
END IF;
--
IF p_datum_tot >= v_einddatum
THEN
v_eindeperiode := v_einddatum;
ELSE
v_eindeperiode := p_datum_tot;
END IF;
--
IF v_eindeperiode < v_beginperiode
THEN
v_dagen := 0;
ELSE
v_dagen := TRUNC(v_eindeperiode) - TRUNC(v_beginperiode);
END IF;
--
v_periode_kosten := v_dagen * v_dagkosten;
v_totaal_beheer := v_totaal_beheer + v_periode_kosten;
--
IF v_srt_layout = 'PRN'
THEN
IF p_berekening
THEN
v_controle_regel := NVL(TO_CHAR(v_begindatum ,'dd-mm-yyyy'),'00-00-0000')
||' '|| NVL(TO_CHAR(v_einddatum ,'dd-mm-yyyy'),'00-00-0000')
||' '|| NVL(TO_CHAR(v_beheer_kosten ,'999990.90'),' .........')
||' '|| NVL(TO_CHAR(v_dagkosten ,'9990.9990'),' .........')
||' '|| NVL(TO_CHAR(v_beginperiode ,'dd-mm-yyyy'),'00-00-0000')
||' '|| NVL(TO_CHAR(v_eindeperiode ,'dd-mm-yyyy'),'00-00-0000')
||' '|| NVL(TO_CHAR(v_dagen ,'9990'),' ....')
||' '|| NVL(TO_CHAR(v_periode_kosten,'99990.90'),' ........');
i := schrijf_rapport_regel(p_session,i,RPadEnNvl('* '|| v_controle_regel,98)||' *');
END IF;
END IF;
END LOOP;
lab_beheer := 'Beheerskosten';
--
IF v_srt_layout = 'PRN'
THEN
i := schrijf_rapport_regel(p_session,i,PrintReplicate(' ',54)
|| RPadEnNvl(lab_beheer,22)||': '
|| TO_CHAR(v_totaal_beheer,'99990.90'));
END IF;
v_tmp_beheerskosten := v_totaal_beheer;
p_kosten := v_totaal_beheer;
RETURN i;
END; -- function: akzacopiers_2_beheer
--
--
FUNCTION akzacopiers_1_eigenaar(user_key IN NUMBER
,p_session IN VARCHAR2
,p_regelnr IN NUMBER
,p_datum_van IN DATE
,p_datum_tot IN DATE
,p_berekening IN BOOLEAN
,p_alle_eigenaren IN BOOLEAN
) RETURN NUMBER AS
CURSOR c_owner_copier(p_eigenaar IN NUMBER
) IS
SELECT DISTINCT
W.ins_kenmerkdeel_waarde
, W.ins_deel_key
, K.ins_kenmerk_key
, S.ins_srtkenmerk_key
, S.fac_kenmerkdomein_key
, S.ins_srtkenmerk_kenmerktype
, R.fac_kenmerkdomein_objectnaam
, R.fac_kenmerkdomein_kolomnaam
, R.fac_kenmerkdomein_kolomtxt
FROM INS_KENMERKDEEL W
, INS_KENMERK K
, INS_SRTKENMERK S
, FAC_KENMERKDOMEIN R
WHERE W.ins_kenmerk_key = K.ins_kenmerk_key
AND S.ins_srtkenmerk_key = K.ins_srtkenmerk_key
AND S.fac_kenmerkdomein_key = R.fac_kenmerkdomein_key
AND S.ins_srtkenmerk_upper = 'EIGENAAR'
AND K.ins_kenmerk_niveau = 'G'
AND K.ins_srtinstallatie_key = (SELECT ins_srtgroep_key
FROM INS_SRTGROEP
WHERE ins_srtgroep_upper = 'KOPIEERMACHINES'
)
AND W.ins_kenmerkdeel_waarde = DECODE(p_eigenaar,0,W.ins_kenmerkdeel_waarde,p_eigenaar)
;
CURSOR c_copier(p_deel_key IN NUMBER
) IS
SELECT ins_deel_omschrijving OBJECT
, ins_srtdeel_omschrijving objectsoort
FROM INS_DEEL D
, ins_v_aanwezigsrtdeel S
WHERE D.ins_srtdeel_key = S.ins_srtdeel_key
AND D.ins_deel_key = p_deel_key
;
TYPE cursor_type IS REF CURSOR;
c_company cursor_type;
c_eigenaren cursor_type;
v_regel VARCHAR2(2000);
i NUMBER(10);
i_machine_start NUMBER(10);
i_eigenaar_start NUMBER(10);
i_company_start NUMBER(10);
v_eerste BOOLEAN := TRUE;
v_afdelingen VARCHAR2(2000);
v_Sql_company VARCHAR2(2000);
v_Sql_afdeling VARCHAR2(2000);
v_company_code VARCHAR2(10);
v_kostenplaats VARCHAR2(30);
v_company_key NUMBER(10);
v_eigenaar VARCHAR2(60);
v_ownerkey NUMBER(10);
lab_company VARCHAR2(30);
lab_eigenaar VARCHAR2(30);
lab_machine VARCHAR2(30);
lab_gebruik VARCHAR2(30);
lab_totaal_machine VARCHAR2(30);
lab_totaal VARCHAR2(30);
v_ins_deel_key NUMBER(10);
v_beheer_kosten NUMBER(12,2) := 0;
v_tikken_kosten NUMBER(12,2) := 0;
v_papier_kosten NUMBER(12,2) := 0;
v_gebruik_kosten NUMBER(12,2) := 0;
v_basis_kosten NUMBER(12,2) := 0;
v_totaal_machine NUMBER(12,2) := 0;
v_totaal_eigenaar NUMBER(12,2) := 0;
v_totaal_company NUMBER(12,2) := 0;
v_regel_eigenaar NUMBER(10);
v_regel_company NUMBER(10);
v_user_dep NUMBER(10);
v_periode_van DATE;
v_periode_tot DATE;
--
FUNCTION p_periode_eigenaar(p_session IN VARCHAR2
,p_volgnr IN NUMBER
,p_owner_key IN NUMBER
,p_deel_key IN NUMBER
,p_datum_van IN OUT DATE
,p_datum_tot IN OUT DATE
) RETURN NUMBER AS
i NUMBER;
v_kenmerk_eigenaar NUMBER(10);
v_datum_van DATE;
v_datum_tot DATE;
v_copier_van DATE;
v_copier_tot DATE;
v_periode_van DATE;
v_periode_tot DATE;
BEGIN
-- Bereken de begin- en einddatum binnen de opgegeven periode
-- dat de copier in het bezit was van de huidige eigenaar.
i := p_volgnr;
v_kenmerk_eigenaar := f_kenmerk('EIGENAAR', p_deel_key);
v_copier_van := TO_DATE(NULL);
v_copier_tot := TO_DATE(NULL);
BEGIN
SELECT K.ins_kenmerkdeel_aanmaak
, K.ins_kenmerkdeel_verwijder
, D.ins_deel_aanmaak
, D.ins_deel_verwijder
INTO v_datum_van
, v_datum_tot
, v_copier_van
, v_copier_tot
FROM INS_KENMERKDEEL K
, INS_DEEL D
WHERE K.ins_deel_key = D.ins_deel_key
AND K.ins_kenmerk_key = v_kenmerk_eigenaar
AND K.ins_deel_key = p_deel_key
AND K.ins_kenmerkdeel_waarde = TO_CHAR(p_owner_key);
EXCEPTION
WHEN NO_DATA_FOUND THEN v_datum_van := p_datum_van;
v_datum_tot := p_datum_tot;
WHEN TOO_MANY_ROWS THEN v_datum_van := p_datum_van;
v_datum_tot := p_datum_tot;
END;
--
IF p_datum_van < v_datum_van
THEN
v_periode_van := v_datum_van;
ELSE
v_periode_van := p_datum_van;
END IF;
--
-- Kan pas eigenaar zijn als de copier ook bestaat.
IF v_copier_van > v_periode_van
THEN
v_periode_van := v_copier_van;
END IF;
--
IF v_datum_tot IS NULL
THEN
v_periode_tot := p_datum_tot;
ELSE
IF p_datum_tot <= v_datum_tot
THEN
v_periode_tot := p_datum_tot;
ELSE
v_periode_tot := v_datum_tot -1;
END IF;
END IF;
--
-- Is geen eigenaar meer als copier is verwijderd.
IF v_copier_tot IS NOT NULL
AND v_copier_tot < v_periode_tot
THEN
v_periode_tot := v_copier_tot;
END IF;
--
p_datum_van := TRUNC(v_periode_van);
p_datum_tot := TRUNC(v_periode_tot);
RETURN i;
END;
BEGIN
-- function: akzacopiers_1_eigenaar
-- Maak fac_rapport regels aan voor een overzicht per gebruiker en
-- kopieermachine met daarbij de kosten voor de opgegeven periode
-- met betrekking tot papier- gebruik- en beheerkosten.
--
i := p_regelnr;
lab_company := 'Company code';
lab_eigenaar := 'Eigenaar';
lab_machine := 'Kopieermachine';
lab_gebruik := 'Gebruikskosten';
lab_totaal_machine := 'Totaal machine';
lab_totaal := 'Totaal';
--
IF v_srt_layout = 'XLS'
THEN
-- Kop van de xls-kolommen
i := schrijf_rapport_regel(p_session,i,'Kostenoverzicht copiers');
i := schrijf_rapport_regel(p_session,i,'Van ' ||TO_CHAR(p_datum_van,'dd-mm-yyyy')
||' Tot '||TO_CHAR(p_datum_tot,'dd-mm-yyyy')
);
i := schrijf_rapport_regel(p_session,i,'Datum aanmaak: '||TO_CHAR(SYSDATE,'dd-mm-yyyy'));
i := schrijf_rapport_regel(p_session,i,'');
i := schrijf_rapport_regel(p_session,i,RPadEnNvl('Company.cd',10)
||','|| RPadEnNvl('Kostenplts',10)
||','|| RPadEnNvl('Eigenaar' ,30)
||','|| RPadEnNvl('Copier' ,50)
||','|| LPadEnNvl('Beheer' , 9)
||','|| LPadEnNvl('Tik. z/w' , 9)
||','|| LPadEnNvl('Tik. kl' , 9)
||','|| LPadEnNvl('tot.Tik.' , 9)
||','|| LPadEnNvl('Pak A3' , 6)
||','|| LPadEnNvl('Kosten A3' , 9)
||','|| LPadEnNvl('DoosA4' , 6)
||','|| LPadEnNvl('Kosten A4' , 9)
||','|| LPadEnNvl('totPapier' , 9)
||','|| LPadEnNvl('Gebruik' , 9)
||','|| LPadEnNvl('Basis' , 9)
||','|| LPadEnNvl('Modules' , 9)
||','|| LPadEnNvl('Huur' , 9)
||','|| LPadEnNvl('Nashuatec' , 9)
||','|| LPadEnNvl('tot.cop.' , 9)
||','|| LPadEnNvl('tot.eig.' ,13)
||','|| LPadEnNvl('tot.comp' ,13));
i := schrijf_rapport_regel(p_session,i,PrintReplicate('-',10)
||','|| PrintReplicate('-',10)
||','|| PrintReplicate('-',30)
||','|| PrintReplicate('-',50)
||','|| PrintReplicate('-', 9)
||','|| PrintReplicate('-', 9)
||','|| PrintReplicate('-', 9)
||','|| PrintReplicate('-', 9)
||','|| PrintReplicate('-', 6)
||','|| PrintReplicate('-', 9)
||','|| PrintReplicate('-', 6)
||','|| PrintReplicate('-', 9)
||','|| PrintReplicate('-', 9)
||','|| PrintReplicate('-', 9)
||','|| PrintReplicate('-', 9)
||','|| PrintReplicate('-', 9)
||','|| PrintReplicate('-', 9)
||','|| PrintReplicate('-', 9)
||','|| PrintReplicate('-', 9)
||','|| PrintReplicate('-',13)
||','|| PrintReplicate('-',13));
END IF;
--
-- Bepaal de afdeling waartoe de huidige gebruiker behoort
-- of neem all afdelingen in het overzicht op.
IF p_alle_eigenaren
THEN
v_user_dep := 0;
ELSE
BEGIN
SELECT prs_afdeling_key
INTO v_user_dep
FROM PRS_PERSLID
WHERE prs_perslid_key = user_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN v_user_dep := 0;
WHEN TOO_MANY_ROWS THEN v_user_dep := 0;
END;
END IF;
--
-- Welke afdelingen en company-codes moeten in het
-- overzicht worden meegenomen?
v_afdelingen := 'AND A.prs_afdeling_key IN (-1';
FOR r_eigenaar IN c_owner_copier(v_user_dep)
LOOP
v_afdelingen := v_afdelingen ||','|| r_eigenaar.ins_kenmerkdeel_waarde;
END LOOP;
-- AKZA#489
-- AKZA#534: ook als afdeling ondertussen al verwijderd toch in query laten voor doorbelasting
v_Sql_company := 'SELECT DISTINCT a.prs_afdeling_parentkey prs_eenheid_key, e.prs_afdeling_upper company_code '
|| ' FROM prs_afdeling a, prs_v_aanwezigafdeling e '
|| ' WHERE a.prs_afdeling_parentkey = e.prs_afdeling_key '
|| v_afdelingen
|| ') '
||' ORDER BY e.prs_afdeling_upper';
--
-- Voor alle company-codes.
OPEN c_company FOR v_Sql_company;
LOOP
v_totaal_company := 0;
i_company_start := i;
FETCH c_company INTO v_company_key
, v_company_code;
IF c_company%NOTFOUND
THEN
EXIT;
ELSE
v_totaal_company := 0;
v_regel_company := i;
v_regel := RPadEnNvl(lab_company,14)||': '|| v_company_code;
IF v_srt_layout = 'SAP'
THEN
v_tmp_company := v_company_code;
ELSIF v_srt_layout = 'XLS'
THEN
v_tmp_company := v_company_code;
ELSIF v_srt_layout = 'PRN'
THEN
i := schrijf_rapport_regel(p_session,i,v_regel);
i := schrijf_rapport_regel(p_session,i,'');
i := schrijf_rapport_regel(p_session,i,'');
END IF;
--
-- AKZA#534: ook als afdeling ondertussen al verwijderd toch in query laten voor doorbelasting
v_Sql_afdeling := 'SELECT A.prs_afdeling_omschrijving tekst '
|| ', A.prs_afdeling_key naam '
|| ', (select k.prs_kostenplaats_nr from akza_v_kostenplaats k where k.prs_kostenplaats_key = a.prs_kostenplaats_key) kplts '
|| 'FROM prs_afdeling A '
|| 'WHERE A.prs_afdeling_parentkey = '|| v_company_key ||' '
|| v_afdelingen
|| ') ORDER BY A.prs_afdeling_omschrijving ';
--
-- Voor alle eigenaren die kopieermachines bezitten.
OPEN c_eigenaren FOR v_Sql_afdeling;
LOOP
v_totaal_eigenaar := 0;
i_eigenaar_start := i;
FETCH c_eigenaren INTO v_eigenaar
, v_ownerkey
, v_kostenplaats;
IF c_eigenaren%NOTFOUND
THEN
EXIT;
ELSE
v_totaal_eigenaar := 0;
v_regel_eigenaar := i;
v_regel := RPadEnNvl(lab_eigenaar,14)||': '|| v_eigenaar;
IF v_srt_layout = 'SAP'
THEN
v_tmp_eigenaar := v_eigenaar;
v_tmp_kostenplaats := v_kostenplaats;
ELSIF v_srt_layout = 'XLS'
THEN
v_tmp_eigenaar := v_eigenaar;
v_tmp_kostenplaats := v_kostenplaats;
ELSIF v_srt_layout = 'PRN'
THEN
i := schrijf_rapport_regel(p_session,i,v_regel);
i := schrijf_rapport_regel(p_session,i,'');
END IF;
--
-- Voor alle kopieermachines die de eigenaar heeft.
--
FOR r_kopieermachine IN c_owner_copier(v_ownerkey)
LOOP
v_ins_deel_key := r_kopieermachine.ins_deel_key;
v_totaal_machine := 0;
i_machine_start := i;
FOR r_copier IN c_copier(v_ins_deel_key)
LOOP
v_regel := RPadEnNvl(lab_machine,14)||': ' || r_copier.OBJECT
||' - '|| r_copier.objectsoort;
IF v_srt_layout = 'SAP'
THEN
v_tmp_copier := SUBSTR(r_copier.OBJECT,1,10);
ELSIF v_srt_layout = 'XLS'
THEN
v_tmp_copier := SUBSTR(r_copier.OBJECT ||' - '|| r_copier.objectsoort,1,50);
ELSIF v_srt_layout = 'PRN'
THEN
i := schrijf_rapport_regel(p_session,i,v_regel);
END IF;
--
-- Bereken de begin- en einddatum binnen de opgegeven periode
-- dat de copier in het bezit was van de huidige eigenaar.
v_periode_van := p_datum_van;
v_periode_tot := p_datum_tot;
i := p_periode_eigenaar(p_session,i,v_ownerkey,v_ins_deel_key,v_periode_van,v_periode_tot);
--
i := akzacopiers_2_beheer (p_session,i,v_ins_deel_key,v_periode_van,v_periode_tot,p_berekening,v_beheer_kosten);
i := akzacopiers_3_norm (p_session,i,v_ins_deel_key,v_periode_van,v_periode_tot,p_berekening);
i := akzacopiers_4_tikken (p_session,i,v_ins_deel_key,v_periode_van,v_periode_tot,p_berekening,v_tikken_kosten);
i := akzacopiers_5_papier (p_session,i,v_ins_deel_key,v_periode_van,v_periode_tot,p_berekening,v_papier_kosten);
v_gebruik_kosten := v_beheer_kosten
+ v_tikken_kosten
+ v_papier_kosten;
v_regel := PrintReplicate(' ',38)
|| RPadEnNvl(lab_gebruik,26)||': '|| TO_CHAR(v_gebruik_kosten,'9999990.90');
IF v_srt_layout = 'SAP'
THEN
v_tmp_gebruikskosten := v_gebruik_kosten;
ELSIF v_srt_layout = 'XLS'
THEN
v_tmp_gebruikskosten := v_gebruik_kosten;
ELSIF v_srt_layout = 'PRN'
THEN
i := schrijf_rapport_regel(p_session,i,v_regel);
END IF;
i := akzacopiers_6_basis (p_session,i,v_ins_deel_key,v_periode_van,v_periode_tot,p_berekening,v_basis_kosten);
v_totaal_machine := v_gebruik_kosten
+ v_basis_kosten;
v_regel := PrintReplicate(' ',54)
|| RPadEnNvl(lab_totaal_machine,22)||':'|| TO_CHAR(v_totaal_machine,'999990.90');
IF v_srt_layout = 'SAP'
THEN
v_tmp_basishuur := v_basis_kosten;
v_tmp_totaalcopier := v_totaal_machine;
i := schrijf_sap_regel(p_session,i);
ELSIF v_srt_layout = 'XLS'
THEN
v_tmp_basishuur := v_basis_kosten;
v_tmp_totaalcopier := v_totaal_machine;
IF (v_tmp_totaalcopier <> 0) THEN
i := schrijf_xls_regel(p_session,i);
END IF;
ELSIF v_srt_layout = 'PRN'
THEN
i := schrijf_rapport_regel(p_session,i,v_regel);
i := schrijf_rapport_regel(p_session,i,'');
i := schrijf_rapport_regel(p_session,i,'');
END IF;
END LOOP;
IF (v_totaal_machine = 0) THEN
i := delete_rapport_regel(p_session,i_machine_start,i);
ELSE
v_totaal_eigenaar := v_totaal_eigenaar + v_totaal_machine;
END IF;
END LOOP;
v_totaal_company := v_totaal_company + v_totaal_eigenaar;
--
IF v_srt_layout = 'SAP'
THEN
-- vervang de tekst <v_tmp_eigenaar>_totaal door het totaal bedrag
-- aan kosten dat deze eigenaar voor het gebruik van zijn copiers
-- moet betalen.
-- Dus als een eigenaar meerdere copiers heeft, dan is het totaal-
-- bedrag op elke regel van deze gebruiker hetzelfde, nl de som van
-- de totaalkosten per copier.
--
v_tmp_totaaleigenaar := v_totaal_eigenaar;
UPDATE FAC_RAPPORT
SET fac_rapport_regel = REPLACE(fac_rapport_regel
,v_tmp_eigenaar ||'_totaal'
,TO_CHAR(v_totaal_eigenaar,'999999990.90'))
WHERE fac_rapport_node = p_session
AND fac_rapport_volgnr BETWEEN v_regel_eigenaar AND (i-1)
AND fac_rapport_soort = 1;
ELSIF v_srt_layout = 'XLS'
THEN
v_tmp_totaaleigenaar := v_totaal_eigenaar;
UPDATE FAC_RAPPORT
SET fac_rapport_regel = REPLACE(fac_rapport_regel
,v_tmp_eigenaar ||'_totaal'
,TO_CHAR(v_totaal_eigenaar,'999999990.90'))
WHERE fac_rapport_node = p_session
AND fac_rapport_volgnr BETWEEN v_regel_eigenaar AND (i-1)
AND fac_rapport_soort = 1;
UPDATE AKZA_COPY_XLS
SET totaal_eigenaar = v_totaal_eigenaar
WHERE eigenaar = v_tmp_eigenaar;
ELSIF v_srt_layout = 'PRN'
THEN
i := schrijf_rapport_regel(p_session,i,'');
i := schrijf_rapport_regel(p_session,i,'');
v_regel := RPadEnNvl(RPadEnNvl(lab_eigenaar,14)||': '|| v_eigenaar,76)
|| RPadEnNvl(lab_totaal,10) ||': '
|| TO_CHAR(v_totaal_eigenaar,'999999990.90');
--
-- Zet nu achter de regel waarop de huidige eigenaar staat het totaal bedrag
-- dat deze aan kosten voor kopieermachines heeft.
--
UPDATE FAC_RAPPORT
SET fac_rapport_regel = v_regel
WHERE fac_rapport_node = p_session
AND fac_rapport_volgnr = v_regel_eigenaar
AND fac_rapport_soort = 1;
END IF;
-- Verwijder de eigenaar regels als de kosten 0 zijn
IF (v_totaal_eigenaar = 0) THEN
i := delete_rapport_regel(p_session,i_eigenaar_start,i);
END IF;
END IF;
END LOOP;
CLOSE c_eigenaren;
--
-- Totaal per company zetten.
--
IF v_srt_layout = 'SAP'
THEN
v_tmp_totaalcompany := v_totaal_company;
UPDATE FAC_RAPPORT
SET fac_rapport_regel = REPLACE(fac_rapport_regel
,v_tmp_company ||'_totaal'
,TO_CHAR(v_totaal_company,'999999990.90'))
WHERE fac_rapport_node = p_session
AND fac_rapport_volgnr BETWEEN v_regel_company AND (i-1)
AND fac_rapport_soort = 1;
ELSIF v_srt_layout = 'XLS'
THEN
v_tmp_totaalcompany := v_totaal_company;
UPDATE FAC_RAPPORT
SET fac_rapport_regel = REPLACE(fac_rapport_regel
,v_tmp_company ||'_totaal'
,TO_CHAR(v_totaal_company,'999999990.90'))
WHERE fac_rapport_node = p_session
AND fac_rapport_volgnr BETWEEN v_regel_company AND (i-1)
AND fac_rapport_soort = 1;
UPDATE AKZA_COPY_XLS
SET totaal_company = v_totaal_company
WHERE company = v_tmp_company;
ELSIF v_srt_layout = 'PRN'
THEN
v_regel := RPadEnNvl(RPadEnNvl(lab_company,14)||': '|| v_company_code,76)
|| RPadEnNvl(lab_totaal,10) ||': '
|| TO_CHAR(v_totaal_company,'999999990.90');
UPDATE FAC_RAPPORT
SET fac_rapport_regel = v_regel
WHERE fac_rapport_node = p_session
AND fac_rapport_volgnr = v_regel_company
AND fac_rapport_soort = 1;
END IF;
--
END IF;
-- Verwijdere de Company regels als de kosten 0 zijn
IF (v_totaal_company = 0) THEN
i := delete_rapport_regel(p_session,i_company_start,i);
END IF;
END LOOP;
CLOSE c_company;
--
RETURN i;
END; -- function: akzacopiers_1_eigenaar
--
--
-- Hoofdprocedure voor het rapport kostenoverzicht kopieermachines.
--
--
PROCEDURE akza_copiers(user_key IN NUMBER
,p_session IN VARCHAR2
,p_datum_van IN VARCHAR2
,p_datum_tot IN VARCHAR2
,p_srt_export IN VARCHAR2
,p_all_owner IN BOOLEAN
) AS
v_datum_van DATE;
v_datum_tot DATE;
v_berekening BOOLEAN;
i NUMBER(12);
BEGIN
v_datum_van := TO_DATE(p_datum_van,'dd-mm-yyyy');
v_datum_tot := TO_DATE(p_datum_tot,'dd-mm-yyyy');
v_berekening := FALSE; -- JGL: Enable debugging??
i := 1;
--
v_srt_layout := p_srt_export; -- globale variabele die ervoor zorgt op welke wijze wordt afgedrukt.
v_tmp_aanmaak := TRUNC(SYSDATE);
v_tmp_datum_van := TRUNC(v_datum_van);
v_tmp_datum_tot := TRUNC(v_datum_tot);
i:= akzacopiers_1_eigenaar(user_key, p_session,i,TRUNC(v_datum_van),TRUNC(v_datum_tot),v_berekening, p_all_owner);
--
COMMIT;
END;
--
--
-- Printer-versie van het kostenoverzicht kopieermachines.
PROCEDURE akza_cop_prn(user_key IN NUMBER
,p_datum_van IN VARCHAR2
,p_datum_tot IN VARCHAR2
,p_cursor OUT t_cursor) AS
v_srt_export VARCHAR2(3);
v_all_owners BOOLEAN;
BEGIN
v_srt_export := 'PRN';
v_all_owners := FALSE;
-- Tijdelijk session 1 (mis)bruiken
DELETE FROM FAC_RAPPORT WHERE FAC_RAPPORT_NODE=userenv('SESSIONID');
akza_copiers(user_key, userenv('SESSIONID'), p_datum_van, p_datum_tot, v_srt_export, v_all_owners);
OPEN p_cursor FOR
SELECT FAC_RAPPORT_REGEL FROM FAC_RAPPORT
WHERE FAC_RAPPORT_NODE=userenv('SESSIONID')
ORDER BY FAC_RAPPORT_VOLGNR;
END;
--
-- Printer-versie van het kostenoverzicht kopieermachines
-- Alle eigenaren.
PROCEDURE akza_cop_all(user_key IN NUMBER
,p_datum_van IN VARCHAR2
,p_datum_tot IN VARCHAR2
,p_cursor OUT t_cursor) AS
v_srt_export VARCHAR2(3);
v_all_owners BOOLEAN;
BEGIN
v_srt_export := 'PRN';
v_all_owners := TRUE;
DELETE FROM FAC_RAPPORT WHERE FAC_RAPPORT_NODE=userenv('SESSIONID');
akza_copiers(user_key, userenv('SESSIONID'), p_datum_van, p_datum_tot, v_srt_export, v_all_owners);
OPEN p_cursor FOR
SELECT FAC_RAPPORT_REGEL FROM FAC_RAPPORT
WHERE FAC_RAPPORT_NODE=userenv('SESSIONID')
ORDER BY FAC_RAPPORT_VOLGNR;
END;
--
-- EXCEL-export van het kostenoverzicht kopieermachines.
PROCEDURE akza_cop_xls (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_srt_export VARCHAR2(3);
v_all_owners BOOLEAN;
BEGIN
v_srt_export := 'XLS';
v_all_owners := TRUE;
DELETE FROM AKZA_COPY_XLS; -- Vanwege session-pooling kan het nog gevuld zijn
-- Merk op dat schrijf_xls_regel nog altijd gewoon FAC_RAPPORT vult. Die vulling
-- wordt verder niet gebruikt, er wordt namelijk van akza_copy_xls gebruik gemaakt.
DELETE FROM FAC_RAPPORT WHERE FAC_RAPPORT_NODE=userenv('SESSIONID');
akza_copiers(user_key, userenv('SESSIONID'), p_datum_van, p_datum_tot, v_srt_export, v_all_owners);
OPEN p_cursor FOR
SELECT * FROM AKZA_COPY_XLS;
END;
END;
/
-----------------------------------------------------------------------------------------------
---------------------------------- GEN_EXPORT functies ----------------------------------------
-----------------------------------------------------------------------------------------------
------------------------------------ EXPLANON (AKZA#566) --------------------------------------
DROP TABLE akza_exp_explanon;
CREATE TABLE akza_exp_explanon
(
naam VARCHAR2(30),
keynr VARCHAR2(40),
company VARCHAR2(10),
kostenplaats VARCHAR2(30),
gebouw VARCHAR2(10),
etage VARCHAR2(10),
kamernummer VARCHAR2(10),
telefoon VARCHAR2(15),
mobiel_tel VARCHAR2(255),
email VARCHAR2(255),
loginnaam VARCHAR2(30),
bron CHAR(16)
);
CREATE OR REPLACE PROCEDURE akza_select_explanon (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
DELETE FROM akza_exp_explanon;
INSERT INTO akza_exp_explanon
SELECT naam, keynr, company, kostenplaats, gebouw, etage, kamernummer, telefoon, mobiel_tel,
email, loginnaam, bron
FROM akza_v_personenvoorplanon;
END;
/
CREATE OR REPLACE PROCEDURE akza_export_explanon (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
v_filehandle UTL_FILE.file_type;
v_newline VARCHAR2 (1000);
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
l_cnt NUMBER;
CURSOR cregels
IS
SELECT naam
|| ';'
|| keynr
|| ';'
|| company
|| ';'
|| kostenplaats
|| ';'
|| gebouw
|| ';'
|| etage
|| ';'
|| kamernummer
|| ';'
|| telefoon
|| ';'
|| mobiel_tel
|| ';'
|| email
|| ';'
|| loginnaam
|| ';'
|| bron regel
FROM akza_exp_explanon;
BEGIN
DELETE FROM imp_log
WHERE imp_log_applicatie = p_applname;
v_filehandle := UTL_FILE.fopen (p_filedir, p_filename, 'w');
fac.imp_writelog (p_applname,
p_applrun,
'I',
'Export naar ' || p_filedir || '/' || p_filename,
''
);
l_cnt := 0;
FOR rcregels IN cregels
LOOP
BEGIN
v_newline := rcregels.regel;
UTL_FILE.put_line (v_filehandle, v_newline);
l_cnt := l_cnt + 1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
UTL_FILE.fclose (v_filehandle);
-- EOF reached
EXIT;
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_applname, p_applrun, 'E', v_errormsg, '');
END;
END LOOP;
fac.imp_writelog (p_applname, p_applrun, 'I', 'Aantal geschreven records: ' || l_cnt, '');
EXCEPTION
WHEN UTL_FILE.invalid_operation
THEN
UTL_FILE.fclose (v_filehandle);
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'UTL_FILE.INVALID_OPERATION (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_applname,
p_applrun,
'E',
v_errormsg,
'Controleer bestandsnaam van importbestand'
);
WHEN UTL_FILE.invalid_filehandle
THEN
UTL_FILE.fclose (v_filehandle);
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'UTL_FILE.INVALID_FILEHANDLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_applname, p_applrun, 'E', v_errormsg, '');
WHEN UTL_FILE.invalid_path
THEN
UTL_FILE.fclose (v_filehandle);
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'UTL_FILE.INVALID_PATH (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog
(p_applname,
p_applrun,
'E',
v_errormsg,
'Controleer directory van importbestand (init.ora bevat utl_file_dir setting om te beschrijven welke directories te gebruiken zijn'
);
WHEN UTL_FILE.read_error
THEN
UTL_FILE.fclose (v_filehandle);
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'UTL_FILE.READ_ERROR (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_applname, p_applrun, 'E', v_errormsg, '');
WHEN OTHERS
THEN
UTL_FILE.fclose (v_filehandle);
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_applname, p_applrun, 'E', v_errormsg, '');
END;
/
-----------------------------------------------------------------------------------------------
------------------------------------ COPIERS (AKZA#419) --------------------------------------
-----------------------------------------------------------------------------------------------
-- Prepare data for SAP-export copiers in table FAC_RAPPORT
CREATE OR REPLACE PROCEDURE akza_select_copiers_sap (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
p_datum_tot DATE;
v_srt_export VARCHAR2(3);
v_all_owners BOOLEAN;
v_datum_van DATE;
v_datum_tot DATE;
v_verwerken BOOLEAN;
i NUMBER(12);
BEGIN
DELETE FROM imp_log
WHERE imp_log_applicatie = p_applname;
DELETE FROM FAC_RAPPORT -- Hierin wordt de data tijdelijk klaargezet
WHERE FAC_RAPPORT_NODE=userenv('SESSIONID');
-- Haal de einddatum van de laatste SAP-export op.
SELECT MAX(akz_copiers_sap_eind)
INTO v_datum_tot
FROM AKZ_COPIERS_SAP;
p_datum_tot := add_months( v_datum_tot, 1 ); --15e volgende maand
--
fac.imp_writelog (p_applname, p_applrun, 'I',
'Overweeg SAP-export van ' || TO_CHAR(v_datum_tot) || ' tot en met ' || TO_CHAR(p_datum_tot),
''
);
IF (p_datum_tot-8 >= sysdate)
THEN -- Het is nog te vroeg. Dus niets doen. op 9/12 door PF op verzoek van 4 naar 8 gezet
fac.imp_writelog (p_applname, p_applrun, 'I',
'Het is nog te vroeg. Het is nog geen: ' || TO_CHAR(p_datum_tot-8),
''
);
COMMIT;
v_verwerken := FALSE;
ELSE
-- Bereken de gegevens vanaf de datum van de laatste export tot en met
-- een maand later.
v_datum_van := v_datum_tot;
v_datum_tot := p_datum_tot;
v_verwerken := TRUE;
END IF;
--
IF v_verwerken
THEN
-- Bereken het kostenoverzicht en schrijf deze naar het aangegeven bestand.
-- Sla vervolgens de periode van export op.
v_srt_export := 'SAP';
v_all_owners := TRUE;
akza_p_copiers.akza_copiers(-1, userenv('SESSIONID'),
TO_CHAR(v_datum_van,'dd-mm-yyyy'),
TO_CHAR(v_datum_tot,'dd-mm-yyyy'), v_srt_export, v_all_owners);
INSERT INTO AKZ_COPIERS_SAP
( akz_copiers_sap_start
, akz_copiers_sap_eind)
VALUES(v_datum_van
, v_datum_tot
);
fac.imp_writelog (p_applname, p_applrun, 'I',
'SAP-export is nu klaargezet van '|| v_datum_van ||' tot en met ' || v_datum_tot,
''
);
END IF;
END;
/
-- Exporteer de data die door akza_select_copiers_sap is klaargezet in FAC_RAPPORT
CREATE OR REPLACE PROCEDURE akza_export_copiers_sap (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
Dummy BOOLEAN;
BEGIN
-- Opruimen
DELETE FROM FAC_RAPPORT WHERE FAC_RAPPORT_NODE=userenv('SESSIONID');
END;
/
CREATE OR REPLACE VIEW akza_V_export_copiers_sap
(RESULT, RESULT_ORDER)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = USERENV ('SESSIONID');
/
-----------------------------------------------------------------------------------------------
----------------------------------------- MLD SAP ---------------------------------------------
-----------------------------------------------------------------------------------------------
CREATE OR REPLACE PACKAGE AKZA_P_MLD2SAP AS
-- PACKAGES voor de AKZA specifieke SAP-Meldingen export
PROCEDURE SAP_Exporteren(UpdateAsWell IN BOOLEAN);
PROCEDURE SAPRES_Exporteren_loc (plockey IN NUMBER, UpdateAsWell IN BOOLEAN);
FUNCTION getBewonersOrdernr (pOpdracht_key IN NUMBER) RETURN VARCHAR2;
FUNCTION getInternalOrdernr (pMelding_key IN NUMBER) RETURN VARCHAR2;
END;
/
/* Formatted on 30-6-2010 7:11:00 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PACKAGE BODY akza_p_mld2sap
AS
FUNCTION bepaal_statusopdr_key (status_omschrijving CHAR)
RETURN NUMBER
IS
return_key NUMBER (10);
BEGIN
SELECT mld_statusopdr_key
INTO return_key
FROM mld_statusopdr
WHERE UPPER (mld_statusopdr_upper) = UPPER (status_omschrijving);
RETURN return_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
RETURN NULL;
END;
FUNCTION printreplicate (ckarakter IN VARCHAR2, nlengte IN NUMBER)
RETURN VARCHAR2
IS
cregel VARCHAR2 (132);
BEGIN
cregel := ckarakter;
RETURN (RPAD (cregel, nlengte, ckarakter));
END;
FUNCTION rpadennvl (cstring IN VARCHAR2, naantal IN NUMBER)
RETURN VARCHAR2
IS
BEGIN
RETURN NVL (RPAD (cstring, naantal), printreplicate (' ', naantal));
END;
FUNCTION schrijf_rapport_regel (p_regelnr IN NUMBER, p_tekst IN VARCHAR2)
RETURN NUMBER
IS
BEGIN
INSERT INTO fac_rapport
VALUES (USERENV ('SESSIONID'), p_regelnr, p_tekst, 1
);
RETURN p_regelnr + 1;
END;
FUNCTION isnumber (pstring IN VARCHAR2)
RETURN BOOLEAN
IS
lnnumber NUMBER (10);
lbisnumber BOOLEAN;
BEGIN
lbisnumber := TRUE;
BEGIN
lnnumber := fac.safe_to_number (pstring);
EXCEPTION
WHEN OTHERS
THEN
lbisnumber := FALSE;
END;
RETURN lbisnumber;
END;
FUNCTION getbewonersordernr (popdracht_key IN NUMBER)
RETURN VARCHAR2
IS
lresult VARCHAR2 (1024);
BEGIN
BEGIN
SELECT mld_opdr_ordernr
INTO lresult
FROM mld_opdr
WHERE mld_opdr_key = popdracht_key;
EXCEPTION
WHEN OTHERS
THEN
lresult := '';
END;
RETURN lresult;
END;
FUNCTION getinternalordernr (pmelding_key IN NUMBER)
RETURN VARCHAR2
IS
lresult VARCHAR2 (1024);
lonroerendgoed_key NUMBER (10);
lgebouw_key NUMBER (10);
lterrien_key NUMBER (10);
lonroerendgoed_type VARCHAR (2);
BEGIN
-- alg_gebouw_ordernr OR alg_terreinsector_ordernr
BEGIN
lresult := '';
SELECT mld_alg_onroerendgoed_keys
INTO lonroerendgoed_key
FROM mld_melding
WHERE mld_melding_key = pmelding_key;
SELECT alg_type, alg_terreinsector_key, alg_gebouw_key
INTO lonroerendgoed_type, lterrien_key, lgebouw_key
FROM alg_v_allonroerendgoed
WHERE alg_onroerendgoed_keys = lonroerendgoed_key;
IF (lonroerendgoed_type = 'T')
THEN
SELECT alg_terreinsector_ordernr
INTO lresult
FROM alg_terreinsector
WHERE alg_terreinsector_key = lterrien_key;
ELSE -- lOnroerendgoed_type in ('R','V','G')
SELECT alg_gebouw_ordernr
INTO lresult
FROM alg_gebouw
WHERE alg_gebouw_key = lgebouw_key;
END IF;
EXCEPTION
WHEN OTHERS
THEN
lresult := '';
END;
RETURN lresult;
END;
-- Specify UpdateAsWell to set TV/AV statusses in MLD
PROCEDURE sap_exporteren (updateaswell IN BOOLEAN)
IS
CURSOR sap_meldingen
IS
SELECT mld_m.mld_melding_key,
mld_m.mld_kosten_klant,
mld_m.mld_alg_onroerendgoed_keys,
ks.prs_kostensoort_oms,
pf.prs_perslid_naam_full,
km.prs_kostenplaats_nr,
km.prs_kostenplaats_key,
mld_o.prs_kostenplaats_key prs_kostenplaats_key_o,
mld_sm.mld_stdmelding_omschrijving,
mld_o.mld_opdr_key,
mld_o.mld_uitvoerende_keys,
mld_o.mld_opdr_kosten,
mld_m.prs_perslid_key,
mld_o.mld_typeopdr_key
FROM mld_melding mld_m,
mld_stdmelding mld_sm,
mld_discipline ins_d,
mld_opdr mld_o,
akza_v_kostenplaats km,
prs_kostensoort ks,
prs_v_perslid_fullnames_all pf,
ins_srtdiscipline ins_sd
WHERE mld_o.mld_statusopdr_key = 6 -- mld_o.mld_statusopdr_key > 6 -- For debug only
AND mld_o.mld_melding_key = mld_m.mld_melding_key
AND mld_sm.mld_ins_discipline_key = ins_d.ins_discipline_key
AND mld_m.mld_stdmelding_key = mld_sm.mld_stdmelding_key
AND km.prs_kostenplaats_key(+) = mld_o.prs_kostenplaats_key
AND pf.prs_perslid_key = mld_m.prs_perslid_key
AND ins_d.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND ins_d.ins_srtdiscipline_key = ins_sd.ins_srtdiscipline_key
AND ins_sd.ins_srtdiscipline_alg = 1 -- AKZA#684
--AND mld_o.mld_opdr_key in (73203) -- For debug only
ORDER BY mld_m.mld_melding_key;
meldingenrec sap_meldingen%ROWTYPE;
exportregel VARCHAR2 (123);
kostenplaats VARCHAR2 (10);
referentiekostenplaats prs_kostenplaats.prs_kostenplaats_nr%TYPE;
companycode VARCHAR2 (10);
disciplinekostensoort prs_kostensoort.prs_kostensoort_oms%TYPE;
bewonersordernr prs_kostenplaats.prs_kostenplaats_nr%TYPE;
internalordernr VARCHAR2 (255);
kostenplaats_nr_o VARCHAR (30);
kostenplaatsmodule prs_kostenplaats.prs_kostenplaats_module%TYPE;
opdrkosten mld_opdr.mld_opdr_kosten%TYPE;
opdrkostenchar VARCHAR2 (10);
leveranciernr prs_bedrijf.prs_leverancier_nr%TYPE;
opdrachten NUMBER (10);
statusafgemeld NUMBER (10);
statusverwerkt NUMBER (10);
defcompcode VARCHAR (6) := '080100';
dummy BOOLEAN;
regelnr NUMBER (10);
lcount NUMBER (10);
ldebug BOOLEAN;
aanneemsom NUMBER (10, 2);
-- Afgesproken constanten (AKZA#12199)
lafval_opdrtype mld_opdr.mld_typeopdr_key%TYPE := 921;
lafval_kenmerksrt mld_srtkenmerk.mld_srtkenmerk_key%TYPE := 208; --correct op factuur
lafval_accoord mld_kenmerkopdr.mld_kenmerkopdr_waarde%TYPE := 1236; --code 1=Ja
lafval_goedkeuring mld_kenmerkopdr.mld_kenmerkopdr_waarde%TYPE;
lhandlenow BOOLEAN;
BEGIN
-- INIT
ldebug := FALSE;
regelnr := 0;
statusafgemeld := bepaal_statusopdr_key ('MLD_AFGEMELD');
statusverwerkt := bepaal_statusopdr_key ('MLD_VERWERKT');
FOR meldingenrec IN sap_meldingen
LOOP
-- Doe (nog) niets met deze opdracht als het om afvalverwerking gaat waarvan de factuur
-- nog niet is goedgekeurd.
IF meldingenrec.mld_typeopdr_key = lafval_opdrtype
THEN
BEGIN
--DBMS_OUTPUT.put_line ('xcheck ' || TO_CHAR (meldingenrec.mld_opdr_key));
-- Vind ik een goedkeuring voor deze opdracht?
SELECT mld_kenmerkopdr_waarde
INTO lafval_goedkeuring
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = meldingenrec.mld_opdr_key
AND ko.mld_kenmerkopdr_waarde = lafval_accoord
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = lafval_kenmerksrt;
-- goedkeuring gevonden: meenemen
--DBMS_OUTPUT.put_line ('checked ok');
lhandlenow := TRUE;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
-- een afvalverwerkingsopdracht zonder goedkeuring: negeren
--DBMS_OUTPUT.put_line ('checked not ok');
lhandlenow := FALSE;
END;
ELSE
-- geen afvalverwerkingsopdracht: meenemen
lhandlenow := TRUE;
END IF;
IF lhandlenow
THEN
--*
-- 01..08 (=8 pos): MLD_MELDING_KEY, rechts uitgelijnd en aangevuld met '0'.
--*
-- 09..14 (=6 pos): COMPANYCODE
-- akz_kostenklant=1 -> Perslid.akz_companycode, rechts uitgelijnd en aangevuld met '0'
-- akz_kostenklant=0 -> '080100'
--*
-- 15..24 (=10pos): KOSTENPLAATS = '0000000000' OR prs_kostenplaats_nr_o (kostenplaats v/d opdracht)
--*
-- 25..31 (=7 pos): DisciplineKostensoort
-- DisciplineKostensoort := '4310010'; OR ...
-- DisciplineKostensoort := LTRIM(LPAD(MeldingenRec.prs_kostensoort_oms, 7, '0')); OR ...
-- DisciplineKostensoort := '0000000';
--*
-- 32..43 (=12 pos): BEWONERSORDERNR
-- BewonersOrdernr := RPadEnNvl(BewonersOrdernr); OR ...
-- BewonersOrdernr := RPadEnNvl(NULL, 12);
--*
-- 44..49 (=6 pos): INTERNALORDERNR
-- InternalOrdernr := ' '; OR ...
-- InternalOrdernr := RPadEnNvl(InternalOrdernr, 6);
--*
-- 50..52 (=3 pos): Constante = 'EUR'
--*
-- 53..60 (=8 pos): KOSTEN VAN DE OPDRACHT
-- OpdrKostenChar:=LTRIM(TO_CHAR(NVL(ABS(MeldingenRec.mld_opdr_kosten),0),'099999D99'));
--*
-- 61 (=1 pos) BTWcode = '2'
--*
-- 62..67 (=6 pos): LEVERANCIERNR (crediteurnummer)
-- SELECT B.prs_leverancier_nr
-- INTO LeverancierNr
-- FROM prs_bedrijf B
-- WHERE B.prs_bedrijf_key = MeldingenRec.mld_uitvoerende_keys;
--
-- LeverancierNr := RPadEnNvl(LeverancierNr, 6);
--*
-- 68..77 (=10 pos): KOSTENPLAATS van de opdracht (=meldersafdeling, tenzij een afwijkende kostenplaats werd gekozen, dan die.)
-- rpad(nvl(ltrim(MeldingenRec.prs_kostenplaats_nr_o),' '),10);
--*
-- 78..89 (=12 pos): PerslidNaam
-- RPadEnNvl(MeldingenRec.prs_perslid_naam_full, 12)
--*
-- 90..121(=32 pos): Herkenningstekst
--*
-- 122..123(=2 pos): Postkey = 40 (positief) of 50 (negatief)
--
exportregel := LTRIM (TO_CHAR (meldingenrec.mld_melding_key, '09999999'));
IF ldebug
THEN
exportregel := LTRIM (TO_CHAR (meldingenrec.mld_opdr_key, '09999999'));
END IF;
-- Laten we eerst de opgegeven kostenplaats eens bepalen; kan later nog op diverse manieren
-- wijzigen
BEGIN
SELECT prs_kostenplaats_nr, prs_kostenplaats_module
INTO kostenplaats_nr_o, kostenplaatsmodule
FROM akza_v_kostenplaats
WHERE prs_kostenplaats_key = meldingenrec.prs_kostenplaats_key_o;
EXCEPTION
WHEN OTHERS
THEN
kostenplaats_nr_o := '*****'; -- Just in case...
END;
kostenplaats := LPAD (NVL (kostenplaats_nr_o, '0'), 10, '0'); -- uitvullen niet noodzakelijk (doet view)
-- Eigenlijk is KostenKlant niet meer helemaal bepalend, het is meer of de gekozen kostenplaats
-- een ALG of een PRS kostenplaats is! Gebouwkosten suggereert het vroegere KK=0.
-- IF MeldingenRec.mld_kosten_klant IS NOT NULL THEN
IF kostenplaatsmodule = 'PRS'
THEN
--lgn('KostenKlant = 1');
-- Bepaal de Companycode, dat kan door de naam van de parentafd. van een afdeling die de kostenplaats als kp heeft
SELECT MAX (a2.prs_afdeling_naam)
INTO companycode
FROM prs_afdeling a1, prs_afdeling a2, prs_kostenplaats k, mld_opdr o
WHERE o.prs_kostenplaats_key = k.prs_kostenplaats_key
AND k.prs_kostenplaats_key = a1.prs_kostenplaats_key
-- 1-op-n, maakt niet uit vandaar MAX(a2.prs_afdeling_naam)!
AND a2.prs_afdeling_key = a1.prs_afdeling_parentkey
AND a1.prs_afdeling_verwijder IS NULL
AND a2.prs_afdeling_verwijder IS NULL
AND o.mld_opdr_key = meldingenrec.mld_opdr_key;
companycode := LPAD (NVL (SUBSTR (companycode, 1, 6), '000000'), 6, '0');
--lgn('companycode : '||Companycode);
-- De kostenplaats op positie 15+ kan hierna overschreven worden door nullen
-- Dan/daarom zetten we de oorspronkelijke waarde op postie 68+
referentiekostenplaats := kostenplaats;
IF meldingenrec.prs_kostensoort_oms IS NOT NULL
THEN
disciplinekostensoort := LTRIM (LPAD (meldingenrec.prs_kostensoort_oms, 7, '0'));
ELSE
disciplinekostensoort := '0000000';
END IF;
--
--lgn('Bewonersordernr');
SELECT akza_p_mld2sap.getbewonersordernr (meldingenrec.mld_opdr_key) INTO bewonersordernr FROM DUAL;
bewonersordernr := rpadennvl (bewonersordernr, 12);
--lgn('Ordernr: '||BewonersOrdernr);
IF (SUBSTR (bewonersordernr, 1, 1) = 'B' OR SUBSTR (bewonersordernr, 1, 1) = 'b')
AND isnumber (SUBSTR (bewonersordernr, 3, 1))
AND fac.safe_to_number (SUBSTR (bewonersordernr, 3, 1)) >= 1
AND isnumber (SUBSTR (bewonersordernr, 6, 3))
AND fac.safe_to_number (SUBSTR (bewonersordernr, 6, 3)) >= 10
AND companycode = defcompcode
THEN
--lgn('B');
kostenplaats := '0000000000';
disciplinekostensoort := '4310010';
ELSE
IF (SUBSTR (bewonersordernr, 1, 1) = 'I' OR SUBSTR (bewonersordernr, 1, 1) = 'i')
AND isnumber (SUBSTR (bewonersordernr, 3, 1))
AND fac.safe_to_number (SUBSTR (bewonersordernr, 3, 1)) >= 1
AND isnumber (SUBSTR (bewonersordernr, 6, 3))
AND fac.safe_to_number (SUBSTR (bewonersordernr, 6, 3)) >= 10
AND companycode = defcompcode
THEN
--lgn('I');
kostenplaats := '0000000000';
disciplinekostensoort := '4301010';
ELSE
IF (SUBSTR (bewonersordernr, 1, 1) = 'O' OR SUBSTR (bewonersordernr, 1, 1) = 'o')
AND isnumber (SUBSTR (bewonersordernr, 3, 1))
AND fac.safe_to_number (SUBSTR (bewonersordernr, 3, 1)) >= 1
AND isnumber (SUBSTR (bewonersordernr, 6, 3))
AND fac.safe_to_number (SUBSTR (bewonersordernr, 6, 3)) >= 10
AND companycode = defcompcode
THEN
--lgn('O');
kostenplaats := '0000000000';
disciplinekostensoort := '4301003';
END IF;
END IF;
END IF;
--lgn('Internalordernr');
internalordernr := ' ';
ELSE
--lgn('KostenKlant = NULL');
companycode := '080100';
disciplinekostensoort := '4301001';
--lgn('Bewonersordernr');
bewonersordernr := rpadennvl (NULL, 12);
--lgn('Internalordernr');
-- RD: InternalOrdernr wordt niet meer afgeleid maar ook in de MLD_MELDING tabel
-- opgeslagen. Interpretatie van het veld <akz_bewonersordernr> via <MLD_AKZ_KOSTEN_KLANT>.
--InternalOrdernr := SUBSTR(MeldingenRec.prs_kostenplaats_nr_o,1,6);
--lgn('Internalordernr 2');
--InternalOrdernr := RPadEnNvl(InternalOrdernr, 6);
--lgn('Bewonersordernr');
SELECT akza_p_mld2sap.getinternalordernr (meldingenrec.mld_melding_key) INTO internalordernr FROM DUAL;
internalordernr := SUBSTR (internalordernr, 1, 6);
internalordernr := rpadennvl (internalordernr, 6);
IF fac.safe_to_number (SUBSTR (internalordernr, 1, 1)) >= 1
AND fac.safe_to_number (SUBSTR (internalordernr, 4, 3)) >= 10
THEN
disciplinekostensoort := '4310010';
END IF;
-- #2129/PF Indien Internalordernr, dan Kostenplaats 0000000000
-- AKZA#684/PF Indien (ongeldige combinatie) kk=0 en Geen internalordernr, dan doe alsof kk=1
-- dus behoudt de eerder gevonden kostenplaats
IF internalordernr <> rpadennvl ('', 6)
THEN
kostenplaats := '0000000000';
END IF;
-- ReferentieKostenplaats wordt dan de persoonskostenplaats
SELECT k.prs_kostenplaats_nr
INTO referentiekostenplaats
FROM prs_perslid p, prs_afdeling d, akza_v_kostenplaats k
WHERE p.prs_afdeling_key = d.prs_afdeling_key
AND d.prs_kostenplaats_key = k.prs_kostenplaats_key
AND p.prs_perslid_key = meldingenrec.prs_perslid_key;
END IF;
--lgn('DisciplineKostensoort, enz');
-- #2129/PF #2224/PF
exportregel := exportregel || companycode;
exportregel := exportregel || kostenplaats;
exportregel := exportregel || disciplinekostensoort;
exportregel := exportregel || bewonersordernr;
exportregel := exportregel || internalordernr;
--lgn('lengte regel = '||TO_CHAR(LENGTH(Exportregel)));
-- valuta_code: fixed
exportregel := exportregel || rpadennvl ('EUR', 3);
-- Bedrag in centen van de bijbehorende opdrachten, rechts uitgelijnd en aangevuld
-- met '0', geen punten en komma's.
BEGIN
-- AKZA#651: kenmerk Aanneemsom (fixed key 2) bevat mogelijk ook een bedrag dat moet worden meegeteld
SELECT NVL (fac.safe_to_number (mld_kenmerkopdr_waarde), 0)
INTO aanneemsom
FROM mld_kenmerkopdr
WHERE mld_kenmerk_key = 2
AND mld_kenmerkopdr_verwijder IS NULL
AND mld_opdr_key = meldingenrec.mld_opdr_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
aanneemsom := 0;
END;
opdrkosten := meldingenrec.mld_opdr_kosten + aanneemsom;
opdrkostenchar := LTRIM (TO_CHAR (NVL (ABS (opdrkosten), 0), '099999D99'));
--lgn('Kosten: <'||OpdrKostenChar||'>');
-- Verwijder de punten en de komma's.
opdrkostenchar := REPLACE (opdrkostenchar, '.');
opdrkostenchar := REPLACE (opdrkostenchar, ',');
/* I.o.m. Hans Gerssen : getal negatief, eerste '0' vervangen door '-' */
-- Kosten van de opdracht
IF opdrkosten < 0
THEN
exportregel := exportregel || '-' || SUBSTR (opdrkostenchar, 2, 8);
exportregel := exportregel || '2';
ELSE
exportregel := exportregel || opdrkostenchar;
exportregel := exportregel || '2'; -- abo 7-12-2000
END IF;
--lgn('lengte regel = '||TO_CHAR(LENGTH(Exportregel)));
--lgn('Leveranciernr, enz');
-- Bedrijf.prs_leveranciernr, rechts uitgelijnd en aangevuld met '0'.
leveranciernr := '000000'; -- default
-- 980502/KTH lgn#1654
BEGIN
SELECT b.prs_leverancier_nr
INTO leveranciernr
FROM prs_bedrijf b
WHERE b.prs_bedrijf_key = meldingenrec.mld_uitvoerende_keys;
EXCEPTION
WHEN TOO_MANY_ROWS
THEN
-- kan niet voorkomen
--lgn('SAP_Exporteren: onverwachte dubbele Leveranciernrs!');
NULL;
WHEN NO_DATA_FOUND
THEN
NULL; -- Melding had blijkbaar geen Opdrachten
END;
leveranciernr := rpadennvl (leveranciernr, 6);
--lgn('LeverancierNr = ['||LeverancierNr||']');
-- Leveranciernummer
exportregel := exportregel || leveranciernr;
--lgn('lengte regel = '||TO_CHAR(LENGTH(Exportregel)));
-- Perslid.akz_kostenplaats, rechts uitgelijnd en aangevuld met ' ';
-- AKZ_KOSTENPLAATS
exportregel := exportregel || referentiekostenplaats;
--lgn('lengte regel = '||TO_CHAR(LENGTH(Exportregel)));
-- Perslid.prs_perslid_naam||' '||prs_perslid_voorletters, afgekapt of aangevuld tot
-- 12 karakters
--lgn('PerslidNaam, enz');
exportregel := exportregel || rpadennvl (meldingenrec.prs_perslid_naam_full, 12);
--lgn('lengte regel = '||TO_CHAR(LENGTH(Exportregel)));
--lgn('Exportregel_a = ['||RPadEnNvl(MeldingenRec.prs_perslid_naam||' '||MeldingenRec.prs_perslid_voorletters, 12)||']');
-- mld_stdmelding_omschrijving, links uitgelijnd en aangevuld met ' '.
exportregel := exportregel || rpadennvl (meldingenrec.mld_stdmelding_omschrijving, 32);
--lgn('lengte regel = '||TO_CHAR(LENGTH(Exportregel)));
-- PostKey: '40' of als totaalbedrag negatief '50'
IF opdrkosten >= 0
THEN
exportregel := exportregel || '40';
ELSE
exportregel := exportregel || '50';
END IF;
--lgn('lengte regel = '||TO_CHAR(LENGTH(Exportregel)));
-- AKZA#727: opdrachten met 0-bedrag hoeven niet geexporteerd te worden.
IF opdrkosten <> 0
THEN
regelnr := schrijf_rapport_regel (regelnr, exportregel);
END IF;
-- Zet de status van de melding op 'Verwerkt'.
-- Als er opdrachten zijn dan moeten deze op 'Verwerkt' gezet worden,
-- anders moet de melding zelf op 'Verwerkt' gezet worden.
BEGIN
SELECT NVL (COUNT ( * ), 0)
INTO opdrachten
FROM mld_opdr
WHERE mld_melding_key = meldingenrec.mld_melding_key;
--lgn(TO_CHAR(Opdrachten)||' bijbehorende opdracht(en)');
IF opdrachten > 0 -- Always true, since this is cursor criterium
THEN
IF updateaswell
THEN
FOR opdrrec
IN (SELECT mld_opdr_key
FROM mld_opdr
WHERE mld_statusopdr_key = statusafgemeld
AND mld_melding_key = meldingenrec.mld_melding_key)
LOOP
mld.setopdrachtstatus (opdrrec.mld_opdr_key, statusverwerkt, NULL);
END LOOP;
END IF;
--lgn('*TV opdrachten AV verklaard*');
-- Tel het aantal nog niet AV-verklaarde (verwerkte) opdrachten bij deze melding
-- Als dat er 0 zijn, moet de melding ook status Verwerkt krijgen
-- 981119/pf #2083
SELECT NVL (COUNT ( * ), 0)
INTO opdrachten
FROM mld_opdr
WHERE mld_melding_key = meldingenrec.mld_melding_key AND mld_statusopdr_key <> statusverwerkt;
--lgn(TO_CHAR(Opdrachten)||' niet-AV opdracht(en)');
IF opdrachten = 0
THEN
--lgn('Melding wordt AV; er is geen niet-verwerkte opdracht meer bij');
--lgn('Meldingkey : '||TO_CHAR(MeldingenRec.mld_melding_key));
IF updateaswell
THEN
mld.setmeldingstatus (meldingenrec.mld_melding_key, 6, NULL);
END IF;
--lgn('Melding AV verklaard');
--ELSE
--lgn('Melding wordt NIET AV; er zijn nog niet-verwerkte opdrachten bij');
END IF;
ELSE
-- Kan niet meer voorkomen
--lgn('!**STRANGE**! Melding AV maken');
IF updateaswell
THEN
mld.setmeldingstatus (meldingenrec.mld_melding_key, 6, NULL);
END IF;
--lgn('Melding AV verklaard');
END IF;
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog ('AKZA_P_MLD2SAP',
'SAP_Exporteren',
'E',
'AKZA_P_MLD2SAP (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')',
'Fout in aanpassen meldingstatus'
);
ROLLBACK;
END;
END IF;
END LOOP;
END;
-- Specify UpdateAsWell to set TV/AV statusses in Catering
PROCEDURE sapres_exporteren_loc (plockey IN NUMBER, updateaswell IN BOOLEAN)
IS
c_companycode VARCHAR2 (6) := '080100';
c_kostensoort VARCHAR2 (7) := '0000';
c_bedrag_leeg VARCHAR2 (9) := '000000000'; -- Deze bedragen worden niet geexporteerd
CURSOR c_sapres
IS
SELECT *
FROM ( SELECT * FROM akza_v_export_catering
UNION ALL
SELECT * FROM akza_v_export_resdeel
UNION ALL
SELECT * FROM akza_v_export_resruimten
UNION ALL
SELECT * FROM akza_v_export_resritten)
WHERE alg_locatie_key = plockey
ORDER BY volgnr;
sapres_rec c_sapres%ROWTYPE;
exportregel VARCHAR2 (256);
regelnr NUMBER (10);
v_companycode VARCHAR2 (6);
v_kostensoort VARCHAR2 (7);
v_btw VARCHAR2 (1);
FUNCTION get_companycode (p_rsv_ruimte_key IN NUMBER, p_companycode IN VARCHAR2)
RETURN VARCHAR2
IS
v_result VARCHAR (128);
v_count NUMBER (10);
BEGIN
-- AKZA#13369
SELECT MAX (prs_kostenplaatsgrp_oms)
INTO v_result
FROM (SELECT kg.prs_kostenplaatsgrp_oms
FROM res_rsv_ruimte rr, prs_kostenplaats k, prs_kostenplaatsgrp kg
WHERE rr.prs_kostenplaats_key = k.prs_kostenplaats_key
AND k.prs_kostenplaatsgrp_key = kg.prs_kostenplaatsgrp_key
AND rr.res_rsv_ruimte_key = p_rsv_ruimte_key
UNION ALL
SELECT '' FROM DUAL);
v_result := LPAD (NVL (SUBSTR (v_result, 1, 6), p_companycode), 6, '0');
RETURN v_result;
END;
FUNCTION get_kostensoort (p_discipline_key IN NUMBER, p_kostensoort IN VARCHAR2)
RETURN VARCHAR2
IS
v_result VARCHAR (128);
v_count NUMBER (10);
BEGIN
SELECT COUNT ( * ), MAX (prs_kostensoort_oms)
INTO v_count, v_result
FROM prs_kostensoort ks, ins_tab_discipline d
WHERE d.ins_discipline_key = p_discipline_key AND d.prs_kostensoort_key = ks.prs_kostensoort_key;
IF v_result IS NOT NULL
THEN
v_result := LPAD (NVL (SUBSTR (v_result, 1, 4), p_kostensoort), 4, '0');
ELSE
v_result := '0000';
END IF;
RETURN v_result;
END;
BEGIN
-- INIT
exportregel := '';
regelnr := 0;
FOR sapres_rec IN c_sapres
LOOP
BEGIN
v_companycode := get_companycode (sapres_rec.res_rsv_ruimte_key, c_companycode);
v_kostensoort := get_kostensoort (sapres_rec.ins_discipline_key, c_kostensoort);
IF v_kostensoort = '0006'
THEN
v_btw := '2';
ELSE
v_btw := '1';
END IF;
exportregel :=
v_companycode
|| sapres_rec.kostenplaatscode
|| sapres_rec.exportdatum
|| sapres_rec.bedrag
|| sapres_rec.postkey
|| sapres_rec.valuta
|| sapres_rec.aantal
|| v_btw
|| sapres_rec.res_reservering_key
|| sapres_rec.datum
|| sapres_rec.spatie
|| sapres_rec.ruimte_art_oms
|| sapres_rec.melder
|| sapres_rec.stukprijs
|| v_kostensoort
|| sapres_rec.catalogus;
COMMIT;
-- Nog testen of bedrag niet 0 is, analoog aan de export van opdrachten naar SAP
IF (sapres_rec.bedrag <> c_bedrag_leeg)
THEN
regelnr := schrijf_rapport_regel (regelnr, exportregel);
END IF;
IF updateaswell
THEN
IF (sapres_rec.res_rsv_artikel_key > -1)
THEN
UPDATE res_rsv_artikel
SET res_status_bo_key = 6
WHERE res_status_bo_key = 5 AND res_rsv_artikel_key = sapres_rec.res_rsv_artikel_key;
fac.trackaction ('RESVER', sapres_rec.res_rsv_ruimte_key, NULL, NULL, NULL);
END IF;
IF (sapres_rec.res_rsv_deel_key > -1)
THEN
UPDATE res_rsv_deel
SET res_status_bo_key = 6
WHERE res_status_bo_key = 5 AND res_rsv_deel_key = sapres_rec.res_rsv_deel_key;
fac.trackaction ('RESVER', sapres_rec.res_rsv_ruimte_key, NULL, NULL, NULL);
END IF;
IF (sapres_rec.res_rsv_deel_key = -1) AND (sapres_rec.res_rsv_artikel_key = -1)
THEN
UPDATE res_rsv_ruimte
SET res_status_bo_key = 6
WHERE res_status_bo_key = 5 AND res_rsv_ruimte_key = sapres_rec.res_rsv_ruimte_key;
fac.trackaction ('RESVER', sapres_rec.res_rsv_ruimte_key, NULL, NULL, NULL);
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog ('AKZA_P_RES2SAP',
'SAPRES_Exporteren',
'E',
'AKZA_P_RES2SAP (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')',
'Fout bij aanpassen status in AV'
);
COMMIT; -- tbv logging
END;
END LOOP;
END;
END;
/
-- Prepare data for SAP-export copiers in table FAC_RAPPORT
CREATE OR REPLACE PROCEDURE akza_select_mld_sap (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
DELETE FROM imp_log
WHERE imp_log_applicatie = p_applname;
DELETE FROM FAC_RAPPORT -- Hierin wordt de data tijdelijk klaargezet
WHERE FAC_RAPPORT_NODE=userenv('SESSIONID');
AKZA_P_MLD2SAP.SAP_Exporteren(TRUE); -- UpdateAsWell
END;
/
/* Formatted on 30-6-2010 7:00:01 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE akza_export_mld_sap (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
-- Het laatste tenslotte heeft weinig met de export te maken
-- Maar moet hier wel gebeuren: Alle meldingen die TV zijn,
-- en geen opdrachten hebben, worden AV verklaard, zonder verdere
-- extra acties
--lgn('Tenslotte nog AV verklaren van lege (zonder opdrachten) TV meldingen');
IF TRUE --UpdateAsWell
THEN
FOR rec IN (SELECT mld_melding_key
FROM mld_melding m
WHERE NOT EXISTS (SELECT ''
FROM mld_opdr o
WHERE o.mld_melding_key = m.mld_melding_key)
AND m.mld_melding_status = 5) --TV
LOOP
mld.setmeldingstatus (rec.mld_melding_key, 6, NULL);
END LOOP;
END IF;
-- Opruimen
DELETE FROM fac_rapport
WHERE fac_rapport_node = USERENV ('SESSIONID');
END;
/
CREATE OR REPLACE VIEW akza_V_export_mld_sap
(RESULT, RESULT_ORDER)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = USERENV ('SESSIONID');
/
-- RESERVERINGEN
-- Prepare data for SAP-export in table FAC_RAPPORT, procedure PER LOCATIE
CREATE OR REPLACE PROCEDURE akza_select_res_sap_ssca (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
DELETE FROM imp_log
WHERE imp_log_applicatie = p_applname;
DELETE FROM fac_rapport -- Hierin wordt de data tijdelijk klaargezet
WHERE fac_rapport_node = USERENV ('SESSIONID');
akza_p_mld2sap.sapres_exporteren_loc (2, TRUE); -- UpdateAsWell
END;
/
CREATE OR REPLACE PROCEDURE akza_select_res_sap_aho (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
DELETE FROM imp_log
WHERE imp_log_applicatie = p_applname;
DELETE FROM fac_rapport -- Hierin wordt de data tijdelijk klaargezet
WHERE fac_rapport_node = USERENV ('SESSIONID');
akza_p_mld2sap.sapres_exporteren_loc (161, TRUE); -- UpdateAsWell
END;
/
CREATE OR REPLACE PROCEDURE akza_select_res_sap_rit (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
DELETE FROM imp_log
WHERE imp_log_applicatie = p_applname;
DELETE FROM fac_rapport -- Hierin wordt de data tijdelijk klaargezet
WHERE fac_rapport_node = USERENV ('SESSIONID');
akza_p_mld2sap.sapres_exporteren_loc (0, TRUE); -- UpdateAsWell
END;
/
CREATE OR REPLACE PROCEDURE akza_export_res_sap_aho (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
-- Opruimen
DELETE FROM FAC_RAPPORT WHERE FAC_RAPPORT_NODE=userenv('SESSIONID');
END;
/
CREATE OR REPLACE VIEW akza_V_export_res_sap_aho
(RESULT, RESULT_ORDER)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = USERENV ('SESSIONID');
/
CREATE OR REPLACE PROCEDURE akza_export_res_sap_ssca (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
-- Opruimen
DELETE FROM FAC_RAPPORT WHERE FAC_RAPPORT_NODE=userenv('SESSIONID');
END;
/
CREATE OR REPLACE VIEW akza_V_export_res_sap_ssca
(RESULT, RESULT_ORDER)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = USERENV ('SESSIONID');
/
CREATE OR REPLACE PROCEDURE akza_export_res_sap_rit (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
-- Opruimen
DELETE FROM FAC_RAPPORT WHERE FAC_RAPPORT_NODE=userenv('SESSIONID');
END;
/
CREATE OR REPLACE VIEW akza_V_export_res_sap_rit
(RESULT, RESULT_ORDER)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = USERENV ('SESSIONID');
/
CREATE OR REPLACE VIEW AKZA_V_RUIMTECODE
(ALG_RUIMTE_KEY, RUIMTECODE)
AS
SELECT r.alg_ruimte_key, v.alg_verdieping_code || '.' || SUBSTR(r.alg_ruimte_nr,2) ruimtecode
FROM alg_ruimte r, alg_verdieping v
WHERE r.alg_verdieping_key = v.alg_verdieping_key
AND r.alg_ruimte_nr LIKE '0%'
UNION
SELECT r.alg_ruimte_key, v.alg_verdieping_code || '.' || r.alg_ruimte_nr
FROM alg_ruimte r, alg_verdieping v
WHERE r.alg_verdieping_key = v.alg_verdieping_key
AND r.alg_ruimte_nr NOT LIKE '0%';
/
CREATE OR REPLACE VIEW CAD_V_ALG_RUIMTE
(ALG_RUIMTE_KEY, ALG_VERDIEPING_KEY, ALG_RUIMTE_CADLABEL, ALG_RUIMTE_NR, ALG_RUIMTE_OMSCHRIJVING,
ALG_RUIMTE_OPPERVLAKTE, ALG_SRTRUIMTE_OMSCHRIJVING, AKZA_RUIMTECODE)
AS
SELECT r.alg_ruimte_key, r.alg_verdieping_key, r.alg_ruimte_nr,
r.alg_ruimte_nr, r.alg_ruimte_omschrijving,
TO_CHAR (alg_ruimte_bruto_vloeropp) || ' m2',
sr.alg_srtruimte_omschrijving, ar.ruimtecode
FROM alg_v_aanwezigruimte r, alg_srtruimte sr, akza_v_ruimtecode ar
WHERE sr.alg_srtruimte_key(+) = r.alg_srtruimte_key
AND r.alg_ruimte_key = ar.alg_ruimte_key;
/
-- Deze views worden vermoedelijk nog gebruikt door sommige Access rapportages, en zijn hier
-- for backward compatibility..
CREATE OR REPLACE VIEW stat_prs_eenheid (prs_eenheid_key,
prs_eenheid_code,
prs_eenheid_upper,
prs_eenheid_omschrijving,
prs_eenheid_aanmaak,
prs_eenheid_verwijder,
prs_bedrijf_key
)
AS
SELECT "PRS_AFDELING_KEY", "PRS_AFDELING_NAAM", "PRS_AFDELING_UPPER", "PRS_AFDELING_OMSCHRIJVING",
"PRS_AFDELING_AANMAAK", "PRS_AFDELING_VERWIJDER", "PRS_BEDRIJF_KEY"
FROM prs_v_afdeling
WHERE niveau = 1;
CREATE OR REPLACE VIEW stat_prs_afdeling (prs_afdeling_key,
prs_afdeling_parentkey,
prs_afdeling_naam,
prs_afdeling_upper,
prs_afdeling_omschrijving,
prs_kostenplaats_nr,
prs_afdeling_aanmaak,
prs_afdeling_verwijder,
prs_bedrijf_key,
prs_eenheid_key
)
AS
SELECT "PRS_AFDELING_KEY", "PRS_AFDELING_PARENTKEY", "PRS_AFDELING_NAAM", "PRS_AFDELING_UPPER",
"PRS_AFDELING_OMSCHRIJVING", "PRS_KOSTENPLAATS_NR", "PRS_AFDELING_AANMAAK", "PRS_AFDELING_VERWIJDER",
"PRS_BEDRIJF_KEY", "PRS_AFDELING_PARENTKEY"
FROM prs_v_afdeling d, akza_v_kostenplaats k
WHERE niveau = 2
AND d.prs_kostenplaats_key=k.prs_kostenplaats_key(+);
-- JGL: Ooit aangemaakt door ARNO als alternatief voor PRS_PERSLID
-- Vanuit Access kwam elke PRS_PERSLID anders terug voor elke Oracle ROLE of USER.
-- Doordat andere rollen geen rechten hebben op stat_prs_perslid is het opgelost
-- Waarschijnlijk beter op te pakken door alle rollen te droppen bij overgang naar Oracle 9
-- 7-6-2011 10:25:10: Die rollen zijn tegenwoordig echt wel weg.
-- Voor backwardscompatibiliteit toch de view laten bestaan
CREATE OR REPLACE VIEW stat_prs_perslid (prs_perslid_key,
prs_perslid_module,
prs_srtperslid_key,
prs_afdeling_key,
prs_perslid_naam,
prs_perslid_upper,
prs_perslid_voorletters,
prs_perslid_voornaam,
prs_perslid_titel,
prs_perslid_nr,
prs_perslid_dienstverband,
prs_perslid_opp,
prs_perslid_ingangsdatum,
prs_perslid_einddatum,
prs_perslid_uurloon,
prs_perslid_telefoonnr,
prs_perslid_aanmaak,
prs_perslid_verwijder,
prs_perslid_initialen,
prs_perslid_init_upper,
prs_perslid_oslogin,
prs_perslid_wachtwoord,
prs_perslid_tussenvoegsel,
prs_perslid_login
)
AS
SELECT "PRS_PERSLID_KEY", "PRS_PERSLID_MODULE", "PRS_SRTPERSLID_KEY", "PRS_AFDELING_KEY", "PRS_PERSLID_NAAM",
"PRS_PERSLID_UPPER", "PRS_PERSLID_VOORLETTERS", "PRS_PERSLID_VOORNAAM", "PRS_PERSLID_TITEL", "PRS_PERSLID_NR",
"PRS_PERSLID_DIENSTVERBAND", "PRS_PERSLID_OPP", "PRS_PERSLID_INGANGSDATUM", "PRS_PERSLID_EINDDATUM",
"PRS_PERSLID_UURLOON", "PRS_PERSLID_TELEFOONNR", "PRS_PERSLID_AANMAAK", "PRS_PERSLID_VERWIJDER",
"PRS_PERSLID_INITIALEN", "PRS_PERSLID_INIT_UPPER", "PRS_PERSLID_OSLOGIN", '*****',
"PRS_PERSLID_TUSSENVOEGSEL","PRS_PERSLID_LOGIN"
FROM prs_perslid;
-- AKZA651: alle financiele opdrachtgegevens bij elkaar in een view, voor wie het wil
CREATE OR REPLACE VIEW akza_v_mld_opdracht
AS
SELECT o.mld_opdr_key, mld_melding_key, mld_opdr_bedrijfopdr_volgnr, mld_opdr_uren, mld_opdr_uurloon,
mld_opdr_materiaal, mld_opdr_kosten, NVL (fac.safe_to_number (mld_kenmerkopdr_waarde), 0) aanneemsom,
mld_opdr_kosten + NVL (fac.safe_to_number (mld_kenmerkopdr_waarde), 0) totaal
FROM mld_opdr o, mld_kenmerkopdr ko
WHERE mld_kenmerk_key = 2 AND mld_kenmerkopdr_verwijder IS NULL AND o.mld_opdr_key = ko.mld_opdr_key;
-- AKZA12084: ruimtebeheerders inclusief afdeling als bron voor flexkenmerk bij ruimte (en van belang voor werkvergunning)
CREATE OR REPLACE VIEW akza_v_ruimtebeheerders (prs_perslid_key, persoonafdeling)
AS
SELECT p.prs_perslid_key, p.prs_perslid_naam || ' / ' || a.prs_afdeling_naam
FROM prs_perslid p, prs_afdeling a
WHERE p.prs_perslid_verwijder IS NULL
AND p.prs_afdeling_key = a.prs_afdeling_key
ORDER BY p.prs_perslid_naam;
-- AKZA#13268 Reserverings Plattegrond
-- dd. 18-10-2007 tonen we alles wat het komende uur komt of wat bezig is.
CREATE OR REPLACE VIEW AKZA_V_CAD_THEMA_RESERVERING
(ALG_RUIMTE_KEY, WAARDE)
AS
SELECT rar.alg_ruimte_key alg_ruimte_key, '1' 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;
--
-- dd. 18-10-2007 tonen we alles wat het komende uur komt of wat bezig is.
-- Let op: bij eventuele overlap pakken we de laatste van de twee (de aanstaande)
-- toevallig redden we eenvoudig dat door de strak gedefinieerde tekst
CREATE OR REPLACE VIEW AKZA_V_CAD_RUIMTE_RESERVERING
(ALG_RUIMTE_KEY, WAARDE)
AS
SELECT rar.alg_ruimte_key,
MAX ( res_ruimte_nr
|| '~'
|| TO_CHAR (res_rsv_ruimte_van, 'HH24:MI')
|| '-'
|| TO_CHAR (res_rsv_ruimte_tot, 'HH24:MI')
|| '~[s60]host: '
|| prs_perslid_naam
|| '~[s80][b]'
|| res_rsv_ruimte_omschrijving
) 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 / 24) AND res_rsv_ruimte_tot
AND pp.prs_perslid_key = res_rsv_ruimte_host_key
GROUP BY rar.alg_ruimte_key;
/
CREATE OR REPLACE VIEW akza_v_extraphone (fclt_f_groep,
fclt_f_omschrijving,
fclt_f_plaats,
fclt_f_bereiken,
nummer_email,
fclt_3d_locatie_key,
fclt_3d_gebouw_key
)
AS
SELECT ins_srtdeel_omschrijving, idd.ins_deel_omschrijving,
alg_plaatsaanduiding, ins_srtkenmerk_omschrijving,
ins_kenmerkdeel_waarde, alg_locatie_key, alg_gebouw_key
FROM INS_DEEL idd,
INS_KENMERKDEEL ikd,
INS_KENMERK ik,
INS_SRTKENMERK isk,
INS_SRTDEEL isd,
ins_v_alg_overzicht o
WHERE idd.ins_deel_verwijder IS NULL
AND idd.ins_srtdeel_key = isd.ins_srtdeel_key
AND idd.ins_deel_key = ikd.ins_deel_key
AND ikd.ins_kenmerk_key = ik.ins_kenmerk_key
AND isk.ins_srtkenmerk_key = ik.ins_srtkenmerk_key
AND ins_kenmerkdeel_verwijder IS NULL
AND isk.ins_srtkenmerk_kenmerktype NOT IN ('L', 'Q', 'M', 'F')
AND idd.ins_discipline_key = 825 -- Additieve Bereikbaarheid
AND isk.ins_srtkenmerk_key IN (3082, 3083, 3084) -- Tel/Fax/Email
AND o.alg_ruimte_key = idd.ins_alg_ruimte_key
AND o.alg_onroerendgoed_type = idd.ins_alg_ruimte_type
ORDER BY idd.ins_deel_omschrijving, ins_kenmerk_volgnummer
/
-- Ongeacht of een BHV-kenmerk is ingevuld
CREATE OR REPLACE VIEW AKZA_V_RAP_BHV_ALL AS
SELECT pf.prs_perslid_key hide_f_key,
pf.prs_perslid_naam_full fclt_f_naam,
p.prs_perslid_telefoonnr telefoon, d.prs_afdeling_naam fclt_f_afdeling,
w.alg_gebouw_code fclt_f_gebouw, w.alg_verdieping_code verdieping,
w.alg_ruimte_nr ruimte,
NVL((SELECT kl.prs_kenmerklink_waarde
FROM PRS_KENMERKLINK kl
WHERE kl.prs_link_key = p.prs_perslid_key
AND kl.prs_kenmerk_key = 1166),'Nooit') fclt_f_laatste_instructie_kb,
NVL((SELECT kl.prs_kenmerklink_waarde
FROM PRS_KENMERKLINK kl
WHERE kl.prs_link_key = p.prs_perslid_key
AND kl.prs_kenmerk_key = 1165),'Nooit') fclt_f_laatste_instructie_ehbo,
NVL((SELECT kl.prs_kenmerklink_waarde
FROM PRS_KENMERKLINK kl
WHERE kl.prs_link_key = p.prs_perslid_key
AND kl.prs_kenmerk_key = 1168),'Nooit') fclt_f_ehbo_tot,
NVL((SELECT fac_usrdata_omschr
FROM PRS_KENMERKLINK kl, FAC_USRDATA
WHERE kl.prs_link_key = p.prs_perslid_key
AND kl.prs_kenmerk_key = 1161
AND prs_kenmerklink_waarde = fac_usrdata_key), 'Onbekend') fclt_f_actief_ehbo,
NVL((SELECT kl.prs_kenmerklink_waarde
FROM PRS_KENMERKLINK kl
WHERE kl.prs_link_key = p.prs_perslid_key
AND kl.prs_kenmerk_key = 1164),'Nooit') fclt_f_laatste_instructie_aed,
NVL((SELECT kl.prs_kenmerklink_waarde
FROM PRS_KENMERKLINK kl
WHERE kl.prs_link_key = p.prs_perslid_key
AND kl.prs_kenmerk_key = 1200),'Nooit') fclt_f_aed_tot,
NVL((SELECT kl.prs_kenmerklink_waarde
FROM PRS_KENMERKLINK kl
WHERE kl.prs_link_key = p.prs_perslid_key
AND kl.prs_kenmerk_key = 1180),'Nooit') fclt_f_nibhv_aed_per,
NVL((SELECT kl.prs_kenmerklink_waarde
FROM PRS_KENMERKLINK kl
WHERE kl.prs_link_key = p.prs_perslid_key
AND kl.prs_kenmerk_key = 1201),'Nooit') fclt_f_nibhv_aed_tot,
NVL((SELECT kl.prs_kenmerklink_waarde
FROM PRS_KENMERKLINK kl
WHERE kl.prs_link_key = p.prs_perslid_key
AND kl.prs_kenmerk_key = 1167),'Nooit') fclt_f_laatste_instructie_ocp,
NVL((SELECT kl.prs_kenmerklink_waarde
FROM PRS_KENMERKLINK kl
WHERE kl.prs_link_key = p.prs_perslid_key
AND kl.prs_kenmerk_key = 1202),'Nooit') fclt_f_ocp_tot,
NVL((SELECT kl.prs_kenmerklink_waarde
FROM PRS_KENMERKLINK kl
WHERE kl.prs_link_key = p.prs_perslid_key
AND kl.prs_kenmerk_key = 1203),'Nooit') fclt_f_nibhv_ocp_per,
NVL((SELECT kl.prs_kenmerklink_waarde
FROM PRS_KENMERKLINK kl
WHERE kl.prs_link_key = p.prs_perslid_key
AND kl.prs_kenmerk_key = 1204),'Nooit') fclt_f_nibhv_ocp_tot,
NVL((SELECT kl.prs_kenmerklink_waarde
FROM PRS_KENMERKLINK kl
WHERE kl.prs_link_key = p.prs_perslid_key
AND kl.prs_kenmerk_key = 1204),'Nooit') fclt_f_laatste_instructie_evac,
NVL((SELECT fac_usrdata_omschr
FROM PRS_KENMERKLINK kl, FAC_USRDATA
WHERE kl.prs_link_key = p.prs_perslid_key
AND kl.prs_kenmerk_key = 1160
AND prs_kenmerklink_waarde = fac_usrdata_key), 'Onbekend') fclt_f_actief_bhv
FROM PRS_PERSLID p,
prs_v_perslid_fullnames pf,
prs_v_werkplek_gegevens w,
prs_v_aanwezigperslidwerkplek pw,
PRS_AFDELING d
WHERE p.prs_afdeling_key = d.prs_afdeling_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND w.prs_werkplek_key = pw.prs_werkplek_key
AND p.prs_perslid_key = pw.prs_perslid_key
AND prs_perslid_upper NOT LIKE '[%'
AND prs_perslid_upper NOT LIKE 'LEEG [%'
ORDER BY 1
/
CREATE OR REPLACE VIEW akza_v_rap_bhv
AS
SELECT *
FROM akza_v_rap_bhv_all
WHERE EXISTS (
SELECT *
FROM PRS_KENMERKLINK kl
WHERE kl.prs_link_key = hide_f_key
AND kl.prs_kenmerk_key IN
-- Zie AKZA_V_RAP_BHV_ALL voor betekenis
(1166,
1165,
1168,
1161,
1164,
1200,
1180,
1201,
1167,
1202,
1203,
1204,
1205,
1160
))
ORDER BY 1
/
CREATE OR REPLACE VIEW akz_ruimte_eenheid
(
alg_ruimte_key,
prs_afdeling_eenheid
)
AS
SELECT w.prs_alg_ruimte_key "ALG_RUIMTE_KEY",
'NIETVERH' prs_afdeling_eenheid
FROM prs_perslidwerkplek pw,
prs_werkplek w,
prs_afdeling a,
prs_afdeling e,
prs_perslid p
WHERE a.prs_afdeling_parentkey = e.prs_afdeling_key
AND e.prs_afdeling_parentkey IS NULL
AND pw.prs_perslidwerkplek_verwijder IS NULL
AND w.prs_werkplek_verwijder IS NULL
AND pw.prs_werkplek_key = w.prs_werkplek_key
AND a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_naam = 'NIET VERH'
AND p.prs_perslid_verwijder IS NULL
AND pw.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
GROUP BY prs_alg_ruimte_key
UNION
SELECT w.prs_alg_ruimte_key "ALG_RUIMTE_KEY",
MAX (e.prs_afdeling_naam) prs_afdeling_eenheid
FROM prs_perslidwerkplek pw,
prs_werkplek w,
prs_afdeling a,
prs_afdeling e,
prs_perslid p
WHERE a.prs_afdeling_parentkey = e.prs_afdeling_key
AND e.prs_afdeling_parentkey IS NULL
AND pw.prs_perslidwerkplek_verwijder IS NULL
AND w.prs_werkplek_verwijder IS NULL
AND pw.prs_werkplek_key = w.prs_werkplek_key
AND a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_naam <> 'NIET VERH'
AND p.prs_perslid_verwijder IS NULL
AND pw.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
GROUP BY prs_alg_ruimte_key;
-- Kentekenoverzicht (nu met flexvelden ipv persoonsgebonden objecten)
CREATE OR REPLACE VIEW akza_v_rap_kentekens
AS
SELECT * FROM
(SELECT prs_perslid_naam||'1' hide_f_sort
,prs_perslid_naam fclt_f_naam
,knt.prs_kenmerklink_waarde fclt_f_kenteken
,ud.fac_usrdata_omschr soort
,mrk.prs_kenmerklink_waarde merk
,typ.prs_kenmerklink_waarde type
,klr.prs_kenmerklink_waarde kleur
FROM prs_v_aanwezigperslid ap
,prs_v_aanwezigkenmerklink knt
,prs_v_aanwezigkenmerklink srt
,fac_usrdata ud
,prs_v_aanwezigkenmerklink mrk
,prs_v_aanwezigkenmerklink typ
,prs_v_aanwezigkenmerklink klr
WHERE knt.prs_link_key = ap.prs_perslid_key
AND knt.prs_kenmerk_key = 1260
AND srt.prs_link_key(+) = ap.prs_perslid_key
AND srt.prs_kenmerk_key(+) = 1280
AND srt.prs_kenmerklink_waarde = ud.fac_usrdata_key(+)
AND mrk.prs_link_key(+) = ap.prs_perslid_key
AND mrk.prs_kenmerk_key(+) = 1281
AND typ.prs_link_key(+) = ap.prs_perslid_key
AND typ.prs_kenmerk_key(+) = 1282
AND klr.prs_link_key(+) = ap.prs_perslid_key
AND klr.prs_kenmerk_key(+) = 1283)
UNION
(SELECT prs_perslid_naam||'2' hide_f_sort
,prs_perslid_naam fclt_f_naam
,knt.prs_kenmerklink_waarde fclt_f_kenteken
,ud.fac_usrdata_omschr soort
,mrk.prs_kenmerklink_waarde merk
,typ.prs_kenmerklink_waarde type
,klr.prs_kenmerklink_waarde kleur
FROM prs_v_aanwezigperslid ap
,prs_v_aanwezigkenmerklink knt
,prs_v_aanwezigkenmerklink srt
,fac_usrdata ud
,prs_v_aanwezigkenmerklink mrk
,prs_v_aanwezigkenmerklink typ
,prs_v_aanwezigkenmerklink klr
WHERE knt.prs_link_key = ap.prs_perslid_key
AND knt.prs_kenmerk_key = 1284
AND srt.prs_link_key(+) = ap.prs_perslid_key
AND srt.prs_kenmerk_key(+) = 1285
AND srt.prs_kenmerklink_waarde = ud.fac_usrdata_key(+)
AND mrk.prs_link_key(+) = ap.prs_perslid_key
AND mrk.prs_kenmerk_key(+) = 1286
AND typ.prs_link_key(+) = ap.prs_perslid_key
AND typ.prs_kenmerk_key(+) = 1287
AND klr.prs_link_key(+) = ap.prs_perslid_key
AND klr.prs_kenmerk_key(+) = 1288)
UNION
(SELECT prs_perslid_naam||'3' hide_f_sort
,prs_perslid_naam fclt_f_naam
,knt.prs_kenmerklink_waarde fclt_f_kenteken
,ud.fac_usrdata_omschr soort
,mrk.prs_kenmerklink_waarde merk
,typ.prs_kenmerklink_waarde type
,klr.prs_kenmerklink_waarde kleur
FROM prs_v_aanwezigperslid ap
,prs_v_aanwezigkenmerklink knt
,prs_v_aanwezigkenmerklink srt
,fac_usrdata ud
,prs_v_aanwezigkenmerklink mrk
,prs_v_aanwezigkenmerklink typ
,prs_v_aanwezigkenmerklink klr
WHERE knt.prs_link_key = ap.prs_perslid_key
AND knt.prs_kenmerk_key = 1289
AND srt.prs_link_key(+) = ap.prs_perslid_key
AND srt.prs_kenmerk_key(+) = 1290
AND srt.prs_kenmerklink_waarde = ud.fac_usrdata_key(+)
AND mrk.prs_link_key(+) = ap.prs_perslid_key
AND mrk.prs_kenmerk_key(+) = 1291
AND typ.prs_link_key(+) = ap.prs_perslid_key
AND typ.prs_kenmerk_key(+) = 1292
AND klr.prs_link_key(+) = ap.prs_perslid_key
AND klr.prs_kenmerk_key(+) = 1293)
ORDER BY hide_f_sort;
CREATE OR REPLACE VIEW AKZ_V_AANWEZIGPERSLID
AS
SELECT *
FROM prs_v_aanwezigperslid
WHERE prs_perslid_upper NOT LIKE '[%'
AND prs_perslid_upper NOT LIKE 'LEEG [%';
BEGIN fac.registercustversion('AKZA', 18); END;
/
COMMIT;
SPOOL OFF;