Files
Customer/BAMG/bamg.sql
Arthur Egberink 1661fbe5a3 BAMG#81945 -- BAM locaties in beheer HV
svn path=/Customer/trunk/; revision=63332
2024-01-25 08:49:23 +00:00

2858 lines
128 KiB
SQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database
DEFINE thisfile = 'BAMG.SQL'
DEFINE dbuser = 'BAMG'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
WHENEVER SQLERROR CONTINUE;
---------------------------------------
PROMPT &fcltcusttxt
---------------------------------------
SET DEFINE OFF
------ payload begin ------
CREATE OR REPLACE PACKAGE BAMG
AS
PROCEDURE update_energie_label;
PROCEDURE indexeer_contracten;
END;
/
CREATE OR REPLACE PACKAGE BODY BAMG
AS
PROCEDURE update_energie_label
AS
CURSOR c IS
SELECT alg_gebouw_key,
flx.getflex ('ALG',
1320,
alg_gebouw_key,
'G') gebouw_label,
flx.getflex ('INS', 30, ins_deel_key) object_label
FROM ins_v_deel_gegevens
WHERE ins_srtdeel_upper = 'ENERGIELABELS'
AND COALESCE (ins_deel_vervaldatum, SYSDATE + 1) > SYSDATE;
BEGIN
FOR rec IN c
LOOP
IF COALESCE(rec.gebouw_label, 'Q') <> COALESCE(rec.object_label, 'Q')
THEN
flx.setflex ('ALG',
1320,
rec.alg_gebouw_key,
'G',
rec.object_label);
END IF;
END LOOP;
END;
PROCEDURE indexeer_contracten
AS
-- 162 Huurprijs
-- 163 Servicekosten
-- 164 Indexatie
-- 165 Indexatiedatum
CURSOR c IS
SELECT cnt_contract_key,
fac.safe_to_number (
flx.getflex ('CNT', 162, cnt_contract_key))
huurprijs,
fac.safe_to_number (
flx.getflex ('CNT', 163, cnt_contract_key))
servicekosten,
fac.safe_to_number (
flx.getflex ('CNT', 164, cnt_contract_key))
indexatie
FROM cnt_contract c
WHERE EXISTS
(SELECT 1
FROM cnt_kenmerkcontract kc
WHERE cnt_kenmerk_key = 165
AND TRUNC (
fac.safe_to_date (
kc.cnt_kenmerkcontract_waarde,
'dd-mm-yyyy')) =
TRUNC (SYSDATE)
AND c.cnt_contract_key = kc.cnt_contract_key);
BEGIN
FOR rec IN c
LOOP
BEGIN
IF rec.huurprijs IS NOT NULL AND rec.indexatie IS NOT NULL
THEN
flx.setflex ('CNT', 162, rec.cnt_contract_key, rec.huurprijs * (1 + rec.indexatie / 100));
END IF;
IF rec.servicekosten IS NOT NULL AND rec.indexatie IS NOT NULL
THEN
flx.setflex ('CNT', 163, rec.cnt_contract_key, rec.servicekosten * (1 + rec.indexatie / 100));
END IF;
END;
END LOOP;
END;
END;
/
-- Tijdens de import wordt ook het niveau van de afdeling meegegeven. Dit is handig voor de opbouw van de structuur
-- Deze informatie wordt opgeslagen in het veld bedrijf.
-- Alle personeelsleden worden <20><>n voor <20><>n aangeboden. Pas aan het einde worden de resultaten verwerkt.
CREATE OR REPLACE PROCEDURE bamg_import_organisatie (p_import_key IN NUMBER)
AS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000); -- Input line
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
-- De importvelden:
v_afdelingscode VARCHAR2 (100);
v_afdelingsomschrijving VARCHAR2 (200);
v_afdelingsparent VARCHAR2 (100);
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
FOR rec IN c
LOOP
BEGIN
v_errormsg := 'Fout FETCH te importeren rij';
v_newline := rec.fac_imp_file_line;
v_errormsg := 'Fout opvragen te importeren rij';
v_aanduiding := '';
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdelingscode);
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdelingsomschrijving);
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdelingsparent);
v_aanduiding := v_afdelingscode || '|' || v_afdelingsomschrijving || '| ';
v_errormsg :=
'Fout bij toevoegen te impoteren bedrijf/afdeling [' || v_aanduiding || ']';
INSERT INTO fac_imp_organisatie (prs_afdeling_naam,
prs_afdeling_naam_parent,
prs_afdeling_omschrijving,
prs_afdeling_externid)
VALUES (SUBSTR(v_afdelingscode, 1, 15),
SUBSTR(v_afdelingsparent, 1, 15),
SUBSTR(v_afdelingsomschrijving, 1, 60),
TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
END;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'');
END bamg_import_organisatie;
/
CREATE OR REPLACE PROCEDURE bamg_update_organisatie(p_import_key IN NUMBER)
AS
BEGIN
-- De daadwerkelijke verwerking vindt plaats in de proceduere bamg_update_organisatie_sched
NULL;
END;
/
-- Deze is gescheduled via de bamg_daily
CREATE OR REPLACE PROCEDURE bamg_update_organisatie_sched
AS
CURSOR c(p_like VARCHAR2) IS
SELECT prs_afdeling_naam,
DECODE (prs_afdeling_naam_parent, 'BU6000', 'OC6000', prs_afdeling_naam_parent) prs_afdeling_naam_parent,
prs_afdeling_omschrijving,
prs_afdeling_externid
FROM fac_imp_organisatie
WHERE prs_afdeling_naam LIKE p_like;
CURSOR c_div IS
SELECT prs_afdeling_naam,
prs_afdeling_naam_parent,
prs_afdeling_omschrijving,
prs_afdeling_externid
FROM fac_imp_organisatie
WHERE prs_afdeling_naam NOT LIKE 'OC%'
AND prs_afdeling_naam NOT LIKE 'BU%'
AND prs_afdeling_naam NOT LIKE '%/%';
CURSOR c_org_del IS
SELECT a.prs_afdeling_key, a.prs_afdeling_naam
FROM prs_afdeling a, prs_v_afdeling_boom b
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_key = b.prs_afdeling_key
AND SUBSTR(a.prs_afdeling_naam,1,1) <> '_'
AND prs_afdeling_externsyncdate < SYSDATE-7
ORDER BY niveau DESC;
CURSOR c_prs_del IS
SELECT prs_perslid_key
FROM prs_perslid p
WHERE p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_externsyncdate < SYSDATE-7;
v_parent_key NUMBER;
v_bedrijf_key NUMBER;
v_afdeling_key NUMBER;
v_max_datum VARCHAR2(100);
v_import_key NUMBER;
v_count NUMBER;
v_aanduiding VARCHAR2 (100);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
PROCEDURE del_afdeling (p_naam IN VARCHAR2, p_key IN NUMBER)
AS
BEGIN
v_aanduiding := p_naam;
SELECT count(*)
INTO v_count
FROM prs_v_aanwezigperslid
WHERE prs_afdeling_key = p_key;
IF v_count > 0 THEN
fac.imp_writelog (v_import_key, 'E', 'Afdeling ' || p_naam || ' kan niet verwijderd worden, nog ' || v_count || ' personen aanwezig.', '');
ELSE
v_errorhint := 'Verwijder de afdeling: ' || p_naam;
UPDATE prs_afdeling SET prs_afdeling_verwijder = SYSDATE WHERE prs_afdeling_key = p_key;
END IF;
EXCEPTION WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (
v_import_key,
'E',
v_errormsg
|| ' - '
|| v_aanduiding,
v_errorhint);
END;
PROCEDURE add_afdeling (p_naam IN VARCHAR2, p_parent IN VARCHAR2, p_omschrijving IN VARCHAR2, p_syncdate IN VARCHAR2)
AS
BEGIN
BEGIN
v_aanduiding := p_naam;
v_parent_key := NULL;
v_bedrijf_key := NULL;
IF p_parent IS NOT NULL
THEN
-- We gaan eerst op zoek naar de parent
v_errorhint := 'Zoek de parent: ' || p_parent;
SELECT prs_afdeling_key
INTO v_parent_key
FROM prs_afdeling a
WHERE a.prs_afdeling_naam = p_parent
AND prs_afdeling_verwijder IS NULL;
ELSE
v_bedrijf_key := 1; -- BAM
END IF;
BEGIN
-- Nu gaan we kijken of we de afdeling_kunnen vinden
v_errorhint := 'Zoek de afdeling: ' || p_naam;
SELECT prs_afdeling_key
INTO v_afdeling_key
FROM prs_afdeling a
WHERE a.prs_afdeling_naam = p_naam
AND prs_afdeling_verwijder IS NULL;
v_errorhint := 'Pas de afdeling aan: ' || p_naam;
UPDATE prs_afdeling
SET prs_afdeling_omschrijving = p_omschrijving,
prs_afdeling_parentkey = v_parent_key,
prs_bedrijf_key = v_bedrijf_key,
prs_afdeling_externsyncdate = TO_DATE(p_syncdate, 'yyyy-mm-dd hh24:mi:ss')
WHERE prs_afdeling_key = v_afdeling_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errorhint := 'Voeg afdeling toe: ' || p_naam;
INSERT INTO prs_afdeling (prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_afdeling_parentkey,
prs_bedrijf_key,
prs_afdeling_externsyncdate)
VALUES (p_naam,
p_omschrijving,
v_parent_key,
v_bedrijf_key,
TO_DATE(p_syncdate, 'yyyy-mm-dd hh24:mi:ss'));
END;
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 (
v_import_key,
'E',
v_errormsg
|| ' - '
|| v_aanduiding,
v_errorhint);
END;
END;
BEGIN
SELECT MAX (fac_import_key)
INTO v_import_key
FROM fac_import_app a, fac_import i
WHERE a.fac_import_app_key = i.fac_import_app_key
AND fac_import_app_code = 'ORGANISATIE'
AND fac_import_app_prefix = 'BAMG';
BEGIN
SELECT MAX(SUBSTR(prs_afdeling_externid, 1, 10))
INTO v_max_datum
FROM fac_imp_organisatie;
DELETE fac_imp_organisatie
WHERE prs_afdeling_externid NOT LIKE v_max_datum || '%';
FOR rec IN c('OC%')
LOOP
v_aanduiding := rec.prs_afdeling_naam;
add_afdeling (rec.prs_afdeling_naam, rec.prs_afdeling_naam_parent, rec.prs_afdeling_omschrijving, rec.prs_afdeling_externid);
END LOOP;
FOR rec IN c('BU%')
LOOP
v_aanduiding := rec.prs_afdeling_naam;
add_afdeling (rec.prs_afdeling_naam, rec.prs_afdeling_naam_parent, rec.prs_afdeling_omschrijving, rec.prs_afdeling_externid);
END LOOP;
FOR rec IN c_div
LOOP
v_aanduiding := rec.prs_afdeling_naam;
add_afdeling (rec.prs_afdeling_naam, rec.prs_afdeling_naam_parent, rec.prs_afdeling_omschrijving, rec.prs_afdeling_externid);
END LOOP;
FOR rec IN c('%/%')
LOOP
v_aanduiding := rec.prs_afdeling_naam;
add_afdeling (rec.prs_afdeling_naam, rec.prs_afdeling_naam_parent, rec.prs_afdeling_omschrijving, rec.prs_afdeling_externid);
END LOOP;
-- We verwijderen personen die de laatste 7 dagen niet meer in de interface zaten.
v_count := 0;
FOR rec IN c_prs_del
LOOP
v_count := v_count +1;
END LOOP;
-- Als we meer dan 1000 personen moeten verwijderen dan is er waarschijnlijk
-- iets mis gegaan in de interface
IF v_count < 1000
THEN
FOR rec IN c_prs_del
LOOP
PRS.delete_perslid (v_import_key, rec.prs_perslid_key);
END LOOP;
END IF;
v_errorhint := 'Verwijderen afdelingen';
-- We verwijderen afdelingen die de laatste 7 dagen niet meer in de interface zaten.
v_count := 0;
FOR rec IN c_org_del
LOOP
v_count := v_count +1;
END LOOP;
-- Als we meer dan 1000 afdelingen moeten verwijderen dan is er waarschijnlijk
-- iets mis gegaan in de interface
IF v_count < 1000
THEN
FOR rec IN c_org_del
LOOP
del_afdeling (rec.prs_afdeling_naam, rec.prs_afdeling_key);
END LOOP;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (v_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint);
END;
-- Verwijder kostenplaatsen die niet meer voorkomen in de import (kenmerk 1000 bij de persoon)
UPDATE prs_kostenplaats
SET prs_kostenplaats_eind = SYSDATE
WHERE prs_kostenplaats_key IN
(SELECT prs_kostenplaats_key
FROM prs_kostenplaats
WHERE prs_kostenplaats_module = 'PRS'
AND prs_kostenplaats_eind IS NULL
AND NOT EXISTS
(SELECT 1
FROM prs_kenmerklink kl
WHERE prs_kenmerk_key = 1000
AND COALESCE (prs_kenmerklink_waarde, '-1') = prs_kostenplaats_nr));
END;
/
CREATE OR REPLACE PROCEDURE bamg_import_perslid (p_import_key IN NUMBER)
AS
v_seq_of_columns VARCHAR (255);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_errorhint VARCHAR2 (200);
BEGIN
-- Verwijder lege records
DELETE fac_imp_file WHERE SUBSTR(fac_imp_file_line, 1,7) = ';;;;;;;' AND fac_import_key = p_import_key;
-- Voeg een header toe. Deze wordt altijd gecontroleerd en wordt niet meegenomen in de import.
INSERT INTO fac_imp_file (fac_import_key, fac_imp_file_index, fac_imp_file_line)
VALUES (p_import_key, 0, 'Header');
v_seq_of_columns := '0;0;0;0;0;0;1;2;3;5;'
-- v_alg_locatie_code 1
-- v_alg_gebouw_code 2
-- v_alg_verdieping_volgnr 3
-- v_alg_ruimte_nr 4
-- v_prs_werkplek_volgnr 5
-- v_prs_werkplek_omschrijving 6
-- v_prs_afdeling_naam 7
-- v_prs_perslid_naam 8
-- v_prs_perslid_tussenvoegsel 9
-- v_prs_perslid_voornaam 10
|| '4;6;7;8;0;9;10;11;0;13;'
-- v_prs_perslid_voorletters 11
-- v_prs_perslid_partner_naam 12
-- v_prs_perslid_partner_tussenv 13
-- v_prs_naamgebruik_code 14 0 (default) perslid_naam en perslid_tussenvoegsel worden gebruikt
-- 1 personen die de geboortenaam van de partner icm de eigen naam willen gebruiken
-- 2 personen die de geboortenaam van de partner willen gebruiken
-- 3 personen die de eigen naam icm de geboortenaam van de partner willen gebruiken
-- v_prs_perslid_geslacht 15 Gebruik 'man', 'm' of 1 voor man en 'vrouw', 'v' of 0 voor vrouw case insensitive geen default
-- v_prs_perslid_telefoonnr 16
-- v_prs_perslid_mobiel 17
-- v_prs_perslid_email 18
-- v_prs_perslid_dienstverband 19
-- v_prs_perslid_nr 20
|| '12;14;0;0;0;0;15;16;17;18;'
-- v_prs_srtperslid_omschrijving 21
-- v_prs_perslid_oslogin 22
-- v_prs_perslid_wachtwoord 23
-- v_prs_perslid_titel 24
-- v_prs_perslid_apikey 25
-- v_dummy 26
-- v_prs_kenmerk1 27
-- v_prs_kenmerk2 28
-- v_prs_kenmerk3 29
-- v_prs_kenmerk4 30
|| '0;0;0;0;0;0;0;0;0;0;'
|| '0;0;0;0;0;0';
-- v_prs_naamgebruik_code mapping BAMG
-- 01 Eigen achternaam
-- 02 Partner achternaam <20> eigen achternaam
-- 03 Partner achternaam
-- 04 Eigen achternaam <20> partner achternaam
prs.import_perslid(p_import_key, v_seq_of_columns, '%');
UPDATE fac_imp_perslid SET prs_perslid_naamgebruik_code = DECODE (prs_perslid_naamgebruik_code, 1, 0, 2, 1, 3, 2, 4, 3, 0);
END bamg_import_perslid;
/
CREATE OR REPLACE PROCEDURE bamg_update_perslid (p_import_key IN NUMBER)
AS
CURSOR c IS
SELECT *
FROM fac_imp_perslid;
v_errormsg VARCHAR2 (1000);
v_hint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
v_perslid_nr PRS_PERSLID.PRS_PERSLID_NR%TYPE;
v_perslid_email PRS_PERSLID.PRS_PERSLID_EMAIL%TYPE;
v_perslid_key PRS_PERSLID.PRS_PERSLID_KEY%TYPE;
v_leiding_key PRS_PERSLID.PRS_PERSLID_KEY%TYPE;
v_afdeling_naam PRS_AFDELING.PRS_AFDELING_NAAM%TYPE;
v_kostenplaats_nr PRS_KOSTENPLAATS.PRS_KOSTENPLAATS_NR%TYPE;
v_kostenplaats_nr_new PRS_KOSTENPLAATS.PRS_KOSTENPLAATS_NR%TYPE;
v_kostenplaats_key_new PRS_KOSTENPLAATS.PRS_KOSTENPLAATS_KEY%TYPE;
v_kostenplaats_key_oud PRS_KOSTENPLAATS.PRS_KOSTENPLAATS_KEY%TYPE;
BEGIN
FOR rec IN C
LOOP
prs.update_perslid (p_import_key, 'NR', NULL);
v_perslid_email := rec.prs_perslid_email;
v_afdeling_naam := rec.prs_afdeling_naam;
v_kostenplaats_nr_new := rec.prs_kenmerk3;
INSERT INTO fac_rapport (fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel)
VALUES ('PERSLID_I',
p_import_key,
TO_CHAR (SYSDATE, 'dd-mm-yyyy hh24:mi:ss') || ';' ||
rec.prs_perslid_naam || ';' ||
rec.prs_perslid_voornaam || ';' ||
rec.prs_perslid_nr || ';' ||
rec.prs_perslid_email);
BEGIN
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_perslid
WHERE prs_perslid_nr = rec.prs_perslid_nr
AND prs_perslid_verwijder IS NULL;
-- Zet de laatste sync datum zodat we personen met een syncdatum in het
-- verleden kunnen verwijderen in de achtergrond taak.
UPDATE prs_perslid
SET prs_perslid_externsyncdate = SYSDATE
WHERE prs_perslid_key = v_perslid_key;
-- Welke kostenplaats staat er geregistreerd bij de persoon
v_kostenplaats_nr := FLX.getflex ('PRS', 1000, v_perslid_key, 'P');
-- Check of de persoon maandaat heeft op alle kostenplaatsen
SELECT COUNT(*)
INTO v_count
FROM prs_perslidkostenplaats
WHERE prs_perslid_key = v_perslid_key
AND prs_perslidkostenplaats_boeken = 1
AND prs_kostenplaats_key IS NULL;
IF v_count = 1
THEN
IF v_kostenplaats_nr IS NOT NULL
THEN
-- Dan zetten maken we de kostenplaats leeg bij de persoon. Als iemand daarna
-- de mandatering van alle kostenplaatsen verwijderd, wordt bij de import de
-- default kostenplaats weer gelinkt.
FLX.setflex ('PRS', 1000, v_perslid_key, 'P', NULL);
END IF;
ELSE
IF COALESCE(v_kostenplaats_nr, '999') <> COALESCE(rec.prs_kenmerk3, '999')
THEN
-- verwijder het oude mandaat en voeg een nieuw mandaat toe.
-- eerst gaan we kijken of de nieuwe kostenplaats al bestaat.
IF rec.prs_kenmerk3 IS NOT NULL
THEN
BEGIN
SELECT prs_kostenplaats_key
INTO v_kostenplaats_key_new
FROM prs_kostenplaats
WHERE prs_kostenplaats_nr = rec.prs_kenmerk3
AND prs_kostenplaats_eind IS NULL
AND prs_kostenplaats_module = 'PRS';
EXCEPTION WHEN NO_DATA_FOUND
THEN
INSERT INTO prs_kostenplaats( prs_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_kostenplaats_module)
VALUES (rec.prs_kenmerk3, rec.prs_kenmerk4, 'PRS')
RETURNING prs_kostenplaats_key INTO v_kostenplaats_key_new;
END;
ELSE
v_kostenplaats_key_new := -1;
END IF;
-- nu gaan we de key van de oude kostenplaats opzoeken
BEGIN
SELECT prs_kostenplaats_key
INTO v_kostenplaats_key_oud
FROM prs_kostenplaats
WHERE prs_kostenplaats_nr = v_kostenplaats_nr
AND prs_kostenplaats_eind IS NULL
AND prs_kostenplaats_module = 'PRS';
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_kostenplaats_key_oud := -1;
END;
DELETE prs_perslidkostenplaats
WHERE prs_perslid_key = v_perslid_key
AND prs_kostenplaats_key = v_kostenplaats_key_oud;
IF v_kostenplaats_key_new <> -1
THEN
INSERT INTO prs_perslidkostenplaats (prs_perslid_key, prs_kostenplaats_key, prs_perslidkostenplaats_boeken, prs_perslidkostenplaats_inzage)
VALUES (v_perslid_key, v_kostenplaats_key_new, 1, 0);
END IF;
-- Pas de kostenplaats aan bij de persoon.
FLX.setflex ('PRS', 1000, v_perslid_key, 'P', rec.prs_kenmerk3);
END IF;
END IF;
-- registreren van de leidinggevende
IF rec.prs_kenmerk1 IS NOT NULL
THEN
BEGIN
SELECT prs_perslid_key
INTO v_leiding_key
FROM prs_perslid
WHERE prs_perslid_email = rec.prs_kenmerk1;
FLX.setflex ('PRS', 1040, v_perslid_key, 'P', v_leiding_key);
EXCEPTION WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (p_import_key, 'W', 'Leidinggevende niet gevonden:' || rec.prs_kenmerk1, '');
END;
END IF;
-- registreren van de matrixmanager
IF rec.prs_kenmerk2 IS NOT NULL
THEN
BEGIN
SELECT prs_perslid_key
INTO v_leiding_key
FROM prs_perslid
WHERE prs_perslid_email = rec.prs_kenmerk2;
FLX.setflex ('PRS', 1041, v_perslid_key, 'P', v_leiding_key);
EXCEPTION WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (p_import_key, 'W', 'Matrixmanager niet gevonden:' || rec.prs_kenmerk2, '');
END;
END IF;
EXCEPTION WHEN NO_DATA_FOUND
THEN
NULL;
-- Persoon is niet aangemaakt in de import. Hier is al een foutmeldig voor gegenereerd.
END;
END LOOP;
-- De logging in de imp_log tabel wordt te snel verwijderd. Daarom zetten we de wa+rnings, errors en informatie loggings maar
-- in de fac_rapport tabel.
INSERT INTO fac_rapport (fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel)
SELECT 'PERSLID_' || imp_log_status,
fac_import_key,
LISTAGG (
TO_CHAR (imp_log_datum, 'dd-mm-yyyy hh24:mi:ss')
|| ';'
|| imp_log_omschrijving
|| ';'
|| imp_log_hint || ';[' || v_perslid_email || ']-' || v_afdeling_naam,
CHR (10))
WITHIN GROUP (ORDER BY imp_log_datum) logline
FROM imp_log
WHERE imp_log_status IN ('W', 'E', 'I')
AND fac_import_key = p_import_key
GROUP BY fac_import_key, imp_log_status;
-- Oude logging wordt verwijderd.
DELETE fac_rapport
WHERE fac.safe_to_date (SUBSTR (fac_rapport_regel, 1, 19), 'dd-mm-yyyy hh24:mi:ss') < SYSDATE - 1
AND fac_rapport_node LIKE 'PERSLID_%';
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_errormsg || '[' || v_kostenplaats_nr_new || ']',
v_hint);
END;
/
-- view van aantal mensen en afdelingen die op de nominiatie staan om verwijderd te worden.
CREATE OR REPLACE VIEW bamg_v_import_te_verwijderen
AS
SELECT 'Organisatie' importtype,
TRUNC (prs_afdeling_externsyncdate) datum,
COUNT (*) aantal
FROM prs_afdeling
WHERE prs_afdeling_verwijder IS NULL
AND prs_afdeling_externsyncdate IS NOT NULL
AND prs_afdeling_externsyncdate < SYSDATE - 1
GROUP BY TRUNC (prs_afdeling_externsyncdate)
UNION ALL
SELECT 'Personen', TRUNC (prs_perslid_externsyncdate), COUNT (*)
FROM prs_perslid
WHERE prs_perslid_verwijder IS NULL
AND prs_perslid_externsyncdate IS NOT NULL
AND prs_perslid_externsyncdate < SYSDATE - 1
GROUP BY TRUNC (prs_perslid_externsyncdate);
-- Aantal foutmeldingen in de personen en organisatie import
CREATE OR REPLACE VIEW bamg_v_import_resultaat
AS
SELECT 'Organisatie' importtype,
TRUNC (fac_import_datum_gelezen) datum,
imp_log_omschrijving || ' - ' || imp_log_hint omschrijving
FROM fac_import i, imp_log l
WHERE fac_import_app_key = 42 -- organisatie import
AND i.fac_import_key = l.fac_import_key
AND imp_log_status = 'E'
UNION ALL
SELECT 'Personen',
TO_DATE (SUBSTR (fac_rapport_regel, 1, 10), 'dd-mm-yyyy'),
fac_rapport_regel
FROM fac_rapport
WHERE fac_rapport_node = 'PERSLID_E';
-- Contract reminder CUST01 en breakoptie tussen 5 en 6 maanden van tevoren (breakoptie datum is kenmerk 101) (CUST05)
CREATE OR REPLACE VIEW bamg_v_noti_cntreminder_coll
AS
SELECT DISTINCT
'CUST01' code,
'' sender,
p.prs_collega_key receiver,
'Rappel: Contract '
|| c.cnt_contract_nummer_intern
|| DECODE (cnt_contract_versie,
NULL, '',
'.' || cnt_contract_versie)
|| ' ('
|| c.cnt_contract_omschrijving
|| ' '
|| b.prs_bedrijf_naam
|| ')'
|| ' moet uiterlijk per '
|| TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key),
'DD-MM-YYYY')
|| ' worden verlengd of opgezegd.' text,
c.cnt_contract_key key,
NULL xkey,
NULL xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM cnt_v_aanwezigcontract c,
prs_bedrijf b,
(SELECT prs_perslid_key, prs_perslid_key prs_collega_key
FROM prs_perslid
UNION ALL
SELECT prs_perslid_key, prs_perslid_key_alt prs_collega_key
FROM prs_collega) p
WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
AND ( c.prs_perslid_key_beh = p.prs_perslid_key
OR c.prs_perslid_key_eig = p.prs_perslid_key)
AND cnt_contract_verwijder IS NULL
AND cnt_contract_status <> 1 -- gesloten
AND (SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key)
AND cnt.cnt_getopzegdatum (c.cnt_contract_key))
UNION ALL
SELECT DISTINCT
'CUST05' code,
'' sender,
p.prs_collega_key receiver,
'Breakoptie: Contract '
|| c.cnt_contract_nummer_intern
|| DECODE (cnt_contract_versie,
NULL, '',
'.' || cnt_contract_versie)
|| ' ('
|| c.cnt_contract_omschrijving
|| ' '
|| b.prs_bedrijf_naam
|| ')'
|| ' op '
|| FLX.getflex ('CNT', 101, c.cnt_contract_key) text,
c.cnt_contract_key key,
NULL xkey,
NULL xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM cnt_v_aanwezigcontract c,
prs_bedrijf b,
(SELECT prs_perslid_key, prs_perslid_key prs_collega_key
FROM prs_perslid
UNION ALL
SELECT prs_perslid_key, prs_perslid_key_alt prs_collega_key
FROM prs_collega) p
WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
AND ( c.prs_perslid_key_beh = p.prs_perslid_key
OR c.prs_perslid_key_eig = p.prs_perslid_key)
AND cnt_contract_verwijder IS NULL
AND cnt_contract_status <> 1 -- gesloten
AND (SYSDATE BETWEEN TO_DATE(FLX.getflex ('CNT', 101, c.cnt_contract_key), 'dd-mm-yyyy') - 6 * 30
AND TO_DATE(FLX.getflex ('CNT', 101, c.cnt_contract_key), 'dd-mm-yyyy') - 5 * 30)
UNION ALL
-- BAMG#78498 Indexatie (Onder-)verhuur locaties
SELECT DISTINCT
'CUST07' code,
'' sender,
p.prs_collega_key receiver,
'Indexatie: Contract '
|| c.cnt_contract_nummer_intern
|| DECODE (cnt_contract_versie,
NULL, '',
'.' || cnt_contract_versie)
|| ' ('
|| c.cnt_contract_omschrijving
|| ' '
|| b.prs_bedrijf_naam
|| ')'
|| ' op '
|| FLX.getflex ('CNT', 281, c.cnt_contract_key) text,
c.cnt_contract_key key,
NULL xkey,
NULL xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM cnt_v_aanwezigcontract c,
prs_bedrijf b,
(SELECT prs_perslid_key, prs_perslid_key prs_collega_key
FROM prs_perslid
UNION ALL
SELECT prs_perslid_key, prs_perslid_key_alt prs_collega_key
FROM prs_collega) p
WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
AND ( c.prs_perslid_key_beh = p.prs_perslid_key
OR c.prs_perslid_key_eig = p.prs_perslid_key)
AND cnt_contract_verwijder IS NULL
AND cnt_contract_status <> 1 -- gesloten
AND ins_discipline_key = 1421 -- (Onder-)verhuur locaties
-- Twee maanden voor de indexatiedatum sturen we een notificatie.
-- Aangezien de job maar <20><>n keer in de week draait, kijken we naar het aantal weken tussen nu en de indexatiedatum.
AND ROUND ((TO_DATE(FLX.getflex ('CNT', 281, c.cnt_contract_key), 'dd-mm-yyyy') - SYSDATE)/7,0) = 8;
-- Notificatie naar bezoeker 2 dagen voor de afspraak
-- Locatie met key 52 (UTR14) is een AM pand
CREATE OR REPLACE VIEW bamg_v_noti_bezoekers
AS
SELECT NULL sender,
NULL receiver,
'Welkom bij ' || DECODE(a.alg_locatie_key, 52, 'AM', 'BAM') text,
'CUST02' code,
a.bez_afspraak_key key,
b.bez_bezoekers_key xkey,
bez_bezoekers_email xemail,
NULL xmobile,
bijl.bijlage attachments
FROM bez_bezoekers b,
bez_afspraak a,
alg_gebouw g,
(SELECT fac_bijlagen_refkey, fac_bijlagen_key bijlage
FROM fac_v_bijlagen bij
WHERE fac_bijlagen_module = 'ALG'
AND bij.fac_bijlagen_kenmerk_key = 1060) bijl, -- Informatie mbt route en locatie
(SELECT fac_notificatie_job_nextrun nextrun
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'BAMG_V_NOTI_BEZOEKERS') n
WHERE b.bez_afspraak_key = a.bez_afspraak_key
AND a.alg_onrgoed_keys = g.alg_gebouw_key
AND g.alg_gebouw_key = bijl.fac_bijlagen_refkey(+)
AND ( ( TRUNC (
FAC.datumtijdplusuitvoertijd (SYSDATE, 2, 'D')) =
TRUNC (bez_afspraak_datum)
AND TO_CHAR (SYSDATE, 'D') NOT IN (1, 7) -- 1 zondag, 7 zaterdag
AND TRUNC (SYSDATE) NOT IN
(SELECT mld_vrije_dagen_datum
FROM mld_vrije_dagen)
AND TO_CHAR (nextrun, 'HH24:MI') = '16:00' -- we gaan om 16:00 uur de normale notificatie versturen
)
OR ( TRUNC (
FAC.datumtijdplusuitvoertijd (SYSDATE, 2, 'D')) >
TRUNC (bez_afspraak_datum)
AND b.bez_bezoekers_aanmaak > nextrun - 1 / 24
AND b.bez_bezoekers_aanmaak < nextrun -- De bezoekers die binnen 2 dagen aangemaakt worden krijgen direct een mail
));
CREATE OR REPLACE VIEW bamg_v_noti_repro_bunnik
AS
SELECT 'CUST04' code,
NULL sender,
12052 receiver, -- Repro bunnik
'Bestelling ter goedkeuring aangeboden ' || b.bes_bestelling_key text,
b.bes_bestelling_key key,
NULL xkey
FROM bes_bestelling b, bes_bestelling_item bi, bes_srtdeel sd, bes_srtgroep sg, mld_adres a, fac_tracking t
WHERE b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key IN (121, 221) -- Lyreco catalogi
AND b.mld_adres_key_lev = a.mld_adres_key
AND a.alg_locatie_key = 48 -- bunnik
AND b.bes_bestelling_status = 3
AND t.fac_tracking_refkey = b.bes_bestelling_key
AND t.fac_srtnotificatie_key = 6 -- BESFIT
AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun
- fac_notificatie_job_interval
/ 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view =
'BAMG_V_NOTI_REPRO_BUNNIK')
AND (SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE fac_notificatie_job_view =
'BAMG_V_NOTI_REPRO_BUNNIK');
-- Notificatie als de catering op maat stdmelding_key = 761 geaccepteerd wordt door de backoffice (opdracht)
CREATE OR REPLACE VIEW bamg_v_noti_cat_op_maat
AS
SELECT 'CUST08' code,
NULL sender,
m.prs_perslid_key receiver,
'Uw cateringaanvraag is geaccepteerd: ' || m.mld_melding_key text,
m.mld_melding_key key,
NULL xkey
FROM mld_melding m,
mld_opdr o,
fac_tracking t,
fac_srtnotificatie sn
WHERE mld_stdmelding_key = 761 -- Catering op maat
AND m.mld_melding_key = o.mld_melding_key
AND t.fac_tracking_refkey = o.mld_opdr_key
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'ORDACP'
AND fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun - fac_notificatie_job_interval / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'BAMG_V_NOTI_CAT_OP_MAAT')
AND (SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'BAMG_V_NOTI_CAT_OP_MAAT')
AND NOT EXISTS
(SELECT 1
FROM fac_tracking t1, fac_srtnotificatie sn1
WHERE t1.fac_srtnotificatie_key = sn1.fac_srtnotificatie_key
AND sn1.fac_srtnotificatie_code = 'CUST08'
AND t1.fac_tracking_refkey = m.mld_melding_key);
CREATE OR REPLACE VIEW bamg_v_rap_res_utr14_08
AS
SELECT res_rsv_ruimte_van van, res_rsv_ruimte_tot tot, res_rsv_ruimte_omschrijving omschrijving, pf.prs_perslid_naam_full contactpersoon
FROM res_rsv_ruimte rrr, res_ruimte_opstelling ro, prs_v_perslid_fullnames pf
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = 169 -- UTR14 - Vergaderzaal 0.8 (rest klein)
AND TRUNC(rrr.res_rsv_ruimte_van) = TRUNC(SYSDATE)
AND rrr.res_rsv_ruimte_contact_key = pf.prs_perslid_key;
CREATE OR REPLACE VIEW bamg_v_noti_res_utr14_08
AS
SELECT 'CUST06' code,
NULL sender,
12020 receiver, -- Hago UTR14
'Vergaderschema UTR14 - Vergaderzaal 0.8' text,
401 key,
NULL xkey
FROM DUAL
WHERE EXISTS (SELECT 1 FROM bamg_v_rap_res_utr14_08);
-- VASTGOED
CREATE OR REPLACE VIEW bamg_v_gebouw_contract_geg
AS
SELECT FLX.getflex ('ALG', 1011, g.alg_gebouw_key, 'G') plaats,
FLX.getflex ('ALG', 1001, g.alg_gebouw_key, 'G') adres,
FLX.getflex ('ALG', 1012, g.alg_gebouw_key, 'G') postcode,
alg_gebouw_code,
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key = FLX.getflex ('ALG', 1005, g.alg_gebouw_key, 'G')) eigendom,
FAC.safe_to_number(FLX.getflex ('ALG', 1041, g.alg_gebouw_key, 'G')) opp_kantoor,
FAC.safe_to_number(FLX.getflex ('ALG', 1042, g.alg_gebouw_key, 'G')) opp_bedrijfsruimte,
FAC.safe_to_number(FLX.getflex ('ALG', 1043, g.alg_gebouw_key, 'G')) opp_terrein,
cnt_contract_nummer_intern contract_nummer,
cnt_contract_looptijd_van,
DECODE (c.cnt_contract_key, NULL, NULL, FLX.getflex ('CNT', 3, c.cnt_contract_key, NULL)) verlengen_met,
DECODE (c.cnt_contract_key, NULL, NULL, FLX.getflex ('CNT', 1, c.cnt_contract_key, NULL)) opgezegd,
(SELECT t.cnt_termijn_aantal || ' ' || t.cnt_termijn_type
FROM cnt_termijn t
WHERE t.cnt_termijn_key = cnt_contract_rappeltermijn)
rappeltermijn,
(SELECT t.cnt_termijn_aantal || ' ' || t.cnt_termijn_type
FROM cnt_termijn t
WHERE t.cnt_termijn_key = cnt_contract_opzegtermijn)
opzegtermijn,
CNT.cnt_getOpzegdatum(c.cnt_contract_key) opzegdatum,
cnt_contract_looptijd_tot,
DECODE (c.cnt_contract_key, NULL, NULL, FLX.getflex ('CNT', 61, c.cnt_contract_key, NULL)) tagetiknr,
prs_kostenplaats_nr,
bam.prs_perslid_naam_full klantmanager,
yask.prs_perslid_naam_full contactpersoon_yask,
prs_bedrijf_naam,
prs_bedrijf_bezoek_adres,
prs_bedrijf_bezoek_plaats,
DECODE (c.cnt_contract_key, NULL, NULL, FLX.getflex ('CNT', 162, c.cnt_contract_key, NULL)) huurprijs,
DECODE (c.cnt_contract_key, NULL, NULL, FLX.getflex ('CNT', 163, c.cnt_contract_key, NULL)) servicekosten,
DECODE (c.cnt_contract_key, NULL, NULL, FLX.getflex ('CNT', 164, c.cnt_contract_key, NULL)) indexatie,
DECODE (c.cnt_contract_key, NULL, NULL, FLX.getflex ('CNT', 165, c.cnt_contract_key, NULL)) indexatiedatum
FROM alg_gebouw g,
alg_locatie l,
(SELECT cp.cnt_contract_key, g.alg_gebouw_key
FROM cnt_contract_plaats cp, alg_gebouw g, cnt_contract c
WHERE cp.cnt_alg_plaats_code = 'L'
AND cp.cnt_alg_plaats_key = g.alg_locatie_key
AND cp.cnt_contract_plaats_verwijder IS NULL
AND cp.cnt_contract_key = c.cnt_contract_key
AND c.cnt_contract_status <> 1
UNION ALL
SELECT cp.cnt_contract_key, cp.cnt_alg_plaats_key alg_gebouw_key
FROM cnt_contract_plaats cp, cnt_contract c
WHERE cp.cnt_alg_plaats_code = 'G'
AND cp.cnt_contract_plaats_verwijder IS NULL
AND cp.cnt_contract_key = c.cnt_contract_key
AND c.cnt_contract_status <> 1) cp,
cnt_contract c,
prs_v_perslid_fullnames bam,
prs_v_perslid_fullnames yask,
prs_kostenplaats k,
prs_bedrijf b
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = cp.alg_gebouw_key(+)
AND cp.cnt_contract_key = c.cnt_contract_key(+)
AND g.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND g.prs_perslid_key_verantw = yask.prs_perslid_key(+)
AND g.prs_perslid_key_verantw2 = bam.prs_perslid_key(+)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key(+)
AND g.alg_gebouw_verwijder IS NULL
AND COALESCE(g.alg_gebouw_vervaldatum, SYSDATE) > TRUNC(SYSDATE)
AND COALESCE(l.alg_locatie_vervaldatum, SYSDATE) > TRUNC(SYSDATE);
CREATE OR REPLACE VIEW bamg_v_gebouw_contract_geg2
AS
SELECT flx.getflex('ALG', 1011, g.alg_gebouw_key, 'G') plaats,
flx.getflex('ALG', 1001, g.alg_gebouw_key, 'G') adres,
flx.getflex('ALG', 1012, g.alg_gebouw_key, 'G') postcode,
-- l.alg_locatie_code locatie_code,
g.alg_gebouw_code code,
flx.getflex('ALG', 1641, g.alg_gebouw_key, 'G') verzorgingsgebied,
flx.getflex('ALG', 1640, g.alg_gebouw_key, 'G') gebouwtype,
fac.safe_to_number(flx.getflex('ALG', 1041, g.alg_gebouw_key, 'G')) oppervlakte_kantoor,
fac.safe_to_number(flx.getflex('ALG', 1042, g.alg_gebouw_key, 'G')) oppervlakte_bedrijfsruimte,
fac.safe_to_number(flx.getflex('ALG', 1043, g.alg_gebouw_key, 'G')) oppervlakte_buitenterrein,
fac.safe_to_number(flx.getflex('ALG', 1540, g.alg_gebouw_key, 'G')) parkeerplaatsen,
flx.getdomeinwaarde(341,flx.getflex('ALG', 1240, g.alg_gebouw_key, 'G')) segmenten,
flx.getdomeinwaarde(21,flx.getflex('ALG', 1005, g.alg_gebouw_key, 'G')) huur_eigendom,
DECODE(c.cnt_contract_key, NULL, NULL, flx.getflex('CNT', 165, c.cnt_contract_key)) indexatie,
flx.getdomeinwaarde(181,DECODE(c.cnt_contract_key, NULL, NULL, flx.getflex('CNT', 301, c.cnt_contract_key))) staffel_index,
DECODE(c.cnt_contract_key, NULL, NULL, flx.getflex('CNT', 2, c.cnt_contract_key)) expiratiedatum,
fac.safe_to_number(DECODE(c.cnt_contract_key, NULL, NULL, flx.getflex('CNT', 3, c.cnt_contract_key))) verlengingstermijn_in_jaren,
DECODE(c.cnt_contract_key, NULL, NULL, flx.getflex('CNT', 101, c.cnt_contract_key)) breakdatum,
DECODE ( t.cnt_termijn_type, 'M', cnt_termijn_aantal, 'Y', cnt_termijn_aantal * 12, -1) opzegtermijn_in_mnd,
DECODE(c.cnt_contract_key, NULL, NULL, flx.getflex('CNT', 261, c.cnt_contract_key)) breakpenalty,
fac.safe_to_number(DECODE(c.cnt_contract_key, NULL, NULL, flx.getflex('CNT', 162, c.cnt_contract_key))) huurlast,
fac.safe_to_number(DECODE(c.cnt_contract_key, NULL, NULL, flx.getflex('CNT', 163, c.cnt_contract_key))) servicekosten_verhuurder,
fac.safe_to_number(flx.getflex('ALG', 1560, l.alg_locatie_key, 'L')) exploitatielast,
fac.safe_to_number(flx.getflex('ALG', 1642, l.alg_locatie_key, 'L')) boekwaarde,
fac.safe_to_number(flx.getflex('ALG', 1600, g.alg_gebouw_key, 'G')) energieverbruik_Q_kwh,
fac.safe_to_number(flx.getflex('ALG', 1700, g.alg_gebouw_key, 'G')) pv_opbrengst_Q_kwh,
fac.safe_to_number(flx.getflex('ALG', 1701, g.alg_gebouw_key, 'G')) stadswarmte_Q_gj,
fac.safe_to_number(flx.getflex('ALG', 1622, g.alg_gebouw_key, 'G')) gasverbruik_Q_m3,
flx.getflex('ALG', 1320, g.alg_gebouw_key, 'G') energielabel,
flx.getdomeinwaarde(241,flx.getflex('ALG', 1469, g.alg_gebouw_key, 'G')) klantmanager,
b.prs_bedrijf_naam contractpartij,
flx.getdomeinwaarde(341,fac.safe_to_number(flx.getflex('ALG', 1240, g.alg_gebouw_key, 'G'))) onderhuurder_locatie,
flx.getdomeinwaarde(241,fac.safe_to_number(flx.getflex('ALG', 1201, g.alg_gebouw_key, 'G'))) contactpers_onderhuurder,
flx.getdomeinwaarde(341,fac.safe_to_number(flx.getflex('ALG', 1380, g.alg_gebouw_key, 'G'))) onderhuurder2_locatie,
flx.getdomeinwaarde(341,fac.safe_to_number(flx.getflex('ALG', 1381, g.alg_gebouw_key, 'G'))) onderhuurder3_locatie,
flx.getdomeinwaarde(341,fac.safe_to_number(flx.getflex('ALG', 1400, g.alg_gebouw_key, 'G'))) onderhuurder4_locatie,
flx.getdomeinwaarde(341,fac.safe_to_number(flx.getflex('ALG', 1401, g.alg_gebouw_key, 'G'))) onderhuurder5_locatie,
flx.getdomeinwaarde(341,fac.safe_to_number(flx.getflex('ALG', 1402, g.alg_gebouw_key, 'G'))) onderhuurder6_locatie,
flx.getdomeinwaarde(341,fac.safe_to_number(flx.getflex('ALG', 1720, g.alg_gebouw_key, 'G'))) onderhuurder7_locatie,
flx.getdomeinwaarde(341,fac.safe_to_number(flx.getflex('ALG', 1722, g.alg_gebouw_key, 'G'))) onderhuurder8_locatie,
flx.getdomeinwaarde(341,fac.safe_to_number(flx.getflex('ALG', 1740, g.alg_gebouw_key, 'G'))) onderhuurder9_locatie,
flx.getdomeinwaarde(341,fac.safe_to_number(flx.getflex('ALG', 1741, g.alg_gebouw_key, 'G'))) onderhuurder10_locatie,
fac.safe_to_number(flx.getflex('ALG', 1660, g.alg_gebouw_key, 'G')) m2_k_huurder1,
fac.safe_to_number(flx.getflex('ALG', 1661, g.alg_gebouw_key, 'G')) m2_k_huurder2,
fac.safe_to_number(flx.getflex('ALG', 1662, g.alg_gebouw_key, 'G')) m2_k_huurder3,
fac.safe_to_number(flx.getflex('ALG', 1663, g.alg_gebouw_key, 'G')) m2_k_huurder4,
fac.safe_to_number(flx.getflex('ALG', 1664, g.alg_gebouw_key, 'G')) m2_k_huurder5,
fac.safe_to_number(flx.getflex('ALG', 1665, g.alg_gebouw_key, 'G')) m2_k_huurder6,
fac.safe_to_number(flx.getflex('ALG', 1742, g.alg_gebouw_key, 'G')) m2_k_huurder7,
fac.safe_to_number(flx.getflex('ALG', 1743, g.alg_gebouw_key, 'G')) m2_k_huurder8,
fac.safe_to_number(flx.getflex('ALG', 1744, g.alg_gebouw_key, 'G')) m2_k_huurder9,
fac.safe_to_number(flx.getflex('ALG', 1745, g.alg_gebouw_key, 'G')) m2_k_huurder10,
fac.safe_to_number(flx.getflex('ALG', 1680, g.alg_gebouw_key, 'G')) m2_b_huurder1,
fac.safe_to_number(flx.getflex('ALG', 1681, g.alg_gebouw_key, 'G')) m2_b_huurder2,
fac.safe_to_number(flx.getflex('ALG', 1682, g.alg_gebouw_key, 'G')) m2_b_huurder3,
fac.safe_to_number(flx.getflex('ALG', 1683, g.alg_gebouw_key, 'G')) m2_b_huurder4,
fac.safe_to_number(flx.getflex('ALG', 1684, g.alg_gebouw_key, 'G')) m2_b_huurder5,
fac.safe_to_number(flx.getflex('ALG', 1685, g.alg_gebouw_key, 'G')) m2_b_huurder6,
fac.safe_to_number(flx.getflex('ALG', 1760, g.alg_gebouw_key, 'G')) m2_b_huurder7,
fac.safe_to_number(flx.getflex('ALG', 1761, g.alg_gebouw_key, 'G')) m2_b_huurder8,
fac.safe_to_number(flx.getflex('ALG', 1762, g.alg_gebouw_key, 'G')) m2_b_huurder9,
fac.safe_to_number(flx.getflex('ALG', 1763, g.alg_gebouw_key, 'G')) m2_b_huurder10,
flx.getdomeinwaarde(341,flx.getflex('ALG', 1580, g.alg_gebouw_key, 'G')) leegstand_ten_laste_van,
fac.safe_to_number(flx.getflex('ALG', 1340, g.alg_gebouw_key, 'G')) leegstand,
c.cnt_contract_looptijd_van looptijd_van,
c.cnt_contract_looptijd_tot looptijd_tot,
g.alg_gebouw_key
FROM cnt_contract c,
(SELECT cp.cnt_contract_key, g.alg_gebouw_key, g.alg_locatie_key
FROM cnt_contract cl, cnt_contract_plaats cp, alg_gebouw g
WHERE cl.cnt_contract_status <> 1
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
AND cp.cnt_contract_key = cl.cnt_contract_key
AND cnt_alg_plaats_code = 'G'
AND cl.ins_discipline_key = 181 -- Huurcontracten
AND SYSDATE BETWEEN cl.cnt_contract_looptijd_van AND cl.cnt_contract_looptijd_tot
UNION ALL
SELECT cp.cnt_contract_key, g.alg_gebouw_key, g.alg_locatie_key
FROM cnt_contract cl, cnt_contract_plaats cp, alg_gebouw g
WHERE cl.cnt_contract_status <> 1
AND cp.cnt_alg_plaats_key = g.alg_locatie_key
AND cp.cnt_contract_key = cl.cnt_contract_key
AND cnt_alg_plaats_code = 'L'
AND cl.ins_discipline_key = 181 -- Huurcontracten
AND SYSDATE BETWEEN cl.cnt_contract_looptijd_van AND cl.cnt_contract_looptijd_tot) cp,
alg_locatie l,
alg_gebouw g,
cnt_termijn t,
prs_bedrijf b
WHERE cp.cnt_contract_key = c.cnt_contract_key(+)
AND g.alg_gebouw_key = cp.alg_gebouw_key(+)
AND g.alg_locatie_key = l.alg_locatie_key
AND c.cnt_contract_opzegtermijn = t.cnt_termijn_key(+)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key(+)
AND g.alg_gebouw_verwijder IS NULL
AND COALESCE(g.alg_gebouw_vervaldatum, SYSDATE) > TRUNC(SYSDATE)
AND COALESCE(l.alg_locatie_vervaldatum, SYSDATE) > TRUNC(SYSDATE);
CREATE OR REPLACE VIEW bamg_v_rap_locatie_info
AS
SELECT lg.alg_regio_key,
lg.alg_regio_omschrijving,
lg.alg_regio_upper,
lg.alg_district_key,
lg.alg_district_omschrijving,
lg.alg_district_upper,
lg.alg_locatie_key,
lg.alg_locatie_omschrijving,
lg.alg_locatie_code,
lg.alg_locatie_upper,
lg.alg_locatie_tekening,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = flx.getflex ('ALG',
1100,
lg.alg_locatie_key,
'L')) hfd_bhv,
( SELECT LISTAGG (xml.char_to_html (b.fac_bijlagen_filename), ',')
WITHIN GROUP (ORDER BY fac_bijlagen_key DESC) AS bijlagen
FROM fac_bijlagen b
WHERE fac_bijlagen_refkey = lg.alg_locatie_key
AND b.fac_bijlagen_kenmerk_key = 1080
AND b.fac_bijlagen_module = 'ALG'
AND b.fac_bijlagen_verwijder IS NULL
GROUP BY fac_bijlagen_refkey) bhv_plan,
( SELECT LISTAGG (xml.char_to_html (b.fac_bijlagen_filename), ',')
WITHIN GROUP (ORDER BY fac_bijlagen_key DESC) AS bijlagen
FROM fac_bijlagen b
WHERE fac_bijlagen_refkey = lg.alg_locatie_key
AND b.fac_bijlagen_kenmerk_key = 1280
AND b.fac_bijlagen_module = 'ALG'
AND b.fac_bijlagen_verwijder IS NULL
GROUP BY fac_bijlagen_refkey) brie_plan,
( SELECT LISTAGG (xml.char_to_html (b.fac_bijlagen_filename), ',')
WITHIN GROUP (ORDER BY fac_bijlagen_key DESC) AS bijlagen
FROM fac_bijlagen b
WHERE fac_bijlagen_refkey = lg.alg_locatie_key
AND b.fac_bijlagen_kenmerk_key = 1081
AND b.fac_bijlagen_module = 'ALG'
AND b.fac_bijlagen_verwijder IS NULL
GROUP BY fac_bijlagen_refkey) brie,
( SELECT LISTAGG (xml.char_to_html (b.fac_bijlagen_filename), ',')
WITHIN GROUP (ORDER BY fac_bijlagen_key DESC) AS bijlagen
FROM fac_bijlagen b
WHERE fac_bijlagen_refkey = lg.alg_locatie_key
AND b.fac_bijlagen_kenmerk_key = 1264
AND b.fac_bijlagen_module = 'ALG'
AND b.fac_bijlagen_verwijder IS NULL
GROUP BY fac_bijlagen_refkey) laatste_oef,
DECODE (
(SELECT COUNT (*)
FROM alg_gebouw g
WHERE alg_srtgebouw_key = 21
AND g.alg_locatie_key = lg.alg_locatie_key),
0, 'Niet Facilitair',
'Facilitair') srtgebouw,
l.alg_locatie_vervaldatum
FROM alg_v_locatie_gegevens lg, alg_locatie l
WHERE lg.alg_locatie_key = l.alg_locatie_key;
-- Test rapportage om de resterende looptijd van een contract in Facilitor zichtbaar te maken.
CREATE OR REPLACE VIEW bamg_v_huurcontract_xy
AS
SELECT MAX(c.cnt_contract_key) cnt_contract_key,
g.alg_gebouw_key,
GREATEST(ROUND ((MAX (COALESCE(cnt_contract_looptijd_tot, SYSDATE)) - SYSDATE) / 365, 1),0) waarde, -- geen negatieve waarden
alg_gebouw_omschrijving title,
'Huur' huur_eigendom
FROM (SELECT cnt_contract_key, cnt_contract_looptijd_tot
FROM cnt_contract c
WHERE ins_discipline_key = 181
AND cnt_contract_verwijder IS NULL) c,
alg_gebouw g,
( SELECT c.cnt_contract_key, MIN (g.alg_gebouw_key) alg_gebouw_key
FROM cnt_contract_plaats cp, cnt_contract c, alg_gebouw g
WHERE cp.cnt_alg_plaats_code = 'L'
AND cp.cnt_alg_plaats_key = g.alg_locatie_key
AND cp.cnt_contract_key = c.cnt_contract_key
AND g.alg_gebouw_x IS NOT NULL
AND cp.cnt_contract_plaats_verwijder IS NULL
AND c.cnt_contract_status <> 1 -- gesloten
GROUP BY c.cnt_contract_key
UNION ALL
SELECT c.cnt_contract_key, cp.cnt_alg_plaats_key alg_gebouw_key
FROM cnt_contract_plaats cp, cnt_contract c
WHERE cp.cnt_alg_plaats_code = 'G'
AND cp.cnt_contract_plaats_verwijder IS NULL
AND cp.cnt_contract_key = c.cnt_contract_key
AND c.cnt_contract_status <> 1) cp -- gesloten
WHERE c.cnt_contract_key(+) = cp.cnt_contract_key
AND cp.alg_gebouw_key(+) = g.alg_gebouw_key
AND g.alg_gebouw_verwijder IS NULL
AND COALESCE(g.alg_gebouw_vervaldatum, SYSDATE) > TRUNC(SYSDATE)
AND flx.getflex('ALG', 1005, g.alg_gebouw_key, 'G') = 1 -- HUUR
GROUP BY g.alg_gebouw_key, alg_gebouw_omschrijving
UNION ALL
SELECT NULL,
alg_gebouw_key,
0,
alg_gebouw_omschrijving,
'Eigendom' eigendom
FROM alg_gebouw g
WHERE alg_gebouw_verwijder IS NULL
AND COALESCE(g.alg_gebouw_vervaldatum, SYSDATE) > TRUNC(SYSDATE)
AND flx.getflex ('ALG',
1005,
alg_gebouw_key,
'G') = 2;
-- BAMG#73122 Nieuwe rapportage BAM locaties in beheer CHV
-- BAMG#80525 Rapportage Selectie BAM locaties in beheer HV (met filter op inbeheer)
CREATE OR REPLACE VIEW bamg_v_rap_loc_beheer_chv
AS
SELECT alg_locatie_code,
max(alg_srtgebouw_omschrijving) srtgebouw,
k.prs_kostenplaats_nr,
alg_locatie_adres,
alg_locatie_postcode,
alg_locatie_plaats,
km.prs_perslid_naam_full km,
sem.prs_perslid_naam_full sem,
MAX(FLX.getdomeinwaarde (21, FLX.getflex ('ALG', 1005, g.alg_gebouw_key, 'G'))) huureigen,
SUM(FLX.getflex ('ALG', 1041, g.alg_gebouw_key, 'G')) kantoor,
SUM(FLX.getflex ('ALG', 1042, g.alg_gebouw_key, 'G')) bedrijf,
SUM(FLX.getflex ('ALG', 1043, g.alg_gebouw_key, 'G')) terrein,
(SELECT MAX(cnt_contract_looptijd_tot)
FROM cnt_contract c
WHERE c.cnt_contract_status <> 1
AND cnt_contract_verwijder IS NULL
AND ins_discipline_key = 181 -- Huurcontracten
AND cnt_contract_key IN
(SELECT cp.cnt_contract_key
FROM cnt_contract_plaats cp
WHERE cp.cnt_alg_plaats_code = 'L'
AND cp.cnt_alg_plaats_key = l.alg_locatie_key
AND cp.cnt_contract_plaats_verwijder IS NULL
UNION ALL
SELECT cp.cnt_contract_key
FROM cnt_contract_plaats cp, alg_gebouw g2
WHERE cp.cnt_alg_plaats_code = 'G'
AND g2.alg_locatie_key = l.alg_locatie_key
AND cp.cnt_alg_plaats_key = g2.alg_gebouw_key
AND g2.alg_gebouw_verwijder IS NULL
AND cp.cnt_contract_plaats_verwijder IS NULL)) looptijdtot,
(SELECT LISTAGG (FLX.getdomeinwaarde (341, FLX.getflex ('ALG', alg_kenmerk_key, g2.alg_gebouw_key, 'G')), CHR(10) )
WITHIN GROUP (order by alg_kenmerk_key) onderhuurder
FROM alg_gebouw g2, alg_kenmerk
WHERE l.alg_locatie_key = g2.alg_locatie_key
AND g2.alg_gebouw_verwijder IS NULL
AND alg_kenmerk_key IN ( 1240, 1380, 1381, 1382, 1400, 1401, 1402) -- onderhuur 1 t/m 7
GROUP BY l.alg_locatie_key
) onderhuur,
FLX.getdomeinwaarde (41, FLX.getflex ('ALG', 1780, g.alg_gebouw_key, 'G')) in_beheer_chv,
alg_locatie_vervaldatum,
alg_gebouw_vervaldatum
FROM alg_locatie l,
alg_gebouw g,
alg_srtgebouw sg,
prs_kostenplaats k,
prs_v_perslid_fullnames km,
prs_v_perslid_fullnames sem
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND g.prs_perslid_key_verantw2 = km.prs_perslid_key(+)
AND g.prs_perslid_key_verantw = sem.prs_perslid_key(+)
AND g.alg_srtgebouw_key = sg.alg_srtgebouw_key(+)
AND g.alg_gebouw_verwijder IS NULL
GROUP BY alg_locatie_code,
k.prs_kostenplaats_nr,
l.alg_locatie_key,
alg_locatie_adres,
alg_locatie_postcode,
alg_locatie_plaats,
km.prs_perslid_naam_full,
sem.prs_perslid_naam_full,
alg_locatie_vervaldatum,
alg_gebouw_vervaldatum,
FLX.getflex ('ALG', 1780, g.alg_gebouw_key, 'G');
-- views voor de doorbelastingsrapportages
CREATE OR REPLACE VIEW bamg_v_ruimte_geg_basis
AS
SELECT g.alg_gebouw_code,
g.alg_gebouw_omschrijving,
g.alg_gebouw_key,
v.alg_verdieping_code,
sr.alg_srtruimte_omschrijving,
r.*,
COALESCE (SUBSTR(FLX.getdomeinwaarde (381, FLX.getflex ('ALG', 1300, r.alg_ruimte_key, 'R')),1,1),
sr.alg_srtruimte_code) vo,
DECODE (COALESCE (SUBSTR(FLX.getdomeinwaarde (381, FLX.getflex ('ALG', 1300, r.alg_ruimte_key, 'R')),1,1),
sr.alg_srtruimte_code),
'V', alg_ruimte_bruto_vloeropp) arv,
DECODE (COALESCE (SUBSTR(FLX.getdomeinwaarde (381, FLX.getflex ('ALG', 1300, r.alg_ruimte_key, 'R')),1,1),
sr.alg_srtruimte_code),
'G', alg_ruimte_bruto_vloeropp) arg
FROM alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
alg_srtruimte sr
WHERE r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND r.alg_srtruimte_key = sr.alg_srtruimte_key
AND alg_ruimte_verwijder IS NULL
AND alg_ruimte_omschrijving <> 'dummy';
CREATE OR REPLACE VIEW bamg_v_ruimte_geg
AS
SELECT rgb.*,
DECODE (
vo,
NULL, alg_ruimte_bruto_vloeropp
* (SELECT SUM (arv)
FROM bamg_v_ruimte_geg_basis rgbv
WHERE rgbv.alg_verdieping_key =
rgb.alg_verdieping_key)
/ (SELECT SUM (alg_ruimte_bruto_vloeropp)
FROM bamg_v_ruimte_geg_basis rgbv
WHERE rgbv.alg_verdieping_key =
rgb.alg_verdieping_key
AND vo IS NULL)) oarv,
DECODE (
vo,
NULL, alg_ruimte_bruto_vloeropp
* (SELECT SUM (arg)
FROM bamg_v_ruimte_geg_basis rgbg
WHERE rgbg.alg_gebouw_key = rgb.alg_gebouw_key)
/ (SELECT SUM (alg_ruimte_bruto_vloeropp)
FROM bamg_v_ruimte_geg_basis rgbg
WHERE rgbg.alg_gebouw_key = rgb.alg_gebouw_key
AND vo IS NULL)) oarg
FROM bamg_v_ruimte_geg_basis rgb;
CREATE OR REPLACE VIEW bamg_v_rap_ruimte_geg
AS
SELECT alg_gebouw_code,
alg_verdieping_code,
alg_srtruimte_omschrijving,
alg_ruimte_nr,
ROUND (SUM (DECODE (vo, NULL, alg_ruimte_bruto_vloeropp)), 2)
dmgh,
ROUND (SUM (arv), 2)
arv,
ROUND (SUM (arg), 2)
arg,
ROUND (SUM (oarv), 2)
sarv,
ROUND (SUM (oarg), 2)
sarg,
ROUND (
SUM (DECODE (vo, NULL, alg_ruimte_bruto_vloeropp))
+ SUM (oarv)
+ SUM (oarg),
2)
mgrhio
FROM bamg_v_ruimte_geg
GROUP BY alg_gebouw_code, alg_verdieping_code, alg_srtruimte_omschrijving, alg_ruimte_nr, vo;
CREATE OR REPLACE VIEW bamg_v_rap_ruimtehuurder
AS
SELECT alg_gebouw_code,
alg_verdieping_code,
alg_gebouw_key,
alg_ruimte_nr,
alg_srtruimte_key,
alg_srtruimte_omschrijving,
dmgh,
mgrhio,
huurderopp,
bezetting,
a.prs_afdeling_key,
prs_afdeling_omschrijving
FROM ( SELECT alg_gebouw_code,
alg_gebouw_key,
alg_verdieping_code,
alg_ruimte_nr,
alg_srtruimte_key,
alg_srtruimte_omschrijving,
ROUND (SUM (DECODE (vo, NULL, alg_ruimte_bruto_vloeropp)),
2) dmgh,
ROUND (
SUM (DECODE (vo, NULL, alg_ruimte_bruto_vloeropp))
+ SUM (oarv)
+ SUM (oarg),
2) mgrhio,
ROUND (
( SUM (
DECODE (vo, NULL, alg_ruimte_bruto_vloeropp))
+ SUM (oarv)
+ SUM (oarg))
* ra.prs_ruimteafdeling_bezetting
/ 100,
2) huurderopp,
ra.prs_ruimteafdeling_bezetting bezetting,
ra.prs_afdeling_key
FROM bamg_v_ruimte_geg rg, prs_ruimteafdeling ra
WHERE rg.alg_ruimte_key = ra.alg_ruimte_key
GROUP BY alg_gebouw_code,
alg_gebouw_key,
alg_verdieping_code,
alg_srtruimte_omschrijving,
alg_srtruimte_key,
vo,
ra.prs_ruimteafdeling_bezetting,
ra.prs_afdeling_key,
alg_ruimte_nr
UNION ALL -- Leegstand
SELECT alg_gebouw_code,
alg_gebouw_key,
alg_verdieping_code,
alg_ruimte_nr,
alg_srtruimte_key,
alg_srtruimte_omschrijving,
ROUND (SUM (DECODE (vo, NULL, alg_ruimte_bruto_vloeropp)),
2) dmgh,
ROUND (
SUM (DECODE (vo, NULL, alg_ruimte_bruto_vloeropp))
+ SUM (oarv)
+ SUM (oarg),
2) mgrhio,
ROUND (
( SUM (
DECODE (vo, NULL, alg_ruimte_bruto_vloeropp))
+ SUM (oarv)
+ SUM (oarg))
* bezetting
/ 100,
2) huuropp,
bezetting,
18861 -- afdeling leegstand
FROM bamg_v_ruimte_geg rg,
( SELECT r.alg_ruimte_key,
100
- SUM (
COALESCE (ra.prs_ruimteafdeling_bezetting,
0)) bezetting
FROM prs_ruimteafdeling ra,
alg_ruimte r,
alg_srtruimte sr
WHERE r.alg_ruimte_key = ra.alg_ruimte_key(+)
AND r.alg_srtruimte_key = sr.alg_srtruimte_key
AND sr.prs_verhuurbaar = 1
GROUP BY r.alg_ruimte_key) la -- leegstand afdeling
WHERE la.bezetting <> 0
AND la.alg_ruimte_key = rg.alg_ruimte_key
GROUP BY alg_gebouw_code,
alg_gebouw_key,
alg_verdieping_code,
alg_ruimte_nr,
alg_srtruimte_omschrijving,
alg_srtruimte_key,
vo,
bezetting) ab,
prs_afdeling a
WHERE ab.prs_afdeling_key = a.prs_afdeling_key(+);
CREATE OR REPLACE VIEW bamg_v_rap_ruimtehuur
AS
SELECT rh.alg_gebouw_code,
rh.alg_verdieping_code,
rh.alg_srtruimte_omschrijving,
rh.huurderopp,
prs_afdeling_omschrijving,
flx.getflex ('PRS', 1060, prs_afdeling_key, 'A') debiteur,
(huurderopp * gt.alg_srtruimte_lg_prijs) / 12 huur
FROM bamg_v_rap_ruimtehuurder rh, alg_srtruimte_locatiegebouw gt
WHERE rh.alg_gebouw_key = gt.alg_gebouw_key
AND rh.alg_srtruimte_key = gt.alg_srtruimte_key
UNION ALL
SELECT alg_gebouw_code,
NULL,
'Afschrijving',
NULL,
prs_afdeling_omschrijving,
flx.getflex ('PRS', 1060, prs_afdeling_key, 'A') debiteur,
c.cnt_contract_termijnkosten
FROM cnt_contract c,
cnt_contract_plaats cp,
alg_gebouw g,
prs_afdeling a
WHERE ins_discipline_key = 1101 -- Afschrijving op interne doorbelasting
AND c.cnt_contract_key = cp.cnt_contract_key
AND cnt_alg_plaats_code = 'G'
AND cnt_alg_plaats_key = g.alg_gebouw_key
AND prs_afdeling_key_eig = a.prs_afdeling_key
AND SYSDATE BETWEEN c.cnt_contract_looptijd_van AND c.cnt_contract_looptijd_tot;
-- Graphics
CREATE OR REPLACE VIEW bamg_v_thema_ruimteafdeling
AS
SELECT alg_ruimte_key,
prs_afdeling_naam || '-' || prs_afdeling_omschrijving waarde
FROM prs_ruimteafdeling ra, prs_afdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
AND prs_ruimteafdeling_verwijder IS NULL;
-- view voor alle personen zonder de _ users
CREATE OR REPLACE VIEW bamg_v_perslid_fullnames
AS
SELECT pf.*, p.prs_perslid_verwijder
FROM prs_v_perslid_fullnames pf, prs_perslid p
WHERE pf.prs_perslid_key = p.prs_perslid_key
AND SUBSTR (prs_perslid_oslogin, 1, 1) <> '_';
-- views voor dashboards
CREATE OR REPLACE VIEW bamg_v_dashboard_stdmgroep
AS
SELECT TRUNC (mld_melding_datum, 'MM') datum,
TO_CHAR (mld_melding_datum, 'yyyy-mon') maand,
ins_srtdiscipline_omschrijving,
ins_discipline_omschrijving,
mld_stdmeldinggroep_oms,
alg_gebouw_code || '-' || alg_gebouw_naam gebouw,
100*acceptatie_sla acc_sla,
100*afgemeld_sla afm_sla,
100*afgemeld_einddatum afm_datum
FROM (SELECT m.mld_melding_datum,
MLD.getmeldingstatusdate (m.mld_melding_key, 5),
mld_melding_einddatum_std,
DECODE (
SIGN (
m.mld_melding_einddatum_std
- COALESCE (
MLD.getmeldingstatusdate (m.mld_melding_key, 4),
COALESCE (
MLD.getmeldingstatusdate (m.mld_melding_key,
5),
SYSDATE))),
-1, 0,
1) acceptatie_SLA,
DECODE (
SIGN (
m.mld_melding_einddatum_std
- COALESCE (
MLD.getmeldingstatusdate (m.mld_melding_key, 5),
SYSDATE)),
-1, 0,
1) afgemeld_SLA,
DECODE (
SIGN (
m.mld_melding_einddatum
- COALESCE (
MLD.getmeldingstatusdate (m.mld_melding_key, 5),
SYSDATE)),
-1, 0,
1) afgemeld_einddatum,
sd.ins_srtdiscipline_omschrijving,
d.ins_discipline_omschrijving,
mld_stdmeldinggroep_oms,
aog.alg_gebouw_code,
aog.alg_gebouw_naam
FROM mld_melding m,
mld_stdmelding std,
mld_stdmeldinggroep stdg,
mld_discipline d,
ins_srtdiscipline sd,
alg_v_allonrgoed_gegevens aog
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND std.mld_stdmeldinggroep_key = stdg.mld_stdmeldinggroep_key
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys);
-- view voor de PDC rapportage
CREATE OR REPLACE VIEW bamg_v_rap_pdc
AS
SELECT alg_kenmerk_kenmerktype type,
g.alg_gebouw_key,
alg_gebouw_code,
alg_kenmerk_omschrijving,
flx.getflex ('ALG',
alg_kenmerk_key,
alg_gebouw_key,
'G') waarde,
alg_kenmerk_volgnr,
alg_kenmerk_kenmerktype,
alg_kenmerk_groep
FROM alg_gebouw g, alg_kenmerk k
WHERE k.alg_kenmerk_niveau = 'G'
AND alg_kenmerk_kenmerktype IN ('N', 'C', 'l', 'V')
UNION ALL
SELECT alg_kenmerk_kenmerktype type,
g.alg_gebouw_key,
alg_gebouw_code,
alg_kenmerk_omschrijving,
flx.getdomeinwaarde(k.fac_kenmerkdomein_key,
flx.getflex ('ALG',
alg_kenmerk_key,
alg_gebouw_key,
'G')
) waarde,
alg_kenmerk_volgnr,
alg_kenmerk_kenmerktype,
alg_kenmerk_groep
FROM alg_gebouw g, alg_kenmerk k
WHERE k.alg_kenmerk_niveau = 'G'
AND alg_kenmerk_kenmerktype IN ('S', 'R');
-- view voor listbox bij gebouw
CREATE OR REPLACE VIEW bamg_v_afdeling_lt_niv4
AS
SELECT prs_afdeling_key, prs_afdeling_verwijder, prs_afdeling_naam2 || ' ' || prs_afdeling_naam prs_afdeling_naam
FROM prs_v_afdeling
WHERE niveau < 4;
-- Procedure om de goederenontvangst van Lyreco te registreren.
CREATE OR REPLACE PROCEDURE bamg_import_lyreco_ontvangst (p_import_key IN NUMBER)
AS
CURSOR c1 IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
c_delim VARCHAR2 (2) := fac.import_delimiter (p_import_key);
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
v_file_index fac_imp_file.fac_imp_file_index%TYPE;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count_tot NUMBER (10);
v_aanduiding VARCHAR (400);
v_bes_bestelopdr_id VARCHAR2 (255);
v_bes_srtdeel_nr VARCHAR2 (255);
v_bes_srtdeel_omschrijving VARCHAR2 (255);
v_bes_bestelopdr_item_aantal VARCHAR2 (255);
v_bes_bestelopdr_item_key NUMBER;
v_bes_bestelopdr_key NUMBER;
v_bes_bestelling_item_key NUMBER;
v_bes_bestelling_key NUMBER;
v_tracking VARCHAR2 (2048);
v_lyreco_key NUMBER;
v_aantal NUMBER;
v_bes_bestellevr_key NUMBER;
v_bes_bestellevr_pakbon VARCHAR2 (100);
v_bes_bestellevr_datum_txt VARCHAR2 (100);
v_bes_bestellevr_datum DATE;
BEGIN
v_tracking := '';
v_count_tot := 0;
header_is_valid := 0;
SELECT prs_perslid_key
INTO v_lyreco_key
FROM fac_import i
WHERE i.fac_import_key = p_import_key;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_file_index := rec1.fac_imp_file_index;
v_errormsg := 'Fout bij opvragen importregel';
v_aanduiding := '';
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_delim, v_bes_bestelopdr_id);
fac.imp_getfield (v_newline, c_delim, v_bes_srtdeel_nr);
fac.imp_getfield (v_newline, c_delim, v_bes_srtdeel_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_bes_bestelopdr_item_aantal);
fac.imp_getfield (v_newline, c_delim, v_bes_bestellevr_pakbon);
fac.imp_getfield (v_newline, c_delim, v_bes_bestellevr_datum_txt);
IF (header_is_valid = 0)
THEN
IF UPPER (v_bes_bestelopdr_id) = 'BESTELOPDRID'
AND UPPER (v_bes_srtdeel_nr) = 'ARTIKELNUMMER'
AND UPPER (v_bes_srtdeel_omschrijving) = 'ARTIKELOMSCHRIJVING'
AND UPPER (v_bes_bestelopdr_item_aantal) = 'AANTAL'
THEN
header_is_valid := 1;
ELSE
IF rec1.fac_imp_file_index = 1
THEN
fac.imp_writelog (
p_import_key,
'E',
'Ongeldige header aangetroffen:',
'BESTELOPDRID: '
|| UPPER (v_bes_bestelopdr_id)
|| CHR (10)
|| 'ARTIKELNUMMER: '
|| UPPER (v_bes_srtdeel_nr)
|| CHR (10)
|| 'ARTIKELOMSCHRIJVING: '
|| UPPER (v_bes_srtdeel_omschrijving)
|| CHR (10)
|| 'AANTAL: '
|| UPPER (v_bes_bestelopdr_item_aantal));
END IF;
END IF;
ELSE
v_aanduiding :=
v_bes_bestelopdr_id
|| ' - '
|| v_bes_srtdeel_nr
|| ' - '
|| v_bes_srtdeel_omschrijving
|| ' - '
|| v_bes_bestelopdr_item_aantal;
v_count_tot := v_count_tot + 1;
v_errormsg := 'Fout bij opzoeken bestelopdr';
SELECT bes_bestelopdr_key
INTO v_bes_bestelopdr_key
FROM bes_bestelopdr
WHERE bes_bestelopdr_id = v_bes_bestelopdr_id;
BEGIN
v_errormsg := 'Fout bij opzoeken bestelregel';
SELECT boi.bes_bestelopdr_item_key, bi.bes_bestelling_item_key, bi.bes_bestelling_key
INTO v_bes_bestelopdr_item_key, v_bes_bestelling_item_key, v_bes_bestelling_key
FROM bes_bestelopdr_item boi, bes_bestelling_item bi, bes_srtdeel sd
WHERE bes_bestelopdr_key = v_bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND bes_srtdeel_nr = v_bes_srtdeel_nr;
v_errormsg := 'Fout bij bepalen aantal';
v_aantal := TO_NUMBER (v_bes_bestelopdr_item_aantal);
v_errormsg := 'Fout bij bepalen datum';
v_bes_bestellevr_datum := TO_DATE(v_bes_bestellevr_datum_txt, 'yyyymmdd');
IF v_bes_bestellevr_key IS NULL
THEN
INSERT INTO bes_bestellevr(bes_bestellevr_datum, bes_bestellevr_pakbon, prs_perslid_key)
VALUES (v_bes_bestellevr_datum, SUBSTR(v_bes_bestellevr_pakbon,1,50), v_lyreco_key)
RETURNING bes_bestellevr_key INTO v_bes_bestellevr_key;
END IF;
INSERT INTO bes_bestellevr_item ( bes_bestellevr_key , bes_bestelopdr_item_key , bes_bestellevr_item_aantal )
VALUES (v_bes_bestellevr_key, v_bes_bestelopdr_item_key, v_aantal);
v_errormsg := 'Fout bij aanpassen aantal bestelopdrachtregel [' || v_bes_bestelopdr_item_key || ']';
UPDATE bes_bestelopdr_item B
SET bes_bestelopdr_item_aantalontv =
COALESCE (bes_bestelopdr_item_aantalontv, 0) + v_aantal,
bes_bestelopdr_item_ontvangen = SYSDATE
WHERE bes_bestelopdr_item_key = v_bes_bestelopdr_item_key;
v_errormsg := 'Fout bij aanpassen aantal bestellingregel';
UPDATE bes_bestelling_item
SET bes_bestelling_item_aantalontv =
COALESCE (bes_bestelling_item_aantalontv, 0) + v_aantal
WHERE bes_bestelling_item_key = v_bes_bestelling_item_key;
v_errormsg := 'Fout bij statusupdate bestelopdracht';
BEGIN
bes.updatebestelopdrstatus (v_bes_bestelopdr_key, v_lyreco_key);
END;
v_errormsg := 'Fout bij statusupdate bestelling';
BEGIN
bes.updatebestellingstatus (v_bes_bestelling_key, v_lyreco_key);
END;
v_errormsg := 'Fout bij aanpassing tracking';
v_tracking :=
v_tracking || CHR (10) || 'Levering: '
|| v_aantal
|| ' '
|| v_bes_srtdeel_omschrijving;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errormsg := 'Fout bij aanpassing aflever info';
UPDATE bes_bestelopdr
SET bes_bestelopdr_delivery_opmerk =
SUBSTR (
'Artikel niet gevonden: '
|| v_bes_srtdeel_nr
|| ' '
|| v_bes_srtdeel_omschrijving
|| CHR (10)
|| bes_bestelopdr_delivery_opmerk,
1,
320)
WHERE bes_bestelopdr_key = v_bes_bestelopdr_key;
END;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Goederenontvangst kan niet geregistreerd worden! regel:' || v_file_index);
END;
END LOOP;
BEGIN
fac.trackaction ('BES2UP',
v_bes_bestelopdr_key,
v_lyreco_key,
NULL,
'Bestelopdracht ' || v_bes_bestelopdr_id || ' is gewijzigd ' || SUBSTR (v_tracking, 1, 1900));
END;
END;
/
CREATE OR REPLACE PROCEDURE bamg_update_lyreco_ontvangst (p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
-- Rapportage om de levering van catalogusproducten inzichtelijk te maken
CREATE OR REPLACE VIEW bamg_v_catalogus_leveringen
AS
SELECT d.ins_discipline_omschrijving,
sd.bes_srtdeel_omschrijving,
bli.bes_bestellevr_item_aantal,
bl.bes_bestellevr_datum,
bl.bes_bestellevr_pakbon,
bes_bestelling_item_prijs,
bli.bes_bestellevr_item_aantal * bes_bestelling_item_prijs bes_bestellevr_prijs
FROM bes_bestellevr_item bli,
bes_bestellevr bl,
bes_bestelling_item bi,
bes_srtdeel sd,
bes_srtgroep sg,
bes_discipline d
WHERE bli.bes_bestellevr_key = bl.bes_bestellevr_key
AND bli.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = d.ins_discipline_key;
-- Notificatie naar de leden van de autorisatiegroep Assetmanager als het Tagetik nummer
-- niet ingevuld is terwijl dit wel zou moeten.
-- Autorisatiegroep 121 is Assetmanager
CREATE OR REPLACE VIEW bamg_v_noti_cnt_tagetik
AS
SELECT 'CUST03' code,
NULL sender,
gg.prs_perslid_key receiver,
'Tagetik nummer niet ingevuld bij contract '
|| c.cnt_contract_nummer_intern
|| ' ('
|| c.cnt_contract_omschrijving
|| ')' text,
c.cnt_contract_key key,
NULL xkey
FROM cnt_contract c, fac_gebruikersgroep gg
WHERE c.ins_discipline_key = 181 -- Huur vastgoed
AND c.cnt_contract_status <> 1 -- gesloten
AND SYSDATE < c.cnt_contract_looptijd_tot
AND ( ( FLX.getflex ('CNT', 21, c.cnt_contract_key, NULL) = 4 -- Verplichting > 1 jaar = Ja
AND FLX.getflex ('CNT', 23, c.cnt_contract_key, NULL) = 4 -- Huurverplichting > 5000 euro = Ja
AND FLX.getflex ('CNT', 121, c.cnt_contract_key, NULL) = 4) -- Factuur en contract op naam CHV? = Ja
OR FLX.getflex ('CNT', 24, c.cnt_contract_key, NULL) = 4) -- Opdracht verkregen = Ja
AND FLX.getflex ('CNT', 61, c.cnt_contract_key, NULL) -- Tagetik nummer
IS NULL
AND gg.fac_groep_key = 121;
-- view om QR codes voor een deel te genereren.
CREATE OR REPLACE VIEW bamg_v_rap_qr_deel
AS
SELECT fac_bookmark_naam,
fac_bookmark_id,
ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
alg_locatie_key,
alg_gebouw_omschrijving,
ins_deel_aanmaak,
ins_deel_key
FROM fac_bookmark b, ins_v_deel_gegevens d
WHERE fac_bookmark_expire IS NULL
AND fac_bookmark_id = 'dc0pIPeiVsSco7sO';
-- QR links rapport maar dan zonder afbeelding van de QR
-- de data kan naar de drukker gestuurd worden die er zelf een QR van maakt.
CREATE OR REPLACE VIEW bamg_v_rap_qr_deel_xls
AS
SELECT 'https://bamg.facilitor.nl/?u=dc0pIPeiVsSco7sO&k=' || dg.ins_deel_key url,
ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
g.alg_gebouw_code,
flx.getflex ('ALG',
1001,
g.alg_gebouw_key,
'G') adres,
flx.getflex ('ALG',
1012,
g.alg_gebouw_key,
'G') postcode,
flx.getflex ('ALG',
1011,
g.alg_gebouw_key,
'G') plaats
FROM ins_v_deel_gegevens dg, alg_gebouw g
WHERE dg.alg_gebouw_key = g.alg_gebouw_key;
-- view om QR codes voor een verdieping te genereren.
CREATE OR REPLACE VIEW bamg_v_rap_qr_verdieping_xls
AS
SELECT 'https://bamg.facilitor.nl/?u=hwTYeq0ucZDept3I&k=' || v.alg_verdieping_key url,
g.alg_gebouw_code,
flx.getflex ('ALG',
1001,
g.alg_gebouw_key,
'G') adres,
flx.getflex ('ALG',
1012,
g.alg_gebouw_key,
'G') postcode,
flx.getflex ('ALG',
1011,
g.alg_gebouw_key,
'G') plaats
FROM alg_gebouw g, alg_verdieping v
WHERE g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_volgnr = 0;
-- view om QR codes voor een ruimte te genereren.
-- Ieder srtruimte krijgt een eigen bookmark
-- Om een link tussen bookmark en srtuimte te maken
-- wordt de omschrijving van de bookmark als volgt gevuld:
-- QR bij verkeersruimte key:30
-- De key is dan de key van de srtruimte.
CREATE OR REPLACE VIEW bamg_v_rap_qr_ruimte
AS
SELECT b.fac_bookmark_naam,
b.fac_bookmark_id,
sr.alg_srtruimte_omschrijving,
rg.alg_ruimte_omschrijving,
rg.alg_ruimte_nr,
rg.alg_ruimte_key,
alg_locatie_omschrijving,
alg_gebouw_omschrijving,
alg_verdieping_omschrijving
FROM fac_bookmark b, alg_srtruimte sr, alg_v_ruimte_gegevens rg
WHERE b.fac_bookmark_expire IS NULL
AND COALESCE(FAC.safe_to_number(TRIM(SUBSTR(b.fac_bookmark_naam, INSTR(b.fac_bookmark_naam, ':')+1))),-1) = sr.alg_srtruimte_key
AND sr.alg_srtruimte_key = rg.alg_srtruimte_key;
-- Financiele interface YASK
-- stdmelding_key 51: Directielevering YASK project
-- stdmelding_key 382: Inerne doorbelasting kosten CHV. Deze komen niet in de rapportage naar Yask maar wel op de interne doorbelasting
-- van BAM
CREATE OR REPLACE VIEW bamg_v_kosten_rev_billing
AS
SELECT o.mld_opdr_key,
m.mld_melding_key,
sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr nummer,
a.prs_afdeling_naam opco,
DECODE (m.mld_stdmelding_key, 51, prkp.mld_kenmerkmelding_waarde, ko.prs_kostenplaats_nr) kpl_opdr,
k.prs_kostenplaats_nr kpl_bam,
k.prs_kostenplaats_omschrijving kp_omschrijving,
ks.prs_kostensoort_opmerking gb_bam,
ks.prs_kostensoort_altcode gb_rekening,
d.ins_discipline_omschrijving || ' / ' || mld_stdmelding_omschrijving dienst,
o.mld_opdr_omschrijving omschrijving,
b.prs_bedrijf_naam uitvoerende,
'Vebego Facility Solutions/' || DECODE (m.mld_stdmelding_key, 51, 'E', 'B') || '-nota '|| lower(to_char(MLD.getopdrachtstatusdate (o.mld_opdr_key, 9), 'MONTH')) || ' ' || prs_kostensoort_oms omschrijving_bam,
DECODE (m.mld_stdmelding_key, 51, 'E-budget (CHV-vast)', 'B-budget (CHV-variabel)') kd_omschrijving,
TRUNC(MLD.getopdrachtstatusdate (o.mld_opdr_key, 9), 'mm') datum,
so.mld_statusopdr_omschrijving,
MLD.getopdrachtstatusdate (o.mld_opdr_key, 9) afgerond_op,
COALESCE(FAC.safe_to_number(btw.mld_kenmerk_hint), 21) btw,
COALESCE(FAC.safe_to_number(btw.mld_kenmerkopdr_waarde), mld_opdr_kosten) bedrag_ex,
DECODE(FAC.safe_to_number(btw.mld_kenmerk_hint), 9, COALESCE(FAC.safe_to_number(btw.mld_kenmerkopdr_waarde), mld_opdr_kosten) * 1.09) inclBTW9,
DECODE(m.mld_stdmelding_key, 382, 'Intern', 'Algemeen') type_kosten,
DECODE(
DECODE (d.ins_srtdiscipline_key,
1, flx.getflex ('MLD', 1421, m.mld_melding_key), -- Aanvraag Kosten doorbelasten naar klant, Ja
2, flx.getflex ('MLD', 1861, m.mld_melding_key), -- Backoffice aanvraag/melding
NULL),
4, 'Ja',
'Nee') doorbelasten
FROM mld_opdr o,
mld_melding m,
prs_perslid p,
prs_v_afdeling_boom ab,
prs_afdeling a,
alg_v_onroerendgoed aok,
alg_gebouw g,
prs_kostenplaats k,
prs_kostenplaats ko,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd,
prs_kostensoort ks,
mld_statusopdr so,
prs_bedrijf b,
(SELECT mld_melding_key, mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE mld_kenmerk_key = 981) prkp, -- 981 kostenplaats
(SELECT mld_melding_key, mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE mld_kenmerk_key = 441) prks, -- 441 grootboekrekening
(SELECT mld_opdr_key, ok.mld_kenmerk_hint, mld_kenmerkopdr_waarde FROM mld_kenmerkopdr km, mld_kenmerk ok
WHERE ok.mld_srtkenmerk_key = 882 AND ok.mld_kenmerk_verwijder IS NULL AND km.mld_kenmerk_key = ok.mld_kenmerk_key) btw -- hoog, laag en nul_ procent btw
WHERE o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_onroerendgoed_keys = aok.alg_onroerendgoed_keys(+)
AND aok.alg_gebouw_key = g.alg_gebouw_key(+)
AND g.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_key NOT IN (781) -- Mutaties
AND COALESCE (o.prs_kostensoort_key, std.prs_kostensoort_key) =
ks.prs_kostensoort_key(+)
AND m.prs_perslid_key_voor = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = a.prs_afdeling_key
AND o.prs_kostenplaats_key = ko.prs_kostenplaats_key(+)
--AND o.mld_statusopdr_key = 9 -- Afgerond
AND m.mld_melding_key = prkp.mld_melding_key(+)
AND m.mld_melding_key = prks.mld_melding_key(+)
AND o.mld_opdr_key = btw.mld_opdr_key(+)
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND o.mld_statusopdr_key = so.mld_statusopdr_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key(+)
UNION ALL
-- De lijst met bestellingen waarvan niet de goederenontvangst met pakbonnen wordt geregistreerd.
SELECT boi.bes_bestelopdr_key,
bi.bes_bestelling_key,
'B' || bes_bestelopdr_id,
a.prs_afdeling_naam
opco,
k.prs_kostenplaats_nr
kpl_opdr,
kg.prs_kostenplaats_nr
kpl_bam,
kg.prs_kostenplaats_omschrijving
kp_omschrijving,
ks.prs_kostensoort_opmerking
gb_bam,
ks.prs_kostensoort_altcode
gb_rekening,
d.ins_discipline_omschrijving,
boi.bes_bestelopdr_item_aantal || ' * ' || sd.bes_srtdeel_omschrijving,
bd.prs_bedrijf_naam
uitvoerende,
'Vebego Facility Solutions/B-nota '
|| LOWER (TO_CHAR (bes_bestelopdr_item_verwerkt, 'MONTH'))
|| ' '
|| prs_kostensoort_oms
omschrijving_bam,
'B-budget (CHV-variabel)'
kd_omschrijving,
TRUNC (bes_bestelopdr_item_verwerkt, 'mm')
datum,
bes_bestelopdrstatuses_omschr,
boi.bes_bestelopdr_item_ontvangen -1
geleverd_op,
sd.bes_srtdeel_btw
btw,
boi.bes_bestelopdr_item_aantal * boi.bes_bestelopdr_item_prijs
bedrag_ex,
DECODE(sd.bes_srtdeel_btw, 9, boi.bes_bestelopdr_item_aantal * boi.bes_bestelopdr_item_prijs * 1.09) inclBTW9,
'Algemeen' type_kosten,
NULL doorbelasten
FROM bes_bestelopdr_item boi,
bes_bestelopdr bo,
bes_bestelling_item bi,
bes_bestelling b,
bes_srtdeel sd,
bes_srtgroep sg,
bes_discipline d,
prs_perslid p,
prs_v_afdeling_boom ab,
prs_afdeling a,
prs_kostenplaats k,
prs_kostensoort ks,
prs_bedrijf bd,
bes_bestelopdrstatuses bos,
mld_adres ad,
prs_kostenplaats kg,
(SELECT alg_locatie_key, MAX(prs_kostenplaats_key) prs_kostenplaats_key
FROM alg_gebouw
WHERE alg_gebouw_verwijder IS NULL
GROUP BY alg_locatie_key) gk
WHERE bes_bestelopdr_item_status = 7 -- 7 verwerkt
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND b.prs_perslid_key_voor = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = a.prs_afdeling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = d.ins_discipline_key
AND b.mld_adres_key_lev = ad.mld_adres_key
AND ad.alg_locatie_key = gk.alg_locatie_key(+)
AND gk.prs_kostenplaats_key = kg.prs_kostenplaats_key(+)
AND b.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND bo.prs_bedrijf_key = bd.prs_bedrijf_key
AND d.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND boi.bes_bestelopdr_item_status = bos.bes_bestelopdrstatuses_key(+)
AND NOT EXISTS (SELECT 1
FROM bes_bestellevr_item li, bes_bestellevr l
WHERE li.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND li.bes_bestellevr_key = l.bes_bestellevr_key
AND l.bes_bestellevr_pakbon IS NOT NULL)
UNION ALL
-- De lijst met bestellingen waarvan de goederenontvangst met pakbonnen wordt geregistreerd.
SELECT boi.bes_bestelopdr_key,
bi.bes_bestelling_key,
'B' || bes_bestelopdr_id,
a.prs_afdeling_naam
opco,
k.prs_kostenplaats_nr
kpl_opdr,
kg.prs_kostenplaats_nr
kpl_bam,
kg.prs_kostenplaats_omschrijving
kp_omschrijving,
ks.prs_kostensoort_opmerking
gb_bam,
ks.prs_kostensoort_altcode
gb_rekening,
d.ins_discipline_omschrijving,
li.bes_bestellevr_item_aantal || ' * ' || sd.bes_srtdeel_omschrijving,
bd.prs_bedrijf_naam
uitvoerende,
'Vebego Facility Solutions/B-nota '
|| LOWER (TO_CHAR (l.bes_bestellevr_datum, 'MONTH'))
|| ' '
|| prs_kostensoort_oms
omschrijving_bam,
'B-budget (CHV-variabel)'
kd_omschrijving,
ADD_MONTHS(TRUNC (bes_bestellevr_datum, 'mm'), 1)
datum,
bes_bestelopdrstatuses_omschr,
l.bes_bestellevr_datum
geleverd_op,
sd.bes_srtdeel_btw
btw,
li.bes_bestellevr_item_aantal * boi.bes_bestelopdr_item_prijs
bedrag_ex,
DECODE(sd.bes_srtdeel_btw, 9, li.bes_bestellevr_item_aantal * boi.bes_bestelopdr_item_prijs * 1.09) inclBTW9,
'Algemeen' type_kosten,
NULL doorbelasten
FROM bes_bestelopdr_item boi,
bes_bestelopdr bo,
bes_bestelling_item bi,
bes_bestelling b,
bes_bestellevr l,
bes_bestellevr_item li,
bes_srtdeel sd,
bes_srtgroep sg,
bes_discipline d,
prs_perslid p,
prs_v_afdeling_boom ab,
prs_afdeling a,
prs_kostenplaats k,
prs_kostensoort ks,
prs_bedrijf bd,
bes_bestelopdrstatuses bos,
mld_adres ad,
prs_kostenplaats kg,
(SELECT alg_locatie_key, MAX(prs_kostenplaats_key) prs_kostenplaats_key
FROM alg_gebouw
WHERE alg_gebouw_verwijder IS NULL
GROUP BY alg_locatie_key) gk
WHERE boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND boi.bes_bestelopdr_item_key = li.bes_bestelopdr_item_key
AND li.bes_bestellevr_key = l.bes_bestellevr_key
AND l.bes_bestellevr_pakbon IS NOT NULL
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND b.prs_perslid_key_voor = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = a.prs_afdeling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = d.ins_discipline_key
AND b.mld_adres_key_lev = ad.mld_adres_key
AND ad.alg_locatie_key = gk.alg_locatie_key(+)
AND gk.prs_kostenplaats_key = kg.prs_kostenplaats_key(+)
AND b.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND bo.prs_bedrijf_key = bd.prs_bedrijf_key
AND d.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND boi.bes_bestelopdr_item_status = bos.bes_bestelopdrstatuses_key(+);
-- Eerste versie van BI rapport voor Yask
CREATE OR REPLACE VIEW bamg_v_kosten_export_power_bi
AS
SELECT u.meldingnummer,
u.melding_key mld_melding_key,
u.melding_locatie meldinglocatie,
u.melding_gebouw,
u.melding_gebouwcode,
u.melder,
u.soortmelding,
u.productgroep,
u.subproductgroep,
gb_rekening,
gb_bam,
u.melding_status meldingstatus,
--k. .facturatiestatus,
u.melding_datum meldingdatum,
u.melding_afgemeld afgemeld,
u.onderwerp,
u.vomschrijving,
u.opdracht_nummer opdrachtnummer,
u.opdracht_type opdrachttype,
u.opdracht_status opdrachtstatus,
u.opdracht_omschrijving opdrachtomschrijving,
--u.opdracht_nen_omschrijving,
u.opdracht_uitvoerende opdrachtuitvoerende,
k.bedrag_ex opdrachtkosten,
k.btw opdrachtbtw,
TO_CHAR(afgerond_op, 'yyyy-mm') boekmaand,
'Vebego Facility Solutions/B-nota ' || TO_CHAR(afgerond_op, 'yyyy-mm') boekmaand_yask,
k.kpl_opdr klant_inkoopordernr,
k.kpl_bam klant_kostenplaats,
-- u.klant_werkorder,
k.mld_opdr_key,
u.sla_accpturen,
u.plan_uitvoertijd_sla,
u.accept_sla_dagen,
u.accept_sla_uren,
u.afspraak_sla_dagen,
u.accept_sla_optijd,
u.uitvoering_sla_optijd,
u.afspraak_sla_optijd,
u.melding_afgemeld datum_afgemeld,
u.melding_accepted datum_acceptatie,
u.melding_datum datum_aanmaak,
u.fclt_3d_locatie_key,
k.doorbelasten
FROM bamg_v_kosten_rev_billing k, mld_v_udr_meldingopdracht u
WHERE k.mld_melding_key = u.melding_key
AND k.nummer NOT LIKE 'B%';
-- View om de responsetijd van BAM FM die ze nodig hebben om een opdracht
-- op te pakken te meten.
CREATE OR REPLACE VIEW bamg_v_rap_hardserv_resp_tijd
AS
SELECT r.verschil.tijdsduur tijdsduur, r.meldingnr, r.vakgroeptype, r.mld_opdr_key, r.stdmelding, r.stdmeldinggroep, r.dienst, r.alg_locatie_omschrijving, ordnew, eerste_actie
FROM (SELECT sd.ins_srtdiscipline_prefix || m.mld_melding_key meldingnr,
sd.ins_srtdiscipline_omschrijving vakgroeptype,
o.mld_opdr_key,
mld_stdmelding_omschrijving stdmelding,
mg.mld_stdmeldinggroep_oms stdmeldinggroep,
prs_dienst_omschrijving dienst,
l.alg_locatie_omschrijving,
FAC.gettrackingdate ('ORDNEW', o.mld_opdr_key)
ordnew,
t.datum
eerste_actie,
FAC.datumtijdnaaruitvoertijd (
FAC.gettrackingdate ('ORDNEW', o.mld_opdr_key),
t.datum,
'U')
verschil
FROM mld_melding m,
mld_stdmelding std,
mld_discipline d,
ins_srtdiscipline sd,
prs_dienst di,
mld_stdmeldinggroep mg,
mld_opdr o,
alg_locatie l,
( SELECT MIN (fac_tracking_datum) datum, fac_tracking_refkey
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'opdracht'
AND sn.fac_srtnotificatie_code NOT IN
('ORDNEW', 'ORDMLE', 'ORDSNT')
GROUP BY fac_tracking_refkey) t
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND std.prs_dienst_key = di.prs_dienst_key
AND std.mld_stdmeldinggroep_key = mg.mld_stdmeldinggroep_key
AND m.mld_melding_key = o.mld_melding_key
AND o.mld_opdr_key = t.fac_tracking_refkey
AND m.mld_alg_locatie_key = l.alg_locatie_key) r;
-- Rapportage voor de (interne) doorbelasting
CREATE OR REPLACE VIEW bamg_v_kosten_klant
AS
SELECT kg.prs_kostenplaats_nr kostenplaats_nr_geb,
kg.prs_kostenplaats_omschrijving kostenplaats_oms_geb,
pf.prs_perslid_naam_full naam,
a.prs_afdeling_omschrijving afdeling,
k.prs_kostenplaats_nr kostenplaats_nr,
k.prs_kostenplaats_omschrijving kostenplaats_oms,
COALESCE (flx.getflex('PRS', 1060, COALESCE(prs_afdeling_key4, -1), 'A'),
COALESCE (flx.getflex('PRS', 1060, COALESCE(prs_afdeling_key3, -1), 'A'),
COALESCE (flx.getflex('PRS', 1060, COALESCE(prs_afdeling_key2, -1), 'A'),
COALESCE (flx.getflex('PRS', 1060, COALESCE(prs_afdeling_key1, -1), 'A'), '')))) debiteur,
DECODE(ab.prs_bedrijf_key, 1, 'BAM' , a1.prs_afdeling_omschrijving) ontvanger, -- bedrijf naam
DECODE(ab.prs_bedrijf_key, 1, '' , flx.getflex('PRS', 1100, prs_afdeling_key1, 'A')) adreshuisnr,
DECODE(ab.prs_bedrijf_key, 1, '' , flx.getflex('PRS', 1101, prs_afdeling_key1, 'A')) postcode,
DECODE(ab.prs_bedrijf_key, 1, '' , flx.getflex('PRS', 1102, prs_afdeling_key1, 'A')) plaats,
DECODE(ab.prs_bedrijf_key, 1, '' , flx.getflex('PRS', 1120, prs_afdeling_key1, 'A')) email,
mld_stdmelding_omschrijving omschrijving,
sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr onzeref, -- opdrachtnr
flx.getflex('MLD', 1001, m.mld_melding_key) uwref,
flx.getflex('MLD', 1503, m.mld_melding_key) grootboeknr,
mld_opdr_kosten,
DECODE(ab.prs_bedrijf_key, 1, 'Intern' , 'Extern') internofextern,
MLD.getopdrachtstatusdate (o.mld_opdr_key, 9) afgerond_op,
o.mld_opdr_key,
m.mld_melding_onderwerp,
m.mld_melding_omschrijving,
ks.prs_kostensoort_opmerking,
mld_kosten_klant
FROM mld_opdr o,
mld_melding m,
mld_stdmelding std,
mld_discipline md,
ins_srtdiscipline sd,
prs_perslid p,
prs_v_perslid_fullnames pf,
prs_v_afdeling_boom ab,
alg_v_onroerendgoed aogk,
prs_kostenplaats k,
prs_afdeling a1,
prs_afdeling a,
alg_gebouw g,
prs_kostenplaats kg,
prs_kostensoort ks
WHERE o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.prs_kostenplaats_key = k.prs_kostenplaats_key
AND m.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND m.mld_alg_onroerendgoed_keys = aogk.alg_onroerendgoed_keys
AND ( m.mld_kosten_klant = 1
OR (sd.ins_srtdiscipline_omschrijving = 'Aanvraag' AND flx.getflex('MLD', 1421, m.mld_melding_key) = 4) -- Kosten doorbelasten naar klant, Ja
OR (sd.ins_srtdiscipline_omschrijving = 'Storing' AND flx.getflex('MLD', 1422, m.mld_melding_key) = 4) -- Kosten doorbelasten naar klant, Ja
OR ( md.ins_discipline_key = 601) -- interne doorbelasting
)
AND ab.prs_afdeling_key1 = a1.prs_afdeling_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND aogk.alg_gebouw_key = g.alg_gebouw_key
AND g.prs_kostenplaats_key = kg.prs_kostenplaats_key
AND std.prs_kostensoort_key = ks.prs_kostensoort_key(+)
UNION ALL
SELECT mld_adres_gebouw_ruimte kpl_bam,
(SELECT prs_kostenplaats_omschrijving
FROM prs_kostenplaats
WHERE prs_kostenplaats_nr = mld_adres_gebouw_ruimte)
kp_omschrijving,
pf.prs_perslid_naam_full naam,
a.prs_afdeling_omschrijving afdeling,
k.prs_kostenplaats_nr kostenplaats_nr,
k.prs_kostenplaats_omschrijving kostenplaats_oms,
COALESCE (flx.getflex('PRS', 1060, COALESCE(prs_afdeling_key4, -1), 'A'),
COALESCE (flx.getflex('PRS', 1060, COALESCE(prs_afdeling_key3, -1), 'A'),
COALESCE (flx.getflex('PRS', 1060, COALESCE(prs_afdeling_key2, -1), 'A'),
COALESCE (flx.getflex('PRS', 1060, COALESCE(prs_afdeling_key1, -1), 'A'), '')))) debiteur,
DECODE(ab.prs_bedrijf_key, 1, 'BAM' , a1.prs_afdeling_omschrijving) ontvanger, -- bedrijf naam
DECODE(ab.prs_bedrijf_key, 1, '' , flx.getflex('PRS', 1100, prs_afdeling_key1, 'A')) adreshuisnr,
DECODE(ab.prs_bedrijf_key, 1, '' , flx.getflex('PRS', 1101, prs_afdeling_key1, 'A')) postcode,
DECODE(ab.prs_bedrijf_key, 1, '' , flx.getflex('PRS', 1102, prs_afdeling_key1, 'A')) plaats,
DECODE(ab.prs_bedrijf_key, 1, '' , flx.getflex('PRS', 1120, prs_afdeling_key1, 'A')) email,
d.ins_discipline_omschrijving || ' / ' || bes_bestelopdr_item_aantal || ' * ' || bes_srtdeel_omschrijving,
'B' || bes_bestelopdr_id onzeref, -- opdrachtnr
NULL uwref, -- indien gevuld in opdracht
NULL grootboeknr,
bes_bestelopdr_item_aantal * bes_bestelopdr_item_prijs,
DECODE(ab.prs_bedrijf_key, 1, 'Intern' , 'Extern') internofextern,
bes_bestelopdr_item_verwerkt-1 afgerond_op,
NULL opdr_key,
NULL,
NULL,
ks.prs_kostensoort_opmerking,
NULL kostenklant
FROM bes_bestelopdr_item boi,
bes_bestelopdr bo,
bes_bestelling_item bi,
bes_bestelling b,
bes_srtdeel sd,
bes_srtgroep sg,
bes_discipline d,
prs_perslid p,
prs_v_perslid_fullnames_all pf,
prs_v_afdeling_boom ab,
prs_afdeling a,
prs_afdeling a1,
prs_kostenplaats k,
mld_adres ad,
prs_kostensoort ks,
prs_bedrijf bd,
bes_bestelopdrstatuses bos
WHERE bes_bestelopdr_item_status = 7 -- 7 verwerkt
AND d.ins_discipline_key NOT IN (121, 221, 501) -- Lyreco, meubilair
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND b.prs_perslid_key_voor = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND ab.prs_afdeling_key1 = a1.prs_afdeling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = d.ins_discipline_key
AND b.mld_adres_key_lev = ad.mld_adres_key
AND b.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND bo.prs_bedrijf_key = bd.prs_bedrijf_key
AND d.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND boi.bes_bestelopdr_item_status = bos.bes_bestelopdrstatuses_key(+);
-- Rapportage om de kosten voor de reserveringen van SVZ in Breda inzichtelijk te krijgen
-- De filters worden in het rapport aangebracht.
CREATE OR REPLACE VIEW bamg_v_rap_reservering_kosten
AS
SELECT res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr nummer,
a.prs_afdeling_naam afdeling,
res_ruimte_nr ruimte,
res_rsv_ruimte_van van,
res_rsv_ruimte_tot tot,
rr.res_ruimte_prijs prijs,
(res_rsv_ruimte_tot - res_rsv_ruimte_van) * 24 * rr.res_ruimte_prijs totaal
FROM res_rsv_ruimte rrr,
prs_perslid p,
prs_afdeling a,
res_ruimte_opstelling rro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND res_ruimte_prijs IS NOT NULL;
-- catering kosten rapport voor YASK en voor doorbelasting CHV
-- activiteit: 30: Banqueting zonder vergaderzaal
-- 10: Vergadering met catering
-- 70: Vergadering zonder catering
CREATE OR REPLACE VIEW bamg_v_rap_catering
AS
SELECT INITCAP (TO_CHAR (levering, 'MONTH')) || '-' || pf.prs_perslid_naam_full || '-' || kp.prs_kostenplaats_nr || '-' || omschrijving || '-' || res_reservering_key || '/' || res_rsv_ruimte_volgnr facturatieregel,
res_reservering_key || '/' || res_rsv_ruimte_volgnr reserveringsnummer,
res_rsv_ruimte_key,
kg.prs_kostenplaats_nr kpl_bam,
kg.prs_kostenplaats_omschrijving kp_omschrijving,
ks.prs_kostensoort_opmerking gb_bam,
COALESCE (flx.getflex('PRS', 1060, COALESCE(prs_afdeling_key4, -1), 'A'),
COALESCE (flx.getflex('PRS', 1060, COALESCE(prs_afdeling_key3, -1), 'A'),
COALESCE (flx.getflex('PRS', 1060, COALESCE(prs_afdeling_key2, -1), 'A'),
COALESCE (flx.getflex('PRS', 1060, COALESCE(prs_afdeling_key1, -1), 'A'), '')))) debiteur,
'Vebego Facility Solutions/B-nota ' || LOWER (TO_CHAR (levering, 'MONTH')) || ' Banqueting' Omschrijving_bam,
'B-budget (CHV-variabel)' Kd_Omschrijving,
ks.prs_kostensoort_altcode gb_rekening,
pf.prs_perslid_naam_full naam,
kp.prs_kostenplaats_nr kostenplaatsnummer,
kp.prs_kostenplaats_omschrijving kostenplaatsomschrijving,
aantal,
omschrijving,
btw,
prijs,
levering,
annulering, --, res_status_bo_key
flx.getflex ('RES', DECODE(d.res_activiteit_key, 10, 163, 30, 221), d.res_rsv_ruimte_key) po,
flx.getflex ('RES', DECODE(d.res_activiteit_key, 10, 164, 30, 222), d.res_rsv_ruimte_key) gb
FROM alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
ins_tab_discipline di,
prs_v_afdeling_boom ab,
prs_perslid p,
prs_kostensoort ks,
prs_kostenplaats kp,
prs_kostenplaats kg,
prs_v_perslid_fullnames_all pf,
(SELECT rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_key,
rrr.res_rsv_ruimte_host_key,
rrr.res_activiteit_key,
COALESCE(r2a.alg_ruimte_key, rrr.alg_ruimte_key) alg_ruimte_key,
rra.res_rsv_artikel_aantal aantal,
ra.res_artikel_omschrijving omschrijving,
ra.res_artikel_btw btw,
DECODE(SIGN(FAC.datumtijdplusuitvoertijd (res_rsv_artikel_verwijder, 1, 'D') - res_rsv_artikel_levering),
-1, 0, -- op tijd
1, 1, -- te laat
1) -- niet verwijderd
* COALESCE(res_rsv_artikel_prijs, rra.res_rsv_artikel_aantal * res_artikel_prijs) prijs,
res_rsv_artikel_levering levering,
DECODE(SIGN(FAC.datumtijdplusuitvoertijd (res_rsv_artikel_verwijder, 1, 'D') - res_rsv_artikel_levering),
-1, 'op tijd',
1, 'te laat',
'') annulering,
rra.res_status_bo_key,
ra.res_discipline_key,
rrr.prs_kostenplaats_key
FROM res_rsv_ruimte rrr,
res_rsv_artikel rra,
res_artikel ra,
(SELECT res_ruimte_opstel_key, MAX(alg_ruimte_key) alg_ruimte_key
FROM res_ruimte_opstelling ro,
res_ruimte rr,
res_alg_ruimte ra
WHERE ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_ruimte_key = ra.res_ruimte_key
GROUP BY res_ruimte_opstel_key) r2a
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key
AND rrr.res_ruimte_opstel_key = r2a.res_ruimte_opstel_key(+)) d
WHERE d.alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.prs_kostenplaats_key = kg.prs_kostenplaats_key(+)
AND d.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND d.res_discipline_key = di.ins_discipline_key
AND di.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND d.res_rsv_ruimte_host_key = pf.prs_perslid_key
AND d.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key;
-- Kalender rapportage zodat ook de reserveringen van de gastheer en vervangers getoond worden. BAMG#81028
CREATE OR REPLACE VIEW bamg_v_rap_res_kalender_cont
AS
SELECT DISTINCT
prs_perslid_key_alt user_key,
res_reservering_key
|| '/'
|| rrr.res_rsv_ruimte_volgnr
|| ' '
|| res_rsv_ruimte_omschrijving title,
rrr.res_rsv_ruimte_tot tot,
rrr.res_rsv_ruimte_van van,
rrr.res_rsv_ruimte_key item_key,
'#808080' color,
'#FFFFFF' textcolor,
'?u=reservering' || CHR (38) || 'k=' || rrr.res_rsv_ruimte_key url
FROM res_rsv_ruimte rrr,
(SELECT prs_perslid_key prs_perslid_key, prs_perslid_key prs_perslid_key_alt FROM prs_perslid
UNION ALL
SELECT prs_perslid_key, prs_perslid_key_alt
FROM prs_collega c) c
WHERE (c.prs_perslid_key = rrr.res_rsv_ruimte_contact_key OR c.prs_perslid_key = rrr.res_rsv_ruimte_host_key)
AND rrr.res_rsv_ruimte_verwijder IS NULL;
-- View om reserveringsinformatie te ontsluiten via een api.
-- Informatie over de reserveerbare zalen
CREATE OR REPLACE VIEW bamg_v_api_res_alg_info
AS
SELECT res_ruimte_nr,
alg_ruimte_nr,
alg_locatie_code,
alg_gebouw_upper,
alg_verdieping_volgnr,
rg.alg_ruimte_key,
rr.res_ruimte_omschrijving,
(SELECT MAX (res_ruimte_opstel_bezoekers)
FROM res_ruimte_opstelling ro
WHERE ro.res_ruimte_key = rr.res_ruimte_key) max_bezoekers
FROM alg_v_ruimte_gegevens rg, res_ruimte rr, res_alg_ruimte rar
WHERE rar.alg_ruimte_key = rg.alg_ruimte_key
AND rar.res_ruimte_key = rr.res_ruimte_key
AND rar.res_alg_ruimte_verwijder IS NULL
AND rr.res_ruimte_verwijder IS NULL;
-- Informatie over reserveringen
CREATE OR REPLACE VIEW bamg_v_api_res_info
AS
SELECT rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
res_ruimte_nr,
alg_ruimte_nr,
alg_locatie_code,
alg_gebouw_upper,
alg_verdieping_volgnr,
rg.alg_ruimte_key
FROM res_v_rsv_ruimte_2_alg_ruimte r2a,
alg_v_ruimte_gegevens rg,
res_ruimte rr,
res_rsv_ruimte rrr
WHERE r2a.alg_ruimte_key = rg.alg_ruimte_key
AND r2a.res_ruimte_key = rr.res_ruimte_key
AND r2a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_verwijder IS NULL;
-- Dagelijkse taak
CREATE OR REPLACE PROCEDURE bamg_daily
AS
CURSOR c_frz
IS
SELECT DISTINCT mld_opdr_key
FROM bamg_v_kosten_rev_billing
WHERE datum = ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -1)
AND mld_statusopdr_omschrijving = 'Afgerond';
-- Als status geleverd is (6)
CURSOR c_frz_bes_itm
IS
SELECT boi.bes_bestelopdr_item_key, bes_bestelopdr_datum
FROM bes_bestelopdr_item boi, bes_bestelopdr bo
WHERE bo.prs_bedrijf_key <> 109 -- Lyreco
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND bes_bestelopdr_item_status IS NULL;
CURSOR c_besopdr IS
SELECT bes_bestelopdr_key
FROM bes_bestelopdr bo
WHERE bes_bestelopdr_status = 4 -- In bestelling
AND bo.prs_bedrijf_key <> 109 -- Lyreco
AND NOT EXISTS
(SELECT 1
FROM bes_bestelopdr_item boi
WHERE bo.bes_bestelopdr_key =
boi.bes_bestelopdr_key
AND bes_bestelopdr_item_status <> 6 -- Geleverd
);
CURSOR c_bestel IS
SELECT bes_bestelling_key
FROM bes_bestelling b
WHERE bes_bestelling_status = 5 -- besteld
AND NOT EXISTS
(SELECT 1
FROM bes_bestelling_item bi, bes_srtdeel sd, bes_srtgroep sg
WHERE b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key IN (121, 221) -- Kantoorartikelen
)
AND NOT EXISTS
(SELECT 1
FROM bes_bestelling_item bi
WHERE b.bes_bestelling_key = bi.bes_bestelling_key
AND bes_bestelling_item_status <> 6 -- Geleverd
);
v_volgnr NUMBER;
v_opdr_key NUMBER;
BEGIN
-- Verwerk de organisatieonderdelen die we een voor een via de API ontvangen hebben
-- en kijk welke organistatie-onderdelen en personen verwijderd kunnen worden.
bamg_update_organisatie_sched;
BAMG.update_energie_label;
BAMG.indexeer_contracten;
-- Anonymizeren van bezoekers (na 6 maanden) en personen (na 12 maanden)
SELECT COALESCE(MAX(fac_rapport_volgnr),0)
INTO v_volgnr
FROM fac_rapport
WHERE fac_rapport_node = 'Anonymize';
v_volgnr := v_volgnr + 1;
IF TO_CHAR (SYSDATE, 'DD') = '01'
THEN
BEGIN
ANO.anonymizebez (add_months(trunc(SYSDATE), -7), add_months(trunc(SYSDATE), -6));
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel)
VALUES('Anonymize', v_volgnr, 'Bezoekers geanonymizeerd ' ||
to_char(add_months(TRUNC(SYSDATE), -7), 'dd-mm-yyyy hh24:mi:ss') || ' - ' ||
to_char(add_months(TRUNC(SYSDATE), -6), 'dd-mm-yyyy hh24:mi:ss'));
EXCEPTION WHEN OTHERS
THEN
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel)
VALUES('Anonymize', v_volgnr, 'Error: Fout opgetreden bij het anonymizeren van bezoekers ' ||
to_char(add_months(TRUNC(SYSDATE), -7), 'dd-mm-yyyy hh24:mi:ss') || ' - ' ||
to_char(add_months(TRUNC(SYSDATE), -6), 'dd-mm-yyyy hh24:mi:ss'));
END;
BEGIN
v_volgnr := v_volgnr + 1;
ANO.anonymizeprs (add_months(TRUNC(SYSDATE), -13), add_months(TRUNC(SYSDATE), -12));
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel)
VALUES('Anonymize', v_volgnr, 'Personen geanonymizeerd ' ||
to_char(add_months(TRUNC(SYSDATE), -13), 'dd-mm-yyyy hh24:mi:ss') || ' - ' ||
to_char(add_months(TRUNC(SYSDATE), -12), 'dd-mm-yyyy hh24:mi:ss'));
EXCEPTION WHEN OTHERS
THEN
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel)
VALUES('Anonymize', v_volgnr, 'Error: Fout opgetreden bij het anonymizeren van personen ' ||
to_char(add_months(TRUNC(SYSDATE), -13), 'dd-mm-yyyy hh24:mi:ss') || ' - ' ||
to_char(add_months(TRUNC(SYSDATE), -12), 'dd-mm-yyyy hh24:mi:ss'));
END;
-- bevries alle opdrachten die de vorige maand zijn afgerond.
BEGIN
v_volgnr := v_volgnr + 1;
FOR rec in c_frz
LOOP
v_opdr_key := rec.mld_opdr_key;
-- zet de status naar verwerkt (user is facilitor)
mld.setopdrachtstatus (rec.mld_opdr_key, 7, NULL);
END LOOP;
EXCEPTION WHEN OTHERS
THEN
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel)
VALUES('Freeze', v_volgnr, 'Error: Fout opgetreden bij het bevriezen van de opdracht ' || to_char(SYSDATE, 'yyyymmdd hh24mi') || ' opdr_key: ' || v_opdr_key);
END;
-- bevries alle bestelopdrachten en bestellingen.
BEGIN
-- Zet de ontvangen aantallen gelijk aan de bestelde aantallen.
FOR rec IN c_frz_bes_itm
LOOP
UPDATE bes_bestelopdr_item B
SET bes_bestelopdr_item_aantalontv =
COALESCE (bes_bestelopdr_item_aantal, 0),
bes_bestelopdr_item_ontvangen = rec.bes_bestelopdr_datum
WHERE bes_bestelopdr_item_key = rec.bes_bestelopdr_item_key;
UPDATE bes_bestelling_item
SET bes_bestelling_item_aantalontv =
COALESCE (bes_bestelling_item_aantal, 0)
WHERE bes_bestelopdr_item_key = rec.bes_bestelopdr_item_key;
END LOOP;
-- Update de state van de bestelopdrachten
FOR rec IN c_besopdr
LOOP
bes.updatebestelopdrstatus (rec.bes_bestelopdr_key, 3);
UPDATE bes_bestelopdr_item
SET bes_bestelopdr_item_status = 7, -- verwerkt.
bes_bestelopdr_item_verwerkt = SYSDATE
WHERE bes_bestelopdr_key = rec.bes_bestelopdr_key;
bes.updatebestelopdrstatus (rec.bes_bestelopdr_key, 3);
END LOOP;
-- Update de state van de bestelaanvragen
FOR rec IN c_bestel
LOOP
bes.updatebestellingstatus (rec.bes_bestelling_key, 3);
UPDATE bes_bestelling_item
SET bes_bestelling_item_status = 7 -- verwerkt.
WHERE bes_bestelling_key = rec.bes_bestelling_key;
bes.updatebestellingstatus (rec.bes_bestelling_key, 3);
END LOOP;
EXCEPTION WHEN OTHERS
THEN
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel)
VALUES('Freeze', v_volgnr, 'Error: Fout opgetreden bij het bevriezen van de bestelopdracht ' || to_char(SYSDATE, 'yyyymmdd hh24mi') || ' opdr_key: ' || v_opdr_key);
END;
END IF;
END;
/
------ 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