2887 lines
130 KiB
SQL
2887 lines
130 KiB
SQL
--
|
||
-- $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 k
|
||
SET k.prs_kostenplaats_eind = SYSDATE
|
||
WHERE prs_kostenplaats_module = 'PRS'
|
||
AND prs_kostenplaats_eind IS NULL
|
||
AND NOT EXISTS (SELECT 1
|
||
FROM prs_perslid p
|
||
WHERE COALESCE (p.prs_kostenplaats_key, -1) = k.prs_kostenplaats_key);
|
||
|
||
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_key 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 := 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;
|
||
|
||
-- key 21 zijn afdeldingskostenplaatsen.
|
||
IF rec.prs_kenmerk3 IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_kostenplaats_key
|
||
INTO v_kostenplaats_key
|
||
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_kostenplaatsgrp_key, prs_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_kostenplaats_module)
|
||
VALUES (21, rec.prs_kenmerk3, rec.prs_kenmerk4, 'PRS')
|
||
RETURNING prs_kostenplaats_key INTO v_kostenplaats_key;
|
||
END;
|
||
ELSE
|
||
v_kostenplaats_key := NULL;
|
||
END IF;
|
||
|
||
-- Pas de kostenplaats aan bij de persoon.
|
||
UPDATE prs_perslid SET prs_kostenplaats_key = v_kostenplaats_key WHERE prs_perslid_key = v_perslid_key;
|
||
|
||
-- mandatering
|
||
INSERT INTO prs_perslidkostenplaats (prs_kostenplaats_key, prs_perslid_key, prs_perslidkostenplaats_boeken)
|
||
SELECT NULL, v_perslid_key, 1
|
||
FROM DUAL
|
||
WHERE NOT EXISTS (SELECT 1 FROM prs_perslidkostenplaats pk WHERE pk.prs_perslid_key = v_perslid_key AND pk.prs_kostenplaats_key IS NULL);
|
||
|
||
-- 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);
|
||
UPDATE prs_perslid SET prs_perslid_key_verantw = v_leiding_key WHERE prs_perslid_key = v_perslid_key;
|
||
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
UPDATE prs_perslid SET prs_perslid_key_verantw = NULL WHERE prs_perslid_key = v_perslid_key;
|
||
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 || ']',
|
||
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');
|
||
|
||
-- BAMG#82078: Notificatie naar de aanvrager van de melding dat een onderliggende opdracht goedgekeurd of afgekeurd is.
|
||
CREATE OR REPLACE VIEW bamg_v_noti_mld_goedgekeurd
|
||
AS
|
||
SELECT 'CUST09' code,
|
||
NULL sender,
|
||
m.prs_perslid_key receiver, -- Melder
|
||
'Melding ' || m.mld_melding_key || ' is ' || DECODE(fac_srtnotificatie_key, 93, 'afgekeurd.', 'goedgekeurd') text,
|
||
m.mld_melding_key key,
|
||
NULL xkey
|
||
FROM fac_tracking t, mld_opdr o, mld_melding m
|
||
WHERE ( t.fac_srtnotificatie_key = 93 -- ORDGNO
|
||
OR (t.fac_srtnotificatie_key = 76 AND t.fac_tracking_oms LIKE 'Opdracht twv % is goedgekeurd door %')) -- ORDUPD
|
||
AND t.fac_tracking_refkey = o.mld_opdr_key
|
||
AND o.mld_statusopdr_key <> 10 -- ter goedkeuring, dit betekent namelijk dat er nog iemand moet goedkeuren
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun - fac_notificatie_job_interval / 24
|
||
FROM fac_notificatie_job
|
||
WHERE fac_notificatie_job_view = 'BAMG_V_NOTI_MLD_GOEDGEKEURD')
|
||
AND (SELECT fac_notificatie_job_nextrun
|
||
FROM fac_notificatie_job
|
||
WHERE fac_notificatie_job_view = 'BAMG_V_NOTI_MLD_GOEDGEKEURD');
|
||
|
||
-- 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 c.cnt_contract_key,
|
||
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,
|
||
DECODE(c.cnt_contract_key, NULL, NULL, flx.getflex('CNT', 1, c.cnt_contract_key)) contract_opgezegd, -- BAMG#83095
|
||
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,
|
||
bam.prs_perslid_naam_full 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,
|
||
cp.verlopen contract_verlopen,
|
||
DECODE(cp.verlopen, 1, cp.cnt_contract_looptijd_tot) cnt_verlopen_op,
|
||
CASE WHEN COALESCE(g.alg_gebouw_vervaldatum, SYSDATE) > TRUNC(SYSDATE) OR COALESCE(l.alg_locatie_vervaldatum, SYSDATE) > TRUNC(SYSDATE) THEN '0' ELSE '1' END gebouw_vervallen,
|
||
COALESCE(g.alg_gebouw_vervaldatum, l.alg_locatie_vervaldatum) alg_vervallen_op
|
||
FROM cnt_contract c,
|
||
(SELECT cp.cnt_contract_key, g.alg_gebouw_key, g.alg_locatie_key,
|
||
CASE WHEN SYSDATE BETWEEN cl.cnt_contract_looptijd_van AND cl.cnt_contract_looptijd_tot THEN 0 ELSE 1 END verlopen,
|
||
cl.cnt_contract_looptijd_tot
|
||
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
|
||
UNION ALL
|
||
SELECT cp.cnt_contract_key, g.alg_gebouw_key, g.alg_locatie_key,
|
||
CASE WHEN SYSDATE BETWEEN cl.cnt_contract_looptijd_van AND cl.cnt_contract_looptijd_tot THEN 0 ELSE 1 END verlopen,
|
||
cl.cnt_contract_looptijd_tot
|
||
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 ) cp, -- Huurcontracten
|
||
alg_locatie l,
|
||
alg_gebouw g,
|
||
cnt_termijn t,
|
||
prs_bedrijf b,
|
||
prs_v_perslid_fullnames bam
|
||
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 g.prs_perslid_key_verantw2 = bam.prs_perslid_key(+);
|
||
|
||
|
||
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;
|
||
|
||
|
||
CREATE OR REPLACE VIEW bamg_v_apptio_banqueting
|
||
AS
|
||
SELECT rrr.res_rsv_ruimte_van,
|
||
rrr.res_reservering_key || '/' || res_rsv_ruimte_volgnr resnr,
|
||
COALESCE (k.prs_kostenplaats_nr, kpp.prs_kostenplaats_nr) kostenplaats,
|
||
res_rsv_artikel_aantal || ' * ' || res_artikel_omschrijving besteltekst,
|
||
COALESCE(res_rsv_artikel_prijs, rra.res_rsv_artikel_aantal * res_artikel_prijs) bedrag,
|
||
pf.prs_perslid_naam_full besteller,
|
||
kp.prs_kostenplaats_nr wbs,
|
||
alg_locatie_code || ' ' || alg_locatie_omschrijving locatie,
|
||
DECODE(SIGN(FAC.datumtijdplusuitvoertijd (rra.res_rsv_artikel_verwijder, 1, 'D') - rra.res_rsv_artikel_levering),
|
||
-1, 0, -- op tijd
|
||
1, 1, -- te laat
|
||
1) doorbelasten
|
||
FROM res_rsv_ruimte rrr,
|
||
res_rsv_artikel rra,
|
||
res_artikel ra,
|
||
prs_v_perslid_fullnames_all pf,
|
||
prs_kostenplaats k,
|
||
(SELECT kp.prs_kostenplaats_nr, p.prs_perslid_key
|
||
FROM prs_kostenplaats kp, prs_perslid p
|
||
WHERE p.prs_kostenplaats_key = kp.prs_kostenplaats_key) kpp,
|
||
( SELECT res_rsv_ruimte_key, MAX (r.alg_ruimte_key) alg_ruimte_key
|
||
FROM res_v_rsv_ruimte_2_alg_ruimte r2a, alg_ruimte r
|
||
WHERE r2a.alg_ruimte_key = r.alg_ruimte_key AND r.alg_ruimte_verwijder IS NULL
|
||
GROUP BY res_rsv_ruimte_key
|
||
UNION ALL
|
||
SELECT res_rsv_ruimte_key, alg_ruimte_key
|
||
FROM res_rsv_ruimte
|
||
WHERE alg_ruimte_key IS NOT NULL) rar,
|
||
alg_v_ruimte_gegevens rg,
|
||
alg_gebouw g,
|
||
prs_kostenplaats kp
|
||
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
|
||
AND rra.res_artikel_key = ra.res_artikel_key
|
||
AND rrr.res_rsv_ruimte_van > TO_DATE ('20240101', 'yyyymmdd')
|
||
AND rrr.res_rsv_ruimte_host_key = pf.prs_perslid_key
|
||
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND rrr.res_rsv_ruimte_host_key = kpp.prs_perslid_key(+)
|
||
AND rrr.res_rsv_ruimte_key = rar.res_rsv_ruimte_key
|
||
AND rar.alg_ruimte_key = rg.alg_ruimte_key
|
||
AND rg.alg_gebouw_key = g.alg_gebouw_key
|
||
AND g.prs_kostenplaats_key = kp.prs_kostenplaats_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
|