Files
Customer/AKZA/AKZA.SQL
Suzan Wiegerinck e9706858ef akza#39465 Formulier aanvragen apparatuur TS Deventer
svn path=/Customer/trunk/; revision=33072
2017-03-07 15:17:56 +00:00

10002 lines
429 KiB
SQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database
DEFINE thisfile = 'AKZA.SQL'
DEFINE dbuser = '^AKZA'
DEFINE custid = 'AKZA'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF
------ payload begin ------
--------------------------------------------------------------------------------------------------
------------------------------- LEGACY-MEUK, M.N. VOOR OUTLETBEHEER ------------------------------
--------------------------------------------------------------------------------------------------
-- 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;
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;
/
--------------------------------------------------------------------------------------------------
------------------------------- BASISVIEWS -------------------------------------------------------
--------------------------------------------------------------------------------------------------
-- BELANGRIJKE VIEW, wordt veelal gebruikt ipv kostenplaats-tabel!
-- Eerste woord van kostenplaatsgroep-omschrijving = debiteurnr voor doorbelastingsexport
CREATE OR REPLACE VIEW akza_v_kostenplaats
AS
SELECT k.prs_kostenplaats_key,
DECODE( INSTR (prs_kostenplaats_nr, '('),
0, TRIM (prs_kostenplaats_nr),
TRIM (SUBSTR (prs_kostenplaats_nr, 1, INSTR (prs_kostenplaats_nr, '(') - 2) )
) prs_kostenplaats_nr,
UPPER( DECODE( INSTR (prs_kostenplaats_nr, '('),
0, TRIM (prs_kostenplaats_nr),
TRIM (SUBSTR (prs_kostenplaats_nr, 1, INSTR (prs_kostenplaats_nr, '(') - 2) ) )
) prs_kostenplaats_upper,
prs_kostenplaats_nr fclt_kostenplaats_nr,
prs_kostenplaats_omschrijving,
COALESCE( SUBSTR(prs_kostenplaatsgrp_oms, 1, INSTR(prs_kostenplaatsgrp_oms, ' ')-1 ),
'ONBEKEND') debiteurnr,
prs_kostenplaatsgrp_oms,
-- a.companycode,
k.prs_perslid_key, prs_kostenplaats_module, prs_kostenplaats_begin, prs_kostenplaats_eind,
k.prs_kostenplaatsgrp_key, prs_kostenplaats_aanmaak, prs_kostenplaats_verwijder,
kg.prs_perslid_key grp_prs_perslid_key
FROM prs_kostenplaats k,
prs_kostenplaatsgrp kg
WHERE kg.prs_kostenplaatsgrp_key(+) = k.prs_kostenplaatsgrp_key;
-- Mapping van afdeling naar company (top-level afdeling)
CREATE OR REPLACE VIEW akza_v_afdelingcompany
AS
SELECT a.prs_afdeling_key,
a.prs_afdeling_naam,
a.prs_afdeling_upper,
a.prs_afdeling_omschrijving,
c.prs_afdeling_key company_key,
c.prs_afdeling_naam companycode,
c.prs_afdeling_omschrijving company_oms,
a.prs_afdeling_aanmaak,
a.prs_afdeling_verwijder,
a.prs_kostenplaats_key
FROM prs_afdeling a,
prs_afdeling c,
prs_v_afdeling_boom ab
WHERE ab.prs_afdeling_key = a.prs_afdeling_key
AND c.prs_afdeling_key = ab.prs_afdeling_key1;
-- 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;
CREATE OR REPLACE VIEW akza_v_perslid
AS
SELECT p.*,
p.prs_perslid_naam
|| NVL2( p.prs_perslid_voorletters, ', '|| p.prs_perslid_voorletters, '')
|| NVL2( p.prs_perslid_tussenvoegsel, ' ' || p.prs_perslid_tussenvoegsel, '')
|| NVL2( p.prs_perslid_voornaam, ' (' || p.prs_perslid_voornaam || ')', '')
||DECODE(p.prs_perslid_geslacht,
1, ' (M)',
0, ' (V)',
'') prs_perslid_string
FROM prs_perslid p
WHERE prs_perslid_upper NOT LIKE '[%'
AND prs_perslid_upper NOT LIKE 'LEEG [%';
CREATE OR REPLACE VIEW akz_v_aanwezigperslid
AS
SELECT *
FROM akza_v_perslid
WHERE prs_perslid_verwijder IS NULL;
-- Kenmerkdomeinen voor objectenbeheer (Deventer): LoD's, logische objecten etc
CREATE OR REPLACE VIEW akza_v_list_lods
AS
SELECT d.ins_deel_key,
d.ins_deel_omschrijving,
d.ins_deel_opmerking,
d.ins_deel_omschrijving||' '||d.ins_deel_opmerking ins_deel_aanduiding,
d.ins_deel_verwijder
FROM ins_deel d
WHERE ins_discipline_key = 1625;
CREATE OR REPLACE VIEW akza_v_list_logische_obj
AS
SELECT d.ins_deel_key,
d.ins_deel_omschrijving,
d.ins_deel_opmerking,
d.ins_deel_omschrijving||' '||d.ins_deel_opmerking ins_deel_aanduiding,
d.ins_deel_verwijder
FROM ins_deel d
WHERE ins_discipline_key = 1645;
--------------------------------------------------------------------------------------------------
------------------------------- RUIMTEDOORBELASTING EN SCHOONMAAK --------------------------------
--------------------------------------------------------------------------------------------------
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_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_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;
-- 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;
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
CREATE OR REPLACE VIEW akz_verhruimte_per_gebouw (fclt_f_locatie,
fclt_f_gebouw,
fclt_3d_gebouw_key,
oppervlakte,
oppervlakte_bruto,
fclt_3d_locatie_key
)
AS
SELECT l.alg_locatie_code locatie,
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_locatie l, 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
AND l.alg_locatie_key = g.alg_locatie_key
GROUP BY g.alg_gebouw_omschrijving, g.alg_gebouw_key, g.alg_locatie_key, l.alg_locatie_code;
-- Now with 3D authorization on Building and organization
CREATE OR REPLACE VIEW akz_huur_verhuurbaar_ruimte
(
FCLT_F_COMPANYCODE,
HIDE_F_COMPANYNAAM,
FCLT_F_KOSTENPLAATS,
AFDELING,
FCLT_X_LOCATIE,
FCLT_F_GEBOUW,
VERDIEPING,
RUIMTENR,
RUIMTESOORT,
FCLT_3D_GEBOUW_KEY,
FCLT_3D_AFDELING_KEY,
BVO
)
AS
SELECT e.prs_afdeling_naam companycode,
e.prs_afdeling_omschrijving companynaam,
kp.prs_kostenplaats_nr,
a.prs_afdeling_omschrijving,
rg.alg_locatie_omschrijving||' ('||rg.alg_locatie_code||')',
rg.alg_gebouw_omschrijving,
rg.alg_verdieping_code,
rg.alg_ruimte_nr,
sr.alg_srtruimte_omschrijving,
rg.alg_gebouw_key,
a.prs_afdeling_key,
ROUND( SUM( COALESCE( rg.alg_ruimte_bruto_vloeropp * ra.prs_ruimteafdeling_bezetting / 100,
0)),
1)
bvo
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 a.prs_afdeling_parentkey = e.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
GROUP BY e.prs_afdeling_naam,
e.prs_afdeling_omschrijving,
kp.prs_kostenplaats_nr,
a.prs_afdeling_omschrijving,
rg.alg_locatie_code,
rg.alg_locatie_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;
CREATE OR REPLACE VIEW akz_huur_verhuurbaar
AS
SELECT fclt_f_companycode,
hide_f_companynaam fclt_f_companynaam,
fclt_f_kostenplaats,
afdeling,
fclt_x_locatie,
fclt_f_gebouw,
ruimtesoort,
fclt_3d_gebouw_key,
fclt_3d_afdeling_key,
SUM(bvo) bvo
FROM akz_huur_verhuurbaar_ruimte
GROUP BY fclt_f_companycode,
hide_f_companynaam,
fclt_f_kostenplaats,
afdeling,
fclt_x_locatie,
fclt_f_gebouw,
ruimtesoort,
fclt_3d_gebouw_key,
fclt_3d_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.fac_usrdata_omschr fclt_f_schoonmaakniveau,
ROUND(n.fac_usrdata_prijs * 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,
(SELECT * FROM fac_usrdata WHERE fac_usrtab_key = 470) n,
(SELECT * FROM fac_usrdata WHERE fac_usrtab_key = 1) 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 = TO_CHAR(n.fac_usrdata_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
--------------------------------------------------------------------------------------------------
------------------------------- GRAPHICS THEMA'S -------------------------------------------------
--------------------------------------------------------------------------------------------------
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;
--- 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_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_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;
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_werkplek awp,
prs_perslidwerkplek 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;
-- 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;
-- AKZA#22941: Schoonmaak(nivo) in Graphics
CREATE OR REPLACE VIEW akza_v_thema_schnivo
(
alg_ruimte_key,
waarde,
waarde_key
)
AS
SELECT a.alg_ruimte_key,
COALESCE (b.schnivo, '[Onbekend]'),
COALESCE (b.schnivo_key, -1)
FROM (SELECT r.alg_ruimte_key
FROM alg_v_aanwezigruimte r
WHERE alg_srtruimte_key != 961) a -- 'Fictieve ruimte'
LEFT JOIN
(SELECT ok.alg_onrgoed_key,
ud.fac_usrdata_omschr schnivo,
ud.fac_usrdata_key schnivo_key
FROM alg_onrgoedkenmerk ok, fac_usrdata ud
WHERE ok.alg_kenmerk_key = 1001 -- schoonmaakniveau
AND ok.alg_onrgoed_niveau = 'R'
AND ok.alg_onrgoedkenmerk_verwijder IS NULL
AND ok.alg_onrgoedkenmerk_waarde = TO_CHAR(ud.fac_usrdata_key) ) b
ON a.alg_ruimte_key = b.alg_onrgoed_key
UNION ALL
SELECT NULL,
ud.fac_usrdata_omschr schnivo,
ud.fac_usrdata_key schnivo_key
FROM fac_usrdata ud
WHERE ud.fac_usrtab_key = 470
AND NOT EXISTS
(SELECT 1
FROM alg_onrgoedkenmerk ok
WHERE ok.alg_kenmerk_key = 1001 -- schoonmaakniveau
AND ok.alg_onrgoedkenmerk_waarde = ud.fac_usrdata_key);
CREATE OR REPLACE TRIGGER akza_t_thema_schnivo_i_iu
INSTEAD OF INSERT OR UPDATE
ON akza_v_thema_schnivo
BEGIN
IF UPDATING -- oude hard weggooien; dus DELETE (lekker opruimen)!
THEN
DELETE alg_onrgoedkenmerk
WHERE alg_onrgoed_key = :new.alg_ruimte_key
AND alg_onrgoed_niveau = 'R'
AND alg_kenmerk_key = 1001; -- schoonmaakniveau
END IF;
BEGIN
IF :new.waarde_key != -1
THEN
INSERT INTO alg_onrgoedkenmerk (alg_onrgoed_key,
alg_onrgoed_niveau,
alg_kenmerk_key,
alg_onrgoedkenmerk_waarde)
VALUES (:new.alg_ruimte_key,
'R',
1001, -- schoonmaakniveau
:new.waarde_key);
END IF;
EXCEPTION
WHEN DUP_VAL_ON_INDEX -- was al aanwezig
THEN
NULL;
END;
END;
/
--------------------------------------------------------------------------------------------------
------------------------------- SERVICEDESK RAPPORTAGE FUNCTIES ----------------------------------
--------------------------------------------------------------------------------------------------
-- 001 Uitgegeven aan uitvoerende: Servicedesk.
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.
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.
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.
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.
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".
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.
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-%');
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
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);
-- AKZA#22617: afgemelde meldingen en opdrachten, met kosten.
-- key 18 = MLDAFM, key 26 = ORDAFM
CREATE OR REPLACE VIEW akza_v_rap_afmelders_kosten
AS
SELECT m.mld_melding_key||'/'||o.mld_opdr_bedrijfopdr_volgnr hide_f_srt
,vg.ins_discipline_key fclt_3d_discipline_key
,m.mld_alg_locatie_key fclt_3d_locatie_key
,TO_CHAR(m.mld_melding_key) meldingnr
,vg.ins_discipline_omschrijving fclt_f_vakgroep
,sm.mld_stdmelding_omschrijving melding
,TO_CHAR(ft.fac_tracking_datum, 'DD-MM-YYYY') fclt_d_afgemeld
,pf.prs_perslid_naam_full door
,CASE
WHEN o.mld_opdr_key IS NULL THEN NULL
ELSE m.mld_melding_key||'/'||o.mld_opdr_bedrijfopdr_volgnr
END
opdracht
,so.mld_statusopdr_omschrijving opdrachtstatus
,(SELECT pf.prs_perslid_naam_full
FROM fac_tracking ft
,prs_v_perslid_fullnames pf
WHERE ft.fac_srtnotificatie_key = 26
AND ft.fac_tracking_refkey = o.mld_opdr_key
AND pf.prs_perslid_key = ft.prs_perslid_key)
afmelder
,o.mld_opdr_kosten kosten
FROM fac_tracking ft
,mld_melding m
,mld_stdmelding sm
,mld_discipline vg
,mld_opdr o
,mld_statusopdr so
,prs_v_perslid_fullnames pf
WHERE ft.fac_srtnotificatie_key = 18
AND pf.prs_perslid_key = ft.prs_perslid_key
AND m.mld_melding_key = ft.fac_tracking_refkey
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND vg.ins_discipline_key = sm.mld_ins_discipline_key
AND o.mld_melding_key(+) = m.mld_melding_key
AND so.mld_statusopdr_key(+) = o.mld_statusopdr_key;
--------------------------------------------------------------------------------------------------
------------------------------- OUTLETBEHEER -----------------------------------------------------
--------------------------------------------------------------------------------------------------
-- AKZA#22294: Voor indienstredingsworkflows
-- 646: Outlet
CREATE OR REPLACE VIEW akza_v_outlets
AS
SELECT ins_deel_key, ins_deel_omschrijving
FROM ins_deel
WHERE ins_srtdeel_key = 646
AND ins_deel_verwijder IS NULL
AND ins_deel_parent_key IS NOT NULL;
-- 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_perslidwerkplek 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
(FCLT_F_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;
--------------------------------------------------------------------------------------------------
------------------------------- 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,
datum_van 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 datum_van 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,
datum_van 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;
--------------------------------------------------------------------------------------------------
------------------------------------ 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 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;
--DBMS_OUTPUT.PUT_LINE('v_user_dep = '||v_user_dep);
-- 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;
--DBMS_OUTPUT.PUT_LINE('v_afdelingen = '||v_afdelingen);
-- 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
--DBMS_OUTPUT.PUT_LINE('Einde c_company');
EXIT;
ELSE
--DBMS_OUTPUT.PUT_LINE('v_company_key/code = '||v_company_key||'/'||v_company_code);
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
--DBMS_OUTPUT.PUT_LINE('Einde c_eigenaren');
EXIT;
ELSE
--DBMS_OUTPUT.PUT_LINE('v_eigenaar/ownerkey/kostenplaats = '||v_eigenaar||'/'||v_ownerkey||'/'||v_kostenplaats);
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
--DBMS_OUTPUT.PUT_LINE('r_kopieermachine - ins_deel_key = '||r_kopieermachine.ins_deel_key);
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
--DBMS_OUTPUT.PUT_LINE('r_copier object/objectsoort = '||r_copier.object||'/'||r_copier.objectsoort);
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);
--DBMS_OUTPUT.PUT_LINE('v_beheer_kosten = '||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);
--DBMS_OUTPUT.PUT_LINE('v_tikken_kosten = '||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);
--DBMS_OUTPUT.PUT_LINE('v_papier_kosten = '||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);
--DBMS_OUTPUT.PUT_LINE('v_basis_kosten = '||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;
--DBMS_OUTPUT.PUT_LINE('v_totaal_eigenaar = '||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 fac_rapport
WHERE fac_rapport_node = TO_CHAR( USERENV('SESSIONID') );
akza_copiers(user_key, TO_CHAR( 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 = TO_CHAR( 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 fac_rapport
WHERE fac_rapport_node = TO_CHAR( USERENV('SESSIONID') );
akza_copiers(user_key, TO_CHAR( 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 = TO_CHAR( 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 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 fac_rapport
WHERE fac_rapport_node = TO_CHAR( USERENV('SESSIONID') );
akza_copiers(user_key, TO_CHAR( 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;
/
--- SAP-EXPORT (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 fac_rapport -- Hierin wordt de data tijdelijk klaargezet
WHERE fac_rapport_node = TO_CHAR( 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.writelog (p_applname, '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.writelog (p_applname, '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, TO_CHAR( 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.writelog (p_applname, '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 fac_rapport
WHERE fac_rapport_node = TO_CHAR( 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 = TO_CHAR( USERENV('SESSIONID') );
--------------------------------------------------------------------------------------------------
--------- SAP-EXPORTS: DEELOPDRACHTEN, RESERVERINGEN, LOGISTIEK, SPECIFICATIE, FACTUREN ----------
--------------------------------------------------------------------------------------------------
--- BASISVIEWS RESERVERINGEN ---------------------------------------------------
--TODO: lege companycode? (wordt nu left outer join gedaan)
CREATE OR REPLACE VIEW akza_v_export_resdeel
(
soort,
res_rsv_ruimte_key,
res_rsv_artikel_key,
res_rsv_deel_key,
res_rsv_ruimte_kosten_klant,
res_rsv_ruimte_ordernr,
ins_discipline_key,
kostenplaatscode,
debiteurnr,
kostensoort,
einddatum,
bedrag,
postkey,
valuta,
aantal,
btw,
res_reservering_key,
res_rsv_ruimte_volgnr,
datum,
ruimte_art_oms,
melder_key,
melder,
companycode,
stukprijs,
artikelgroep,
catalogus,
alg_locatie_key
)
AS
SELECT DISTINCT 'deel',
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,
akza_k.prs_kostenplaats_nr kostenplaatscode,
akza_k.debiteurnr,
akza_ea.kostensoort,
rr.res_rsv_ruimte_tot einddatum,
ROUND (COALESCE (res.getdeelprijs (rr.res_rsv_deel_key), 0), 2) bedrag,
'40' postkey,
'EUR' valuta,
akza_ea.aantal,
'21' btw,
rr.res_reservering_key,
rr.res_rsv_ruimte_volgnr,
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')
datum,
TRIM(akza_ea.res_deel_omschrijving) ruimte_art_oms,
pf.prs_perslid_key,
-- Indien non-resident host, dan de omschrijving (waar externe gastheer wordt ingevuld) naar SAP.
DECODE (pf.prs_perslid_key,
40727, COALESCE (res_rsv_ruimte_omschrijving, pf.prs_perslid_naam_full, ' '),
COALESCE (pf.prs_perslid_naam_full, ' ')
)
melder,
COALESCE(ac.companycode, 'LEEG') companycode,
ROUND ( COALESCE (res.getdeelprijs (rr.res_rsv_deel_key), 0) / akza_ea.aantal, 2)
stukprijs,
'' artikelgroep,
akza_ea.ins_discipline_omschrijving catalogus,
rg.alg_locatie_key
FROM (SELECT rr.*, CAST(NULL AS NUMBER) 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,
akza_v_kostenplaats akza_k,
(SELECT * FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1380
AND prs_kenmerklink_verwijder IS NULL) kl,
akza_v_afdelingcompany ac,
-- FSN#26359: res_deel_omschrijving is per DB19 een kolom in res_deel, dus we hoeven
-- ins_deel_omschrijving er niet meer bij te halen
(SELECT rsv_d.res_rsv_deel_key,
rd.res_deel_omschrijving,
rsv_d.res_rsv_ruimte_key,
ins_discipline_key,
ins_discipline_omschrijving,
rsv_d.res_rsv_deel_aantal aantal,
ks.prs_kostensoort_oms kostensoort
FROM res_rsv_deel rsv_d, res_deel rd, res_discipline dis, prs_kostensoort ks
WHERE rsv_d.res_deel_key = rd.res_deel_key
AND rd.res_discipline_key = dis.ins_discipline_key
AND dis.prs_kostensoort_key = ks.prs_kostensoort_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_contact_key = pf.prs_perslid_key
AND rr.prs_kostenplaats_key = akza_k.prs_kostenplaats_key
AND kl.prs_kenmerklink_waarde(+) = akza_k.debiteurnr
AND ac.prs_afdeling_key(+) = kl.prs_link_key
AND akza_ea.res_rsv_deel_key(+) = rr.res_rsv_deel_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.
CREATE OR REPLACE VIEW akza_v_export_catering
(
soort,
res_rsv_ruimte_key,
res_rsv_artikel_key,
res_rsv_deel_key,
res_rsv_ruimte_kosten_klant,
res_rsv_ruimte_ordernr,
ins_discipline_key,
kostenplaatscode,
debiteurnr,
kostensoort,
einddatum,
bedrag,
postkey,
valuta,
aantal,
btw,
res_reservering_key,
res_rsv_ruimte_volgnr,
datum,
ruimte_art_oms,
melder_key,
melder,
companycode,
stukprijs,
artikelgroep,
catalogus,
alg_locatie_key
)
AS
SELECT DISTINCT 'artikel',
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,
akza_k.prs_kostenplaats_nr kostenplaatscode,
akza_k.debiteurnr,
akza_ea.kostensoort,
rr.res_rsv_ruimte_tot einddatum,
ROUND (COALESCE (res.getartikelprijs (rr.res_rsv_artikel_key), 0), 2) bedrag,
'40' postkey,
'EUR' valuta,
akza_ea.aantal,
TO_CHAR( COALESCE(akza_ea.res_artikel_btw, 0) ) btw,
rr.res_reservering_key,
rr.res_rsv_ruimte_volgnr,
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')
datum,
TRIM (akza_ea.res_artikel_omschrijving) ruimte_art_oms,
pf.prs_perslid_key,
-- Indien non-resident host, dan de omschrijving (waar externe gastheer wordt ingevuld) naar SAP.
DECODE(pf.prs_perslid_key, 40727, COALESCE(res_rsv_ruimte_omschrijving, pf.prs_perslid_naam_full, ' '), COALESCE (pf.prs_perslid_naam_full, ' ') ) melder,
COALESCE(ac.companycode, 'LEEG') companycode,
ROUND (COALESCE (res.getartikelprijs (rr.res_rsv_artikel_key), 0) / akza_ea.aantal, 2)
stukprijs,
' ' artikelgroep,
akza_ea.ins_discipline_omschrijving catalogus,
rg.alg_locatie_key
FROM (SELECT rr.*, ra.res_rsv_artikel_key, CAST(NULL AS NUMBER) 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,
akza_v_kostenplaats akza_k,
(SELECT * FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1380
AND prs_kenmerklink_verwijder IS NULL) kl,
akza_v_afdelingcompany ac,
(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,
art.res_artikel_btw,
ks.prs_kostensoort_oms kostensoort
FROM res_rsv_artikel rsv_art, res_artikel art, res_discipline dis, prs_kostensoort ks
WHERE 1 = 1
AND rsv_art.res_artikel_key = art.res_artikel_key
AND art.res_discipline_key = dis.ins_discipline_key
AND dis.prs_kostensoort_key = ks.prs_kostensoort_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_contact_key = pf.prs_perslid_key
AND rr.prs_kostenplaats_key = akza_k.prs_kostenplaats_key
AND kl.prs_kenmerklink_waarde(+) = akza_k.debiteurnr
AND ac.prs_afdeling_key(+) = kl.prs_link_key
AND akza_ea.res_rsv_artikel_key(+) = rr.res_rsv_artikel_key
AND rr.res_rsv_ruimte_key = rg.res_rsv_ruimte_key(+);
CREATE OR REPLACE VIEW akza_v_export_resruimten
(
soort,
res_rsv_ruimte_key,
res_rsv_artikel_key,
res_rsv_deel_key,
res_rsv_ruimte_kosten_klant,
res_rsv_ruimte_ordernr,
ins_discipline_key,
kostenplaatscode,
debiteurnr,
kostensoort,
einddatum,
bedrag,
postkey,
valuta,
aantal,
btw,
res_reservering_key,
res_rsv_ruimte_volgnr,
datum,
ruimte_art_oms,
melder_key,
melder,
companycode,
stukprijs,
artikelgroep,
catalogus,
alg_locatie_key
)
AS
SELECT DISTINCT 'ruimte',
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,
akza_k.prs_kostenplaats_nr kostenplaatscode,
akza_k.debiteurnr,
akza_ea.kostensoort,
rr.res_rsv_ruimte_tot einddatum,
ROUND (COALESCE (res.getruimteprijs (rr.res_rsv_ruimte_key), 0), 2)
bedrag,
'40' postkey,
'EUR' valuta,
1 aantal,
'21' btw,
rr.res_reservering_key,
rr.res_rsv_ruimte_volgnr,
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')
datum,
TRIM (res_ruimte_omschrijving) ruimte_art_oms,
pf.prs_perslid_key,
-- Indien non-resident host, dan de omschrijving (waar externe gastheer wordt ingevuld) naar SAP.
DECODE(pf.prs_perslid_key, 40727, COALESCE(res_rsv_ruimte_omschrijving, pf.prs_perslid_naam_full, ' '), COALESCE (pf.prs_perslid_naam_full, ' ') ) melder,
COALESCE(ac.companycode, 'LEEG') companycode,
ROUND (COALESCE (res.getruimteprijs (rr.res_rsv_ruimte_key), 0), 2)
stukprijs,
' ' artikelgroep,
akza_ea.ins_discipline_omschrijving catalogus,
rg.alg_locatie_key
FROM (SELECT rr.*, CAST(NULL AS NUMBER) res_rsv_artikel_key, CAST(NULL AS NUMBER) 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,
akza_v_kostenplaats akza_k,
(SELECT * FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1380
AND prs_kenmerklink_verwijder IS NULL) kl,
akza_v_afdelingcompany ac,
(SELECT rg.res_discipline_key ins_discipline_key, d.ins_discipline_omschrijving, rg.res_ruimte_key,
ks.prs_kostensoort_oms kostensoort
FROM res_v_res_ruimte_gegevens rg, ins_tab_discipline d, prs_kostensoort ks
WHERE d.ins_discipline_key = rg.res_discipline_key
AND d.prs_kostensoort_key = ks.prs_kostensoort_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_contact_key = pf.prs_perslid_key
AND rr.prs_kostenplaats_key = akza_k.prs_kostenplaats_key
AND kl.prs_kenmerklink_waarde(+) = akza_k.debiteurnr
AND ac.prs_afdeling_key(+) = kl.prs_link_key
AND akza_ea.res_ruimte_key(+) = rr.res_ruimte_key
AND rr.res_rsv_ruimte_key = rg.res_rsv_ruimte_key(+);
CREATE OR REPLACE VIEW akza_v_export_resritten
(
soort,
res_rsv_ruimte_key,
res_rsv_artikel_key,
res_rsv_deel_key,
res_rsv_ruimte_kosten_klant,
res_rsv_ruimte_ordernr,
ins_discipline_key,
kostenplaatscode,
debiteurnr,
kostensoort,
einddatum,
bedrag,
postkey,
valuta,
aantal,
btw,
res_reservering_key,
res_rsv_ruimte_volgnr,
datum,
ruimte_art_oms,
melder_key,
melder,
companycode,
stukprijs,
artikelgroep,
catalogus,
alg_locatie_key
)
AS
SELECT DISTINCT 'rit',
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,
akza_k.prs_kostenplaats_nr kostenplaatscode,
akza_k.debiteurnr,
akza_ea.kostensoort,
rr.res_rsv_ruimte_tot einddatum,
ROUND ( COALESCE (rit_sap.totaal, 0), 2)
bedrag,
'40' postkey,
'EUR' valuta,
1 aantal,
'21' btw,
rr.res_reservering_key,
rr.res_rsv_ruimte_volgnr,
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')
datum,
TRIM (rit_sap.chauffeur) ruimte_art_oms,
pf.prs_perslid_key,
DECODE(rit_sap.rit_nonresidentpass,
NULL, pf.prs_perslid_naam_full,
res_rsv_ruimte_omschrijving)
melder,
COALESCE(ac.companycode, 'LEEG') companycode,
ROUND ( COALESCE (rit_sap.totaal, 0), 2)
stukprijs,
'' artikelgroep,
akza_ea.ins_discipline_omschrijving catalogus,
0 alg_locatie_key
FROM (SELECT rr.*, CAST(NULL AS NUMBER) res_rsv_artikel_key, CAST(NULL AS NUMBER) 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,
akza_v_kostenplaats akza_k,
(SELECT * FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1380
AND prs_kenmerklink_verwijder IS NULL) kl,
akza_v_afdelingcompany ac,
(SELECT rg.res_discipline_key ins_discipline_key, d.ins_discipline_omschrijving, rg.res_ruimte_key,
ks.prs_kostensoort_oms kostensoort
FROM res_v_res_ruimte_gegevens rg, ins_tab_discipline d, prs_kostensoort ks
WHERE d.ins_discipline_key = rg.res_discipline_key
AND d.prs_kostensoort_key = ks.prs_kostensoort_key(+) ) akza_ea,
prs_v_perslid_fullnames_all pf,
akza_v_ritten_doorbelast_sap rit_sap
WHERE rr.res_rsv_ruimte_contact_key = pf.prs_perslid_key
AND rr.res_rsv_ruimte_key = rit_sap.res_rsv_ruimte_key
AND rr.prs_kostenplaats_key = akza_k.prs_kostenplaats_key
AND kl.prs_kenmerklink_waarde(+) = akza_k.debiteurnr
AND ac.prs_afdeling_key(+) = kl.prs_link_key
AND akza_ea.res_ruimte_key(+) = rr.res_ruimte_key;
--- BASISVIEWS LOGISTIEK -------------------------------------------------------
CREATE OR REPLACE VIEW akza_v_kpn_logistiek
AS
SELECT prs_kostenplaats_key,
prs_kostenplaats_omschrijving || ' - ' || prs_kostenplaats_nr kpn,
prs_kostenplaats_verwijder
FROM prs_kostenplaats;
-- AKZA#23427: Logistieke dienst / postkamer / expeditie
-- View voor berekening kosten/opbrengsten van door postkamer verleende diensten.
-- Views voor rapportage en doorbelasting.
----- PRIJSLIJST (Eigen tabel met vaste bedragen voor verleende diensten) -----
-- Bezorgen van goederen per levering
-- Bezorgen van goederen op afleveradres (p/levering) 1749
-- Bezorgen van goederen op pallet (p/levering) 1750
-- Spoed bezorgen van goederen (p/levering) 1751
-- Spoed bezorgen van goederen op pallet (p/levering) 1752
-- Bezorgen toner / papier (p/st) 1753
-- Expeditie transportkosten
-- Verzending voorbereiden binnen Europa 1755
-- Verzending voorbereiden binnen Europa gevaarlijk 1756
-- Verzending voorbereiden binnenland 1757
-- Verzending voorbereiden binnenland gevaarlijk 1758
-- Verzending voorbereiden buiten Europa 1759
-- Verzending voorbereiden buiten Europa gevaarlijk 1760
-- Koerierszendingen/aangetekende poststukken ex.verzendkosten
-- Koerier DHL met bekend adres in het systeem (p/st) 1764
-- Koerier DHL met onbekend adres in het systeem (p/st) 1765
-- Koerier DHL terugkoppeling (p/recu) 1766
-- Afhandeling per levering
-- Afboeken van ontvangen goederen 1769
-- Controleren van ontvangen goederen 1770
-- Ontvangen/sorteren van goederen met naam 1771
-- Ontvangen/sorteren van goederen zonder naam 1772
-- Gecombineerd ophalen/bezorgen
-- Ophalen en bezorgen van bulkpakketten op pallet (OHZ) 1775
-- Ophalen en bezorgen van (lunch)pakketten (HZ) 1774
-- Ophalen van goederen
-- Ophalen van pakketten (HZP) 1777
-- Ophalen van bulk pakketten op pallet (OHZP) 1778
-- Algemene maandelijkse kosten
-- Opslagkosten kelder C2 (p/pallet) 1780
-- Verwerkingskosten
-- Verwerkingstijd: mailing, verz.exp., ontv.goed. (p/kwartier) 1782
-- Toner/papier:
-- Bezorgen toner/papier (p/st) 2172
-- Vaste kosten:
-- Looprondes (p/maand) 2176
-- Dagblad bezorgen (p/maand) 2177
-- Opslag container 2197
-- View voor berekening kosten/opbrengsten van door postkamer verleende diensten.
-- Dit zijn diverse meldingen en opdrachten en bezorgde lunchpakketten (RES)
-- Voor (vrijwel) elke handeling geldt een bepaald basisbedrag, met daarbij een
-- aantal toeslagen (voor gevaarlijke goederen, spoed etc).
-- Deze view bevat alle benodigde gegevens voor de management info rapportages en
-- de view(s) voor doorbelasting.
-- Alleen afgehandelde zaken zijn relevant, dus de volgende statussen:
-- - melding:
-- 5 Afgemeld
-- 6 Historie
-- - opdracht:
-- 6 Afgemeld
-- 7 Verwerkt
-- 9 Afgerond
-- - reservering:
-- 5 Afgemeld
-- 6 Verwerkt
-- Doorbelaste bedragen worden historisch vastgelegd in een read-only kenmerk bij
-- meldingen en opdrachten (kenmerksoort 462):
-- - vakgroeptype Logistiek: kenmerk 562
-- - opdrachttype Verzending NL: kenmerk 566
-- - opdrachttype Verzending EU: kenmerk 565
-- - opdrachttype Verzending WW: kenmerk 567
--TODO: crediteurnr = COALESCE( company_van(behandelaar), '0801')
CREATE OR REPLACE VIEW akza_v_logistiek_doorbel
AS
SELECT key,
xmlnode,
nummer,
melder,
melding,
vakgroep,
datum,
status,
einddatum,
kostenplaats_key,
kostenplaats_nr,
kostenplaats_oms,
ordernr,
po_nr,
kostensoort,
stuks, gewicht, verwerkingstijd,
opgehaald, onhandzaam, gevaarlijk, spoed,
onb_adr,
basistarief, afgeboekt, gecontroleerd, bezorgd,
aangetekend, terugkoppel,
mailing, couverteren,
ophaalkosten, materiaalkosten,
verwerkingskosten,
totaal_kosten,
doorbelast doorbelast_bedrag
FROM (
-- Ontvangst goederen:
-- Goederen op naam 1041
-- Goederen zonder naam 1042
-- Kenmerken vakgroep:
-- Onhandzaam pakket 521
-- Aantal stuks 401
-- Afgeboekt 408
-- Gecontroleerd 417
-- Bezorgd 413
-- Verwerkingstijd 447
-- PO-nummer 434
-- Prijslijst:
-- Bezorgen van goederen per levering
-- Bezorgen van goederen op afleveradres (p/levering) 1749
-- Bezorgen van goederen op pallet (p/levering) 1750
-- Spoed bezorgen van goederen (p/levering) 1751
-- Spoed bezorgen van goederen op pallet (p/levering) 1752
-- Afhandeling per levering
-- Afboeken van ontvangen goederen 1769
-- Controleren van ontvangen goederen 1770
-- Ontvangen/sorteren van goederen met naam 1771
-- Ontvangen/sorteren van goederen zonder naam 1772
-- Verwerkingskosten
-- Verwerkingstijd: mailing, verz.exp., ontv.goed. (p/kwartier) 1782
SELECT key, 'melding' xmlnode, nummer, datum, einddatum, status, melder,
melding, vakgroep, kostenplaats_key, kostenplaats_nr, kostenplaats_oms, ordernr, po_nr, kostensoort,
stuks, NULL gewicht, verwerkingstijd,
NULL opgehaald, onhandzaam, NULL gevaarlijk, spoed,
NULL onb_adr,
basistarief, afgeboekt, gecontroleerd, bezorgd,
NULL aangetekend, NULL terugkoppel,
NULL mailing, NULL couverteren,
NULL ophaalkosten, NULL materiaalkosten,
verwerkingskosten,
basistarief + afgeboekt + gecontroleerd + bezorgd + verwerkingskosten totaal_kosten,
doorbelast
FROM (
SELECT m.mld_melding_key key,
'L'||m.mld_melding_key nummer,
m.mld_melding_status status,
m.mld_melding_datum datum,
m.mld_melding_einddatum einddatum,
s.mld_stdmelding_omschrijving melding,
d.ins_discipline_omschrijving vakgroep,
ak.prs_kostenplaats_key kostenplaats_key,
ak.prs_kostenplaats_nr kostenplaats_nr,
ak.prs_kostenplaats_omschrijving kostenplaats_oms,
m.mld_melding_ordernr ordernr,
po_nr.mld_kenmerkmelding_waarde po_nr,
ks.prs_kostensoort_oms kostensoort,
pf.prs_perslid_naam_full melder,
fac.safe_to_number(stuks.mld_kenmerkmelding_waarde) stuks,
fac.safe_to_number(ohz.mld_kenmerkmelding_waarde) onhandzaam,
opzondernaam.fac_usrdata_prijs basistarief,
DECODE(SIGN(2.5-m.mld_melding_spoed),
-1, NULL,
1, 1)
spoed,
COALESCE( fac.safe_to_number(afgeboekt.mld_kenmerkmelding_waarde), 0)
* (SELECT fac_usrdata_prijs FROM fac_usrdata
WHERE fac_usrdata_key = 1769)
afgeboekt,
COALESCE( fac.safe_to_number(gecontroleerd.mld_kenmerkmelding_waarde), 0)
* (SELECT fac_usrdata_prijs FROM fac_usrdata
WHERE fac_usrdata_key = 1770)
gecontroleerd,
COALESCE( fac.safe_to_number(bezorgd.mld_kenmerkmelding_waarde), 0)
* (SELECT fac_usrdata_prijs FROM fac_usrdata
WHERE fac_usrdata_key =
DECODE(COALESCE( fac.safe_to_number(ohz.mld_kenmerkmelding_waarde), 0),
0, DECODE(SIGN(2.5-m.mld_melding_spoed),
-1, 1749, -- hz, norm
1, 1751), -- hz, spoed)
1, DECODE(SIGN(2.5-m.mld_melding_spoed),
-1, 1750, -- ohz
1, 1752) ) ) -- ohz, spoed
bezorgd,
COALESCE( fac.safe_to_number(verwerkingstijd.mld_kenmerkmelding_waarde), 0) verwerkingstijd,
COALESCE( fac.safe_to_number(verwerkingstijd.mld_kenmerkmelding_waarde), 0)
* (SELECT fac_usrdata_prijs FROM fac_usrdata
WHERE fac_usrdata_key = 1782)
verwerkingskosten,
fac.safe_to_number(doorbel.mld_kenmerkmelding_waarde) doorbelast
FROM mld_melding m,
mld_stdmelding s,
mld_discipline d,
prs_v_aanwezigkostenplaats ak,
prs_kostensoort ks,
prs_v_perslid_fullnames pf,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 521
AND mld_kenmerkmelding_verwijder IS NULL) ohz,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 401
AND mld_kenmerkmelding_verwijder IS NULL) stuks,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 408
AND mld_kenmerkmelding_verwijder IS NULL) afgeboekt,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 417
AND mld_kenmerkmelding_verwijder IS NULL) gecontroleerd,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 413
AND mld_kenmerkmelding_verwijder IS NULL) bezorgd,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 447
AND mld_kenmerkmelding_verwijder IS NULL) verwerkingstijd,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 434
AND mld_kenmerkmelding_verwijder IS NULL) po_nr,
fac_usrdata opzondernaam,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 562
AND mld_kenmerkmelding_verwijder IS NULL) doorbel
WHERE m.mld_stdmelding_key IN (1041, 1042)
AND m.mld_melding_status IN (5,6)
AND s.mld_stdmelding_key = m.mld_stdmelding_key
AND d.ins_discipline_key = s.mld_ins_discipline_key
AND ak.prs_kostenplaats_key = m.prs_kostenplaats_key
AND ks.prs_kostensoort_key = s.prs_kostensoort_key
AND pf.prs_perslid_key = m.prs_perslid_key
AND opzondernaam.fac_usrdata_key = DECODE(m.mld_stdmelding_key,
1042, 1772,
1771)
AND ohz.mld_melding_key(+) = m.mld_melding_key
AND stuks.mld_melding_key(+) = m.mld_melding_key
AND afgeboekt.mld_melding_key(+) = m.mld_melding_key
AND gecontroleerd.mld_melding_key(+) = m.mld_melding_key
AND bezorgd.mld_melding_key(+) = m.mld_melding_key
AND verwerkingstijd.mld_melding_key(+) = m.mld_melding_key
AND po_nr.mld_melding_key(+) = m.mld_melding_key
AND doorbel.mld_melding_key(+) = m.mld_melding_key
)
UNION ALL
-- Intern pakket ophalen en bezorgen
-- stdmelding_key 1043
-- Kenmerken:
-- Onhandzaam pakket 431
-- Prijslijst:
-- Ophalen en bezorgen van (lunch)pakketten (HZ) 1774
-- Ophalen en bezorgen van bulkpakketten op pallet (OHZ) 1775
SELECT key, 'melding' xmlnode, nummer, datum, einddatum, status, melder,
melding, vakgroep, kostenplaats_key, kostenplaats_nr, kostenplaats_oms, ordernr, NULL po_nr, kostensoort,
NULL stuks, NULL gewicht, NULL verwerkingstijd,
NULL opgehaald, onhandzaam, NULL gevaarlijk, NULL spoed,
NULL onb_adr,
totaal_kosten basistarief, NULL afgeboekt, NULL gecontroleerd, NULL bezorgd,
NULL aangetekend,NULL terugkoppel,
NULL mailing, NULL couverteren,
NULL ophaalkosten, NULL materiaalkosten,
NULL verwerkingskosten,
totaal_kosten,
doorbelast
FROM (
SELECT m.mld_melding_key key,
'L'||m.mld_melding_key nummer,
m.mld_melding_status status,
m.mld_melding_datum datum,
m.mld_melding_einddatum einddatum,
s.mld_stdmelding_omschrijving melding,
d.ins_discipline_omschrijving vakgroep,
ak.prs_kostenplaats_key kostenplaats_key,
ak.prs_kostenplaats_nr kostenplaats_nr,
ak.prs_kostenplaats_omschrijving kostenplaats_oms,
m.mld_melding_ordernr ordernr,
ks.prs_kostensoort_oms kostensoort,
pf.prs_perslid_naam_full melder,
COALESCE( fac.safe_to_number(ohz.mld_kenmerkmelding_waarde), 0) onhandzaam,
(SELECT fac_usrdata_prijs FROM fac_usrdata
WHERE fac_usrdata_key =
DECODE(COALESCE( fac.safe_to_number(ohz.mld_kenmerkmelding_waarde), 0),
0, 1774,
1, 1775) )
totaal_kosten,
fac.safe_to_number(doorbel.mld_kenmerkmelding_waarde) doorbelast
FROM mld_melding m,
mld_stdmelding s,
mld_discipline d,
prs_v_aanwezigkostenplaats ak,
prs_kostensoort ks,
prs_v_perslid_fullnames pf,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 431
AND mld_kenmerkmelding_verwijder IS NULL) ohz,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 562
AND mld_kenmerkmelding_verwijder IS NULL) doorbel
WHERE m.mld_stdmelding_key = 1043
AND m.mld_melding_status IN (5,6)
AND s.mld_stdmelding_key = m.mld_stdmelding_key
AND d.ins_discipline_key = s.mld_ins_discipline_key
AND ak.prs_kostenplaats_key = m.prs_kostenplaats_key
AND ks.prs_kostensoort_key = s.prs_kostensoort_key
AND pf.prs_perslid_key = m.prs_perslid_key
AND ohz.mld_melding_key(+) = m.mld_melding_key
AND doorbel.mld_melding_key(+) = m.mld_melding_key
)
UNION ALL
-- Verzending koerier
-- stdmelding_key 1044
-- Kenmerken melding + usrtabs:
-- Aangetekend verzenden 398
-- Aangetekend 483
-- Verzending terugkoppelen 449
-- Onbekend adres 430
-- Prijslijst:
-- Koerier DHL met bekend adres in het systeem (p/st) 1764
-- Koerier DHL met onbekend adres in het systeem (p/st) 1765
-- Koerier DHL terugkoppeling (p/recu) 1766
SELECT key, 'melding' xmlnode, nummer, datum, einddatum, status, melder,
melding, vakgroep, kostenplaats_key, kostenplaats_nr, kostenplaats_oms, ordernr, NULL po_nr, kostensoort,
NULL stuks, NULL gewicht, NULL verwerkingstijd,
NULL opgehaald, NULL onhandzaam, NULL gevaarlijk, NULL spoed,
onb_adr,
basistarief, NULL afgeboekt, NULL gecontroleerd, NULL bezorgd,
aangetekend, terugkoppel,
NULL mailing, NULL couverteren,
NULL ophaalkosten, NULL materiaalkosten,
NULL verwerkingskosten,
basistarief + aangetekend + terugkoppel totaal_kosten,
doorbelast
FROM (
SELECT m.mld_melding_key key,
'L'||m.mld_melding_key nummer,
m.mld_melding_status status,
m.mld_melding_datum datum,
m.mld_melding_einddatum einddatum,
s.mld_stdmelding_omschrijving melding,
d.ins_discipline_omschrijving vakgroep,
ak.prs_kostenplaats_key kostenplaats_key,
ak.prs_kostenplaats_nr kostenplaats_nr,
ak.prs_kostenplaats_omschrijving kostenplaats_oms,
m.mld_melding_ordernr ordernr,
ks.prs_kostensoort_oms kostensoort,
pf.prs_perslid_naam_full melder,
COALESCE( fac.safe_to_number(onb_adr.mld_kenmerkmelding_waarde), 0) onb_adr,
(SELECT fac_usrdata_prijs FROM fac_usrdata
WHERE fac_usrdata_key =
DECODE(COALESCE( fac.safe_to_number(onb_adr.mld_kenmerkmelding_waarde), 0),
1, 1765,
0, 1764) )
basistarief,
ud.fac_usrdata_prijs aangetekend,
COALESCE( fac.safe_to_number(terugkoppel.mld_kenmerkmelding_waarde), 0)
* (SELECT fac_usrdata_prijs FROM fac_usrdata
WHERE fac_usrdata_key = 1766)
terugkoppel,
fac.safe_to_number(doorbel.mld_kenmerkmelding_waarde) doorbelast
FROM mld_melding m,
mld_stdmelding s,
mld_discipline d,
prs_v_aanwezigkostenplaats ak,
prs_kostensoort ks,
prs_v_perslid_fullnames pf,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 398
AND mld_kenmerkmelding_verwijder IS NULL) aangetekend,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 449
AND mld_kenmerkmelding_verwijder IS NULL) terugkoppel,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 430
AND mld_kenmerkmelding_verwijder IS NULL) onb_adr,
(SELECT * FROM fac_usrdata WHERE fac_usrtab_key = 483) ud,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 562
AND mld_kenmerkmelding_verwijder IS NULL) doorbel
WHERE m.mld_stdmelding_key = 1044
AND m.mld_melding_status IN (5,6)
AND s.mld_stdmelding_key = m.mld_stdmelding_key
AND d.ins_discipline_key = s.mld_ins_discipline_key
AND ak.prs_kostenplaats_key = m.prs_kostenplaats_key
AND ks.prs_kostensoort_key = s.prs_kostensoort_key
AND pf.prs_perslid_key = m.prs_perslid_key
AND aangetekend.mld_melding_key(+) = m.mld_melding_key
AND ud.fac_usrdata_key(+) = fac.safe_to_number(aangetekend.mld_kenmerkmelding_waarde)
AND terugkoppel.mld_melding_key(+) = m.mld_melding_key
AND onb_adr.mld_melding_key(+) = m.mld_melding_key
AND doorbel.mld_melding_key(+) = m.mld_melding_key
)
UNION ALL
-- Mailing
-- stdmelding_key 1045
-- Kenmerken melding + usrtabs:
-- Vellen 443
-- Mailing 480
-- Gewicht 482
-- Couverteren 480
-- Couverteren 474
-- Aantal stuks 483
-- Verwerkingstijd 446
-- Prijslijst:
-- Verwerkingstijd: mailing, verz.exp., ontv.goed. (p/kwartier) 1782
SELECT key,'melding' xmlnode, nummer, datum, einddatum, status, melder,
melding, vakgroep, kostenplaats_key, kostenplaats_nr, kostenplaats_oms, ordernr, NULL po_nr, kostensoort,
stuks, gewicht, verwerkingstijd,
NULL opgehaald, NULL onhandzaam, NULL gevaarlijk, NULL spoed,
NULL onb_adr,
0 basistarief, NULL afgeboekt, NULL gecontroleerd, NULL bezorgd,
NULL aangetekend, NULL terugkoppel,
gewicht * vellen mailing, stuks/100 * couverteren couverteren,
NULL ophaalkosten, NULL materiaalkosten,
verwerkingskosten,
gewicht * vellen + stuks/100 * couverteren + verwerkingskosten totaal_kosten,
doorbelast
FROM (
SELECT m.mld_melding_key key,
'L'||m.mld_melding_key nummer,
m.mld_melding_status status,
m.mld_melding_datum datum,
m.mld_melding_einddatum einddatum,
s.mld_stdmelding_omschrijving melding,
d.ins_discipline_omschrijving vakgroep,
ak.prs_kostenplaats_key kostenplaats_key,
ak.prs_kostenplaats_nr kostenplaats_nr,
ak.prs_kostenplaats_omschrijving kostenplaats_oms,
m.mld_melding_ordernr ordernr,
ks.prs_kostensoort_oms kostensoort,
pf.prs_perslid_naam_full melder,
COALESCE( fac.safe_to_number(gewicht.mld_kenmerkmelding_waarde), 0) gewicht,
COALESCE( fac.safe_to_number(stuks.mld_kenmerkmelding_waarde), 0) stuks,
COALESCE( fac.safe_to_number(verwerkingstijd.mld_kenmerkmelding_waarde), 0) verwerkingstijd,
mail.fac_usrdata_prijs vellen,
couv.fac_usrdata_prijs couverteren,
COALESCE( fac.safe_to_number(verwerkingstijd.mld_kenmerkmelding_waarde), 0)
* (SELECT fac_usrdata_prijs FROM fac_usrdata
WHERE fac_usrdata_key = 1782)
verwerkingskosten,
fac.safe_to_number(doorbel.mld_kenmerkmelding_waarde) doorbelast
FROM mld_melding m,
mld_stdmelding s,
mld_discipline d,
prs_v_aanwezigkostenplaats ak,
prs_kostensoort ks,
prs_v_perslid_fullnames pf,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 443
AND mld_kenmerkmelding_verwijder IS NULL) vel,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 482
AND mld_kenmerkmelding_verwijder IS NULL) gewicht,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 480
AND mld_kenmerkmelding_verwijder IS NULL) couvert,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 483
AND mld_kenmerkmelding_verwijder IS NULL) stuks,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 446
AND mld_kenmerkmelding_verwijder IS NULL) verwerkingstijd,
(SELECT * FROM fac_usrdata WHERE fac_usrtab_key = 480) mail,
(SELECT * FROM fac_usrdata WHERE fac_usrtab_key = 474) couv,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 562
AND mld_kenmerkmelding_verwijder IS NULL) doorbel
WHERE m.mld_stdmelding_key = 1045
AND m.mld_melding_status IN (5,6)
AND s.mld_stdmelding_key = m.mld_stdmelding_key
AND d.ins_discipline_key = s.mld_ins_discipline_key
AND ak.prs_kostenplaats_key = m.prs_kostenplaats_key
AND ks.prs_kostensoort_key = s.prs_kostensoort_key
AND pf.prs_perslid_key = m.prs_perslid_key
AND vel.mld_melding_key(+) = m.mld_melding_key
AND mail.fac_usrdata_key(+) = fac.safe_to_number(vel.mld_kenmerkmelding_waarde)
AND gewicht.mld_melding_key(+) = m.mld_melding_key
AND couvert.mld_melding_key(+) = m.mld_melding_key
AND couv.fac_usrdata_key(+) = fac.safe_to_number(couvert.mld_kenmerkmelding_waarde)
AND stuks.mld_melding_key(+) = m.mld_melding_key
AND verwerkingstijd.mld_melding_key(+) = m.mld_melding_key
AND doorbel.mld_melding_key(+) = m.mld_melding_key
)
UNION ALL
-- Maandrapportage postale diensten
-- stdmelding_key 1046
-- Kenmerken:
-- Kostenplaats 420
-- Bedrag 411
SELECT key, 'melding' xmlnode, nummer, datum, einddatum, status, melder,
melding, vakgroep, kostenplaats_key, kostenplaats_nr, kostenplaats_oms, ordernr, NULL po_nr, kostensoort,
NULL stuks, NULL gewicht, NULL verwerkingstijd,
NULL opgehaald, NULL onhandzaam, NULL gevaarlijk, NULL spoed,
NULL onb_adr,
bedrag basistarief, NULL afgeboekt, NULL gecontroleerd, NULL bezorgd,
NULL aangetekend, NULL terugkoppel,
NULL mailing, NULL couverteren,
NULL ophaalkosten, NULL materiaalkosten,
NULL verwerkingskosten,
bedrag totaal_kosten,
doorbelast
FROM (
SELECT m.mld_melding_key key,
'L'||m.mld_melding_key nummer,
m.mld_melding_status status,
m.mld_melding_datum datum,
m.mld_melding_einddatum einddatum,
s.mld_stdmelding_omschrijving melding,
d.ins_discipline_omschrijving vakgroep,
ak.prs_kostenplaats_key kostenplaats_key,
ak.prs_kostenplaats_nr kostenplaats_nr,
ak.prs_kostenplaats_omschrijving kostenplaats_oms,
m.mld_melding_ordernr ordernr,
ks.prs_kostensoort_oms kostensoort,
pf.prs_perslid_naam_full melder,
COALESCE( fac.safe_to_number(bedrag.mld_kenmerkmelding_waarde), 0) bedrag,
fac.safe_to_number(doorbel.mld_kenmerkmelding_waarde) doorbelast
FROM mld_melding m,
mld_stdmelding s,
mld_discipline d,
prs_v_aanwezigkostenplaats ak,
prs_kostensoort ks,
prs_v_perslid_fullnames pf,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 420
AND mld_kenmerkmelding_verwijder IS NULL) kpn,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 411
AND mld_kenmerkmelding_verwijder IS NULL) bedrag,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 562
AND mld_kenmerkmelding_verwijder IS NULL) doorbel
WHERE m.mld_stdmelding_key = 1046
AND m.mld_melding_status IN (5,6)
AND s.mld_stdmelding_key = m.mld_stdmelding_key
AND d.ins_discipline_key = s.mld_ins_discipline_key
AND kpn.mld_melding_key(+) = m.mld_melding_key
AND ak.prs_kostenplaats_key(+) = fac.safe_to_number(kpn.mld_kenmerkmelding_waarde)
AND ks.prs_kostensoort_key = s.prs_kostensoort_key
AND pf.prs_perslid_key = m.prs_perslid_key
AND bedrag.mld_melding_key(+) = m.mld_melding_key
AND doorbel.mld_melding_key(+) = m.mld_melding_key
)
UNION ALL
-- Vaste kosten
-- stdmelding_key 1101
-- Kenmerken:
-- Kostenplaats 564
-- Postrondes 561
-- Dagbladen 563
-- Opslag containers 621
-- Prijslijst:
-- Looprondes (p/maand) 2176
-- Dagblad bezorgen (p/maand) 2177
-- Opslag container 2197
SELECT key, 'melding' xmlnode, nummer, datum, einddatum, status, melder,
melding, vakgroep, kostenplaats_key, kostenplaats_nr, kostenplaats_oms, ordernr, NULL po_nr, kostensoort,
NULL stuks, NULL gewicht, NULL verwerkingstijd,
NULL opgehaald, NULL onhandzaam, NULL gevaarlijk, NULL spoed,
NULL onb_adr,
postrondes + dagbladen + containers basistarief, NULL afgeboekt, NULL gecontroleerd, NULL bezorgd,
NULL aangetekend, NULL terugkoppel,
NULL mailing, NULL couverteren,
NULL ophaalkosten, NULL materiaalkosten,
NULL verwerkingskosten,
postrondes + dagbladen + containers totaal_kosten,
doorbelast
FROM (
SELECT m.mld_melding_key key,
'L'||m.mld_melding_key nummer,
m.mld_melding_status status,
m.mld_melding_datum datum,
m.mld_melding_einddatum einddatum,
s.mld_stdmelding_omschrijving melding,
d.ins_discipline_omschrijving vakgroep,
ak.prs_kostenplaats_key kostenplaats_key,
ak.prs_kostenplaats_nr kostenplaats_nr,
ak.prs_kostenplaats_omschrijving kostenplaats_oms,
m.mld_melding_ordernr ordernr,
ks.prs_kostensoort_oms kostensoort,
pf.prs_perslid_naam_full melder,
COALESCE( fac.safe_to_number(pr.mld_kenmerkmelding_waarde), 0) postrondes,
COALESCE( fac.safe_to_number(db.mld_kenmerkmelding_waarde), 0) dagbladen,
COALESCE( fac.safe_to_number(oc.mld_kenmerkmelding_waarde), 0) containers,
fac.safe_to_number(doorbel.mld_kenmerkmelding_waarde) doorbelast
FROM mld_melding m,
mld_stdmelding s,
mld_discipline d,
prs_v_aanwezigkostenplaats ak,
prs_kostensoort ks,
prs_v_perslid_fullnames pf,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 564
AND mld_kenmerkmelding_verwijder IS NULL) kpn,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 561
AND mld_kenmerkmelding_verwijder IS NULL) pr,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 563
AND mld_kenmerkmelding_verwijder IS NULL) db,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 621
AND mld_kenmerkmelding_verwijder IS NULL) oc,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 562
AND mld_kenmerkmelding_verwijder IS NULL) doorbel
WHERE m.mld_stdmelding_key = 1101
AND m.mld_melding_status IN (5,6)
AND s.mld_stdmelding_key = m.mld_stdmelding_key
AND d.ins_discipline_key = s.mld_ins_discipline_key
AND kpn.mld_melding_key(+) = m.mld_melding_key
AND ak.prs_kostenplaats_key(+) = fac.safe_to_number(kpn.mld_kenmerkmelding_waarde)
AND ks.prs_kostensoort_key = s.prs_kostensoort_key
AND pf.prs_perslid_key = m.prs_perslid_key
AND pr.mld_melding_key(+) = m.mld_melding_key
AND oc.mld_melding_key(+) = m.mld_melding_key
AND db.mld_melding_key(+) = m.mld_melding_key
AND doorbel.mld_melding_key(+) = m.mld_melding_key
)
UNION ALL
-- Toners/olie/nietjes
-- stdmelding_key 1047
-- Kenmerken melding + usrtabs:
-- Kostenplaats 415
-- #Zwarte toner 452
-- #Rode toner 440
-- #Gele toner 418
-- #Blauwe toner 414
-- Olie 429
-- Nietjes 428
-- Prijslijst:
-- Bezorgen toner/papier (p/st) 2172
SELECT key, 'melding' xmlnode, nummer, datum, einddatum, status, melder,
melding, vakgroep, kostenplaats_key, kostenplaats_nr, kostenplaats_oms, ordernr, NULL po_nr, kostensoort,
(z+r+g+b+o+n) stuks, NULL gewicht, NULL verwerkingstijd,
NULL opgehaald, NULL onhandzaam, NULL gevaarlijk, NULL spoed,
NULL onb_adr,
0 basistarief, NULL afgeboekt, NULL gecontroleerd, NULL bezorgd,
NULL aangetekend, NULL terugkoppel,
NULL mailing, NULL couverteren,
NULL ophaalkosten, NULL materiaalkosten,
NULL verwerkingskosten,
(z+r+g+b+o+n) * stuksprijs totaal_kosten,
doorbelast
FROM (
SELECT m.mld_melding_key key,
'L'||m.mld_melding_key nummer,
m.mld_melding_status status,
m.mld_melding_datum datum,
m.mld_melding_einddatum einddatum,
s.mld_stdmelding_omschrijving melding,
d.ins_discipline_omschrijving vakgroep,
ak.prs_kostenplaats_key kostenplaats_key,
ak.prs_kostenplaats_nr kostenplaats_nr,
ak.prs_kostenplaats_omschrijving kostenplaats_oms,
m.mld_melding_ordernr ordernr,
ks.prs_kostensoort_oms kostensoort,
pf.prs_perslid_naam_full melder,
fac.safe_to_number(kpn.mld_kenmerkmelding_waarde) fkpn,
m.prs_kostenplaats_key mkpn,
COALESCE( fac.safe_to_number(zwart.mld_kenmerkmelding_waarde) , 0 ) z,
COALESCE( fac.safe_to_number(rood.mld_kenmerkmelding_waarde), 0 ) r,
COALESCE( fac.safe_to_number(geel.mld_kenmerkmelding_waarde), 0 ) g,
COALESCE( fac.safe_to_number(blauw.mld_kenmerkmelding_waarde), 0 ) b,
COALESCE( fac.safe_to_number(olie.mld_kenmerkmelding_waarde), 0 ) o,
COALESCE( fac.safe_to_number(nietjes.mld_kenmerkmelding_waarde), 0 ) n,
(SELECT fac_usrdata_prijs FROM fac_usrdata WHERE fac_usrdata_key = 2172) stuksprijs,
fac.safe_to_number(doorbel.mld_kenmerkmelding_waarde) doorbelast
FROM mld_melding m,
mld_stdmelding s,
mld_discipline d,
prs_v_aanwezigkostenplaats ak,
prs_kostensoort ks,
prs_v_perslid_fullnames pf,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 415
AND mld_kenmerkmelding_verwijder IS NULL) kpn,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 452
AND mld_kenmerkmelding_verwijder IS NULL) zwart,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 440
AND mld_kenmerkmelding_verwijder IS NULL) rood,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 418
AND mld_kenmerkmelding_verwijder IS NULL) geel,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 414
AND mld_kenmerkmelding_verwijder IS NULL) blauw,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 429
AND mld_kenmerkmelding_verwijder IS NULL) olie,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 428
AND mld_kenmerkmelding_verwijder IS NULL) nietjes,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 562
AND mld_kenmerkmelding_verwijder IS NULL) doorbel
WHERE m.mld_stdmelding_key = 1047
AND m.mld_melding_status IN (5,6)
AND s.mld_stdmelding_key = m.mld_stdmelding_key
AND d.ins_discipline_key = s.mld_ins_discipline_key
AND kpn.mld_melding_key(+) = m.mld_melding_key
AND ak.prs_kostenplaats_key(+) = fac.safe_to_number(kpn.mld_kenmerkmelding_waarde)
AND ks.prs_kostensoort_key = s.prs_kostensoort_key
AND pf.prs_perslid_key = m.prs_perslid_key
AND zwart.mld_melding_key(+) = m.mld_melding_key
AND rood.mld_melding_key(+) = m.mld_melding_key
AND geel.mld_melding_key(+) = m.mld_melding_key
AND blauw.mld_melding_key(+) = m.mld_melding_key
AND olie.mld_melding_key(+) = m.mld_melding_key
AND nietjes.mld_melding_key(+) = m.mld_melding_key
AND doorbel.mld_melding_key(+) = m.mld_melding_key
)
UNION ALL
-- Papier
-- stdmelding_key 1048
-- Kenmerken melding + usrtabs:
-- Kostenplaats 415
-- #dozen A4 399
-- #pakken A3 400
-- Prijslijst:
-- Bezorgen toner/papier (p/st) 2172
-- A4 (doos, inc bezorg, Teijin) 2173
-- A3 (pak, inc bezorg, Teijin) 2174
SELECT key, 'melding' xmlnode, nummer, datum, einddatum, status, melder,
melding, vakgroep, kostenplaats_key, kostenplaats_nr, kostenplaats_oms, ordernr, NULL po_nr, kostensoort,
(a4 + a3) stuks, NULL gewicht, NULL verwerkingstijd,
NULL opgehaald, NULL onhandzaam, NULL gevaarlijk, NULL spoed,
NULL onb_adr,
0 basistarief, NULL afgeboekt, NULL gecontroleerd, NULL bezorgd,
NULL aangetekend, NULL terugkoppel,
NULL mailing, NULL couverteren,
NULL ophaalkosten, NULL materiaalkosten,
NULL verwerkingskosten,
-- Papier wordt alleen aan Teijin doorbelast; Akzo betaalt alleen bezorging
CASE
WHEN prs_kostenplaats_key IN
(SELECT prs_kostenplaats_key
FROM prs_v_aanwezigkostenplaats
WHERE prs_kostenplaatsgrp_key IN (14,15) )
THEN (a4 * prijs_a4) + (a3 * prijs_a3)
ELSE (a4 + a3) * bezorging
END
totaal_kosten,
doorbelast
FROM (
SELECT m.mld_melding_key key,
'L'||m.mld_melding_key nummer,
m.mld_melding_status status,
m.mld_melding_datum datum,
m.mld_melding_einddatum einddatum,
s.mld_stdmelding_omschrijving melding,
d.ins_discipline_omschrijving vakgroep,
ak.prs_kostenplaats_key kostenplaats_key,
ak.prs_kostenplaats_key,
ak.prs_kostenplaats_nr kostenplaats_nr,
ak.prs_kostenplaats_omschrijving kostenplaats_oms,
m.mld_melding_ordernr ordernr,
ks.prs_kostensoort_oms kostensoort,
pf.prs_perslid_naam_full melder,
COALESCE( fac.safe_to_number(a4.mld_kenmerkmelding_waarde), 0 ) a4,
COALESCE( fac.safe_to_number(a3.mld_kenmerkmelding_waarde), 0 ) a3,
(SELECT fac_usrdata_prijs FROM fac_usrdata WHERE fac_usrdata_key = 2172) bezorging,
(SELECT fac_usrdata_prijs FROM fac_usrdata WHERE fac_usrdata_key = 2173) prijs_a4,
(SELECT fac_usrdata_prijs FROM fac_usrdata WHERE fac_usrdata_key = 2174) prijs_a3,
fac.safe_to_number(doorbel.mld_kenmerkmelding_waarde) doorbelast
FROM mld_melding m,
mld_stdmelding s,
mld_discipline d,
prs_v_aanwezigkostenplaats ak,
prs_kostensoort ks,
prs_v_perslid_fullnames pf,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 415
AND mld_kenmerkmelding_verwijder IS NULL) kpn,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 399
AND mld_kenmerkmelding_verwijder IS NULL) a4,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 400
AND mld_kenmerkmelding_verwijder IS NULL) a3,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 562
AND mld_kenmerkmelding_verwijder IS NULL) doorbel
WHERE m.mld_stdmelding_key = 1048
AND m.mld_melding_status IN (5,6)
AND s.mld_stdmelding_key = m.mld_stdmelding_key
AND d.ins_discipline_key = s.mld_ins_discipline_key
AND kpn.mld_melding_key(+) = m.mld_melding_key
AND ak.prs_kostenplaats_key(+) = fac.safe_to_number(kpn.mld_kenmerkmelding_waarde)
AND ks.prs_kostensoort_key = s.prs_kostensoort_key
AND pf.prs_perslid_key = m.prs_perslid_key
AND a4.mld_melding_key(+) = m.mld_melding_key
AND a3.mld_melding_key(+) = m.mld_melding_key
AND doorbel.mld_melding_key(+) = m.mld_melding_key
)
UNION ALL
-- Verzending Nederland/Europa/wereldwijd
-- TODO: opdrachten groeperen per melding
-- stdmelding_keys:
-- Verzending Nederland 1049
-- Verzending Europa 1050
-- Verzending wereldwijd 1051
-- typeopdr_keys:
-- Verzending Nederland 1052
-- Verzending Europa 1053
-- Verzending wereldwijd 1054
-- kenmerkmeldingen melding:
-- Ophalen op WP 361
-- Gevaarlijk 353
-- Onhandzaam 360
-- kenmerken melding:
-- Vervoerder (NL) 502 (prijsoverrule DHL Europlus)
-- kenmerkmeldingen opdracht:
-- Aantal units 377
-- prijslijst (usrtab_key 472):
-- Verzending voorbereiden binnenland 1757
-- Verzending voorbereiden binnenland gevaarlijk 1758
-- Verzending voorbereiden binnen Europa 1755
-- Verzending voorbereiden binnen Europa gevaarlijk 1756
-- Verzending voorbereiden buiten Europa 1759
-- Verzending voorbereiden buiten Europa gevaarlijk 1760
-- Ophalen van pakketten (HZP) 1777
-- Ophalen van bulk pakketten op pallet (OHZP) 1778
-- doorbelast bedrag:
-- kenmerksoort 462
-- kenmerken 566, 565, 567 (NL, EU, WW)
SELECT key, 'opdracht' xmlnode, nummer, datum, einddatum, status, melder,
melding, vakgroep, kostenplaats_key, kostenplaats_nr, kostenplaats_oms, ordernr, NULL po_nr, kostensoort,
NULL stuks, NULL gewicht, NULL verwerkingstijd,
opgehaald, onhandzaam, gevaarlijk, NULL spoed,
NULL onb_adr,
basistarief, NULL afgeboekt, NULL gecontroleerd, NULL bezorgd,
NULL aangetekend, NULL terugkoppel,
NULL mailing, NULL couverteren,
ophaalkosten, materiaalkosten,
NULL verwerkingskosten,
basistarief + ophaalkosten + materiaalkosten totaal_kosten,
doorbelast
FROM (
SELECT mld_opdr_key key,
'L'||mld_melding_key||'/'||volgnr nummer,
datum,
einddatum,
status,
melder,
melding,
vakgroep,
kostenplaats_key,
kostenplaats_nr,
kostenplaats_oms,
ordernr,
kostensoort,
oph opgehaald, ohz onhandzaam, gvr gevaarlijk,
(SELECT fac_usrdata_prijs FROM fac_usrdata
WHERE fac_usrdata_key =
DECODE(gvr,
1, DECODE(mld_stdmelding_key,
1051, 1760,
1050, 1756,
1049, 1758),
0, DECODE(mld_stdmelding_key,
1051, 1759,
1050, 1755,
1049, DECODE(vervoerder,
2165, 2165,
1757)
)
)
) basistarief,
DECODE(oph,
1, (SELECT fac_usrdata_prijs FROM fac_usrdata
WHERE fac_usrdata_key = DECODE(ohz,
1, 1778,
1777) ),
0 ) ophaalkosten,
mat materiaalkosten,
doorbelast
FROM (
SELECT mldopdr.*,
COALESCE( fac.safe_to_number(ophalen.waarde), 0) oph,
COALESCE( fac.safe_to_number(gevaarlijk.waarde), 0) gvr,
COALESCE( fac.safe_to_number(onhandzaam.waarde), 0) ohz,
materiaal.kosten mat
FROM (
SELECT m.mld_melding_key,
m.mld_stdmelding_key,
s.mld_stdmelding_omschrijving melding,
d.ins_discipline_omschrijving vakgroep,
ak.prs_kostenplaats_key kostenplaats_key,
ak.prs_kostenplaats_nr kostenplaats_nr,
ak.prs_kostenplaats_omschrijving kostenplaats_oms,
m.mld_melding_ordernr ordernr,
ks.prs_kostensoort_oms kostensoort,
pf.prs_perslid_naam_full melder,
o.mld_opdr_bedrijfopdr_volgnr volgnr,
o.mld_opdr_key,
m.mld_melding_datum datum,
m.mld_melding_einddatum einddatum,
o.mld_statusopdr_key status,
o.mld_typeopdr_key,
t.mld_typeopdr_omschrijving,
fac.safe_to_number(nl.mld_kenmerkmelding_waarde) vervoerder,
fac.safe_to_number(doorbel.mld_kenmerkopdr_waarde) doorbelast
FROM mld_melding m,
mld_opdr o,
mld_typeopdr t,
mld_stdmelding s,
mld_discipline d,
prs_v_aanwezigkostenplaats ak,
prs_kostensoort ks,
prs_v_perslid_fullnames pf,
(SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerk_key = 502) nl,
(SELECT * FROM mld_kenmerkopdr
WHERE mld_kenmerk_key IN (565, 566, 567)) doorbel
WHERE m.mld_stdmelding_key IN (1049, 1050, 1051)
AND m.mld_melding_status IN (5,6)
AND m.mld_melding_key = o.mld_melding_key(+)
AND s.mld_stdmelding_key = m.mld_stdmelding_key
AND d.ins_discipline_key = s.mld_ins_discipline_key
AND ak.prs_kostenplaats_key = o.prs_kostenplaats_key
AND ks.prs_kostensoort_key = s.prs_kostensoort_key
AND pf.prs_perslid_key = m.prs_perslid_key
AND o.mld_typeopdr_key IN (1052, 1053, 1054)
AND o.mld_statusopdr_key IN (6,7,9)
AND t.mld_typeopdr_key = o.mld_typeopdr_key
AND nl.mld_melding_key(+) = m.mld_melding_key
AND doorbel.mld_opdr_key(+) = o.mld_opdr_key ) mldopdr
LEFT OUTER JOIN (
SELECT km.mld_melding_key,
km.mld_kenmerk_key,
km.mld_kenmerkmelding_waarde waarde
FROM mld_kenmerkmelding km,
mld_kenmerk k
WHERE k.mld_srtkenmerk_key = 361
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_kenmerkmelding_verwijder IS NULL ) ophalen
ON ophalen.mld_melding_key = mldopdr.mld_melding_key
LEFT OUTER JOIN (
SELECT km.mld_melding_key,
km.mld_kenmerk_key,
km.mld_kenmerkmelding_waarde waarde
FROM mld_kenmerkmelding km,
mld_kenmerk k
WHERE k.mld_srtkenmerk_key = 353
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_kenmerkmelding_verwijder IS NULL ) gevaarlijk
ON gevaarlijk.mld_melding_key = mldopdr.mld_melding_key
LEFT OUTER JOIN (
SELECT km.mld_melding_key,
km.mld_kenmerk_key,
km.mld_kenmerkmelding_waarde waarde
FROM mld_kenmerkmelding km,
mld_kenmerk k
WHERE k.mld_srtkenmerk_key = 360
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_kenmerkmelding_verwijder IS NULL) onhandzaam
ON onhandzaam.mld_melding_key = mldopdr.mld_melding_key
LEFT OUTER JOIN (
SELECT om.mld_opdr_key,
SUM(mld_opdr_materiaal_aantal * mld_opdr_materiaal_prijs) kosten
FROM mld_opdr_materiaal om,
mld_opdr o
WHERE om.mld_opdr_key = o.mld_opdr_key
AND o.mld_typeopdr_key IN (1052, 1053, 1054)
AND o.mld_statusopdr_key IN (6,7,9)
AND om.fac_usrdata_key IS NOT NULL
GROUP BY om.mld_opdr_key) materiaal
ON materiaal.mld_opdr_key = mldopdr.mld_opdr_key
)
)
UNION ALL
-- Bezorgen lunchpakketten
-- catalogus "Te bezorgen lunchpakket SSCA" 875
-- Prijslijst
-- Ophalen en bezorgen van (lunch)pakketten (HZ) 1774
SELECT DISTINCT rr.res_rsv_ruimte_key key,
'reservering' xmlnode,
TO_CHAR(rr.res_reservering_key) nummer,
ra.res_rsv_artikel_levering datum,
rr.res_rsv_ruimte_tot einddatum,
ra.res_status_bo_key status,
pf.prs_perslid_naam_full melder,
'Lunchpakket bezorgen' melding,
'Reserveringen' vakgroep,
ak.prs_kostenplaats_key kostenplaats_key,
ak.prs_kostenplaats_nr kostenplaats_nr,
ak.prs_kostenplaats_omschrijving kostenplaats_oms,
rr.res_rsv_ruimte_ordernr ordernr,
NULL po_nr,
'SPOE' kostensoort,
NULL stuks, NULL gewicht, NULL verwerkingstijd,
NULL opgehaald, NULL onhandzaam, NULL gevaarlijk, NULL spoed,
NULL onb_adr,
ud.fac_usrdata_prijs basistarief, NULL afgeboekt, NULL gecontroleerd, NULL bezorgd,
NULL aangetekend, NULL terugkoppel,
NULL mailing, NULL couverteren,
NULL ophaalkosten, NULL materiaalkosten,
NULL verwerkingskosten,
ud.fac_usrdata_prijs totaal_prijs,
NULL doorbelast
FROM res_artikel a,
res_discipline d,
res_rsv_artikel ra,
res_rsv_ruimte rr,
prs_v_aanwezigkostenplaats ak,
prs_v_perslid_fullnames pf,
fac_usrdata ud
WHERE a.res_discipline_key = 875
AND d.ins_discipline_key = a.res_discipline_key
AND ra.res_artikel_key = a.res_artikel_key
AND ra.res_rsv_artikel_verwijder IS NULL
AND ra.res_status_bo_key IN (5,6)
AND TRUNC(ra.res_rsv_artikel_levering) BETWEEN TRUNC(TO_DATE('08-10-2012', 'DD-MM-YYYY'))
AND TRUNC(SYSDATE)
AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
AND ak.prs_kostenplaats_key = rr.prs_kostenplaats_key
AND pf.prs_perslid_key = rr.res_rsv_ruimte_contact_key
AND ud.fac_usrdata_key = 1774);
--- PACKAGE MET REKENPROCEDURES; DEZE VULLEN DE EXPORTTABEL --------------------
CREATE OR REPLACE PACKAGE akza_p_sap
AS
FUNCTION isnumber (pstring IN VARCHAR2) RETURN BOOLEAN;
FUNCTION getBewonersOrdernr (pOpdracht_key IN NUMBER) RETURN VARCHAR2;
FUNCTION getInternalOrdernr (pMelding_key IN NUMBER) RETURN VARCHAR2;
PROCEDURE exp_mld (p_applname IN VARCHAR2,
p_doUpdate IN BOOLEAN);
PROCEDURE exp_res (p_applname IN VARCHAR2,
p_doUpdate IN BOOLEAN);
PROCEDURE exp_logistiek (p_applname IN VARCHAR2,
p_doUpdate IN BOOLEAN);
END;
/
CREATE OR REPLACE PACKAGE BODY akza_p_sap
AS
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 p_doUpdate to set TV/AV statusses in MLD
-- Voorheen werd hier het leveranciernr (altijd bedrijf) opgehaald. Behandelaar lijkt me relevanter om
-- te achterhalen wie de dienst geleverd heeft.
PROCEDURE exp_mld (p_applname IN VARCHAR2, p_doUpdate IN BOOLEAN)
IS
-- Alle afgemelde deelopdrachten waarbij opdrachtkosten + aanneemsom != 0
-- Alleen de Afvalverwijdering-opdrachten waarbij kenmerk "Correct op factuur" = "Ja"
-- moeten worden ge<67>xporteerd.
-- mld_kenmerk Aanneemsom 2
-- mld_typeopdr Deelopdracht-afvalverwijdering 921
-- mld_srtkenmerk Correct op factuur aangetroffen? 208
-- fac_usrdata Reeds gefactureerd-->Ja 1236
CURSOR sap_meldingen
IS
SELECT m.mld_melding_key,
m.mld_alg_onroerendgoed_keys,
COALESCE( TRIM( ks.prs_kostensoort_oms), 'ONBEKEND') prs_kostensoort_oms,
pf.prs_perslid_naam_full,
k.prs_kostenplaats_nr,
k.prs_kostenplaats_key,
k.debiteurnr,
k.prs_kostenplaats_module,
d.ins_discipline_omschrijving||' / '||sm.mld_stdmelding_omschrijving
mld_stdmelding_omschrijving,
o.mld_opdr_key,
sd.ins_srtdiscipline_prefix
|| TO_CHAR(m.mld_melding_key)||'/'
|| TO_CHAR(o.mld_opdr_bedrijfopdr_volgnr)
nummer,
o.mld_uitvoerende_keys,
o.mld_opdr_kosten,
m.prs_perslid_key,
o.mld_typeopdr_key,
ac.companycode crediteurnr,
m.mld_melding_einddatum einddatum,
COALESCE(fac.safe_to_number(aanneemsom.mld_kenmerkopdr_waarde), 0) aanneemsom
FROM mld_melding m,
mld_stdmelding sm,
mld_discipline d,
ins_srtdiscipline sd,
mld_opdr o,
akza_v_kostenplaats k,
prs_kostensoort ks,
prs_v_perslid_fullnames_all pf,
prs_perslid p,
akza_v_afdelingcompany ac,
(SELECT * FROM mld_kenmerkopdr
WHERE mld_kenmerk_key = 2
AND mld_kenmerkopdr_verwijder IS NULL
AND mld_kenmerkopdr_waarde != '.00') aanneemsom,
(SELECT *
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE k.mld_srtkenmerk_key = 208
AND k.mld_kenmerk_verwijder IS NULL
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND ko.mld_kenmerkopdr_verwijder IS NULL
AND ko.mld_kenmerkopdr_waarde = '1236') correct
WHERE o.mld_statusopdr_key = 6
AND m.mld_melding_key = o.mld_melding_key
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND d.ins_discipline_key = sm.mld_ins_discipline_key
AND sd.ins_srtdiscipline_key = d.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_alg = 1 -- AKZA#684
AND ks.prs_kostensoort_key(+) = d.prs_kostensoort_key
AND k.prs_kostenplaats_key(+) = o.prs_kostenplaats_key
AND p.prs_perslid_key = o.prs_perslid_key
AND ac.prs_afdeling_key = p.prs_afdeling_key
AND pf.prs_perslid_key = m.prs_perslid_key
AND aanneemsom.mld_opdr_key(+) = o.mld_opdr_key
AND correct.mld_opdr_key(+) = o.mld_opdr_key
-- Alleen als er kosten zijn
AND o.mld_opdr_kosten + COALESCE(fac.safe_to_number(aanneemsom.mld_kenmerkopdr_waarde), 0) != 0
-- Als afvalverwijdering, dan ook correct op factuur
AND NOT ( o.mld_typeopdr_key = 921
AND ( correct.mld_kenmerkopdr_waarde IS NULL
OR correct.mld_kenmerkopdr_waarde != '1236') )
ORDER BY m.mld_melding_key, o.mld_opdr_bedrijfopdr_volgnr;
rec sap_meldingen%ROWTYPE;
v_kostenplaats VARCHAR2 (10);
v_melding_key NUMBER;
v_debiteurnr VARCHAR2 (12);
v_companycode VARCHAR2 (10);
v_disciplinekostensoort prs_kostensoort.prs_kostensoort_oms%TYPE;
v_bewonersordernr prs_kostenplaats.prs_kostenplaats_nr%TYPE;
v_internalordernr VARCHAR2 (255);
v_opdrkosten mld_opdr.mld_opdr_kosten%TYPE;
v_leveranciernr prs_bedrijf.prs_leverancier_nr%TYPE;
v_opdrachten NUMBER (10);
v_aanneemsom NUMBER (10, 2);
v_count NUMBER;
v_aanduiding VARCHAR2(255);
v_errormsg VARCHAR2(255);
v_errorhint VARCHAR2(255);
BEGIN
-- INIT
v_errormsg := 'init';
v_errorhint := 'init';
v_aanduiding := 'init';
DELETE akza_exp_sap
WHERE soort = 'opdracht';
DELETE imp_log
WHERE imp_log_applicatie = p_applname
AND imp_log_datum < SYSDATE - 185;
FOR rec IN sap_meldingen
LOOP
BEGIN
v_aanduiding := rec.nummer;
v_debiteurnr := NULL;
v_companycode := NULL;
v_errormsg := rec.prs_kostenplaats_module||'-kostenplaats '
||rec.prs_kostenplaats_nr||' (#'||rec.prs_kostenplaats_key||')';
v_errorhint := 'Fout bij overnemen gegevens';
v_melding_key := rec.mld_melding_key;
v_kostenplaats := rec.prs_kostenplaats_nr;
v_disciplinekostensoort := rec.prs_kostensoort_oms;
v_opdrkosten := rec.mld_opdr_kosten + rec.aanneemsom;
-- Bepaal de Companycode adhv het bij de kostenplaatsgroep geregistreerde debiteurnr
-- (verliep voorheen via kpn-->afdeling-->parent, maar dat levert soms meerdere resultaten)
-- nu: kpn-->nr kpngroep = debiteurnr-->flexkenmerk "Debiteurnr" bij toplevel-afdeling = company
v_errorhint := 'Geen debiteurnr en/of companycode gevonden!';
SELECT DISTINCT k.debiteurnr, ac.companycode
INTO v_debiteurnr, v_companycode
FROM mld_opdr o,
akza_v_kostenplaats k,
prs_kenmerklink kl,
akza_v_afdelingcompany ac
WHERE o.mld_opdr_key = rec.mld_opdr_key
AND k.prs_kostenplaats_key = o.prs_kostenplaats_key
AND kl.prs_kenmerklink_waarde = k.debiteurnr
AND kl.prs_kenmerk_key = 1380
AND kl.prs_kenmerklink_verwijder IS NULL
AND ac.prs_afdeling_key = kl.prs_link_key;
-- Eigenlijk is KostenKlant niet meer helemaal bepalend, het is meer of de gekozen kostenplaats
-- een ALG of een PRS kostenplaats is!
IF rec.prs_kostenplaats_module = 'PRS'
THEN
v_errormsg := 'PRS-kostenplaats';
v_errorhint := 'Fout bij bepalen bewonersordernr';
SELECT akza_p_sap.getbewonersordernr (rec.mld_opdr_key)
INTO v_bewonersordernr
FROM DUAL;
-- PKO: (bewoners)ordernr wordt niet meer meegegeven in de export. In de nabije toekomst
-- worden ordernrs als projectkostenplaatsen opgenomen. Daarom niet meer met kostenplaatsen
-- en kostensoorten goochelen o.b.v. die ordernummers.
IF 1=0
THEN
IF (SUBSTR (v_bewonersordernr, 1, 1) = 'B' OR SUBSTR (v_bewonersordernr, 1, 1) = 'b')
AND isnumber (SUBSTR (v_bewonersordernr, 3, 1))
AND fac.safe_to_number (SUBSTR (v_bewonersordernr, 3, 1)) >= 1
AND isnumber (SUBSTR (v_bewonersordernr, 6, 3))
AND fac.safe_to_number (SUBSTR (v_bewonersordernr, 6, 3)) >= 10
--AND v_companycode = defcompcode
THEN
--lgn('B');
--TODO: uit mail Erik van Asveld d.d. 25-02-2014: "Voor <20>bewoners orders<72> (orders met een B,
--of zonder beginletter) is er geen <20><>n op <20><>n relatie meer. De meeboekrekening is de GL account
--waar de kosten uiteindelijk op de ontvangende kostenplaats terecht moet komen."
v_kostenplaats := '0000000';
v_disciplinekostensoort := '4310010';
ELSE
IF (SUBSTR (v_bewonersordernr, 1, 1) = 'I' OR SUBSTR (v_bewonersordernr, 1, 1) = 'i')
AND isnumber (SUBSTR (v_bewonersordernr, 3, 1))
AND fac.safe_to_number (SUBSTR (v_bewonersordernr, 3, 1)) >= 1
AND isnumber (SUBSTR (v_bewonersordernr, 6, 3))
AND fac.safe_to_number (SUBSTR (v_bewonersordernr, 6, 3)) >= 10
--AND v_companycode = defcompcode
THEN
--lgn('I');
v_kostenplaats := '0000000';
v_disciplinekostensoort := '6999026';
ELSE
IF (SUBSTR (v_bewonersordernr, 1, 1) = 'O' OR SUBSTR (v_bewonersordernr, 1, 1) = 'o')
AND isnumber (SUBSTR (v_bewonersordernr, 3, 1))
AND fac.safe_to_number (SUBSTR (v_bewonersordernr, 3, 1)) >= 1
AND isnumber (SUBSTR (v_bewonersordernr, 6, 3))
AND fac.safe_to_number (SUBSTR (v_bewonersordernr, 6, 3)) >= 10
--AND v_companycode = defcompcode
THEN
--lgn('O');
v_kostenplaats := '0000000';
v_disciplinekostensoort := '6999031';
END IF;
END IF;
END IF;
END IF;
-- PRS-kostenplaats, dus bewonersordernr gebruiken, niet internal ordernr.
v_internalordernr := '';
ELSE
v_errormsg := 'ALG-kostenplaats';
v_disciplinekostensoort := '4301001';
-- ALG-kostenplaats, dus internal ordernr gebruiken, niet bewonersordernr.
v_bewonersordernr := NULL;
-- Zoek bij pand (of terrein) geregistreerd ordernr
v_errorhint := 'Fout bij bepalen internal ordernr';
SELECT SUBSTR( akza_p_sap.getinternalordernr (rec.mld_melding_key), 1, 6)
INTO v_internalordernr
FROM DUAL;
IF fac.safe_to_number (SUBSTR (v_internalordernr, 1, 1)) >= 1
AND fac.safe_to_number (SUBSTR (v_internalordernr, 4, 3)) >= 10
THEN
v_disciplinekostensoort := '4310010';
END IF;
END IF;
IF v_opdrkosten != 0
THEN
v_errormsg := 'Insert record';
v_errorhint := 'Invoegen record mislukt!';
INSERT INTO akza_exp_sap
(soort,
crediteurnr,
debiteurnr,
companycode,
costcentre,
ordernr,
postingkey,
kostensoort,
key,
refnr,
einddatum,
bedrag_ex,
bedrag_inc,
btwcode,
omschrijving,
perslid)
VALUES
('opdracht',
rec.crediteurnr,
v_debiteurnr,
v_companycode,
v_kostenplaats,
COALESCE(v_bewonersordernr, v_internalordernr),
CASE
WHEN v_opdrkosten >= 0 THEN '40'
ELSE '50'
END,
v_disciplinekostensoort,
rec.mld_opdr_key,
rec.nummer,
COALESCE((SELECT MAX(fac_tracking_datum)
FROM fac_tracking
WHERE fac_tracking_refkey = rec.mld_opdr_key
AND fac_srtnotificatie_key = 26),
rec.einddatum),
v_opdrkosten,
ROUND(v_opdrkosten * 1.21, 2),
'21',
rec.mld_stdmelding_omschrijving,
rec.prs_perslid_naam_full);
fac.writelog (p_applname, 'I',
v_aanduiding,
v_opdrkosten
);
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.
IF p_doUpdate
THEN
v_errormsg := 'p_doUpdate';
v_errorhint := 'Fout bij zoeken opdrachten';
SELECT COUNT ( * )
INTO v_opdrachten
FROM mld_opdr
WHERE mld_melding_key = rec.mld_melding_key;
IF v_opdrachten > 0 -- Always true, since this is cursor criterium
THEN
v_errorhint := 'Fout bij zetten opdrachtstatus';
FOR opdrrec
IN (SELECT mld_opdr_key
FROM mld_opdr
WHERE mld_statusopdr_key = 6
AND mld_melding_key = rec.mld_melding_key)
LOOP
v_errorhint := 'Opdracht #'||opdrrec.mld_opdr_key||' verwerken';
mld.setopdrachtstatus (opdrrec.mld_opdr_key, 7, NULL);
END LOOP;
-- 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
v_errorhint := 'Fout bij tellen opdrachten';
SELECT COUNT ( * )
INTO v_opdrachten
FROM mld_opdr
WHERE mld_melding_key = rec.mld_melding_key
AND mld_statusopdr_key <> 7;
IF v_opdrachten = 0
THEN
v_errorhint := 'Fout bij verwerken melding '||rec.mld_melding_key;
mld.setmeldingstatus (rec.mld_melding_key, 6, NULL);
fac.writelog (p_applname, 'I',
rec.mld_melding_key,
'Verwerkt'
);
END IF;
ELSE
v_errorhint := 'Fout bij verwerken melding '||rec.mld_melding_key||' (zonder opdrachten)';
mld.setmeldingstatus (rec.mld_melding_key, 6, NULL);
fac.writelog (p_applname, 'I',
rec.mld_melding_key,
'Verwerkt'
);
END IF;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.writelog (p_applname, 'E',
v_aanduiding||': '||v_errorhint||' ('||v_errormsg||')',
'Geen gegevens gevonden (' || SUBSTR (SQLERRM, 1, 9) || ')'
);
WHEN OTHERS
THEN
fac.writelog (p_applname, 'E',
v_aanduiding||': '||v_errorhint||' ('||v_errormsg||')',
'Error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100)
);
END;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
fac.writelog (p_applname, 'E',
v_aanduiding||': '||v_errorhint||' ('||v_errormsg||')',
'Error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100)
);
COMMIT;
END;
-- Specify p_doUpdate to set TV/AV statuses in Catering
PROCEDURE exp_res (p_applname IN VARCHAR2, p_doUpdate IN BOOLEAN)
IS
-- Alle reserveringen met kosten
CURSOR c_sapres
IS
SELECT r.*,
DECODE (r.alg_locatie_key,
2, '0801', -- SSCA
161, '0801', -- AHO
0, '0801', -- AHO (rit)
121, '1435') -- DEV
crediteurnr
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) r
WHERE bedrag > 0;
rec c_sapres%ROWTYPE;
v_companycode VARCHAR2 (12);
v_kostensoort VARCHAR2 (12);
v_btw VARCHAR2 (2);
v_errorhint VARCHAR2(100);
v_errormsg VARCHAR2(100);
v_aanduiding VARCHAR2(100);
BEGIN
v_aanduiding := 'init';
v_errormsg := 'init';
v_errorhint := 'init';
DELETE akza_exp_sap
WHERE soort IN ('artikel', 'deel', 'ruimte', 'rit');
DELETE imp_log
WHERE imp_log_applicatie = p_applname
AND imp_log_datum < SYSDATE - 185;
FOR rec IN c_sapres
LOOP
BEGIN
v_aanduiding := rec.res_reservering_key||'/'||rec.res_rsv_ruimte_volgnr||' - '||rec.ruimte_art_oms;
v_errormsg := 'Start';
v_errorhint := 'Fout bij overnemen gegevens';
v_companycode := rec.companycode;
v_kostensoort := rec.kostensoort;
v_errormsg := 'Insert record';
v_errorhint := 'Invoegen record mislukt!';
INSERT INTO akza_exp_sap
(soort,
crediteurnr,
debiteurnr,
companycode,
costcentre,
ordernr,
postingkey,
kostensoort,
key,
refnr,
einddatum,
bedrag_ex,
bedrag_inc,
btwcode,
omschrijving,
perslid)
VALUES
(rec.soort,
rec.crediteurnr,
rec.debiteurnr,
rec.companycode,
rec.kostenplaatscode,
rec.res_rsv_ruimte_ordernr,
rec.postkey,
rec.kostensoort,
COALESCE(rec.res_rsv_deel_key, rec.res_rsv_artikel_key, rec.res_rsv_ruimte_key),
TO_CHAR(rec.res_reservering_key)||'/'||TO_CHAR(rec.res_rsv_ruimte_volgnr),
COALESCE((SELECT MAX(fac_tracking_datum)
FROM fac_tracking
WHERE fac_tracking_refkey = rec.res_rsv_ruimte_key
AND fac_srtnotificatie_key = 32),
rec.einddatum),
rec.bedrag,
ROUND(rec.bedrag * (1 + fac.safe_to_number(rec.btw/100) ), 2),
rec.btw,
rec.datum||' '||rec.ruimte_art_oms,
rec.melder);
fac.writelog(p_applname, 'I',
v_aanduiding,
rec.bedrag);
IF p_doUpdate
THEN
v_errormsg := 'Update status';
v_errorhint := 'Fout bij '||rec.soort;
IF (rec.res_rsv_artikel_key IS NOT NULL)
THEN
UPDATE res_rsv_artikel
SET res_status_bo_key = 6
WHERE res_status_bo_key = 5 AND res_rsv_artikel_key = rec.res_rsv_artikel_key;
END IF;
IF (rec.res_rsv_deel_key IS NOT NULL)
THEN
UPDATE res_rsv_deel
SET res_status_bo_key = 6
WHERE res_status_bo_key = 5 AND res_rsv_deel_key = rec.res_rsv_deel_key;
END IF;
IF (rec.res_rsv_deel_key IS NULL) AND (rec.res_rsv_artikel_key IS NULL)
THEN
UPDATE res_rsv_ruimte
SET res_status_bo_key = 6
WHERE res_status_bo_key = 5 AND res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
END IF;
fac.trackaction ('RESVER', rec.res_rsv_ruimte_key, NULL, NULL, NULL);
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.writelog (p_applname, 'E',
v_aanduiding||': '||v_errorhint||' ('||v_errormsg||')',
'Geen gegevens gevonden (' || SUBSTR (SQLERRM, 1, 9) || ')'
);
WHEN OTHERS
THEN
fac.writelog (p_applname, 'E',
v_aanduiding||': '||v_errorhint||' ('||v_errormsg||')',
'Error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100)
); -- tbv logging
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
fac.writelog (p_applname, 'E',
v_aanduiding||': '||v_errorhint||' ('||v_errormsg||')',
'Error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100)
);
COMMIT;
END;
PROCEDURE exp_logistiek (p_applname IN VARCHAR2, p_doUpdate IN BOOLEAN)
IS
v_aanduiding VARCHAR(100);
v_errormsg VARCHAR(200);
v_errorhint VARCHAR(200);
v_count NUMBER;
-- In een aantal afdelingskenmerken worden maandelijks terugkerende vaste kosten
-- bijgehouden. Op basis hiervan maken we per (afdelings-)kostenplaats een melding
-- aan, om zo historie op te bouwen.
-- Deze cursor bevat een regel per melding, met gesommeerde kosten voor
-- postrondes en/of dagbladen.
CURSOR c_vast
IS
-- usrdata:
-- Looprondes (p/maand) 2176
-- Dagblad bezorgen (p/maand) 2177
-- Opslag containers 2197
-- Kenmerken:
-- Postrondes:
-- Ophaalplaats 1/2/3 1295 / 1296 / 1297
-- Dagbladen:
-- Bezorgplaats 1/2/3 1301 / 1305 / 1308
-- Containers:
-- Aantal containers 1321
SELECT a.prs_kostenplaats_key,
k.prs_kostenplaats_omschrijving,
p.postrondes,
d.dagbladen,
c.containers
FROM prs_kostenplaats k,
prs_afdeling a
LEFT OUTER JOIN ( SELECT prs_afdeling_key,
SUM (fac_usrdata_prijs) postrondes
FROM prs_afdeling, prs_kenmerklink, fac_usrdata
WHERE prs_link_key = prs_afdeling_key
AND prs_kenmerk_key IN (1295, 1296, 1297)
AND prs_kenmerklink_verwijder IS NULL
AND fac_usrdata_key = 2176
GROUP BY prs_afdeling_key) p
ON p.prs_afdeling_key = a.prs_afdeling_key
LEFT OUTER JOIN ( SELECT prs_afdeling_key,
SUM (fac_usrdata_prijs) dagbladen
FROM prs_afdeling, prs_kenmerklink, fac_usrdata
WHERE prs_link_key = prs_afdeling_key
AND prs_kenmerk_key IN (1301, 1305, 1308)
AND prs_kenmerklink_verwijder IS NULL
AND fac_usrdata_key = 2177
GROUP BY prs_afdeling_key) d
ON d.prs_afdeling_key = a.prs_afdeling_key
LEFT OUTER JOIN ( SELECT prs_afdeling_key,
SUM ( fac.safe_to_number(prs_kenmerklink_waarde)
* fac_usrdata_prijs) containers
FROM prs_afdeling, prs_kenmerklink, fac_usrdata
WHERE prs_link_key = prs_afdeling_key
AND prs_kenmerk_key = 1321
AND prs_kenmerklink_verwijder IS NULL
AND fac_usrdata_key = 2197
GROUP BY prs_afdeling_key) c
ON c.prs_afdeling_key = a.prs_afdeling_key
WHERE a.prs_afdeling_verwijder IS NULL
AND k.prs_kostenplaats_key = a.prs_kostenplaats_key
AND ( p.postrondes IS NOT NULL
OR d.dagbladen IS NOT NULL
OR c.containers IS NOT NULL);
CURSOR c_insert
IS
SELECT xmlnode,
'0801' crediteurnr,
k.debiteurnr,
ac.companycode,
k.prs_kostenplaats_nr costcentre,
ordernr,
CASE
WHEN (totaal_kosten < 0) THEN 50
ELSE 40
END postingkey,
kostensoort,
key,
nummer refnr,
einddatum,
totaal_kosten bedrag_ex,
ROUND(totaal_kosten * 1.21, 2) bedrag_inc,
'21' btwcode,
-- Als (Teijin-) PO-nummer gevuld, dan in omschrijving vermelden.
DECODE(po_nr,
NULL, '',
po_nr||' ')
||vakgroep||' / '||melding omschrijving,
melder perslid
FROM akza_v_logistiek_doorbel l,
akza_v_kostenplaats k,
(SELECT * FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1380
AND prs_kenmerklink_verwijder IS NULL) kl,
akza_v_afdelingcompany ac
WHERE totaal_kosten != 0
AND k.prs_kostenplaats_key = l.kostenplaats_key
AND kl.prs_kenmerklink_waarde = k.debiteurnr
AND ac.prs_afdeling_key = kl.prs_link_key
AND ( (xmlnode = 'melding' AND status = 5) -- afgemelde meldingen
OR (xmlnode = 'opdracht' AND status = 6) -- afgemelde opdrachten
OR ( xmlnode = 'reservering' -- afgeleverde cateringartikelen
AND datum BETWEEN (SELECT COALESCE(MAX(fac_tracking_datum),
TO_DATE('08-10-2012', 'DD-MM-YYYY') )
FROM fac_tracking t,
(SELECT key FROM akza_v_logistiek_doorbel
WHERE xmlnode = 'melding' AND status = 6) d
WHERE t.fac_srtnotificatie_key = 24 -- MLDVER
AND d.key = t.fac_tracking_refkey)
AND SYSDATE ) );
-- stdmelding:
-- Postale diensten/Vaste kosten 1101
-- Kenmerken:
-- Kostenplaats 564
-- Postrondes 561
-- Dagbladen 563
-- Opslag containers 621
c_stdmelding_key NUMBER := 1101;
c_flex_kostenplaats NUMBER := 564;
c_flex_postrondes NUMBER := 561;
c_flex_dagbladen NUMBER := 563;
c_flex_containers NUMBER := 621;
v_melding_key NUMBER;
BEGIN
v_aanduiding := 'init';
v_errormsg := 'init';
v_errorhint := 'init';
DELETE akza_exp_sap
WHERE soort IN ('logistiek');
DELETE imp_log
WHERE imp_log_applicatie = p_applname
AND imp_log_datum < SYSDATE - 185;
-- Meldingen voor vaste kosten toevoegen (o.b.v. flexkenmerken bij afdelingen)
IF (p_doUpdate)
THEN
FOR r IN c_vast
LOOP
BEGIN
v_aanduiding := r.prs_kostenplaats_omschrijving;
v_errormsg := 'Meldingen vaste kosten toevoegen';
v_errorhint := 'Fout bij toevoegen melding';
-- Einddatum wordt expliciet gezet, omdat er geen tracking toegevoegd
-- wordt en we eigenlijk de MLDAFM-datum willen gebruiken.
INSERT INTO mld_melding
(mld_melding_module,
mld_meldbron_key,
mld_melding_datum,
mld_melding_einddatum,
mld_stdmelding_key,
prs_perslid_key,
mld_melding_status,
mld_melding_spoed,
prs_kostenplaats_key)
VALUES
('MLD',
45, -- System
SYSDATE,
SYSDATE,
c_stdmelding_key,
7520, -- Facilitor
5, -- Afgemeld
3,
r.prs_kostenplaats_key)
RETURNING mld_melding_key
INTO v_melding_key;
v_errorhint := 'Fout bij toevoegen kenmerk';
mld.upsertmeldingkenmerk(c_flex_kostenplaats,
v_melding_key,
TO_CHAR(r.prs_kostenplaats_key) );
mld.upsertmeldingkenmerk(c_flex_postrondes,
v_melding_key,
TO_CHAR(r.postrondes) );
mld.upsertmeldingkenmerk(c_flex_dagbladen,
v_melding_key,
TO_CHAR(r.dagbladen) );
mld.upsertmeldingkenmerk(c_flex_containers,
v_melding_key,
TO_CHAR(r.containers) );
fac.writelog(p_applname, 'I',
'Melding '||v_melding_key||' toegevoegd',
'Kostenplaats '||v_aanduiding);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.writelog (p_applname, 'E',
v_aanduiding||': '||v_errorhint||' ('||v_errormsg||')',
'Geen gegevens gevonden (' || SUBSTR (SQLERRM, 1, 9) || ')'
);
WHEN OTHERS
THEN
fac.writelog (p_applname, 'E',
v_aanduiding||': '||v_errorhint||' ('||v_errormsg||')',
'Error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100)
); -- tbv logging
END;
END LOOP;
COMMIT;
END IF;
v_errormsg := 'Insert record';
v_errorhint := 'Invoegen record mislukt!';
-- Logistieke acties voor externe klanten aan doorbelastingstabel toevoegen
FOR r IN c_insert
LOOP
BEGIN
v_aanduiding := r.refnr;
INSERT INTO akza_exp_sap
(soort,
crediteurnr,
debiteurnr,
companycode,
costcentre,
ordernr,
postingkey,
kostensoort,
key,
refnr,
einddatum,
bedrag_ex,
bedrag_inc,
btwcode,
omschrijving,
perslid)
VALUES
('logistiek',
r.crediteurnr,
r.debiteurnr,
r.companycode,
r.costcentre,
r.ordernr,
r.postingkey,
r.kostensoort,
r.key,
r.refnr,
COALESCE((SELECT MAX(fac_tracking_datum)
FROM fac_tracking
WHERE fac_tracking_refkey = r.key
AND fac_srtnotificatie_key = DECODE(r.xmlnode,
'opdracht', 26, -- ORDAFM
'melding', 18, -- MLDAFM
32 -- RESAFM
) ),
r.einddatum),
r.bedrag_ex,
r.bedrag_inc,
r.btwcode,
r.omschrijving,
r.perslid);
fac.writelog(p_applname, 'I',
v_aanduiding,
r.bedrag_ex);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.writelog (p_applname, 'E',
v_aanduiding||': '||v_errorhint||' ('||v_errormsg||')',
'Geen gegevens gevonden (' || SUBSTR (SQLERRM, 1, 9) || ')'
);
WHEN OTHERS
THEN
fac.writelog (p_applname, 'E',
v_aanduiding||': '||v_errorhint||' ('||v_errormsg||')',
'Error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100)
); -- tbv logging
END;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
fac.writelog (p_applname, 'E',
v_aanduiding||': '||v_errorhint||' ('||v_errormsg||')',
'Error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100)
);
END exp_logistiek;
END;
/
--- EXPORT DEELOPDRACHTEN ------------------------------------------------------
-- Export MLD_SAP bepaalt doorbelastingsgegevens voor deelopdrachten. Gegevens worden later gebruikt
-- gebruikt door de specificatie- en verkoopfactuur-exports (SAP_SPEC resp SAP_FACTUREN)
CREATE OR REPLACE PROCEDURE akza_select_mld_sap (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
akza_p_sap.exp_mld(p_applname, TRUE); -- p_doUpdate TODO
END;
/
CREATE OR REPLACE VIEW akza_v_export_mld_sap
(RESULT, RESULT_ORDER)
AS
SELECT 'soort;crediteurnr;debiteurnr;companycode;costcentre;ordernr;postingkey;kostensoort;key;refnr;bedrag_ex;bedrag_inc;btwcode;omschrijving;perslid',
0
FROM DUAL
UNION ALL
SELECT soort||';'||
crediteurnr||';'||
debiteurnr||';'||
companycode||';'||
costcentre||';'||
ordernr||';'||
postingkey||';'||
kostensoort||';'||
key||';'||
refnr||';'||
bedrag_ex||';'||
bedrag_inc||';'||
btwcode||';'||
omschrijving||';'||
perslid,
key
FROM akza_exp_sap
WHERE soort = 'opdracht';
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');
-- AKZA#23427: Meldingen Logistieke dienst (srtdisc 121) vallen hierbuiten; die dus
-- nooit aanpassen met deze export!
-- AKZA#37464: ook KPI-meldingen vallen hierbuiten
FOR rec IN (SELECT mld_melding_key
FROM mld_melding m,
mld_stdmelding s,
mld_discipline d
WHERE NOT EXISTS (SELECT 1
FROM mld_opdr o
WHERE o.mld_melding_key = m.mld_melding_key)
AND m.mld_melding_status = 5 -- TV
AND m.mld_stdmelding_key = s.mld_stdmelding_key
AND s.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key NOT IN (121, 161) ) -- Logistiek, KPI
LOOP
mld.setmeldingstatus (rec.mld_melding_key, 6, NULL);
fac.writelog(p_applname,
'I',
'Melding '||rec.mld_melding_key||' verwerkt',
'');
END LOOP;
END;
/
--- EXPORT RESERVERINGEN -------------------------------------------------------
CREATE OR REPLACE PROCEDURE akza_select_res_sap (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
akza_p_sap.exp_res (p_applname, TRUE); -- doUpdate
END;
/
CREATE OR REPLACE VIEW akza_v_export_res_sap
(RESULT, RESULT_ORDER)
AS
SELECT 'soort;crediteurnr;debiteurnr;companycode;costcentre;ordernr;postingkey;kostensoort;key;refnr;bedrag_ex;bedrag_inc;btwcode;omschrijving;perslid',
0
FROM DUAL
UNION ALL
SELECT soort||';'||
crediteurnr||';'||
debiteurnr||';'||
companycode||';'||
costcentre||';'||
ordernr||';'||
postingkey||';'||
kostensoort||';'||
key||';'||
refnr||';'||
bedrag_ex||';'||
bedrag_inc||';'||
btwcode||';'||
omschrijving||';'||
perslid,
key
FROM akza_exp_sap
WHERE soort IN ('artikel', 'deel', 'ruimte', 'rit');
--- EXPORT LOGISTIEK -----------------------------------------------------------
-- Voorbereiden export naar SAP; meldingen aanmaken voor vaste kosten vastgelegd in afdelingskenmerken
CREATE OR REPLACE PROCEDURE akza_select_logistiek (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
akza_p_sap.exp_logistiek(p_applname, TRUE); --doUpdate
END akza_select_logistiek;
/
-- Exportview naar Foxpro (voor doorbelasting naar SAP)
CREATE OR REPLACE VIEW akza_v_export_logistiek
AS
WITH tmp
AS
(SELECT *
FROM akza_v_logistiek_doorbel l
WHERE totaal_kosten != 0
AND ( (xmlnode = 'melding' AND status = 5) -- afgemelde meldingen
OR (xmlnode = 'opdracht' AND status = 6) -- afgemelde opdrachten
OR ( xmlnode = 'reservering' -- afgeleverde cateringartikelen
AND datum BETWEEN (SELECT COALESCE(MAX(fac_tracking_datum),
TO_DATE('08-10-2012', 'DD-MM-YYYY') )
FROM fac_tracking t,
(SELECT key FROM akza_v_logistiek_doorbel
WHERE xmlnode = 'melding' AND status = 6) d
WHERE t.fac_srtnotificatie_key = 24 -- MLDVER
AND d.key = t.fac_tracking_refkey)
AND SYSDATE ) ) )
SELECT '<html><head><style>' result, 1 result_order FROM DUAL
UNION ALL
SELECT '.num0dec {mso-number-format:0;} .num2dec {mso-number-format:Fixed;} .tekst {mso-number-format:"\@";}' result, 2 result_order FROM DUAL
UNION ALL
SELECT '</style></head><body><table>' result, 3 result_order FROM DUAL
UNION ALL
SELECT '<tr><td>INT_FACT</td>'||
'<td>CMPCODE</td>'||
'<td>KPLCODE</td>'||
'<td>PK</td>'||
'<td>VAL</td>'||
'<td>FAKT.DA</td>'||
'<td>REFERENTIE</td>'||
'<td>GRP</td>'||
'<td>BEDRAG</td>'||
'<td>AANTAL</td>'||
'<td>ARTIKEL</td>'||
'<td>DT</td>'||
'<td>ARTIKELCODE</td>'||
'<td>PRIJS</td>'||
'<td>REFERENTIE 1</td>'||
'<td>BTW</td></tr>' result, 4 result_order FROM DUAL
UNION ALL
SELECT '<tr><td>' ||
nummer ||
'</td><td>' ||
SUBSTR(kostenplaats_nr,
INSTR(kostenplaats_nr, '(')+1,
INSTR(kostenplaats_nr, ')') - INSTR(kostenplaats_nr, '(')-1) ||
'</td><td>' ||
SUBSTR(kostenplaats_nr,
1,
INSTR(kostenplaats_nr, '(')-2) ||
'</td><td>' ||
CASE
WHEN (totaal_kosten < 0) THEN 50
ELSE 40
END ||
'</td><td>' ||
'EUR'||
'</td><td>' ||
TO_CHAR (TRUNC(datum), 'dd-mm-yyyy') ||
'</td><td>' ||
melder ||
'</td><td>' ||
kostensoort ||
'</td><td class="num2dec">' ||
REPLACE(TO_CHAR(COALESCE(totaal_kosten, 0)),'.',',') ||
'</td><td class="num0dec">' ||
'1' ||
'</td><td>' ||
melding ||
'</td><td>' ||
DECODE (SUBSTR(kostenplaats_nr,
INSTR(kostenplaats_nr, '(')+1,
INSTR(kostenplaats_nr, ')') - INSTR(kostenplaats_nr, '(')-1),
'0801', 'NY',
'MY') ||
'</td><td>' ||
'FCLT' ||
'</td><td class="num2dec">' ||
REPLACE(TO_CHAR(COALESCE(totaal_kosten, 0)),'.',',') ||
'</td><td>' ||
'</td><td>' ||
'2' ||
'</td></tr>' result,
5 result_order
FROM tmp
UNION ALL
SELECT '<tr><td class="num2dec">' || REPLACE(TO_CHAR( SUM(totaal_kosten) ),'.',',') || '</td>' ||
'<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>' result,
6 result_order
FROM tmp
UNION ALL
SELECT '<tr><td class="num0dec">1</td>' ||
'<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>' result,
7 result_order
FROM DUAL
UNION ALL
SELECT '</table></body></html>' result, 8 result_order FROM DUAL;
CREATE OR REPLACE VIEW akza_v_export_logistiek
(RESULT, RESULT_ORDER)
AS
SELECT 'soort;crediteurnr;debiteurnr;companycode;costcentre;ordernr;postingkey;kostensoort;key;refnr;bedrag_ex;bedrag_inc;btwcode;omschrijving;perslid',
0
FROM DUAL
UNION ALL
SELECT soort||';'||
crediteurnr||';'||
debiteurnr||';'||
companycode||';'||
costcentre||';'||
ordernr||';'||
postingkey||';'||
kostensoort||';'||
key||';'||
refnr||';'||
bedrag_ex||';'||
bedrag_inc||';'||
btwcode||';'||
omschrijving||';'||
perslid,
key
FROM akza_exp_sap
WHERE soort = 'logistiek';
-- Afronden export naar SAP;
-- meldingen/opdrachten/reserveringen op status Verwerkt zetten
CREATE OR REPLACE PROCEDURE akza_export_logistiek (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
v_aanduiding VARCHAR(100);
v_errormsg VARCHAR(200);
v_errorhint VARCHAR(100);
v_count NUMBER;
-- Alle te-verwerken meldingen en opdrachten.
-- Doorbelaste logistieke meldingen hebben geen opdrachten, m.u.v. Verzending expeditie.
-- Bij doorbelaste opdrachten (Verzending expeditie) moet ook de melding op Verwerkt worden gezet
-- (Reserveringen zijn al op Verwerkt gezet door de RES-exports)
CURSOR c
IS
SELECT key,
xmlnode,
nummer,
melding,
datum,
totaal_kosten
FROM akza_v_logistiek_doorbel l
WHERE (xmlnode = 'melding' AND status = 5) -- afgemelde meldingen
OR (xmlnode = 'opdracht' AND status = 6) -- afgemelde opdrachten
ORDER BY nummer;
c_flex_mld_doorbelast NUMBER := 562;
c_typeopdr_NL NUMBER := 1052;
c_typeopdr_EU NUMBER := 1053;
c_typeopdr_WW NUMBER := 1054;
c_flex_opdr_NL_doorbelast NUMBER := 566;
c_flex_opdr_EU_doorbelast NUMBER := 565;
c_flex_opdr_WW_doorbelast NUMBER := 567;
v_melding_key NUMBER;
v_flex_key NUMBER;
BEGIN
v_aanduiding := 'init';
v_errormsg := 'init';
v_errorhint := 'init';
-- Meldingen en opdrachten op Verwerkt zetten
-- (Reserveringen zijn bij de RES-exports al op Verwerkt gezet)
FOR r IN c
LOOP
BEGIN
v_aanduiding := r.xmlnode||' '||r.nummer||' (#'||r.key||')';
-- Melding zonder opdrachten
IF (r.xmlnode = 'melding')
THEN
v_errormsg := 'Verwerken';
-- Melding op Verwerkt zetten (zorgt ook voor tracking)
v_errorhint := 'Fout bij verwerken melding';
mld.setmeldingstatus(r.key, 6, NULL);
fac.writelog(p_applname, 'I',
v_aanduiding||' verwerkt',
'');
-- Voor historie: bewaar doorbelaste bedrag
v_errorhint := 'Fout bij zetten meldingkenmerk';
mld.upsertmeldingkenmerk(c_flex_mld_doorbelast,
r.key,
TO_CHAR(r.totaal_kosten) );
ELSIF (r.xmlnode = 'opdracht')
THEN
-- Zet op Verwerkt (zorgt ook voor tracking)
v_errorhint := 'Fout bij verwerken opdracht';
mld.setopdrachtstatus (r.key, 7, NULL);
fac.writelog(p_applname, 'I',
v_aanduiding||' verwerkt',
'');
-- Voor historie: bewaar doorbelaste bedrag
v_errorhint := 'Fout bij zetten opdrachtkenmerk';
SELECT DECODE(mld_typeopdr_key,
c_typeopdr_NL, c_flex_opdr_NL_doorbelast,
c_typeopdr_EU, c_flex_opdr_EU_doorbelast,
c_typeopdr_WW, c_flex_opdr_WW_doorbelast)
INTO v_flex_key
FROM mld_opdr
WHERE mld_opdr_key = r.key;
mld.upsertopdrachtkenmerk(v_flex_key,
r.key,
TO_CHAR(r.totaal_kosten) );
v_errormsg := 'Zoeken overige opdrachten';
-- Achterhaal melding bij opdracht; zijn nu alle opdrachten bij deze
-- melding verwerkt?
v_errorhint := 'Fout bij bepalen melding';
SELECT mld_melding_key
INTO v_melding_key
FROM mld_opdr
WHERE mld_opdr_key = r.key;
-- Zijn er andere te-Verwerken opdrachten bij deze melding?
-- (te-Verwerken is dan: niet Verwerkt (7), niet Afgewezen (1), niet Niet akkoord (2)
v_errorhint := 'Fout bij tellen opdrachten';
SELECT COUNT(*)
INTO v_count
FROM mld_opdr
WHERE mld_melding_key = v_melding_key
AND mld_opdr_key != r.key
AND mld_statusopdr_key NOT IN (1,2,7);
IF (v_count > 0)
THEN
-- Er zijn nog opdrachten; melding kan niet Verwerkt worden
fac.writelog(p_applname, 'I',
'Melding L'||v_melding_key||' bij '||v_aanduiding||' wordt (nog) niet verwerkt',
'Er zijn nog andere openstaande/te verwerken opdrachten');
ELSE
-- Geen andere opdrachten; melding op Verwerkt zetten (zorgt ook voor tracking)
v_errorhint := 'Fout bij verwerken melding';
mld.setmeldingstatus(v_melding_key, 6, NULL);
fac.writelog(p_applname,
'I',
'Melding L'||v_melding_key||' bij '||v_aanduiding||' verwerkt',
'');
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
fac.writelog (p_applname, 'E',
v_aanduiding||': '||v_errorhint||' ('||v_errormsg||')',
'Error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100)
);
END;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
fac.writelog (p_applname, 'E',
v_aanduiding||': '||v_errorhint||' ('||v_errormsg||')',
'Error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100)
);
END akza_export_logistiek;
/
--- SPECIFICATIEREGELS ---------------------------------------------------------
-- AKZA#27345: Export verkoopfacturen naar SAP.
-- Genereert exportbestand met specificatieregels; deze wordt later in een batch-script
-- gesplitst in bestanden per betalende company(code)
CREATE OR REPLACE VIEW akza_v_export_sap_spec
(RESULT, RESULT_ORDER)
AS
SELECT 'Seq;CoCd;Doc. Type;Crcy;PK;G/L Acct;Cost Ctr;Network;Ordnr;Text;Pstng Date;Amount;Crcy' result,
0 result_order
FROM DUAL
UNION ALL
SELECT seq||';'||cocd||';'||doctype||';'||crcy||';'||pk||';'||glacct||';'||
costctr||';'||network||';'||ordnr||';'||text||';'||pstngdate||';'||amount||';'||crcy1 result,
ROWNUM result_order
FROM (
SELECT ROW_NUMBER() OVER (PARTITION BY companycode ORDER BY companycode, kostensoort, costcentre) AS seq,
companycode cocd,
'MY' doctype,
'EUR' crcy,
postingkey pk,
kostensoort glacct,
costcentre costctr,
NULL network,
TRIM(ordernr) ordnr,
-- Melder in omschrijving vermelden, maar alleen als dat niet _FACILITOR is.
refnr||' '
|| omschrijving
|| DECODE(perslid,
'Facilitor', '',
' ('||perslid||')' ) text,
TO_CHAR(einddatum, 'DD-MM-YYYY') pstngdate,
bedrag_ex amount,
NULL crcy1
FROM akza_exp_sap );
--- VERKOOPFACTUREN ------------------------------------------------------------
-- AKZA#27345: Export verkoopfacturen naar SAP.
-- Facturen worden getotaliseerd per klantbedrijf (company), met daarbij een specificatieregel
-- per opdracht/melding/reservering en aparte BTW-regels voor hoog/laag
CREATE OR REPLACE PROCEDURE akza_select_sap_facturen (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
CURSOR c_facturen
IS
SELECT TO_CHAR(SYSDATE+2, 'DDMMYYYY') docdate,
'DA' doctype,
crediteurnr companycode,
TO_CHAR(SYSDATE+2, 'DDMMYYYY') postingdate,
'EUR' currency,
NULL documentnr,
DECODE(soort,
'opdracht', 'Service Orders',
'artikel', 'Catering',
'ruimte', 'Bookable rooms',
'deel', 'Bookable equipment',
'logistiek', 'Logistic Services',
soort)
||TO_CHAR(ADD_MONTHS(SYSDATE,-1), ' YYYY.MM') description,
companycode||TO_CHAR(ADD_MONTHS(SYSDATE,-1), '-YYYY.MM') referencenr,
CASE
WHEN SUM(bedrag_inc) >= 0 THEN '01'
WHEN SUM(bedrag_inc) < 0 THEN '11'
END
postingkey,
debiteurnr account,
TRIM( TO_CHAR( SUM(bedrag_inc),
'99999999D99',
'NLS_NUMERIC_CHARACTERS=,.') ) amount,
'**' taxcode,
NULL network,
--TODO: Deventer verwacht hier wel een waarde in(?)
'' assignment,
'' costcenter,
DECODE(soort,
'opdracht', 'Service Orders',
'artikel', 'Catering',
'ruimte', 'Bookable rooms',
'deel', 'Bookable equipment',
'logistiek', 'Logistic Services',
soort)
||TO_CHAR(ADD_MONTHS(SYSDATE,-1), ' YYYY.MM ')
||COALESCE(aa.prs_afdeling_naam6, 'LEEG') lineitemtext,
NULL tradingpartner,
'' ordernr,
NULL partnerbanktype,
NULL xref1,
NULL xref2,
-- de verschillende company's hebben andere contactpersonen per dienst
DECODE( crediteurnr1,
'1435', DECODE( soort,
'opdracht', 'VONKT',
'artikel', 'VONKT',
'ruimte', 'VONKT',
'deel', 'VONKT',
'logistiek', 'VONKT',
NULL),
DECODE( soort,
'opdracht', 'BONGERSH',
'artikel', 'ERMERSJ',
'ruimte', 'ERMERSJ',
'deel', 'ERMERSJ',
'logistiek', 'BOSW',
NULL) )
xref3,
NULL companycodecross,
NULL profitcenter,
soort
-- Diverse HQ-company's hebben dezelfde administratie (0801, 0804, 0806, 0810),
-- dus daar niet onderling factureren.
-- Bij incomplete inrichting kan de companycode leeg zijn, daar expliciet op checken
FROM (SELECT DECODE(companycode, '0804', '0801',
'0806', '0801',
'0810', '0801',
NULL, 'apekool',
companycode) companycode1,
DECODE(crediteurnr, '0804', '0801',
'0806', '0801',
'0810', '0801',
NULL, 'quequeleque',
crediteurnr) crediteurnr1,
es.*
FROM akza_exp_sap es),
prs_v_aanwezigafdeling aa
WHERE companycode1 != crediteurnr1
AND aa.prs_afdeling_naam(+) = companycode
GROUP BY companycode, companycode1, debiteurnr, crediteurnr, crediteurnr1, soort, aa.prs_afdeling_naam6;
-- AKZA#32881 factuurregels sommeren per GLaccount (kostensoort) en kostenplaats
CURSOR c_regels (p_crediteurnr VARCHAR2,
p_debiteurnr VARCHAR2,
p_soort VARCHAR2)
IS
SELECT CASE
WHEN SUM(bedrag_ex) >= 0 THEN '50'
WHEN SUM(bedrag_ex) < 0 THEN '40'
END
postingkey,
kostensoort account,
TRIM( TO_CHAR( SUM(bedrag_ex),
'99999999D99',
'NLS_NUMERIC_CHARACTERS=,.') ) amount,
'NC' taxcode,
NULL network,
NULL assignment,
costcentre costcenter,
DECODE(soort,
'opdracht', 'Service Orders',
'artikel', 'Catering',
'ruimte', 'Bookable rooms',
'deel', 'Bookable equipment',
'logistiek', 'Logistic Services',
soort)
|| TO_CHAR(ADD_MONTHS(SYSDATE,-1), ' YYYY.MM ') lineitemtext,
NULL tradingpartner,
'' ordernr
-- Diverse HQ-company's hebben dezelfde administratie (0801, 0804, 0806, 0810),
-- dus daar niet onderling factureren.
-- Bij incomplete inrichting kan de companycode leeg zijn, daar expliciet op checken
FROM (SELECT DECODE(companycode, '0804', '0801',
'0806', '0801',
'0810', '0801',
NULL, 'apekool',
companycode) companycode1,
DECODE(crediteurnr, '0804', '0801',
'0806', '0801',
'0810', '0801',
NULL, 'quequeleque',
crediteurnr) crediteurnr1,
es.*
FROM akza_exp_sap es)
WHERE companycode1 != crediteurnr1
AND crediteurnr = p_crediteurnr
AND debiteurnr = p_debiteurnr
AND soort = p_soort
GROUP BY kostensoort, costcentre, soort
ORDER BY kostensoort, costcentre;
CURSOR c_btw (p_crediteurnr VARCHAR2,
p_debiteurnr VARCHAR2,
p_soort VARCHAR2)
IS
SELECT CASE
WHEN SUM(bedrag_inc) - SUM(bedrag_ex) >= 0 THEN '50'
WHEN SUM(bedrag_inc) - SUM(bedrag_ex) < 0 THEN '40'
END
postingkey,
'3571039' account,
TRIM( TO_CHAR( SUM(bedrag_inc) - SUM(bedrag_ex),
'99999999D99',
'NLS_NUMERIC_CHARACTERS=,.') ) amount,
DECODE(btwcode,
'21', 'N3',
'6', 'N1',
'0', 'N5',
'NC')
taxcode,
NULL network,
NULL assignment,
NULL costcenter,
'BTW '
|| DECODE(btwcode,
'21', '21%',
'6', '6%',
'onbekend: '||btwcode)
lineitemtext
-- Diverse HQ-company's hebben dezelfde administratie (0801, 0804, 0806, 0810),
-- dus daar niet onderling factureren.
-- Bij incomplete inrichting kan de companycode leeg zijn, daar expliciet op checken
FROM (SELECT DECODE(companycode, '0804', '0801',
'0806', '0801',
'0810', '0801',
NULL, 'apekool',
companycode) companycode1,
DECODE(crediteurnr, '0804', '0801',
'0806', '0801',
'0810', '0801',
NULL, 'quequeleque',
crediteurnr) crediteurnr1,
es.*
FROM akza_exp_sap es)
WHERE companycode1 != crediteurnr1
AND crediteurnr = p_crediteurnr
AND debiteurnr = p_debiteurnr
AND soort = p_soort
GROUP BY postingkey, btwcode;
v_aanduiding VARCHAR2(100);
v_volgnr NUMBER;
v_errormsg VARCHAR(255);
v_errorhint VARCHAR(255);
BEGIN
v_aanduiding := 'init';
v_errormsg := 'init';
v_errorhint := 'init';
v_volgnr := 1;
DELETE fac_rapport
WHERE fac_rapport_node = p_applname;
DELETE imp_log
WHERE imp_log_applicatie = p_applname
AND imp_log_datum > SYSDATE - 185;
v_errorhint := 'Headerregel';
INSERT INTO fac_rapport
(fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel,
fac_rapport_soort)
SELECT p_applname,
0,
'<html><head><style>.num0dec {mso-number-format:0;} .num2dec {mso-number-format:Fixed;} .tekst {mso-number-format:"\@"; white-space:nowrap;}</style></head><body><table>',
1
FROM DUAL
UNION ALL
SELECT p_applname,
1,
'<tr><td>DOCDATE</td>'||
'<td>DOCTYPE</td>'||
'<td>COMPANYCODE</td>'||
'<td>POSTINGDATE</td>'||
'<td>CURRENCY</td>'||
'<td>DOCUMENTNR</td>'||
'<td>DESCRIPTION</td>'||
'<td>REFERENCENR</td>'||
'<td>POSTINGKEY</td>'||
'<td>ACCOUNT</td>'||
'<td>AMOUNT</td>'||
'<td>TAXCODE</td>'||
'<td>NETWORK</td>'||
'<td>ASSIGNMENT</td>'||
'<td>COSTCENTER</td>'||
'<td>LINEITEMTEXT</td>'||
'<td>TRADINGPARTNER</td>'||
'<td>ORDERNR</td>'||
'<td>PARTNERBANKTYPE</td>'||
'<td>XREF1</td>'||
'<td>XREF2</td>'||
'<td>XREF3</td>'||
'<td>COMPANYCODECROSS</td>'||
'<td>PROFITCENTER</td></tr>',
1
FROM DUAL;
v_errorhint := 'Sommatieregel';
FOR rec_f IN c_facturen
LOOP
BEGIN
v_aanduiding := rec_f.companycode||' --> '||rec_f.account||' ('||rec_f.soort||')';
v_volgnr := v_volgnr + 1;
v_errormsg := 'Sommatieregel aanmaken';
INSERT INTO fac_rapport
(fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel,
fac_rapport_soort)
VALUES
(p_applname,
v_volgnr,
'<tr>'||
'<td class="tekst">'||rec_f.docdate||'</td>'||
'<td class="tekst">'||rec_f.doctype||'</td>'||
'<td class="tekst">'||rec_f.companycode||'</td>'||
'<td class="tekst">'||rec_f.postingdate||'</td>'||
'<td class="tekst">'||rec_f.currency||'</td>'||
'<td class="tekst">'||rec_f.documentnr||'</td>'||
'<td class="tekst">'||rec_f.description||'</td>'||
'<td class="tekst">'||rec_f.referencenr||'</td>'||
'<td class="tekst">'||rec_f.postingkey||'</td>'||
'<td class="tekst">'||rec_f.account||'</td>'||
'<td class="num2dec">'||rec_f.amount||'</td>'||
'<td class="tekst">'||rec_f.taxcode||'</td>'||
'<td class="tekst">'||rec_f.network||'</td>'||
'<td class="tekst">'||rec_f.assignment||'</td>'||
'<td class="tekst">'||rec_f.costcenter||'</td>'||
'<td class="tekst">'||rec_f.lineitemtext||'</td>'||
'<td class="tekst">'||rec_f.tradingpartner||'</td>'||
'<td class="tekst">'||rec_f.ordernr||'</td>'||
'<td class="tekst">'||rec_f.partnerbanktype||'</td>'||
'<td class="tekst">'||rec_f.xref1||'</td>'||
'<td class="tekst">'||rec_f.xref2||'</td>'||
'<td class="tekst">'||rec_f.xref3||'</td>'||
'<td class="tekst">'||rec_f.companycodecross||'</td>'||
'<td class="tekst">'||rec_f.profitcenter||'</td></tr>',
1);
v_errorhint := 'Specificatieregels';
FOR rec IN c_regels (rec_f.companycode,
rec_f.account,
rec_f.soort)
LOOP
BEGIN
v_aanduiding := rec_f.companycode||' --> '||rec_f.account||' ('||rec_f.soort||')'
||' - '||rec.lineitemtext;
v_volgnr := v_volgnr + 1;
v_errormsg := 'Specificatieregel aanmaken';
INSERT INTO fac_rapport
(fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel,
fac_rapport_soort)
VALUES
(p_applname,
v_volgnr,
'<tr><td/><td/><td/><td/><td/><td/><td/><td/>'||
'<td class="tekst">'||rec.postingkey||'</td>'||
'<td class="tekst">'||rec.account||'</td>'||
'<td class="num2dec">'||rec.amount||'</td>'||
'<td class="tekst">'||rec.taxcode||'</td>'||
'<td class="tekst">'||rec.network||'</td>'||
'<td class="tekst">'||rec.assignment||'</td>'||
'<td class="tekst">'||rec.costcenter||'</td>'||
'<td class="tekst">'||rec.lineitemtext||'</td>'||
'<td class="tekst">'||rec.tradingpartner||'</td>'||
'<td class="tekst">'||rec.ordernr||'</td>'||
'<td/><td/><td/><td/><td/></tr>',
1);
EXCEPTION
WHEN OTHERS THEN fac.writelog(p_applname, 'E',
v_errormsg||' ('||v_errorhint||')',
v_aanduiding);
END;
END LOOP;
v_errorhint := 'BTW-regels';
FOR rec_btw IN c_btw (rec_f.companycode,
rec_f.account,
rec_f.soort)
LOOP
BEGIN
v_aanduiding := rec_f.companycode||' --> '||rec_f.account||' ('||rec_f.soort||')'
||' - '||rec_btw.lineitemtext;
v_volgnr := v_volgnr + 1;
v_errormsg := 'BTW-regel aanmaken';
INSERT INTO fac_rapport
(fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel,
fac_rapport_soort)
VALUES
(p_applname,
v_volgnr,
'<tr><td/><td/><td/><td/><td/><td/><td/><td/>'||
'<td class="tekst">'||rec_btw.postingkey||'</td>'||
'<td class="tekst">'||rec_btw.account||'</td>'||
'<td class="num2dec">'||rec_btw.amount||'</td>'||
'<td class="tekst">'||rec_btw.taxcode||'</td>'||
'<td class="tekst">'||rec_btw.network||'</td>'||
'<td class="tekst">'||rec_btw.assignment||'</td>'||
'<td class="tekst">'||rec_btw.costcenter||'</td>'||
'<td class="tekst">'||rec_btw.lineitemtext||'</td>'||
'<td/><td/><td/><td/><td/><td/><td/></tr>',
1);
EXCEPTION
WHEN OTHERS THEN fac.writelog(p_applname, 'E',
v_errormsg||' ('||v_errorhint||')',
v_aanduiding);
END;
END LOOP;
fac.writelog(p_applname, 'S',
'Verkoopfactuur '||rec_f.companycode||' --> '||rec_f.account||' ('||rec_f.soort||')'||' ge<67>xporteerd',
'<EFBFBD> '||rec_f.amount);
EXCEPTION
WHEN OTHERS THEN fac.writelog(p_applname, 'E',
v_errormsg||' ('||v_errorhint||')',
v_aanduiding);
END;
END LOOP;
EXCEPTION
WHEN OTHERS THEN fac.writelog(p_applname, 'E',
v_errormsg||' ('||v_errorhint||')',
v_aanduiding);
END akza_select_sap_facturen;
/
CREATE OR REPLACE VIEW akza_v_export_sap_facturen
(RESULT, RESULT_ORDER)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = 'SAP_FACTUREN';
--------------------------------------------------------------------------------------------------
------------------------------- RAPPORTAGES EN NOTIFICATIEJOBS -----------------------------------
--------------------------------------------------------------------------------------------------
--- LOGISTIEK ------------------------------------------------------------------
-- Toont o.a. soort en prijs van alle door-te-belasten en al doorbelaste handelingen in een bepaalde periode
-- mld_srtkenmerk PO-nummer 362
-- mld_srtkenmerk Pakketnummer 561
CREATE OR REPLACE VIEW akza_v_rap_logistiek_doorbel
AS
SELECT TO_CHAR (datum, 'yyyymmdd')||REPLACE(nummer,'L','') hide_f_sort,
DECODE (xmlnode,
'melding', '<a class="details" onclick=''FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=bo&'||'mld_key='
|| key || '")''>'
|| nummer
|| '</a>',
'opdracht', '<a class="details" onclick=''FcltMgr.openDetail("appl/mld/mld_opdr.asp?urole=bo&'||'opdr_key='
|| key || '")''>'
|| nummer
|| '</a>',
'reservering', '<a class="details" onclick=''FcltMgr.openDetail("appl/res/res_reservering.asp?urole=bo&'||'rsv_ruimte_key='
|| key || '")''>'
|| nummer
|| '</a>',
nummer)
html_nummer,
datum,
melding fclt_f_melding,
vakgroep fclt_f_vakgroep,
kostenplaats_nr||' '||kostenplaats_oms fclt_x_kostenplaats,
kostenplaats_oms||'<br/>'||kostenplaats_nr html_kostenplaats,
ordernr,
ponr.mld_kenmerkmelding_waarde po_nummer,
pakket.mld_kenmerkmelding_waarde pakketnummer,
melder aanvrager,
COALESCE (doorbelast_bedrag, totaal_kosten) kosten
FROM akza_v_logistiek_doorbel ld,
(SELECT km.* FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_kenmerkmelding_verwijder IS NULL
AND k.mld_srtkenmerk_key = 362) ponr,
(SELECT km.* FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_kenmerkmelding_verwijder IS NULL
AND k.mld_srtkenmerk_key = 561) pakket
WHERE ponr.mld_melding_key(+) = ld.key
AND pakket.mld_melding_key(+) = ld.key;
-- Doorbelaste handelingen per meldingsoort/opdrachttype
CREATE OR REPLACE PROCEDURE akza_rap_logistiek_samenv (
user_key IN NUMBER,
p_datum_van IN VARCHAR2, -- Let wel: formaat '16-01-2006'
p_datum_tot IN VARCHAR2,
p_cursor OUT SYS_REFCURSOR
)
AS
v_datum_van DATE;
v_datum_tot DATE;
BEGIN
v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');
OPEN p_cursor FOR
SELECT vakgroep,
melding,
COUNT (nummer) aantal_meldingen,
SUM (totaal_kosten) totaal_kosten
FROM akza_v_logistiek_doorbel
WHERE datum BETWEEN TO_DATE ('1-10-2012', 'DD-MM-YYYY')
AND SYSDATE
AND datum BETWEEN v_datum_van
AND v_datum_tot
GROUP BY melding, vakgroep
ORDER BY vakgroep, melding;
END akza_rap_logistiek_samenv;
/
-- Actueel overzicht van vaste kosten (flexkenmerken bij afdelingen)
-- usrdata:
-- Looprondes (p/maand) 2176
-- Dagblad bezorgen (p/maand) 2177
-- Opslag containers 2197
-- Kenmerken
-- Postrondes:
-- Ophaalplaats 1 1295
-- Ophaalplaats 2 1296
-- Ophaalplaats 3 1297
-- Dagbladen:
-- Bezorgplaats 1 1301
-- Dagblad 1 1299
-- Abonnee 1 1300
-- Bezorgplaats 2 1305
-- Dagblad 2 1304
-- Abonnee 2 1303
-- Bezorgplaats 3 1308
-- Dagblad 3 1307
-- Abonnee 3 1309
-- Containers:
-- Aantal containers 1321
CREATE OR REPLACE VIEW akza_v_rap_logistiek_vastkost
AS
SELECT prs_afdeling_omschrijving||oms hide_f_sort,
prs_afdeling_omschrijving fclt_x_afdeling,
'<a class="details" onclick=''FcltMgr.openDetail("appl/prs/prs_afdeling.asp?afd_niveau=2&'||'key='
|| prs_afdeling_key || '")''>'
|| htf.escape_sc(prs_afdeling_omschrijving)
|| '</a>' html_afdeling,
ruimte "ruimte/persoon",
oms,
prs_kostenplaats_nr||' '||prs_kostenplaats_omschrijving fclt_x_kostenplaats,
prs_kostenplaats_omschrijving||'<br/>'||prs_kostenplaats_nr html_kostenplaats,
aantal * fac_usrdata_prijs bedrag,
soort fclt_x_soort
FROM (
SELECT a.prs_afdeling_key,
a.prs_afdeling_omschrijving prs_afdeling_omschrijving,
a.prs_kostenplaats_key,
'Looprondes' soort,
'Postronde' oms,
ra.alg_ruimte_aanduiding ruimte,
1 aantal,
2176 fac_usrdata_key
FROM prs_afdeling a,
prs_kenmerklink kl,
alg_v_ruimte_gegevens ra
WHERE kl.prs_kenmerk_key IN (1295, 1296, 1297)
AND kl.prs_kenmerklink_verwijder IS NULL
AND kl.prs_link_key = a.prs_afdeling_key
AND ra.alg_ruimte_key = fac.safe_to_number(kl.prs_kenmerklink_waarde)
UNION ALL
SELECT a.prs_afdeling_key,
a.prs_afdeling_omschrijving,
a.prs_kostenplaats_key,
'Dagbladen' soort,
dbl.prs_kenmerklink_waarde oms,
abo.prs_kenmerklink_waarde ruimte,
1 aantal,
2177 fac_usrdata_key
FROM prs_afdeling a,
prs_kenmerklink kl,
alg_v_ruimte_gegevens ra,
(SELECT * FROM prs_kenmerklink WHERE prs_kenmerk_key = 1299
AND prs_kenmerklink_verwijder IS NULL) dbl,
(SELECT * FROM prs_kenmerklink WHERE prs_kenmerk_key = 1300
AND prs_kenmerklink_verwijder IS NULL) abo
WHERE kl.prs_kenmerk_key = 1301
AND kl.prs_kenmerklink_verwijder IS NULL
AND kl.prs_link_key = a.prs_afdeling_key
AND ra.alg_ruimte_key = fac.safe_to_number(kl.prs_kenmerklink_waarde)
AND dbl.prs_link_key(+) = a.prs_afdeling_key
AND abo.prs_link_key(+) = a.prs_afdeling_key
UNION ALL
SELECT a.prs_afdeling_key,
a.prs_afdeling_omschrijving,
a.prs_kostenplaats_key,
'Dagbladen' soort,
dbl.prs_kenmerklink_waarde oms,
abo.prs_kenmerklink_waarde ruimte,
1 aantal,
2177 fac_usrdata_key
FROM prs_afdeling a,
prs_kenmerklink kl,
alg_v_ruimte_gegevens ra,
(SELECT * FROM prs_kenmerklink WHERE prs_kenmerk_key = 1304
AND prs_kenmerklink_verwijder IS NULL) dbl,
(SELECT * FROM prs_kenmerklink WHERE prs_kenmerk_key = 1303
AND prs_kenmerklink_verwijder IS NULL) abo
WHERE kl.prs_kenmerk_key = 1305
AND kl.prs_kenmerklink_verwijder IS NULL
AND kl.prs_link_key = a.prs_afdeling_key
AND ra.alg_ruimte_key = fac.safe_to_number(kl.prs_kenmerklink_waarde)
AND dbl.prs_link_key(+) = a.prs_afdeling_key
AND abo.prs_link_key(+) = a.prs_afdeling_key
UNION ALL
SELECT a.prs_afdeling_key,
a.prs_afdeling_omschrijving,
a.prs_kostenplaats_key,
'Dagbladen' soort,
dbl.prs_kenmerklink_waarde oms,
abo.prs_kenmerklink_waarde ruimte,
1 aantal,
2177 fac_usrdata_key
FROM prs_afdeling a,
prs_kenmerklink kl,
alg_v_ruimte_gegevens ra,
(SELECT * FROM prs_kenmerklink WHERE prs_kenmerk_key = 1307
AND prs_kenmerklink_verwijder IS NULL) dbl,
(SELECT * FROM prs_kenmerklink WHERE prs_kenmerk_key = 1309
AND prs_kenmerklink_verwijder IS NULL) abo
WHERE kl.prs_kenmerk_key = 1308
AND kl.prs_kenmerklink_verwijder IS NULL
AND kl.prs_link_key = a.prs_afdeling_key
AND ra.alg_ruimte_key = fac.safe_to_number(kl.prs_kenmerklink_waarde)
AND dbl.prs_link_key(+) = a.prs_afdeling_key
AND abo.prs_link_key(+) = a.prs_afdeling_key
UNION ALL
SELECT a.prs_afdeling_key,
a.prs_afdeling_omschrijving prs_afdeling_omschrijving,
a.prs_kostenplaats_key,
'Opslag containers' soort,
'Container ('
|| fac.safe_to_number(kl.prs_kenmerklink_waarde)
|| 'x)'
oms,
NULL ruimte,
fac.safe_to_number(kl.prs_kenmerklink_waarde) aantal,
2197 fac_usrdata_key
FROM prs_afdeling a,
prs_kenmerklink kl
WHERE kl.prs_kenmerk_key = 1321
AND kl.prs_kenmerklink_verwijder IS NULL
AND kl.prs_link_key = a.prs_afdeling_key) a,
fac_usrdata ud,
prs_kostenplaats k
WHERE ud.fac_usrdata_key = a.fac_usrdata_key
AND k.prs_kostenplaats_key = a.prs_kostenplaats_key;
--- RUIMTEGEGEVENS, PERSOONSGEGEVENS, INFORMATIEGIDS ---------------------------
-- 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;
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_perslidwerkplek 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;
-- Kentekenoverzicht (nu met flexvelden ipv persoonsgebonden objecten)
-- AKZA#30421: nu met fullnames en aanklikbare namen
CREATE OR REPLACE VIEW akza_v_rap_kentekens
AS
SELECT * FROM
(SELECT prs_perslid_naam_full||'1' hide_f_sort
,prs_perslid_naam_full fclt_x_naam
, '<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/prs/prs_perslid.asp?key='||pf.prs_perslid_key
|| '")''>'
|| htf.escape_sc(prs_perslid_naam_full)
|| '</a>'
html_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_perslid_fullnames pf
,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 = pf.prs_perslid_key
AND knt.prs_kenmerk_key = 1260
AND srt.prs_link_key(+) = pf.prs_perslid_key
AND srt.prs_kenmerk_key(+) = 1280
AND srt.prs_kenmerklink_waarde = ud.fac_usrdata_key(+)
AND mrk.prs_link_key(+) = pf.prs_perslid_key
AND mrk.prs_kenmerk_key(+) = 1281
AND typ.prs_link_key(+) = pf.prs_perslid_key
AND typ.prs_kenmerk_key(+) = 1282
AND klr.prs_link_key(+) = pf.prs_perslid_key
AND klr.prs_kenmerk_key(+) = 1283)
UNION
(SELECT prs_perslid_naam_full||'2' hide_f_sort
,prs_perslid_naam_full fclt_x_naam
, '<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/prs/prs_perslid.asp?key='||pf.prs_perslid_key
|| '")''>'
|| htf.escape_sc(prs_perslid_naam_full)
|| '</a>'
html_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_perslid_fullnames pf
,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 = pf.prs_perslid_key
AND knt.prs_kenmerk_key = 1284
AND srt.prs_link_key(+) = pf.prs_perslid_key
AND srt.prs_kenmerk_key(+) = 1285
AND srt.prs_kenmerklink_waarde = ud.fac_usrdata_key(+)
AND mrk.prs_link_key(+) = pf.prs_perslid_key
AND mrk.prs_kenmerk_key(+) = 1286
AND typ.prs_link_key(+) = pf.prs_perslid_key
AND typ.prs_kenmerk_key(+) = 1287
AND klr.prs_link_key(+) = pf.prs_perslid_key
AND klr.prs_kenmerk_key(+) = 1288)
UNION
(SELECT prs_perslid_naam_full||'3' hide_f_sort
,prs_perslid_naam_full fclt_x_naam
, '<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/prs/prs_perslid.asp?key='||pf.prs_perslid_key
|| '")''>'
|| htf.escape_sc(prs_perslid_naam_full)
|| '</a>'
html_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_perslid_fullnames pf
,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 = pf.prs_perslid_key
AND knt.prs_kenmerk_key = 1289
AND srt.prs_link_key(+) = pf.prs_perslid_key
AND srt.prs_kenmerk_key(+) = 1290
AND srt.prs_kenmerklink_waarde = ud.fac_usrdata_key(+)
AND mrk.prs_link_key(+) = pf.prs_perslid_key
AND mrk.prs_kenmerk_key(+) = 1291
AND typ.prs_link_key(+) = pf.prs_perslid_key
AND typ.prs_kenmerk_key(+) = 1292
AND klr.prs_link_key(+) = pf.prs_perslid_key
AND klr.prs_kenmerk_key(+) = 1293)
ORDER BY hide_f_sort;
-- AKZA#30584: Rapportage ruimte- en gebouwbeheerders (delegates) voor eindgebruikers
-- alg_kenmerk 1160 Areadelegate
-- alg_kenmerk 1180 Reserve Area delegate
-- alg_kenmerk 1181 Reserve Building delegate
-- alg_kenmerk 1182 Supervisor
-- alg_kenmerk 1183 Building delegate
-- alg_kenmerk 1184 Evacuation
-- alg_kenmerk 1185 Reserve Area delegate (res)
-- alg_kenmerk 1200 Reserve Ontruimingsfuctionaris
CREATE OR REPLACE VIEW akza_v_rap_areadelegates
AS
SELECT al.alg_locatie_code||'-'||og.alg_gebouw_code||'-'||og.alg_verdieping_code||'-'||og.alg_ruimte_nr hide_f_sort,
al.alg_locatie_code fclt_f_locatie,
og.alg_gebouw_code fclt_f_gebouw,
og.alg_verdieping_code fclt_f_verdieping,
og.alg_ruimte_nr||' ('||og.alg_ruimte_omschrijving||')' fclt_f_ruimte,
areadel.prs_perslid_naam_full areagedelegeerde,
areares.prs_perslid_naam_full reserve_areagedelegeerde,
arearesres.prs_perslid_naam_full res_reserve_areagedelegeerde,
builddel.prs_perslid_naam_full gebouwgedelegeerde,
buildres.prs_perslid_naam_full reserve_gebouwgedelegeerde,
superv.prs_perslid_naam_full supervisor,
evac.prs_perslid_naam_full ontruimingsfunctionaris,
evacres.prs_perslid_naam_full res_ontruimingsfunctionaris
FROM alg_v_aanweziglocatie al,
alg_v_onroerendgoed_gegevens og,
(SELECT ok.alg_onrgoed_key alg_ruimte_key,
pf.prs_perslid_key,
pf.prs_perslid_naam_full
FROM alg_onrgoedkenmerk ok, prs_v_perslid_fullnames pf
WHERE ok.alg_onrgoed_niveau = 'R' AND ok.alg_kenmerk_key = 1160
AND ok.alg_onrgoedkenmerk_verwijder IS NULL
AND fac.safe_to_number(ok.alg_onrgoedkenmerk_waarde) = pf.prs_perslid_key) areadel,
(SELECT ok.alg_onrgoed_key alg_ruimte_key,
pf.prs_perslid_key,
pf.prs_perslid_naam_full
FROM alg_onrgoedkenmerk ok, prs_v_perslid_fullnames pf
WHERE ok.alg_onrgoed_niveau = 'R' AND ok.alg_kenmerk_key = 1180
AND ok.alg_onrgoedkenmerk_verwijder IS NULL
AND fac.safe_to_number(ok.alg_onrgoedkenmerk_waarde) = pf.prs_perslid_key) areares,
(SELECT ok.alg_onrgoed_key alg_ruimte_key,
pf.prs_perslid_key,
pf.prs_perslid_naam_full
FROM alg_onrgoedkenmerk ok, prs_v_perslid_fullnames pf
WHERE ok.alg_onrgoed_niveau = 'R' AND ok.alg_kenmerk_key = 1185
AND ok.alg_onrgoedkenmerk_verwijder IS NULL
AND fac.safe_to_number(ok.alg_onrgoedkenmerk_waarde) = pf.prs_perslid_key) arearesres,
(SELECT ok.alg_onrgoed_key alg_ruimte_key,
pf.prs_perslid_key,
pf.prs_perslid_naam_full
FROM alg_onrgoedkenmerk ok, prs_v_perslid_fullnames pf
WHERE ok.alg_onrgoed_niveau = 'R' AND ok.alg_kenmerk_key = 1183
AND ok.alg_onrgoedkenmerk_verwijder IS NULL
AND fac.safe_to_number(ok.alg_onrgoedkenmerk_waarde) = pf.prs_perslid_key) builddel,
(SELECT ok.alg_onrgoed_key alg_ruimte_key,
pf.prs_perslid_key,
pf.prs_perslid_naam_full
FROM alg_onrgoedkenmerk ok, prs_v_perslid_fullnames pf
WHERE ok.alg_onrgoed_niveau = 'R' AND ok.alg_kenmerk_key = 1181
AND ok.alg_onrgoedkenmerk_verwijder IS NULL
AND fac.safe_to_number(ok.alg_onrgoedkenmerk_waarde) = pf.prs_perslid_key) buildres,
(SELECT ok.alg_onrgoed_key alg_ruimte_key,
pf.prs_perslid_key,
pf.prs_perslid_naam_full
FROM alg_onrgoedkenmerk ok, prs_v_perslid_fullnames pf
WHERE ok.alg_onrgoed_niveau = 'R' AND ok.alg_kenmerk_key = 1182
AND ok.alg_onrgoedkenmerk_verwijder IS NULL
AND fac.safe_to_number(ok.alg_onrgoedkenmerk_waarde) = pf.prs_perslid_key) superv,
(SELECT ok.alg_onrgoed_key alg_ruimte_key,
pf.prs_perslid_key,
pf.prs_perslid_naam_full
FROM alg_onrgoedkenmerk ok, prs_v_perslid_fullnames pf
WHERE ok.alg_onrgoed_niveau = 'R' AND ok.alg_kenmerk_key = 1184
AND ok.alg_onrgoedkenmerk_verwijder IS NULL
AND fac.safe_to_number(ok.alg_onrgoedkenmerk_waarde) = pf.prs_perslid_key) evac,
(SELECT ok.alg_onrgoed_key alg_ruimte_key,
pf.prs_perslid_key,
pf.prs_perslid_naam_full
FROM alg_onrgoedkenmerk ok, prs_v_perslid_fullnames pf
WHERE ok.alg_onrgoed_niveau = 'R' AND ok.alg_kenmerk_key = 1200
AND ok.alg_onrgoedkenmerk_verwijder IS NULL
AND fac.safe_to_number(ok.alg_onrgoedkenmerk_waarde) = pf.prs_perslid_key) evacres
WHERE og.alg_locatie_key = al.alg_locatie_key
AND og.alg_ruimte_key IS NOT NULL
AND areadel.alg_ruimte_key(+) = og.alg_ruimte_key
AND areares.alg_ruimte_key(+) = og.alg_ruimte_key
AND arearesres.alg_ruimte_key(+) = og.alg_ruimte_key
AND builddel.alg_ruimte_key(+) = og.alg_ruimte_key
AND buildres.alg_ruimte_key(+) = og.alg_ruimte_key
AND superv.alg_ruimte_key(+) = og.alg_ruimte_key
AND evac.alg_ruimte_key(+) = og.alg_ruimte_key
AND evacres.alg_ruimte_key(+) = og.alg_ruimte_key
AND ( areadel.alg_ruimte_key IS NOT NULL
OR areares.alg_ruimte_key IS NOT NULL
OR arearesres.alg_ruimte_key IS NOT NULL
OR builddel.alg_ruimte_key IS NOT NULL
OR buildres.alg_ruimte_key IS NOT NULL
OR superv.alg_ruimte_key IS NOT NULL
OR evac.alg_ruimte_key IS NOT NULL
OR evacres.alg_ruimte_key IS NOT NULL);
--- OBJECTBEHEER ---------------------------------------------------------------
-- AKZA#29494: Labels met QR-code voor objecten
CREATE OR REPLACE VIEW akza_v_ins_qrc
AS
SELECT i.ins_deel_omschrijving hide_f_sort,
b.fac_bookmark_naam fclt_f_bookmark,
i.ins_discipline_key fclt_3d_discipline_key,
l.alg_locatie_key fclt_3d_locatie_key,
l.alg_locatie_omschrijving fclt_f_locatie,
o.alg_gebouw_omschrijving fclt_f_gebouw,
o.alg_plaatsaanduiding plaats,
s.ins_srtdeel_omschrijving fclt_f_objectsoort,
i.ins_deel_omschrijving fclt_f_identificatie,
i.ins_deel_key,
(SELECT r.alg_ruimte_omschrijving
FROM alg_ruimte r
WHERE r.alg_ruimte_key = i.ins_alg_ruimte_key)
soortruimte,
s.ins_srtdeel_code,
s.ins_srtdeel_key,
i.ins_alg_ruimte_type,
o.alg_gebouw_code,
o.alg_verdieping_code,
l.alg_district_key,
i.ins_alg_ruimte_key,
b.fac_bookmark_id hide_f_bookmark_id
FROM ins_deel i,
ins_v_alg_overzicht o,
ins_srtdeel s,
alg_locatie l,
alg_district di,
fac_bookmark b
WHERE b.fac_bookmark_path IN ('appl/pda/ins_deel.asp',
'appl/ins/ins_deel.asp')
AND ins_deel_verwijder IS NULL
AND COALESCE(i.ins_deel_vervaldatum, SYSDATE+1) > SYSDATE
AND i.ins_deel_module = 'INS'
AND i.ins_deel_parent_key IS NULL
AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key
AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type
AND i.ins_alg_ruimte_type IN ('T', 'R', 'W')
AND o.alg_locatie_key = i.ins_alg_locatie_key
AND i.ins_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = di.alg_district_key
AND s.ins_srtdeel_key = i.ins_srtdeel_key
UNION ALL
SELECT i.ins_deel_omschrijving hide_f_sort,
b.fac_bookmark_naam fclt_f_bookmark,
i.ins_discipline_key fclt_3d_discipline_key,
l.alg_locatie_key fclt_3d_locatie_key,
l.alg_locatie_omschrijving fclt_f_locatie,
o.alg_gebouw_omschrijving fclt_f_gebouw,
o.alg_plaatsaanduiding plaats,
s.ins_srtdeel_omschrijving fclt_f_objectsoort,
i.ins_deel_omschrijving fclt_f_identificatie,
i.ins_deel_key,
(SELECT r.alg_ruimte_omschrijving
FROM alg_ruimte r
WHERE r.alg_ruimte_key = i.ins_alg_ruimte_key)
soortruimte,
s.ins_srtdeel_code,
s.ins_srtdeel_key,
i.ins_alg_ruimte_type,
o.alg_gebouw_code,
o.alg_verdieping_code,
l.alg_district_key,
i.ins_alg_ruimte_key,
b.fac_bookmark_id hide_f_bookmark_id
FROM ins_deel i,
ins_v_alg_overzicht o,
ins_srtdeel s,
ins_srtgroep g,
alg_locatie l,
alg_district di,
fac_bookmark b,
mld_stdmelding sm
WHERE b.fac_bookmark_path IN ('appl/pda/melding.asp',
'appl/mld/melding.asp')
-- AND b.fac_bookmark_query LIKE '%stdm_key='||sm.mld_stdmelding_key||'%'
AND (b.fac_bookmark_expire IS NULL OR b.fac_bookmark_expire > SYSDATE)
AND ins_deel_verwijder IS NULL
AND i.ins_deel_module = 'INS'
AND i.ins_deel_parent_key IS NULL
AND s.ins_srtdeel_key = i.ins_srtdeel_key
AND g.ins_srtgroep_key = s.ins_srtgroep_key
AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key
AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type
AND i.ins_alg_ruimte_type IN ('T', 'R', 'W')
AND o.alg_locatie_key = i.ins_alg_locatie_key
AND i.ins_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = di.alg_district_key
AND sm.ins_srtinst_key IS NOT NULL
AND sm.ins_srtinst_key = DECODE(sm.ins_srtinst_niveau,
'S', i.ins_srtdeel_key,
'G', s.ins_srtgroep_key,
'D', g.ins_discipline_key);
CREATE OR REPLACE VIEW akza_v_ins_qrc_single
AS
SELECT *
FROM akza_v_ins_qrc;
CREATE OR REPLACE VIEW akza_v_ins_qrc_mld
AS
SELECT i.ins_deel_omschrijving hide_f_sort,
l.alg_locatie_code||' '||l.alg_locatie_omschrijving fclt_f_locatie,
o.alg_gebouw_omschrijving fclt_f_gebouw,
o.alg_plaatsaanduiding fclt_f_plaats,
d.ins_discipline_omschrijving fclt_f_discipline,
g.ins_srtgroep_omschrijving fclt_f_objectgroep,
s.ins_srtdeel_omschrijving fclt_f_objectsoort,
i.ins_deel_omschrijving fclt_f_identificatie,
d.ins_discipline_omschrijving||' / '||sm.mld_stdmelding_omschrijving fclt_f_melding,
i.ins_deel_key,
s.ins_srtdeel_key,
o.alg_gebouw_code,
o.alg_verdieping_code,
i.ins_discipline_key fclt_3d_discipline_key,
l.alg_locatie_key fclt_3d_locatie_key,
i.ins_alg_ruimte_type,
i.ins_alg_ruimte_key,
b.fac_bookmark_id hide_f_bookmark_id
FROM ins_deel i,
ins_v_alg_overzicht o,
ins_srtdeel s,
ins_srtgroep g,
ins_discipline d,
alg_locatie l,
fac_bookmark b,
mld_stdmelding sm
WHERE b.fac_bookmark_naam = 'QRC_MELDING'
AND (b.fac_bookmark_expire IS NULL OR b.fac_bookmark_expire > SYSDATE)
AND ins_deel_verwijder IS NULL
AND i.ins_deel_module = 'INS'
AND i.ins_deel_parent_key IS NULL
AND s.ins_srtdeel_key = i.ins_srtdeel_key
AND g.ins_srtgroep_key = s.ins_srtgroep_key
AND d.ins_discipline_key = g.ins_discipline_key
AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key
AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type
AND i.ins_alg_ruimte_type IN ('T', 'R', 'W')
AND o.alg_locatie_key = i.ins_alg_locatie_key
AND i.ins_alg_locatie_key = l.alg_locatie_key
AND sm.ins_srtinst_key IS NOT NULL
AND sm.ins_srtinst_key = DECODE(sm.ins_srtinst_niveau,
'S', i.ins_srtdeel_key,
'G', s.ins_srtgroep_key,
'D', g.ins_discipline_key);
CREATE OR REPLACE VIEW akza_v_noti_objbeh
AS
WITH taken AS (
SELECT d.*,
xcp.ins_srtcontroledl_xcp_periode
FROM (
SELECT sc.ins_srtcontrole_key,
d.ins_deel_key,
d.ins_deel_omschrijving,
sc.ins_srtcontrole_periode,
sd.ins_srtdeel_omschrijving,
a.prs_kostenplaats_key,
pfa.prs_perslid_key,
pfa.prs_perslid_naam_full,
ud.fac_usrdata_key,
ud.fac_usrdata_omschr
FROM ins_srtcontrole sc,
ins_discipline di,
ins_v_aanwezigsrtgroep sg,
ins_v_aanwezigsrtdeel sd,
ins_v_aanwezigdeel d,
prs_perslid p,
prs_afdeling a,
prs_v_perslid_fullnames_all pfa,
(SELECT * FROM ins_kenmerkdeel kd, ins_kenmerk k
WHERE kd.ins_kenmerkdeel_verwijder IS NULL
AND kd.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = 3742) kd, -- Uitvoerder regime
fac_usrdata ud
WHERE sd.ins_srtdeel_key = d.ins_srtdeel_key
AND sg.ins_srtgroep_key = sd.ins_srtgroep_key
AND di.ins_discipline_key = sg.ins_discipline_key
AND COALESCE(d.ins_deel_vervaldatum, SYSDATE+1) > SYSDATE
AND p.prs_perslid_key = d.prs_perslid_key_beh
AND a.prs_afdeling_key(+) = p.prs_afdeling_key
AND pfa.prs_perslid_key = d.prs_perslid_key_beh
AND kd.ins_deel_key = d.ins_deel_key
AND kd.ins_kenmerkdeel_waarde != '4321' -- 'N.v.t.'
AND ud.fac_usrdata_key = fac.safe_to_number(kd.ins_kenmerkdeel_waarde)
AND sc.ins_srtinstallatie_key = DECODE(ins_srtcontrole_niveau,
'D', di.ins_discipline_key,
'G', sg.ins_srtgroep_key,
'S', sd.ins_srtdeel_key) ) d
LEFT OUTER JOIN
ins_srtcontroledl_xcp xcp
ON xcp.ins_deel_key = d.ins_deel_key
AND xcp.ins_srtcontrole_key = d.ins_srtcontrole_key
WHERE COALESCE(xcp.ins_srtcontroledl_xcp_periode, d.ins_srtcontrole_periode) > 0
-- De eerste paar dagen van volgende maand ook vast meepakken, dat scheelt verrassingen
AND fac.nextcyclusdatedeel(d.ins_deel_key, d.ins_srtcontrole_key, 1) < ADD_MONTHS(SYSDATE, 1) + 3
)
SELECT 'mail' methode,
prs_perslid_key to_key,
prs_perslid_naam_full to_omschr,
NULL ref_key,
NULL ref_omschr,
NULL kpn_key,
COUNT(*) aantal,
LISTAGG(ins_deel_omschrijving, ', ') WITHIN GROUP (ORDER BY ins_deel_omschrijving) AS betreft
FROM taken
WHERE fac_usrdata_key = 4318 -- Objectbeheerder
GROUP BY prs_perslid_key, prs_perslid_naam_full
UNION ALL
SELECT 'melding' methode,
fac_usrdata_key to_key,
fac_usrdata_omschr to_omschr,
prs_perslid_key ref_key,
prs_perslid_naam_full ref_omschr,
prs_kostenplaats_key kpn_key,
COUNT(*) aantal,
LISTAGG(ins_deel_omschrijving, ', ') WITHIN GROUP (ORDER BY ins_deel_omschrijving) AS betreft
FROM taken
WHERE fac_usrdata_key IN (4319, 4320) -- TS-EIA / TS-WTB
GROUP BY fac_usrdata_key, fac_usrdata_omschr, prs_kostenplaats_key, prs_perslid_key, prs_perslid_naam_full
ORDER BY methode, to_omschr, ref_omschr;
CREATE OR REPLACE VIEW akza_v_taken_stoplicht
AS
WITH taken AS (
SELECT d.*,
fac.nextcyclusdatedeel(d.ins_deel_key, d.ins_srtcontrole_key, 1) datum
FROM (
SELECT d.ins_alg_ruimte_key,
d.ins_deel_key,
d.ins_deel_omschrijving,
sd.ins_srtdeel_omschrijving,
sc.ins_srtcontrole_key,
sc.ins_srtcontrole_periode
FROM ins_srtcontrole sc,
ins_discipline di,
ins_v_aanwezigsrtgroep sg,
ins_v_aanwezigsrtdeel sd,
ins_v_aanwezigdeel d,
prs_perslid p
WHERE sd.ins_srtdeel_key = d.ins_srtdeel_key
AND sg.ins_srtgroep_key = sd.ins_srtgroep_key
AND di.ins_discipline_key = sg.ins_discipline_key
AND COALESCE(d.ins_deel_vervaldatum, SYSDATE+1) > SYSDATE
AND p.prs_perslid_key = d.prs_perslid_key_beh
AND d.ins_alg_ruimte_type = 'R'
AND sc.ins_srtinstallatie_key = DECODE(ins_srtcontrole_niveau,
'D', di.ins_discipline_key,
'G', sg.ins_srtgroep_key,
'S', sd.ins_srtdeel_key) ) d
LEFT OUTER JOIN
ins_srtcontroledl_xcp xcp
ON xcp.ins_deel_key = d.ins_deel_key
AND xcp.ins_srtcontrole_key = d.ins_srtcontrole_key
WHERE COALESCE(xcp.ins_srtcontroledl_xcp_periode, d.ins_srtcontrole_periode) > 0
)
SELECT r.*,
t.status
FROM (
SELECT l.alg_locatie_code,
g.alg_gebouw_code,
g.alg_gebouw_key,
v.alg_verdieping_code,
v.alg_verdieping_key,
r.alg_ruimte_nr,
r.alg_ruimte_key
FROM alg_v_aanwezigruimte r,
alg_v_aanwezigverdieping v,
alg_v_aanweziggebouw g,
alg_v_aanweziglocatie l
WHERE v.alg_verdieping_key = r.alg_verdieping_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND l.alg_locatie_key = g.alg_locatie_key) r
LEFT OUTER JOIN (
SELECT ins_alg_ruimte_key alg_ruimte_key,
CASE
WHEN MIN(datum) < SYSDATE
THEN 1 -- 'rood'
WHEN MIN(datum) < ADD_MONTHS(SYSDATE, 1)
THEN 2 -- 'geel'
ELSE
3 -- 'groen'
END status
FROM taken
GROUP BY ins_alg_ruimte_key) t
ON r.alg_ruimte_key = t.alg_ruimte_key;
CREATE OR REPLACE VIEW akza_v_cad_taken_stoplicht
AS
SELECT alg_ruimte_key,
DECODE(status,
1, 'rood',
2, 'geel',
3, 'groen') waarde
FROM akza_v_taken_stoplicht;
--- SLEUTELBEHEER --------------------------------------------------------------
CREATE OR REPLACE VIEW akza_v_rap_sleutelplan
(
EXTRA_KEY,
FCLT_F_BEZITTER,
PERSONEELSNR,
AFDELING,
TELEFOONNR,
FCLT_F_SLUITPLAN,
SOORT,
SLEUTELNR,
DATUM,
OPMERKING
)
AS
SELECT p1.prs_perslid_key,
p.prs_perslid_naam_full,
p1.prs_perslid_nr,
a.prs_afdeling_naam1,
p1.prs_perslid_telefoonnr,
ins_srtdeel_code Sluitplan,
s.ins_srtdeel_omschrijving Soort,
dl.ins_deel_omschrijving Sleutelnr,
TO_CHAR (
(SELECT MAX (tr.fac_tracking_datum)
FROM fac_tracking tr, fac_srtnotificatie str
WHERE tr.fac_srtnotificatie_key =
str.fac_srtnotificatie_key
AND (str.fac_srtnotificatie_xmlnode IN ('deel'))
AND FAC_SRTNOTIFICATIE_CODE = 'INSOUT'
AND dl.ins_deel_key = tr.fac_tracking_refkey),
'DD-MM-YYYY'
)
Datum,
pa.alg_plaatsaanduiding
|| ' ('
|| r.alg_ruimte_omschrijving
|| ')'
Opmerking
FROM ins_v_aanwezigdeel dl,
ins_v_aanwezigsrtdeel s,
prs_v_perslid_fullnames_all p,
prs_v_aanwezigperslid p1,
alg_ruimte r,
ins_v_alg_overzicht pa,
prs_v_afdeling a
WHERE s.ins_srtdeel_key = dl.ins_srtdeel_key
AND s.ins_srtgroep_key = 925
AND dl.ins_alg_ruimte_type_org = 'R'
AND dl.ins_alg_ruimte_key = p.prs_perslid_key
AND p.prs_perslid_key = p1.prs_perslid_key
AND dl.ins_alg_ruimte_key_org IS NOT NULL
AND dl.ins_alg_ruimte_key_org = r.alg_ruimte_key
AND r.alg_ruimte_key = pa.alg_onroerendgoed_keys
AND a.prs_afdeling_key = p1.prs_afdeling_key
ORDER BY prs_perslid_naam_full, sluitplan;
CREATE OR REPLACE VIEW akza_v_noti_sleutelplan
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT 'CUST01',
NULL,
fac.safe_to_number (prs_perslid_key_voor),
'Overzicht sleutels',
(SELECT fac_usrrap_key
FROM fac_usrrap
WHERE fac_usrrap_omschrijving = 'AKZA_V_RAP_SLEUTELPLAN'),
fac.safe_to_number (prs_perslid_key_voor)
FROM mld_melding,
fac_tracking tr,
fac_srtnotificatie str
WHERE mld_stdmelding_key = 1061
AND mld_melding_status IN (5, 6)
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND ( (tr.fac_tracking_refkey = mld_melding_key
AND str.fac_srtnotificatie_xmlnode IN ('melding')))
AND fac_srtnotificatie_code = 'MLDAFM'
AND tr.fac_tracking_datum >
(SELECT fac_notificatie_job_nextrun
- fac_notificatie_job_interval / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'AKZA_V_NOTI_SLEUTELPLAN');
-- AKZA#30566 notificatie tbv einde tijdelijke badge
CREATE OR REPLACE VIEW AKZA_V_NOTI_MLD_EINDTMPBADGE
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT 'CUST03',
NULL,
m.prs_perslid_key,
'Melding einde tijdelijke badge (' || m.mld_melding_key || ')',
m.mld_melding_key,
NULL
FROM mld_kenmerkmelding km, mld_melding m
WHERE mld_kenmerk_key = 305
AND mld_kenmerkmelding_verwijder IS NULL
AND mld_kenmerkmelding_waarde IS NOT NULL
AND m.mld_melding_key = km.mld_melding_key
AND fac.safe_to_date (km.mld_kenmerkmelding_waarde, 'DD-MM-YYYY') =
TRUNC (SYSDATE + 7);
--- EXPORTS --------------------------------------------------------------------
-- FACILITOR beoordeelt maandelijks welke taken in de komende periode moeten worden uitgevoerd,
-- of al uitgevoerd hadden moeten zijn. De beheerders van de objecten van deze taken worden
-- hiervan op de hoogte gesteld.
-- * Is de beheerder tevens de eigenaar (owner), dan krijgt deze hierover een e-mail, met een
-- link naar een overzicht van taken op zijn objecten
-- * Ligt het beheer bij TS (EIA of WTB), dan wordt per objectbeheerder een melding aangemaakt,
-- die vanzelf in de actielijst van de juiste backoffice terecht komen. Melder = objectbeheerder
-- (plus kostenplaats).
-- NB: een owner ontvangt maximaal <20><>n e-mail per maand; men ontvangt niet over ieder object
-- een e-mail en er wordt alleen een e-mail verzonden als er in de komende periode taken op
-- objecten van de owner uitgevoerd moeten worden (of taken te laat zijn).
CREATE OR REPLACE PROCEDURE akza_export_task_monthly(p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2(200);
v_errorhint VARCHAR2(100);
v_aanduiding VARCHAR2(100);
v_melding_key NUMBER(10);
CURSOR c
IS
SELECT * FROM akza_v_noti_objbeh;
BEGIN
v_errorhint := 'init';
DELETE imp_log WHERE imp_log_applicatie = p_applname;
FOR rec IN c
LOOP
BEGIN
IF (rec.methode = 'mail')
THEN
v_aanduiding := rec.ref_omschr || ' ('||rec.methode||') ';
ELSE
v_aanduiding := rec.to_omschr||'/'||rec.ref_omschr || ' ('||rec.methode||') ';
END IF;
IF (rec.methode = 'mail')
THEN
v_errorhint := 'Add mail';
INSERT INTO fac_notificatie (
fac_srtnotificatie_key,
fac_notificatie_status,
prs_perslid_key_receiver,
fac_notificatie_receiver_email,
fac_notificatie_oms,
fac_notificatie_refkey,
prs_perslid_key_sender,
fac_notificatie_prioriteit,
fac_notificatie_lang)
SELECT fac_srtnotificatie_key,
2,
rec.to_key,
prs_perslid_email,
rec.aantal||' uit te voeren taken deze maand',
rec.to_key,
7520,
2,
'NL'
FROM fac_srtnotificatie,
prs_perslid
WHERE fac_srtnotificatie_code = 'CUST05'
AND prs_perslid_key = rec.to_key;
fac.writelog (p_applname, 'I',
'Mail naar '||rec.to_omschr,
rec.aantal||' objecten');
ELSE
v_errorhint := 'Add melding';
INSERT INTO mld_melding (
mld_melding_onderwerp,
mld_melding_omschrijving,
mld_kosten_klant,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_stdmelding_key,
mld_alg_locatie_key,
mld_melding_datum,
mld_meldbron_key,
mld_melding_status,
mld_melding_module,
mld_melding_spoed)
VALUES (
'Taken voor '||rec.ref_omschr,
rec.aantal||' uit te voeren taken deze maand voor objectbeheerder '||rec.ref_omschr
||CHR(13)||CHR(10)||'Betreft object(en): '||rec.betreft,
1,
rec.ref_key,
rec.ref_key,
rec.kpn_key,
DECODE(rec.to_key,
4320, 1481, -- EIA / Uitvoering regime
4319, 1482), -- WTB / Uitvoering regime
121, -- DEV
SYSDATE,
45, -- System
NULL, -- Nieuw
'MLD',
3)
RETURNING mld_melding_key
INTO v_melding_key;
v_errorhint := 'Set status';
mld.setmeldingstatus (v_melding_key, 2, 7520);
fac.writelog (p_applname, 'I',
'Melding voor '||rec.to_omschr||', namens '||rec.ref_omschr,
rec.aantal||' objecten');
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
fac.writelog (p_applname, 'E',
'Error ' || v_aanduiding || oracle_err_num || '/' || oracle_err_mes,
v_errorhint);
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
fac.writelog (p_applname, 'E',
'Error ' || oracle_err_num || '/' || oracle_err_mes,
v_errorhint);
END akza_export_task_monthly;
/
-- Rapport om te check of alle kostenplaats- en companygegevens volledig zijn ingevuld.
CREATE OR REPLACE VIEW akza_v_rap_kpn_check
AS
SELECT DISTINCT k.prs_kostenplaats_nr||'-'||k.debiteurnr hide_f_sort,
k.fclt_kostenplaats_nr fclt_f_kostenplaats_nr,
k.prs_kostenplaats_omschrijving fclt_x_kostenplaats_naam,
'<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/prs/kpn_kpn.asp?mode=viewUpdate&'||'key='||k.prs_kostenplaats_key
|| '")''>'
|| htf.escape_sc(k.prs_kostenplaats_omschrijving)
|| '</a>'
html_kostenplaats_naam,
k.debiteurnr fclt_f_debiteurnr,
'<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/prs/kpn_kpngroep.asp?mode=viewUpdate&'||'key='||k.prs_kostenplaatsgrp_key
|| '")''>'
|| htf.escape_sc(k.prs_kostenplaatsgrp_oms)
|| '</a>'
html_kostenplaatsgroep,
ac.companycode fclt_f_companycode,
'<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/prs/prs_show_afdeling.asp?afd_niveau=1&'||'afd_key='||ac.company_key
|| '")''>'
|| htf.escape_sc(ac.company_oms)
|| '</a>'
html_company_omschrijving,
DECODE( ac.companycode,
NULL, 'Nee',
'Ja') fclt_f_ok
FROM akza_v_kostenplaats k,
(SELECT * FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1380
AND prs_kenmerklink_verwijder IS NULL) kl,
akza_v_afdelingcompany ac
WHERE k.prs_kostenplaats_verwijder IS NULL
AND kl.prs_kenmerklink_waarde(+) = k.debiteurnr
AND ac.prs_afdeling_key(+) = kl.prs_link_key;
-- AKZA#37566 Rapport met ruimte gegevens.
create or replace view akza_v_rap_ruimte_gegevens
(
alg_locatie_omschrijving,
alg_locatie_code,
alg_gebouw_omschrijving,
alg_verdieping_omschrijving,
alg_verdieping_volgnr,
alg_verdieping_code,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_srtruimte_omschrijving,
alg_ruimte_vloer_omschrijving,
alg_ruimte_bruto_vloeropp,
alg_ruimte_opp_gevelglas,
alg_ruimte_opp_separatieglas,
alg_ruimte_opp_gevelbekleding,
alg_ruimte_aanduiding,
alg_ruimte_omtrek,
alg_ruimte_inhoud,
alg_ruimte_getekend,
alg_ruimte_opmerking,
alg_ruimte_opp_alt1,
alg_ruimte_opp_alt2
)
as
select alg_locatie_omschrijving,
alg_locatie_code,
alg_gebouw_omschrijving,
alg_verdieping_omschrijving,
alg_verdieping_volgnr,
alg_verdieping_code,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_srtruimte_omschrijving,
alg_ruimte_vloer_omschrijving,
alg_ruimte_bruto_vloeropp,
alg_ruimte_opp_gevelglas,
alg_ruimte_opp_separatieglas,
alg_ruimte_opp_gevelbekleding,
alg_ruimte_aanduiding,
alg_ruimte_omtrek,
alg_ruimte_inhoud,
alg_ruimte_getekend,
alg_ruimte_opmerking,
alg_ruimte_opp_alt1,
alg_ruimte_opp_alt2
from alg_v_ruimte_gegevens;
--------------------------------------------------------------------------------------------------
------------------------------- IMPORTS ----------------------------------------------------------
--------------------------------------------------------------------------------------------------
--- RUYS -----------------------------------------------------------------------
-- Maandelijkse import voor kosten van postale diensten, geadministreerd in Ruys.
-- Data mag alleen verwerkt worden, als het importbestand volledig correct is (qua structuur in ieder geval)
-- Daarom:
-- * Als een foutieve regel wordt gevonden, worden opvolgende regels niet meer ingelezen
-- * Als een of meer foutieve regels gevonden zijn, wordt de importtabel weer geleegd, zodat de
-- update-routine effectief niets doet.
CREATE OR REPLACE PROCEDURE akza_import_ruys (
p_import_key IN NUMBER
)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
c_max_errors NUMBER := 100;
v_newline VARCHAR2 (1000); -- Input line
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_ongeldig NUMBER (1);
v_count_tot NUMBER (10);
v_count_error NUMBER (10);
v_count_import NUMBER (10);
v_count NUMBER;
-- De importvelden:
v_kpn VARCHAR2 (256);
v_kpn_grp VARCHAR2 (256);
v_bedrag VARCHAR2 (256);
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
fac.imp_writelog (p_import_key, 'S',
'Start inlezen importbestand in importtabel',
TO_CHAR(SYSDATE, 'DD-MM-YYYY HH24:MI') );
DELETE FROM akza_imp_ruys;
-- We gaan uit van een geldig bestand, mogelijk verandert dat onderweg
header_is_valid := 0;
v_ongeldig := 0;
v_count_tot := 0;
v_count_error := 0;
v_count_import := 0;
FOR rec IN c
LOOP
BEGIN
v_newline := rec.fac_imp_file_line;
v_aanduiding := '';
v_errorhint := 'Fout bij opvragen te importeren rij';
-- Lees alle veldwaarden
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 1, v_kpn);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 2, v_kpn_grp);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 3, v_bedrag);
v_aanduiding := '[' || v_kpn || '(' || v_kpn_grp || '): ' || v_bedrag || '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
-- NB: doordat deze import een stylesheet gebruikt, zullen deze kolommen altijd kloppen,
-- ook al wordt een verkeerd bestand ingelezen (mits de stylesheet klopt)
IF (header_is_valid = 0)
THEN
IF UPPER(v_kpn) = 'KP_ZOEKNUMMER'
AND UPPER(v_kpn_grp) = 'DEB_NUMMER'
AND UPPER(v_bedrag) = 'TOTALE_PRIJS'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errorhint := 'Ongeldige kostenplaatscode';
v_kpn := TRIM(v_kpn);
IF (v_kpn IS NOT NULL)
THEN
IF LENGTH (v_kpn) > 10
THEN
v_ongeldig := 1;
v_count_error := v_count_error + 1;
fac.imp_writelog (p_import_key, 'W',
v_aanduiding || 'Kostenplaatscode te lang',
'Er worden geen regels meer in de importtabel geplaatst.' );
END IF;
ELSE
v_ongeldig := 1;
v_count_error := v_count_error + 1;
fac.imp_writelog (p_import_key, 'W',
v_aanduiding || 'Kostenplaatscode ontbreekt',
'Er worden geen regels meer in de importtabel geplaatst.' );
END IF;
v_errorhint := 'Ongeldige kostenplaatsgroep';
v_kpn_grp := TRIM(v_kpn_grp);
IF (v_kpn_grp IS NOT NULL)
THEN
IF LENGTH (v_kpn_grp) > 10
THEN
v_ongeldig := 1;
v_count_error := v_count_error + 1;
fac.imp_writelog (p_import_key, 'W',
v_aanduiding || 'Kostenplaatsgroep te lang',
'Er worden geen regels meer in de importtabel geplaatst.' );
END IF;
ELSE
v_ongeldig := 1;
v_count_error := v_count_error + 1;
fac.imp_writelog (p_import_key, 'W',
v_aanduiding || 'Kostenplaatsgroep ontbreekt',
'Er worden geen regels meer in de importtabel geplaatst.' );
END IF;
v_errorhint := 'Ongeldig bedrag';
v_bedrag := TRIM (v_bedrag);
IF (v_bedrag IS NOT NULL)
THEN
IF LENGTH (v_bedrag) > 10
THEN
v_ongeldig := 1;
v_count_error := v_count_error + 1;
fac.imp_writelog (p_import_key, 'W',
v_aanduiding || 'Bedrag te lang',
'Er worden geen regels meer in de importtabel geplaatst.' );
END IF;
ELSE
v_ongeldig := 1;
v_count_error := v_count_error + 1;
fac.imp_writelog (p_import_key, 'W',
v_aanduiding || 'Bedrag ontbreekt',
'Er worden geen regels meer in de importtabel geplaatst.' );
END IF;
-- Insert geformatteerde import record, mits we alleen nog maar correcte regels zijn tegengekomen.
IF v_ongeldig = 0
THEN
BEGIN
v_errorhint :=
'Fout bij toevoegen regel aan importtabel';
INSERT INTO akza_imp_ruys
(kpn, kpn_grp, bedrag)
VALUES
(v_kpn, v_kpn_grp, v_bedrag);
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
v_ongeldig := 1;
fac.imp_writelog
(p_import_key,
'E',
v_aanduiding || v_errormsg,
'Ingelezen regel kan niet worden weggeschreven!'
);
COMMIT;
END;
END IF;
-- Als er teveel foutieve regels zijn, dan zijn we waarschijnlijk een corrupt of verkeerd
-- bestand aan het inlezen. Dan houden we ermee op.
IF (v_count_error > c_max_errors)
THEN
fac.imp_writelog
(p_import_key,
'E',
'Meer dan '||TO_CHAR(c_max_errors)||' fouten gevonden. Import wordt afgebroken.',
'Controleer het importbestand; waarschijnlijk klopt het formaat niet.'
);
EXIT;
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand! Geen header of header niet volgens specificatie.',
'Heeft u wel het juiste bestand ingelezen?'
);
ELSIF (v_ongeldig = 1)
THEN
-- Importtabel leeggooien, zodat klikken op "Verwerken" niets doet. We willen een volledig correct bestand.
DELETE FROM akza_imp_ruys;
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand! Bestand bevat een of meer ongeldige regels.',
'Importtabel geleegd. Corrigeer de fouten en lees het bestand daarna opnieuw in.'
);
ELSE
fac.imp_writelog (p_import_key,
'S',
'Importbestand succesvol ingelezen: '
|| TO_CHAR (v_count_tot) || ' regels.',
'(Dit nummer moet gelijk zijn aan "Ingelezen regels" - 1)'
);
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
-- Importtabel leeggooien, zodat klikken op "Verwerken" niets doet. We willen een volledig correct bestand.
DELETE FROM akza_imp_ruys;
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint
);
COMMIT;
END akza_import_ruys;
/
-- Import voor maandelijkse doorbelasting van postale diensten uit Ruys. Maakt meldingen aan die door
-- de export naar SAP/Foxpro worden doorbelast.
-- Gegevens alleen verwerken als:
-- - geen fouten gevonden bij inlezen (i.e. importtabel niet leeg)
-- - alle in importbestand aanwezige kostenplaatsen ook aanwezig in Facilitor
-- (eerst kostenplaatsen checken en pas als allemaal gevonden de meldingen aanmaken)
CREATE OR REPLACE PROCEDURE akza_update_ruys (
p_import_key IN NUMBER
)
IS
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_tot NUMBER (10);
v_count_error NUMBER (10);
v_count NUMBER (10);
v_sum_bedrag NUMBER (10,2);
v_ongeldig NUMBER (1);
v_test NUMBER (10);
-- Alle kostenplaatsen in het importbestand
CURSOR c
IS
SELECT DISTINCT kpn, kpn_grp
FROM akza_imp_ruys
ORDER BY fac.safe_to_number(kpn);
c_stdmelding_key NUMBER := 1046; -- Melding 'maandrapportage'
c_flex_kpn_key NUMBER := 420; -- Flexkenmerk Kostenplaats
c_flex_bedrag_key NUMBER := 411; -- Flexkenmerk Bedrag
v_kpn_nr VARCHAR2(10);
v_kostenplaats_key NUMBER;
v_totaalbedrag NUMBER;
v_melding_key NUMBER;
-- Subproc
PROCEDURE getKostenplaats(p_kpn IN VARCHAR2,
p_kpn_grp IN VARCHAR2,
p_kpn_key OUT NUMBER)
IS
v_kostenplaatsgrp_key NUMBER;
BEGIN
p_kpn_key := NULL;
-- Eerst kostenplaatsgroep bepalen, daarna binnen die groep de kostenplaats zoeken
v_errorhint := 'Fout bij bepalen kostenplaatsgroep';
SELECT COUNT(*)
INTO v_count
FROM prs_kostenplaatsgrp kg
WHERE kg.prs_kostenplaatsgrp_oms LIKE UPPER(p_kpn_grp)||'%';
-- Geen kostenplaatsgroep gevonden --> error
IF (v_count = 0)
THEN
v_count_error := v_count_error + 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding,
'Geen kostenplaatsgroep gevonden.'
);
-- Als kostenplaatsgroep gevonden, dan kostenplaats zoeken
ELSE
v_errorhint := 'Fout bij ophalen kostenplaatsgroep';
SELECT kg.prs_kostenplaatsgrp_key
INTO v_kostenplaatsgrp_key
FROM prs_kostenplaatsgrp kg
WHERE kg.prs_kostenplaatsgrp_oms LIKE UPPER(p_kpn_grp)||'%';
v_errorhint := 'Fout bij bepalen kostenplaats';
v_kpn_nr := LPAD(p_kpn, 10, '0');
SELECT COUNT(*)
INTO v_count
FROM akza_v_kostenplaats
WHERE prs_kostenplaats_verwijder IS NULL
AND LPAD(prs_kostenplaats_upper, 10, '0') = v_kpn_nr
AND prs_kostenplaatsgrp_key = v_kostenplaatsgrp_key;
-- Geen kostenplaats gevonden --> error
IF (v_count = 0)
THEN
v_count_error := v_count_error + 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding,
'Geen kostenplaats gevonden (binnen kostenplaatsgroep).'
);
-- Kostenplaats gevonden --> key ophalen
ELSE
v_errorhint := 'Fout bij ophalen kostenplaats';
SELECT prs_kostenplaats_key
INTO p_kpn_key
FROM akza_v_kostenplaats
WHERE prs_kostenplaats_verwijder IS NULL
AND LPAD(prs_kostenplaats_upper, 10, '0') = v_kpn_nr
AND prs_kostenplaatsgrp_key = v_kostenplaatsgrp_key;
END IF; -- kpn
END IF; -- kpn_grp
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
v_errorhint
);
END;
BEGIN
fac.imp_writelog (p_import_key, 'S',
'Start verwerken ge<67>mporteerde gegevens',
TO_CHAR(SYSDATE, 'DD-MM-YYYY HH24:MI') );
v_count_tot := 0;
v_count_error := 0;
v_sum_bedrag := 0;
v_aanduiding := '';
v_ongeldig := 0;
-- Staat er eigenlijk wel wat in de importtabel?
SELECT COUNT(*)
INTO v_count
FROM akza_imp_ruys;
IF (v_count = 0)
THEN
fac.imp_writelog (p_import_key, 'S',
'Importtabel is leeg!',
'Niets te verwerken.' );
ELSE
-- Eerst kijken of ik alle kostenplaatsen wel kan vinden. Dan pas meldingen aanmaken.
FOR chck IN c
LOOP
v_aanduiding := 'Kostenplaats ' || chck.kpn || ' (' || chck.kpn_grp || ')';
v_test := NULL;
getKostenplaats(chck.kpn, chck.kpn_grp, v_test);
IF (v_test IS NULL )
THEN
v_ongeldig := 1;
END IF;
END LOOP;
-- Fout(en) gevonden --> afbreken
IF (v_ongeldig = 1)
THEN
fac.imp_writelog (p_import_key,
'E',
'E<EFBFBD>n of meer kostenplaats(groep)en niet gevonden. Import wordt niet verwerkt.',
'Corrigeer de fouten in het importbestand.');
-- Alle kostenplaatsen gevonden --> verwerk importbestand
ELSE
FOR rec IN c
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding := 'Kostenplaats ' || rec.kpn || ' (' || rec.kpn_grp || ')';
-- Kostenplaats-key ophalen
v_errorhint := 'Fout bij ophalen kostenplaats';
getKostenplaats(rec.kpn, rec.kpn_grp, v_kostenplaats_key);
IF (v_kostenplaats_key IS NOT NULL)
THEN
-- Als kostenplaats gevonden, dan melding met totaalbedrag maken
v_errorhint := 'Fout bij bepalen totaalbedrag';
SELECT ROUND( SUM( fac.safe_to_number( REPLACE(bedrag, ',', '.') ) ), 2)
INTO v_totaalbedrag
FROM akza_imp_ruys
WHERE kpn = rec.kpn
AND kpn_grp = rec.kpn_grp;
v_aanduiding := v_aanduiding || ', <20>' ||v_totaalbedrag;
v_errorhint := 'Fout bij toevoegen melding';
INSERT INTO mld_melding
(mld_melding_module,
mld_meldbron_key,
mld_melding_datum,
mld_stdmelding_key,
prs_perslid_key,
mld_melding_status,
mld_melding_spoed,
prs_kostenplaats_key)
VALUES
('MLD',
45, -- System
SYSDATE,
c_stdmelding_key,
7520, -- Facilitor
5, -- Afgemeld
3,
v_kostenplaats_key)
RETURNING mld_melding_key
INTO v_melding_key;
v_errorhint := 'Fout bij toevoegen kenmerk kostenplaats';
INSERT INTO mld_kenmerkmelding
(mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES
(v_melding_key,
c_flex_kpn_key,
v_kostenplaats_key);
v_errorhint := 'Fout bij toevoegen kenmerk bedrag';
INSERT INTO mld_kenmerkmelding
(mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES
(v_melding_key,
c_flex_bedrag_key,
v_totaalbedrag);
v_sum_bedrag := v_sum_bedrag + v_totaalbedrag;
fac.imp_writelog (p_import_key,
'I',
v_aanduiding||' (key '||v_kostenplaats_key||'): <20>'||v_totaalbedrag,
'Melding L'||v_melding_key);
ELSE
-- Bij de check is de kostenplaats wel gevonden, maar daarna niet?!
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || 'niet gevonden?!',
v_errorhint
);
END IF; -- kpn
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint
);
COMMIT;
END;
END LOOP;
fac.imp_writelog(p_import_key,
'S',
'Verwerkte kostenplaatsen zonder foutmelding: '
|| TO_CHAR (v_count_tot - v_count_error),
'Totaalbedrag: '||TO_CHAR(v_sum_bedrag)
);
SELECT DECODE(v_count_error,
0, '',
'Controleer de logging op fouten en exporteer regels voor deze kostenplaats opnieuw uit Ruys.')
INTO v_errorhint
FROM DUAL;
fac.imp_writelog(p_import_key,
'S',
'Verwerkte kostenplaatsen met foutmelding: '
|| TO_CHAR (v_count_error),
v_errorhint);
END IF; -- v_ongeldig
END IF; -- leeg importbestand?
COMMIT;
END akza_update_ruys;
/
--- OPDRACHTKOSTEN -------------------------------------------------------------
-- AKZA#27387: Import opdrachtkosten (MB)
CREATE OR REPLACE PROCEDURE akza_import_opdrkosten (
p_import_key IN NUMBER
)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000); -- Input line
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER := 0;
v_ongeldig NUMBER (1);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_count NUMBER;
-- De importvelden:
v_mld_opdr_nr VARCHAR2 (256);
v_mld_opdr_uren VARCHAR2 (256);
v_mld_opdr_uurloon VARCHAR2 (256);
v_mld_opdr_materiaal VARCHAR2 (256);
-- !!Let op: dit is geen veld in de database, maar wordt via opdrachtkosten teruggerekend!!
v_correctie_bedrag VARCHAR2 (256);
v_mld_opdr_opmerking VARCHAR2 (4000);
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM akza_imp_opdrkosten;
v_count_tot := 0;
v_count_import := 0;
FOR rec IN c
LOOP
BEGIN
v_newline := rec.fac_imp_file_line;
v_aanduiding := '';
v_errorhint := 'Fout bij opvragen te importeren rij';
v_ongeldig := 0;
-- Lees alle veldwaarden
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 1, v_mld_opdr_nr);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 2, v_mld_opdr_uren);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 3, v_mld_opdr_uurloon);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 4, v_mld_opdr_materiaal);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 5, v_correctie_bedrag);
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 6, v_mld_opdr_opmerking);
v_aanduiding := '[' || v_mld_opdr_nr || '(' || v_mld_opdr_uren || ',' || v_mld_opdr_uurloon || ',' || v_mld_opdr_materiaal || ',' || v_correctie_bedrag || '): ' || '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER(v_mld_opdr_nr) = 'OPDRACHTNUMMER'
AND UPPER(v_mld_opdr_uren) = 'UREN'
AND UPPER(v_mld_opdr_uurloon) = 'UURTARIEF'
AND UPPER(v_mld_opdr_materiaal) = 'MATERIAALKOSTEN'
AND UPPER(v_correctie_bedrag) = 'CORRECTIEBEDRAG'
AND UPPER(v_mld_opdr_opmerking) = 'OPMERKINGEN'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errorhint := 'Ongeldig/onbekend opdrachtnummer';
v_mld_opdr_nr := TRIM(v_mld_opdr_nr);
-- opdrachtnummer is maximaal <prefix> + <meldingkey> + '/' + <volgnr> = 3 + 10 + 1 + 10 = 24 karakters
IF (v_mld_opdr_nr IS NOT NULL)
THEN
IF LENGTH (v_mld_opdr_nr) > 24
THEN
v_mld_opdr_nr := SUBSTR (v_mld_opdr_nr, 1, 24);
fac.imp_writelog (p_import_key, 'W',
v_aanduiding || 'Opdrachtnummer te lang',
'Wordt afgebroken tot [' || v_mld_opdr_nr || ']' );
END IF;
ELSE
v_ongeldig := 1;
EXIT;
END IF;
-- opdracht uren is N(7,2), dus maximaal 8 karakters (b.v. 12345.67)
IF (v_mld_opdr_uren IS NOT NULL)
THEN
IF LENGTH (v_mld_opdr_uren) > 8
THEN
v_mld_opdr_uren := SUBSTR (v_mld_opdr_uren, 1, 8);
fac.imp_writelog (p_import_key, 'W',
v_aanduiding || 'Uren te lang',
'Wordt afgebroken tot [' || v_mld_opdr_uren || ']' );
END IF;
END IF;
-- uurtarief is N(6,2), dus maximaal 7 karakters (b.v. 1234.56)
IF (v_mld_opdr_uurloon IS NOT NULL)
THEN
IF LENGTH (v_mld_opdr_uurloon) > 8
THEN
v_mld_opdr_uurloon := SUBSTR (v_mld_opdr_uurloon, 1, 7);
fac.imp_writelog (p_import_key, 'W',
v_aanduiding || 'Uurtarief te lang',
'Wordt afgebroken tot [' || v_mld_opdr_uurloon || ']' );
END IF;
END IF;
-- materiaalkosten is N(8,2), dus maximaal 9 karakters (b.v. 123456.78)
IF (v_mld_opdr_materiaal IS NOT NULL)
THEN
IF LENGTH (v_mld_opdr_materiaal) > 9
THEN
v_mld_opdr_materiaal := SUBSTR (v_mld_opdr_materiaal, 1, 7);
fac.imp_writelog (p_import_key, 'W',
v_aanduiding || 'Materiaalkosten te lang',
'Wordt afgebroken tot [' || v_mld_opdr_materiaal || ']' );
END IF;
END IF;
-- correctiebedrag is geen DB-veld, maar wordt logischerwijs gelijkgetrokken aan materiaalkosten.
IF (v_correctie_bedrag IS NOT NULL)
THEN
IF LENGTH (v_correctie_bedrag) > 9
THEN
v_correctie_bedrag := SUBSTR (v_correctie_bedrag, 1, 7);
fac.imp_writelog (p_import_key, 'W',
v_aanduiding || 'Correctiebedrag te lang',
'Wordt afgebroken tot [' || v_correctie_bedrag || ']' );
END IF;
END IF;
-- opmerking is maximaal 4000 karakters
IF (v_mld_opdr_opmerking IS NOT NULL)
THEN
IF LENGTH (v_mld_opdr_opmerking) > 4000
THEN
v_mld_opdr_opmerking := SUBSTR (v_mld_opdr_opmerking, 1, 4000);
fac.imp_writelog (p_import_key, 'W',
v_aanduiding || 'Opmerking te lang',
'Wordt afgebroken tot [' || v_mld_opdr_opmerking || ']' );
END IF;
END IF;
IF ( v_mld_opdr_uren IS NULL
AND v_mld_opdr_uurloon IS NULL
AND v_mld_opdr_materiaal IS NULL
AND v_correctie_bedrag IS NULL
AND v_mld_opdr_opmerking IS NULL
)
THEN
fac.imp_writelog (p_import_key, 'W',
v_aanduiding || 'Alle velden zijn leeg, regel wordt niet verwerkt.',
'Ingelezen regel kan niet worden weggeschreven!' );
v_ongeldig := 1;
EXIT;
END IF;
IF ( (v_mld_opdr_uren IS NOT NULL AND v_mld_opdr_uurloon IS NULL) OR
(v_mld_opdr_uren IS NULL AND v_mld_opdr_uurloon IS NOT NULL)
)
THEN
fac.imp_writelog (p_import_key, 'W',
v_aanduiding || 'Resultaat van uren x uurtarief is 0 omdat niet beide velden gevuld zijn.',
'Wordt derhlave genegeerd' );
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errorhint :=
'Fout bij toevoegen regel aan importtabel';
INSERT INTO akza_imp_opdrkosten( mld_opdr_nr, mld_opdr_uren, mld_opdr_uurloon, mld_opdr_materiaal, correctie_bedrag, mld_opdr_opmerking)
VALUES (v_mld_opdr_nr, v_mld_opdr_uren, v_mld_opdr_uurloon, v_mld_opdr_materiaal, v_correctie_bedrag, v_mld_opdr_opmerking);
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog
(p_import_key,
'E',
v_aanduiding || v_errormsg,
'Ingelezen regel kan niet worden weggeschreven!'
);
COMMIT;
END;
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!'
);
ELSIF (v_ongeldig = 1)
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldige regel(s)',
'Regel '||v_aanduiding||' is ongeldig! (Mogelijk zijn er nog meer ongeldige regels.)'
);
ELSE
fac.imp_writelog (p_import_key,
'S',
'OPDRACHT KOSTEN: aantal ingelezen regels: '
|| TO_CHAR (v_count_tot),
''
);
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint
);
COMMIT;
END akza_import_opdrkosten;
/
CREATE OR REPLACE PROCEDURE akza_update_opdrkosten (
p_import_key IN NUMBER
)
IS
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_tot NUMBER (10);
v_count_error NUMBER (10);
v_count NUMBER (10);
-- Alle kostenplaatsen in het importbestand
CURSOR c
IS
SELECT mld_opdr_nr,
ROUND(COALESCE(fac.safe_to_number(REPLACE(mld_opdr_uren, ',','.')),0),2) mld_opdr_uren,
ROUND(COALESCE(fac.safe_to_number(REPLACE(mld_opdr_uurloon, ',','.')),0),2) mld_opdr_uurloon,
ROUND(COALESCE(fac.safe_to_number(REPLACE(mld_opdr_materiaal,',','.')),0),2) mld_opdr_materiaal,
ROUND(COALESCE(fac.safe_to_number(REPLACE(correctie_bedrag, ',','.')),0),2) correctie_bedrag,
mld_opdr_opmerking
FROM akza_imp_opdrkosten
ORDER BY mld_opdr_nr;
v_mld_opdr_key NUMBER (10);
l_mld_opdr_uurloon MLD_OPDR.mld_opdr_uurloon%TYPE;
FUNCTION try_getopdracht_id (p_broc_nr IN VARCHAR2, p_leverancier_nr IN VARCHAR2)
RETURN NUMBER
AS
c_prefix1 VARCHAR2 (1);
-- Ter bepaling van de positie van de slash in bron-nr
c_index NUMBER;
c_slash_index NUMBER;
-- Opdrachtnr voor de slash
c_broc_s1 VARCHAR2 (20);
-- Opdrachtnr na de slash
c_broc_s2 VARCHAR2 (20);
p_broc_key NUMBER(10);
BEGIN
p_broc_key := NULL;
c_index := 1;
c_prefix1 := SUBSTR (p_broc_nr, c_index, 1);
IF ( ( (ASCII (c_prefix1) >= 65 AND ASCII (c_prefix1) <= 90)
OR (ASCII (c_prefix1) >= 97 AND ASCII(c_prefix1) <= 122))
AND ASCII (c_prefix1) != 67
AND ASCII (c_prefix1) != 99)
THEN
-- Eerste karakter is een letter
-- Heeft opdrachtnr nog meer aan prefix?
c_index := 2;
c_prefix1 := SUBSTR (p_broc_nr, c_index, 1);
IF ( (ASCII (c_prefix1) >= 65 AND ASCII (c_prefix1) <= 90)
OR (ASCII (c_prefix1) >= 97 AND ASCII(c_prefix1) <= 122))
THEN
-- Eerste 2 karakter zijn letters
-- Heeft opdrachtnr nog meer aan prefix?
c_index := 3;
c_prefix1 := SUBSTR (p_broc_nr, c_index, 1);
IF ( (ASCII (c_prefix1) >= 65 AND ASCII (c_prefix1) <= 90)
OR (ASCII (c_prefix1) >= 97 AND ASCII(c_prefix1) <= 122))
THEN
-- Opdracht heeft prefix van 3 letters.
c_index := 4;
END IF;
END IF;
END IF;
c_slash_index := INSTR (p_broc_nr, '/');
IF c_slash_index = 0
THEN
c_broc_s1 := SUBSTR (p_broc_nr, c_index);
c_broc_s2 := '';
ELSE
c_broc_s1 := SUBSTR (p_broc_nr, c_index, c_slash_index - c_index);
c_broc_s2 := SUBSTR (p_broc_nr, c_slash_index + 1);
END IF;
BEGIN
SELECT o.mld_opdr_key
INTO p_broc_key
FROM mld_opdr o
WHERE o.mld_melding_key = fac.safe_to_number (c_broc_s1)
AND mld_opdr_bedrijfopdr_volgnr = fac.safe_to_number (c_broc_s2);
EXCEPTION
WHEN OTHERS
THEN
p_broc_key := NULL;
END;
RETURN p_broc_key;
END;
BEGIN
v_count_tot := 0;
v_count_error := 0;
v_aanduiding := '';
FOR rec IN c
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding := 'Opdrachtnr ' || rec.mld_opdr_nr || '(' || rec.mld_opdr_uren || ',' || rec.mld_opdr_uurloon || ',' || rec.mld_opdr_materiaal || ',' || rec.correctie_bedrag || '): ';
v_mld_opdr_key := try_getopdracht_id(rec.mld_opdr_nr, NULL);
IF (v_mld_opdr_key IS NULL)
THEN
v_count_error := v_count_error + 1;
v_errormsg := 'Opdrachtnummer onbekend / is niet gevonden';
v_errorhint := 'Fout bij bepalen opdrachtnummer';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint
);
COMMIT;
ELSE
-- Opdrachtnummer is gevonden, mld_opdr record is gevonden.
-- Stap 1) Uren x tarief
-- Als uurtarief bij opdracht niet is ingevuld, of als die wel is ingevuld en gelijk is aan uurtarief uit import regel, dan de uren aanvullen/optellen (en uurtarief invullen)
IF (rec.mld_opdr_uurloon != 0 AND rec.mld_opdr_uurloon !=0)
THEN
v_errorhint := 'Fout bij bepalen/zetten uurloon';
-- We gaan eerst ff het uurtarief ophalen, misschien is ie wel gelijk aan het importrecord?
SELECT mld_opdr_uurloon
INTO l_mld_opdr_uurloon
FROM mld_opdr
WHERE mld_opdr_key = v_mld_opdr_key;
IF (l_mld_opdr_uurloon IS NULL OR l_mld_opdr_uurloon = rec.mld_opdr_uurloon)
THEN
-- Inderdaad is tarief gelijk aan import-record, of er was nog geen tarief ingevuld, dan ook goed...
UPDATE mld_opdr
SET mld_opdr_uren = COALESCE(mld_opdr_uren, 0) + rec.mld_opdr_uren,
mld_opdr_uurloon = rec.mld_opdr_uurloon,
mld_opdr_kosten = mld_opdr_kosten + ROUND(rec.mld_opdr_uurloon * rec.mld_opdr_uren, 2)
WHERE mld_opdr_key = v_mld_opdr_key;
ELSE
UPDATE mld_opdr
SET mld_opdr_kosten = mld_opdr_kosten + ROUND(rec.mld_opdr_uurloon * rec.mld_opdr_uren, 2)
WHERE mld_opdr_key = v_mld_opdr_key;
END IF;
END IF;
-- Stap 2) Materiaal kosten
IF (rec.mld_opdr_materiaal != 0)
THEN
v_errorhint := 'Fout bij zetten materiaalkosten';
UPDATE mld_opdr
SET mld_opdr_materiaal = COALESCE(mld_opdr_materiaal,0) + rec.mld_opdr_materiaal,
mld_opdr_kosten = mld_opdr_kosten + rec.mld_opdr_materiaal
WHERE mld_opdr_key = v_mld_opdr_key;
END IF;
-- Stap 3) Correctie bedrag
IF (rec.correctie_bedrag != 0)
THEN
v_errorhint := 'Fout bij zetten correctiebedrag';
UPDATE mld_opdr
SET mld_opdr_kosten = mld_opdr_kosten + rec.correctie_bedrag
WHERE mld_opdr_key = v_mld_opdr_key;
END IF;
-- Stap 4) Aanvullen van opmerking
IF (rec.mld_opdr_opmerking IS NOT NULL)
THEN
v_errorhint := 'Fout bij zetten opmerking';
UPDATE mld_opdr
SET mld_opdr_opmerking = SUBSTR(mld_opdr_opmerking || CHR(10) || rec.mld_opdr_opmerking,1,4000)
WHERE mld_opdr_key = v_mld_opdr_key;
END IF;
-- Informatieve logging
SELECT TO_CHAR(mld_opdr_kosten, '99G9999D99MI')
INTO v_errorhint
FROM mld_opdr
WHERE mld_opdr_key = v_mld_opdr_key;
fac.imp_writelog (p_import_key,
'I',
'Bijgewerkt: '||v_aanduiding,
'Totaalbedrag: '||v_errorhint
);
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint
);
COMMIT;
END;
END LOOP;
fac.imp_writelog(p_import_key,
'S',
'OPDRACHT KOSTEN: verwerkte regels zonder foutmelding: '
|| TO_CHAR (v_count_tot - v_count_error),
''
);
fac.imp_writelog(p_import_key,
'S',
'OPDRACHT KOSTEN: verwerkte regels met foutmelding: '
|| TO_CHAR (v_count_error),
''
);
COMMIT;
END akza_update_opdrkosten;
/
--- INSPECTIERESULTATEN -------------------------------------------------------------
-- AKZA#31258: Import inspectieresultaten
CREATE OR REPLACE PROCEDURE akza_import_inspectieobj (
p_import_key IN NUMBER
)
IS
c_delim VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000); -- Input line
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_ongeldig NUMBER (1);
v_aanduiding VARCHAR (200);
-- De importvelden:
v_alg_locatie_code VARCHAR2 (255); -- C10
v_ins_deel_omschrijving VARCHAR2 (255); -- C60
v_ins_srtcontrole_omschrijving VARCHAR2 (255); -- C60
v_ins_controle_datum VARCHAR2 (255); -- DATE
v_ins_controle_opm VARCHAR2 (1024); -- C500
v_afgekeurd VARCHAR2 (255); -- C60
v_bestand VARCHAR2 (255); -- C200
-- Overig:
v_ins_controle_datum_d DATE; -- DATE
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM akza_imp_inspectieobj;
COMMIT;
v_count_tot := 0;
v_count_import := 0;
header_is_valid := 0;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout bij opvragen importregel';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_delim, v_alg_locatie_code);
fac.imp_getfield (v_newline, c_delim, v_ins_deel_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_controle_datum);
fac.imp_getfield (v_newline, c_delim, v_ins_controle_opm);
fac.imp_getfield (v_newline, c_delim, v_afgekeurd);
fac.imp_getfield (v_newline, c_delim, v_bestand);
v_aanduiding := '[' || v_ins_deel_omschrijving || ' (' || v_alg_locatie_code || ')] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_alg_locatie_code) = 'LOCATIECODE'
AND UPPER (v_ins_deel_omschrijving) = 'OBJECT_ID'
AND UPPER (v_ins_srtcontrole_omschrijving) = 'SOORTCONTROLE'
AND UPPER (v_ins_controle_datum) = 'CONTROLEDATUM'
AND UPPER (v_ins_controle_opm) = 'CONTROLEOPMERKING'
AND UPPER (v_afgekeurd) = 'AFGEKEURD'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Locatiecode ongeldig';
v_alg_locatie_code := TRIM (v_alg_locatie_code);
IF LENGTH (v_alg_locatie_code) > 10
THEN
v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Locatiecode wordt afgebroken tot ['
|| v_alg_locatie_code
|| ']'
);
END IF;
--
v_errormsg := 'Objectomschrijving ongeldig';
v_ins_deel_omschrijving := TRIM (v_ins_deel_omschrijving);
IF LENGTH (v_ins_deel_omschrijving) > 60
THEN
v_ins_deel_omschrijving :=
SUBSTR (TRIM (v_ins_deel_omschrijving), 1, 60);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Objectomschrijving wordt afgebroken tot ['
|| v_ins_deel_omschrijving
|| ']'
);
END IF;
--
v_errormsg := 'Soortcontrole ongeldig';
v_ins_srtcontrole_omschrijving := TRIM (v_ins_srtcontrole_omschrijving);
IF LENGTH (v_ins_srtcontrole_omschrijving) > 60
THEN
v_ins_srtcontrole_omschrijving := SUBSTR (v_ins_srtcontrole_omschrijving, 1, 60);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Soortcontrole wordt afgebroken tot [' || v_ins_srtcontrole_omschrijving || ']'
);
END IF;
--
v_errormsg := 'Controledatum ongeldig';
v_ins_controle_datum := TRIM (v_ins_controle_datum);
v_ins_controle_datum_d := NULL;
IF (v_ins_controle_datum IS NOT NULL)
THEN
IF (fac.safe_to_date (v_ins_controle_datum, 'dd-mm-yyyy') IS NULL)
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Controledatum wordt genegeerd');
ELSE
v_ins_controle_datum_d :=
fac.safe_to_date (v_ins_controle_datum, 'dd-mm-yyyy');
END IF;
END IF;
--
v_errormsg := 'Controleopmerking ongeldig';
v_ins_controle_opm := TRIM (v_ins_controle_opm);
IF LENGTH (v_ins_controle_opm) > 500
THEN
v_ins_controle_opm := SUBSTR (v_ins_controle_opm, 1, 500);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Controleopmerking wordt afgekapt op 500 posities'
);
END IF;
--
v_errormsg := 'Afgekeurd ongeldig';
v_afgekeurd := TRIM (v_afgekeurd);
IF LENGTH (v_afgekeurd) > 60
THEN
v_afgekeurd := SUBSTR (v_afgekeurd, 1, 60);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Afgekeurd wordt afgebroken tot [' || v_afgekeurd || ']'
);
END IF;
--
v_errormsg := 'Bestandsnaam ongeldig';
v_bestand := TRIM (v_bestand);
IF (v_bestand IS NOT NULL AND LENGTH (v_bestand) > 200 )
THEN
v_bestand := SUBSTR (v_bestand, 1, 200);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || v_errormsg,
'Bestandsnaam wordt afgekapt op 200 posities'
);
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout bij wegschrijven importregel';
INSERT INTO akza_imp_inspectieobj (
alg_locatie_code,
ins_deel_omschrijving,
ins_srtcontrole_omschrijving,
ins_deelsrtcontrole_datum,
ins_deelsrtcontrole_opmerking,
afgekeurd,
bestand
)
VALUES (v_alg_locatie_code,
v_ins_deel_omschrijving,
v_ins_srtcontrole_omschrijving,
v_ins_controle_datum_d,
v_ins_controle_opm,
v_afgekeurd,
v_bestand);
COMMIT;
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'');
COMMIT;
END;
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!');
ELSE
fac.imp_writelog (
p_import_key,
'S',
'Inspectieobjecten/aantal ingelezen importregels: '
|| TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (
p_import_key,
'S',
'Inspectieobjecten/aantal ongeldige niet ingelezen importregels: '
|| TO_CHAR (v_count_tot - v_count_import),
''
);
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Inleesproces inspectieobjecten afgebroken!');
END akza_import_inspectieobj;
/
-- Leest voor objecten (locatie+object-id) het resultaat van specifieke taken in,
-- uitgevoerd op bepaalde datums. Met ruimte voor een opmerking en een link naar een
-- bestandsnaam. Voor de bestandsnaam wordt het bestandsnaam-kenmerk met de laagste key
-- bij de betreffende taak (controle) gezocht en gebruikt.
CREATE OR REPLACE PROCEDURE akza_update_inspectieobj (
p_import_key IN NUMBER
)
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
v_count_tot NUMBER (10);
v_count_cupdate NUMBER (10);
v_aanduiding VARCHAR (200);
CURSOR c1
IS
SELECT i.alg_locatie_code,
i.ins_deel_omschrijving,
sc.ins_srtcontrole_key,
sc.ins_srtcontrole_omschrijving,
i.ins_deelsrtcontrole_datum,
i.ins_deelsrtcontrole_opmerking,
i.bestand bestandsnaam,
i.afgekeurd,
ad.ins_deel_key,
ad.ins_srtdeel_key,
g.ins_srtgroep_key,
ad.ins_discipline_key,
al.alg_locatie_key
FROM akza_imp_inspectieobj i,
ins_srtcontrole sc,
ins_v_aanwezigdeel ad,
ins_srtdeel sd,
ins_srtgroep g,
alg_v_aanweziglocatie al
WHERE ad.ins_deel_omschrijving(+) = i.ins_deel_omschrijving
AND UPPER(sc.ins_srtcontrole_omschrijving(+)) = UPPER(i.ins_srtcontrole_omschrijving)
AND sd.ins_srtdeel_key(+) = ad.ins_srtdeel_key
AND g.ins_srtgroep_key(+) = sd.ins_srtgroep_key
AND al.alg_locatie_key(+) = ad.ins_alg_locatie_key;
v_deel_key NUMBER (10);
v_kenmerk_key NUMBER (10);
v_kenmerkdeel_key NUMBER (10);
v_srtcontrole_id VARCHAR2 (20);
v_controlemode_succes_key NUMBER (10);
v_controlemode_afkeur_key NUMBER (10);
v_deelsrtcontrole_key NUMBER(10);
BEGIN
v_count := 0;
v_count_tot := 0;
v_count_cupdate := 0;
v_aanduiding := '';
FOR rec IN c1
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding := '['||rec.ins_deel_omschrijving
||'|'||rec.alg_locatie_code
||'|'||rec.ins_srtcontrole_omschrijving
||'|'||rec.ins_deelsrtcontrole_datum
|| '] ';
-- We kunnen alleen iets met objecten die we kennen!
IF (rec.ins_deel_key IS NULL OR rec.alg_locatie_key IS NULL)
THEN
fac.imp_writelog(p_import_key, 'E',
'Objectcode onbekend (binnen locatie); regel wordt overgeslagen',
v_aanduiding);
CONTINUE;
END IF;
-- Zonder datum doen we niks
IF (rec.ins_deelsrtcontrole_datum IS NULL)
THEN
fac.imp_writelog(p_import_key, 'E',
'Geen datum ingevuld; regel wordt overgeslagen',
v_aanduiding);
CONTINUE;
END IF;
-- Kennen we de srtcontrole uberhaupt?
IF (rec.ins_srtcontrole_key IS NULL)
THEN
fac.imp_writelog(p_import_key, 'E',
'Soort taak onbekend; regel wordt overgeslagen',
v_aanduiding);
CONTINUE;
END IF;
-- En hoort die srtcontrole ook bij deze objectsoort/-groep/discipline?
v_errormsg := 'srtcontrole bij objectsoort';
SELECT COUNT(*)
INTO v_count
FROM ins_srtcontrole sc
WHERE sc.ins_srtcontrole_key = rec.ins_srtcontrole_key
AND sc.ins_srtinstallatie_key =
DECODE( sc.ins_srtcontrole_niveau,
'S', rec.ins_srtdeel_key,
'G', rec.ins_srtgroep_key,
'D', rec.ins_discipline_key);
-- Nee --> overslaan
IF (v_count = 0)
THEN
fac.imp_writelog(p_import_key, 'E',
'Soort taak hoort niet bij object; regel wordt overgeslagen',
v_aanduiding);
CONTINUE;
END IF;
-- TODO: kan een srtcontrole meerdere malen aan een object gekoppeld zijn? Dan dat nog specifieker bepalen?
IF (rec.ins_deelsrtcontrole_datum IS NULL)
THEN
fac.imp_writelog(p_import_key, 'E',
'Geen datum opgegeven; regel wordt overgeslagen',
v_aanduiding);
CONTINUE;
END IF;
v_errormsg := 'Fout bij bepalen controlemethode succes';
SELECT MIN(ins_controlemode_key)
INTO v_controlemode_succes_key
FROM ins_controlemode cm,
ins_srtcontrole sc
WHERE cm.ins_controlemode_success = 1
AND cm.ins_srtcontrole_type = sc.ins_srtcontrole_type
AND sc.ins_srtcontrole_key = rec.ins_srtcontrole_key;
v_errormsg := 'Fout bij bepalen controlemethode afgekeurd';
SELECT MIN(ins_controlemode_key)
INTO v_controlemode_afkeur_key
FROM ins_controlemode cm,
ins_srtcontrole sc
WHERE cm.ins_controlemode_success IS NULL
AND cm.ins_srtcontrole_type = sc.ins_srtcontrole_type
AND sc.ins_srtcontrole_key = rec.ins_srtcontrole_key;
-- TODO: ins_deelsrtcontrole_datum_org is de datum waarop de taak eigenlijk gedaan had
-- moeten worden. Die staat bij taken met standaardperiode 0 in ins_srtcontroledl_xcp en
-- zal doorgaans afwijken van de datum in het importbestand.
v_errormsg := 'Fout bij toevoegen controle';
INSERT INTO ins_deelsrtcontrole (
ins_deel_key,
ins_srtcontrole_key,
ins_deelsrtcontrole_datum,
ins_deelsrtcontrole_datum_org,
ins_controlemode_key,
ins_deelsrtcontrole_opmerking)
VALUES (
rec.ins_deel_key,
rec.ins_srtcontrole_key,
rec.ins_deelsrtcontrole_datum,
rec.ins_deelsrtcontrole_datum,
DECODE(rec.afgekeurd,
NULL, v_controlemode_succes_key,
v_controlemode_afkeur_key),
rec.ins_deelsrtcontrole_opmerking)
RETURNING ins_deelsrtcontrole_key INTO v_deelsrtcontrole_key;
IF (rec.bestandsnaam IS NOT NULL)
THEN
v_errormsg := 'Fout bij bepalen bestandskenmerk';
SELECT MIN(ins_kenmerk_key)
INTO v_kenmerk_key
FROM ins_kenmerk k,
ins_srtkenmerk sk,
ins_srtcontrole rec
WHERE k.ins_kenmerk_niveau = 'C'
AND k.ins_srtinstallatie_key = rec.ins_srtcontrole_key
AND k.ins_kenmerk_verwijder IS NULL
AND sk.ins_srtkenmerk_key = k.ins_srtkenmerk_key
AND sk.ins_srtkenmerk_kenmerktype = 'X';
v_errormsg := 'Bestandsnaam vastleggen';
INSERT INTO ins_kmdeelsrtcontr (
ins_deelsrtcontrole_key,
ins_kenmerk_key,
ins_kmdeelsrtcontr_waarde)
VALUES (
v_deelsrtcontrole_key,
v_kenmerk_key,
REPLACE(
CASE
WHEN UPPER(rec.bestandsnaam) LIKE 'R:\TD-EXTERN\ITA-3\REPORTS\RTC%'
THEN '/RTC'||SUBSTR(rec.bestandsnaam, 31)
WHEN UPPER(rec.bestandsnaam) LIKE 'R:/TD-EXTERN/ITA-3/REPORTS/RTC%'
THEN '/RTC'||SUBSTR(rec.bestandsnaam, 31)
ELSE
rec.bestandsnaam
END,
'\',
'/')
);
END IF;
v_count_cupdate := v_count_cupdate + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num
|| '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_aanduiding);
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S',
'Aantal ingelezen taken: ' || TO_CHAR (v_count_tot),
'');
fac.imp_writelog (p_import_key, 'S',
'Aantal verwerkte taken: ' || TO_CHAR (v_count_cupdate),
'');
COMMIT;
END akza_update_inspectieobj;
/
--- view om de locatie van nieuwe apparatuur aan te kunnen geven
CREATE OR REPLACE VIEW AKZA_V_RUIMTES_DEVENTER
(
RUIMTE_KEY,
RUIMTE,
VERVALDATUM
)
AS
SELECT ALG_RUIMTE_KEY,
ALG_GEBOUW_UPPER
|| '/'
|| ALG_VERDIEPING_CODE
|| '/'
|| ALG_RUIMTE_UPPER_NR
|| '-'
|| ALG_RUIMTE_OMSCHRIJVING
AS RUIMTE,
ALG_RUIMTE_VERWIJDER
FROM ALG_V_RUIMTE_GEGEVENS_ALL R
WHERE ALG_LOCATIE_KEY = 121;
--------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------
------ payload end ------
SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 0); END;
/
COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile