Files
Customer/VLKC/vlkc.sql
Maarten van der Heide db4e7a21c9 VLKC#90997 Domein-view/NL- en BE-locaties
svn path=/Customer/trunk/; revision=70611
2025-10-14 13:46:13 +00:00

7192 lines
357 KiB
MySQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific db-configuration for VLKC.
DEFINE thisfile = 'VLKC.SQL'
DEFINE dbuser = '^VLKC'
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 VIEW vlkc_v_rap_import_log
(
fclt_f_applicatie,
datum,
fclt_f_status,
omschrijving,
hint
)
AS
SELECT COALESCE (fac_import_app_code, imp_log_applicatie),
TO_CHAR (imp_log_datum, 'dd-mm-yyyy hh24:mi'),
imp_log_status,
imp_log_omschrijving,
imp_log_hint
FROM imp_log il1, fac_import fi1, fac_import_app fia1
WHERE il1.fac_import_key = fi1.fac_import_key(+)
AND fi1.fac_import_app_key = fia1.fac_import_app_key(+)
AND NOT EXISTS
(SELECT 1
FROM imp_log il2, fac_import fi2
WHERE il2.fac_import_key = fi2.fac_import_key
AND fi2.fac_import_app_key = fi1.fac_import_app_key
AND il2.fac_import_key > il1.fac_import_key);
/* Formatted on 21-12-2016 16:36:24 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE vlkc_import_org (p_import_key IN NUMBER)
AS
c_delim VARCHAR2 (1) := ';'; -- Field seperator
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Import line
v_errormsg VARCHAR2 (1000) := '';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (1000) := '';
header_is_valid NUMBER := 0;
v_count_tot NUMBER (10) := 0;
v_count_imp NUMBER (10) := 0;
-- De importvelden
v_afd_oms VARCHAR2 (255);
v_afd_naam VARCHAR2 (255);
v_afd_parent VARCHAR2 (255);
v_manager VARCHAR2 (255);
v_kpn_nr VARCHAR2 (255);
v_kpn_oms VARCHAR2 (255);
CURSOR c1
IS
SELECT fac_imp_file_line,
LENGTH (TRIM (REPLACE (fac_imp_file_line, c_delim, '')))
regellengte
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM fac_imp_organisatie;
COMMIT;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout opvragen importregel';
v_aanduiding := '';
-- Lees alle veldwaarden
-- Afdeling;Afd.-nr.;Nr. bovenliggende afd.;Manager;Nr. kostenplaats;Kostenplaats;Bestaat sinds;Tot en met
fac.imp_getfield (v_newline, c_delim, v_afd_oms);
fac.imp_getfield (v_newline, c_delim, v_afd_naam);
fac.imp_getfield (v_newline, c_delim, v_afd_parent);
fac.imp_getfield (v_newline, c_delim, v_manager); -- Don't care
fac.imp_getfield (v_newline, c_delim, v_kpn_nr);
fac.imp_getfield (v_newline, c_delim, v_kpn_oms);
v_aanduiding := '[' || '|' || v_afd_naam || '|' || v_afd_parent || v_afd_oms || '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste
-- kolommen de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF v_afd_oms = 'Afdeling'
AND v_afd_naam = 'Afd.-nr.'
AND v_afd_parent = 'Nr. bovenliggende afd.'
AND v_manager = 'Manager'
AND v_kpn_nr = 'Nr. kostenplaats'
AND v_kpn_oms = 'Kostenplaats'
THEN
header_is_valid := 1;
END IF;
ELSIF (rec1.regellengte > 0) -- Lege regels overslaan
THEN
BEGIN
v_count_tot := v_count_tot + 1;
-- Direct wegschrijven; controleer alle veldwaarden maar niet.
v_errormsg := 'Fout wegschrijven importregel';
INSERT INTO fac_imp_organisatie (prs_bedrijf_naam, -- Vullen met kostenplaatsomschrijving!
prs_afdeling_naam,
prs_afdeling_naam_parent,
prs_afdeling_omschrijving,
prs_kostenplaats_nr)
VALUES (SUBSTR (TRIM (v_kpn_oms), 1, 60),
SUBSTR (TRIM (v_afd_naam), 1, 15),
SUBSTR (TRIM (v_afd_parent), 1, 15),
SUBSTR (TRIM (v_afd_oms), 1, 60),
SUBSTR (TRIM (v_kpn_nr), 1, 30));
v_count_imp := v_count_imp + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
END;
COMMIT;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key, 'E',
'Ongeldig importbestand', 'Geen header of header niet volgens afspraak!');
ELSE
fac.imp_writelog (p_import_key, 'S',
'Afdelingen/#ingelezen importregels: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key, 'S',
'Afdelingen/#ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_imp), '');
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, 'Inleesproces Afdelingen afgebroken!');
-- Maak importtabel leeg om import van foutieve bestanden te voorkomen!
DELETE FROM fac_imp_organisatie;
END;
/
/* Formatted on 21-12-2016 19:35:25 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE vlkc_update_org (p_import_key IN NUMBER)
AS
c_prs_bedrijf_key NUMBER := 2241; -- Van Lanschot Kempen N.V.
v_errormsg VARCHAR2 (1000) := '';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (1000) := '';
v_count NUMBER;
l_impcountafd NUMBER;
l_oldcountafd NUMBER;
l_oldcountkpn NUMBER;
lkostenplaatskey prs_kostenplaats.prs_kostenplaats_key%TYPE;
lafdelingkey prs_afdeling.prs_afdeling_key%TYPE;
l_cur_lev NUMBER;
l_cur_parentkey prs_afdeling.prs_afdeling_parentkey%TYPE;
l_new_parentkey prs_afdeling.prs_afdeling_parentkey%TYPE;
l_vervcountafd NUMBER;
l_vervcountkpn NUMBER;
l_newcountafd NUMBER;
l_newcountkpn NUMBER;
-- Uitgangspunt is dat afbeelding in FACILITOR stuctureel gelijk blijft aan
-- structuur zoals geimporteerd uit X(?).
-- Wel geldt dat er in FACILITOR slechts 5 niveaus zijn (excl. bedrijf)
-- en in X(?) meer. De "lagere" regionen worden daarom op niveau 5 gehangen
-- (en onder niveau 4).
CURSOR cafdelingsboom
IS
SELECT LEVEL imp_lev,
DECODE (LEVEL, 1, 1, 2, 2, 3, 3, 4, 4, 5) fac_lev,
UPPER (prs_afdeling_naam) prs_afdeling_naam,
UPPER (prs_afdeling_naam_parent) prs_afdeling_naam_parent,
prs_afdeling_omschrijving,
UPPER (prs_kostenplaats_nr) prs_kostenplaats_nr,
prs_bedrijf_naam prs_kostenplaats_omschrijving
FROM fac_imp_organisatie
WHERE prs_afdeling_naam IS NOT NULL -- Geen lege regels
CONNECT BY PRIOR prs_afdeling_naam = prs_afdeling_naam_parent
START WITH prs_afdeling_naam_parent IS NULL
ORDER BY LEVEL;
BEGIN
-- How many records are imported?
SELECT COUNT ( * ) INTO l_impcountafd FROM fac_imp_organisatie;
-- How many active afdelingen are now present?
SELECT COUNT ( * ) -- ALLEEN onder Van Lanschot Kempen N.V.!
INTO l_oldcountafd
FROM prs_v_aanwezigafdeling a, prs_v_afdeling_boom ab
WHERE UPPER (COALESCE (a.prs_afdeling_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
AND a.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = c_prs_bedrijf_key;
SELECT COUNT ( * )
INTO l_oldcountkpn
FROM prs_v_aanwezigkostenplaats
WHERE prs_kostenplaats_module = 'PRS'
AND UPPER (COALESCE (prs_kostenplaats_omschrijving, '-')) NOT LIKE 'VERVALLEN:%';
-- Check #regels, stop als onvoldoende = minder dan de helft overblijft!
IF (l_impcountafd < l_oldcountafd / 2)
THEN
fac.imp_writelog (p_import_key, 'E', 'Verdacht importbestand', 'Te weinig regels; update afgebroken!');
RETURN;
END IF;
FOR rc IN cafdelingsboom
LOOP
v_aanduiding := '[' || rc.prs_afdeling_naam || '|' || rc.prs_afdeling_naam_parent || '|' || rc.prs_kostenplaats_nr || '] ';
-- Bestaat de kostenplaats al?
v_errormsg := 'Fout bepalen kostenplaats.';
BEGIN
SELECT prs_kostenplaats_key
INTO lkostenplaatskey
FROM prs_v_aanwezigkostenplaats
WHERE prs_kostenplaats_upper = rc.prs_kostenplaats_nr;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
lkostenplaatskey := -1;
END;
-- Bestaat de afdeling al?
v_errormsg := 'Fout bepalen afdeling.';
BEGIN
SELECT a.prs_afdeling_key, COALESCE (fac.safe_to_number (ab.niveau), -1), a.prs_afdeling_parentkey
INTO lafdelingkey, l_cur_lev, l_cur_parentkey
FROM prs_afdeling a, prs_v_afdeling_boom ab -- LET OP: Niet prs_v_aanwezigafdeling (want soms "lager" dan 5)!
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_key = ab.prs_afdeling_key(+) -- LET OP: Kan tijdelijk uit beeld raken ("lager" dan 5)!
AND a.prs_afdeling_upper = rc.prs_afdeling_naam;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
lafdelingkey := -1;
l_cur_lev := -1;
l_cur_parentkey := -1;
END;
l_new_parentkey := -1;
v_errormsg := 'Fout toevoegen/bijwerken kostenplaats.';
BEGIN
IF lkostenplaatskey = -1
THEN
INSERT INTO prs_kostenplaats (prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_kostenplaats_module,
prs_kostenplaats_begin,
prs_kostenplaats_eind)
VALUES (rc.prs_kostenplaats_nr,
rc.prs_kostenplaats_omschrijving,
'PRS',
SYSDATE,
NULL)
RETURNING prs_kostenplaats_key INTO lkostenplaatskey;
ELSE -- Bijwerken kostenplaats met omschrijving het hoogst in de boom!
SELECT COUNT ( * )
INTO v_count
FROM ( SELECT LEVEL imp_lev,
DECODE (LEVEL, 1, 1, 2, 2, 3, 3, 4, 4, 5) fac_lev,
UPPER (prs_afdeling_naam) prs_afdeling_naam,
UPPER (prs_afdeling_naam_parent) prs_afdeling_naam_parent,
prs_afdeling_omschrijving,
UPPER (prs_kostenplaats_nr) prs_kostenplaats_nr,
prs_bedrijf_naam prs_kostenplaats_omschrijving
FROM fac_imp_organisatie
WHERE prs_afdeling_naam IS NOT NULL -- Geen lege regels
CONNECT BY PRIOR prs_afdeling_naam = prs_afdeling_naam_parent
START WITH prs_afdeling_naam_parent IS NULL
ORDER BY LEVEL) x
WHERE UPPER (x.prs_kostenplaats_nr) = rc.prs_kostenplaats_nr
AND x.fac_lev < rc.fac_lev;
IF (v_count = 0)
THEN
UPDATE prs_kostenplaats
SET prs_kostenplaats_omschrijving = rc.prs_kostenplaats_omschrijving,
prs_kostenplaats_module = 'PRS'
WHERE prs_kostenplaats_key = lkostenplaatskey;
END IF;
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, 'W', v_aanduiding || v_errormsg, '');
END;
-- Bij de mapping naar afdelingen slaan wel level=1 over en pakken we de
-- afdelingen vanaf level=2 (= FACILITOR Afdeling-1).
IF rc.imp_lev >= 1 AND lkostenplaatskey <> -1 -- Elke afdeling heeft kostenplaats!
THEN
IF lafdelingkey = -1 -- Nieuwe afdeling -> toevoegen!
THEN
BEGIN
v_errormsg := 'Fout toevoegen afdeling.';
IF rc.fac_lev = 1 -- Ingelezen afdeling betreft Afdeling-1!
THEN
INSERT INTO prs_afdeling (prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_bedrijf_key,
prs_afdeling_parentkey,
prs_kostenplaats_key)
VALUES (rc.prs_afdeling_naam,
rc.prs_afdeling_omschrijving,
c_prs_bedrijf_key,
NULL,
lkostenplaatskey)
RETURNING prs_afdeling_key INTO lafdelingkey;
ELSIF rc.imp_lev <= 5 -- Afdeling-2 t/m Afdeling-5!
THEN
-- Bepaal key van parent!
SELECT prs_afdeling_key
INTO l_new_parentkey
FROM prs_afdeling -- LET OP: Niet prs_v_aanwezigafdeling (want soms "lager" dan 5)!
WHERE prs_afdeling_verwijder IS NULL
AND prs_afdeling_upper = rc.prs_afdeling_naam_parent;
INSERT INTO prs_afdeling (prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_bedrijf_key,
prs_afdeling_parentkey,
prs_kostenplaats_key)
VALUES (rc.prs_afdeling_naam,
rc.prs_afdeling_omschrijving,
NULL,
l_new_parentkey,
lkostenplaatskey)
RETURNING prs_afdeling_key INTO lafdelingkey;
ELSE -- Omhoog geschoven afdeling op/naar niveau Afdeling-5!
-- Bepaal key van parent van (soms zelf verschoven) parent!
SELECT prs_afdeling_parentkey
INTO l_new_parentkey
FROM prs_afdeling -- LET OP: Niet prs_v_aanwezigafdeling (want soms "lager" dan 5)!
WHERE prs_afdeling_verwijder IS NULL
AND prs_afdeling_upper = rc.prs_afdeling_naam_parent;
-- Doordat cursor van hoog naar laag door organisatie loopt,
-- komen afdelingen vanaf (imp_)lev>=7 keurig onder gewenste
-- Afdeling-4 te hangen.
INSERT INTO prs_afdeling (prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_bedrijf_key,
prs_afdeling_parentkey,
prs_kostenplaats_key)
VALUES (rc.prs_afdeling_naam,
rc.prs_afdeling_omschrijving,
NULL,
l_new_parentkey,
lkostenplaatskey)
RETURNING prs_afdeling_key INTO lafdelingkey;
END IF;
fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Afdeling toegevoegd.');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
END;
ELSE -- Bestaande afdeling -> bijwerken (misschien)!
BEGIN
v_errormsg := 'Fout bijwerken afdeling.';
-- Zonodig bijwerken omschrijving (deze kon eerder vervallen
-- zijn) en/of omhangen naar de juiste plek in de boom.
IF rc.fac_lev = 1 -- Ingelezen afdeling betreft Afdeling-1!
THEN
UPDATE prs_afdeling
SET prs_afdeling_omschrijving = rc.prs_afdeling_omschrijving,
prs_bedrijf_key = c_prs_bedrijf_key,
prs_afdeling_parentkey = NULL,
prs_kostenplaats_key = lkostenplaatskey
WHERE prs_afdeling_key = lafdelingkey
AND (COALESCE (prs_afdeling_omschrijving, '-') <> rc.prs_afdeling_omschrijving -- Oms. gewijzigd?
OR prs_afdeling_parentkey IS NOT NULL -- Niveau gewijzigd?
OR prs_kostenplaats_key <> lkostenplaatskey); -- Kostenplaats gewijzigd?
ELSIF rc.imp_lev <= 5 -- Afdeling-2 t/m Afdeling-5!
THEN
-- Bepaal key van parent!
SELECT prs_afdeling_key
INTO l_new_parentkey
FROM prs_afdeling -- LET OP: Niet prs_v_aanwezigafdeling (want soms "lager" dan 5)!
WHERE prs_afdeling_verwijder IS NULL
AND prs_afdeling_upper = rc.prs_afdeling_naam_parent;
UPDATE prs_afdeling
SET prs_afdeling_omschrijving = rc.prs_afdeling_omschrijving,
prs_bedrijf_key = NULL,
prs_afdeling_parentkey = l_new_parentkey,
prs_kostenplaats_key = lkostenplaatskey
WHERE prs_afdeling_key = lafdelingkey
AND (COALESCE (prs_afdeling_omschrijving, '-') <> rc.prs_afdeling_omschrijving -- Oms. gewijzigd?
OR COALESCE (prs_afdeling_parentkey, -1) <> l_new_parentkey -- Parent gewijzigd?
OR prs_kostenplaats_key <> lkostenplaatskey); -- Kostenplaats gewijzigd?
ELSE -- Omhoog geschoven afdeling op/naar niveau Afdeling-5!
-- Bepaal key van parent van (soms zelf verschoven) parent!
SELECT prs_afdeling_parentkey
INTO l_new_parentkey
FROM prs_afdeling -- LET OP: Niet prs_v_aanwezigafdeling (want soms "lager" dan 5)!
WHERE prs_afdeling_verwijder IS NULL
AND prs_afdeling_upper = rc.prs_afdeling_naam_parent;
-- Doordat cursor van hoog naar laag door organisatie loopt,
-- komen afdelingen vanaf (imp_)lev>=7 keurig onder gewenste
-- Afdeling-4 te hangen.
UPDATE prs_afdeling
SET prs_afdeling_omschrijving = rc.prs_afdeling_omschrijving,
prs_bedrijf_key = NULL,
prs_afdeling_parentkey = l_new_parentkey,
prs_kostenplaats_key = lkostenplaatskey
WHERE prs_afdeling_key = lafdelingkey
AND (COALESCE (prs_afdeling_omschrijving, '-') <> rc.prs_afdeling_omschrijving -- Oms. gewijzigd?
OR COALESCE (prs_afdeling_parentkey, -1) <> l_new_parentkey -- Parent gewijzigd?
OR prs_kostenplaats_key <> lkostenplaatskey); -- Kostenplaats gewijzigd?
END IF;
IF rc.fac_lev <> l_cur_lev OR l_new_parentkey <> l_cur_parentkey
THEN
fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Afdeling omgehangen naar level=' || TO_CHAR (rc.fac_lev));
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, 'W', v_aanduiding || v_errormsg, '');
END;
END IF;
COMMIT;
END IF;
END LOOP;
-- Zet kostenplaatsen op VERVALLEN; de rest handmatig verder maar regelen!
v_errormsg := 'Fout inactiveren kostenplaatsen.';
SELECT COUNT ( * )
INTO l_vervcountkpn
FROM prs_v_aanwezigkostenplaats kp
WHERE kp.prs_kostenplaats_module = 'PRS'
AND UPPER (COALESCE (kp.prs_kostenplaats_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
AND NOT EXISTS
(SELECT 1
FROM fac_imp_organisatie
WHERE UPPER (prs_kostenplaats_nr) = kp.prs_kostenplaats_upper);
UPDATE prs_kostenplaats kp
SET kp.prs_kostenplaats_omschrijving = SUBSTR ('VERVALLEN:' || COALESCE (prs_kostenplaats_omschrijving, '-'), 1, 60)
WHERE kp.prs_kostenplaats_verwijder IS NULL
AND kp.prs_kostenplaats_module = 'PRS'
AND UPPER (COALESCE (prs_kostenplaats_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
AND NOT EXISTS
(SELECT 1
FROM fac_imp_organisatie
WHERE UPPER (prs_kostenplaats_nr) = kp.prs_kostenplaats_upper)
AND NOT EXISTS
(SELECT 1
FROM prs_v_aanwezigperslid
WHERE prs_kostenplaats_key = kp.prs_kostenplaats_key);
COMMIT;
-- Zet afdelingen op VERVALLEN; de rest handmatig verder maar regelen!
v_errormsg := 'Fout inactiveren afdelingen.';
SELECT COUNT ( * ) -- ALLEEN onder Van Lanschot Kempen N.V.!
INTO l_vervcountafd
FROM prs_v_aanwezigafdeling a, prs_v_afdeling_boom ab
WHERE UPPER (COALESCE (a.prs_afdeling_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
AND a.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = c_prs_bedrijf_key
AND NOT EXISTS
(SELECT 1
FROM fac_imp_organisatie
WHERE UPPER (prs_afdeling_naam) = a.prs_afdeling_upper);
UPDATE prs_afdeling a -- ALLEEN onder Van Lanschot Kempen N.V.!
SET a.prs_afdeling_omschrijving = SUBSTR ('VERVALLEN:' || COALESCE (prs_afdeling_omschrijving, '-'), 1, 60)
WHERE a.prs_afdeling_verwijder IS NULL
AND UPPER (COALESCE (a.prs_afdeling_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
AND EXISTS
(SELECT 1
FROM prs_v_afdeling_boom
WHERE prs_afdeling_key = a.prs_afdeling_key
AND prs_bedrijf_key = c_prs_bedrijf_key)
AND NOT EXISTS
(SELECT 1
FROM fac_imp_organisatie
WHERE UPPER (prs_afdeling_naam) = a.prs_afdeling_upper);
COMMIT;
-- For summary only.
SELECT COUNT ( * ) -- ALLEEN onder Van Lanschot Kempen N.V.!
INTO l_newcountafd
FROM prs_v_aanwezigafdeling a, prs_v_afdeling_boom ab
WHERE UPPER (COALESCE (a.prs_afdeling_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
AND a.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = c_prs_bedrijf_key;
SELECT COUNT ( * )
INTO l_newcountkpn
FROM prs_v_aanwezigkostenplaats
WHERE prs_kostenplaats_module = 'PRS'
AND UPPER (COALESCE (prs_kostenplaats_omschrijving, '-')) NOT LIKE 'VERVALLEN:%';
fac.imp_writelog (
p_import_key, 'S',
'Aantal afdelingen in importbestand: ' || TO_CHAR (l_impcountafd),
'');
fac.imp_writelog (
p_import_key, 'S',
'Aantal actieve afdelingen vooraf: '
|| TO_CHAR (l_oldcountafd)
|| ' nu: '
|| TO_CHAR (l_newcountafd),
'');
fac.imp_writelog (
p_import_key, 'S',
'Aantal afdelingen vervallen: ' || TO_CHAR (l_vervcountafd),
'');
fac.imp_writelog (
p_import_key, 'S',
'Aantal actieve kostenplaatsen vooraf: '
|| TO_CHAR (l_oldcountkpn)
|| ' nu: '
|| TO_CHAR (l_newcountkpn),
'');
fac.imp_writelog (
p_import_key, 'S',
'Aantal kostenplaatsen vervallen: ' || TO_CHAR (l_vervcountkpn),
'');
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, 'Importproces Afdelingen afgebroken!');
END;
/
/* Formatted on 17-12-2015 14:48:12 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE vlkc_import_prs (p_import_key IN NUMBER)
AS
v_errormsg VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
-- Verwijder spaties en haakjes ('(' en ')') uit Telefoonnr.
UPDATE fac_imp_file
SET fac_imp_file_line =
SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, ';', 1, 9))
|| REPLACE (
REPLACE (
REPLACE (
SUBSTR (fac_imp_file_line,
INSTR (fac_imp_file_line, ';', 1, 9) + 1,
INSTR (fac_imp_file_line, ';', 1, 10) - INSTR (fac_imp_file_line, ';', 1, 9) - 1),
' ', ''),
'(', ''),
')', '')
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 10))
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
COMMIT;
-- Verwijder spaties en haakjes ('(' en ')') uit Mobiel.
UPDATE fac_imp_file
SET fac_imp_file_line =
SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, ';', 1, 10))
|| REPLACE (
REPLACE (
REPLACE (
SUBSTR (fac_imp_file_line,
INSTR (fac_imp_file_line, ';', 1, 10) + 1,
INSTR (fac_imp_file_line, ';', 1, 11) - INSTR (fac_imp_file_line, ';', 1, 10) - 1),
' ', ''),
'(', ''),
')', '')
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 11))
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
COMMIT;
-- Generieke import.
-- De sequence array staat beschreven in PRS_PAC.SRC bij de import_perslid-PROCEDURE.
-- Met Stamplaats wordt nog niets gedaan!
-- '%"Personeelsnummer";"Login";"Achternaam";"Tussenvoegsel";"Voorletters";"Voornaam";"Afdelingscode";"Functie";"Email";"Telefoonnr";"Mobiel";"Stamplaats";"Login2";"Kpnnr";"Kpnoms"%');
-- '%Personeelsnummer;Login;Achternaam;Tussenvoegsel;Voorletters;Voornaam;Afdelingscode;Functie;Email;Telefoonnr;Mobiel;Stamplaats;Login2;Kpnnr;Kpnoms%');
prs.import_perslid (
p_import_key,
'0;0;0;0;0;0;7;3;4;6;'
|| '5;0;0;0;0;10;11;9;0;1;'
|| '8;2;0;0;0;0;12;13;14;15;'
|| '0;0;0;0;0;0;0;0;0;0;'
|| '0;0;0;0;0;0',
'%Personeelsnummer;Login;Achternaam;Tussenvoegsel;Voorletters;Voornaam;Afdelingscode;Functie;Email;Telefoonnr;Mobiel;Stamplaats;Login2;Kpnnr;Kpnoms%');
-- Klantspecifieke aanpassingen.
-- Als geen Login aangeleverd, dan handmatig toegekende niet wissen.
UPDATE fac_imp_perslid i
SET i.prs_perslid_oslogin =
(SELECT MAX (prs_perslid_oslogin)
FROM prs_v_aanwezigperslid
WHERE prs_perslid_nr = i.prs_perslid_nr)
WHERE i.prs_perslid_oslogin IS NULL -- Aangeleverde Loginnaam wint!
AND EXISTS
(SELECT 1
FROM prs_v_aanwezigperslid
WHERE prs_perslid_oslogin IS NOT NULL
AND prs_perslid_nr = i.prs_perslid_nr);
COMMIT;
-- Als geen Voorletters aangeleverd, dan handmatig toegekende niet wissen.
UPDATE fac_imp_perslid i
SET i.prs_perslid_voorletters =
(SELECT MAX (prs_perslid_voorletters)
FROM prs_v_aanwezigperslid
WHERE prs_perslid_nr = i.prs_perslid_nr)
WHERE i.prs_perslid_voorletters IS NULL -- Aangeleverde Voorletters winnen!
AND EXISTS
(SELECT 1
FROM prs_v_aanwezigperslid
WHERE prs_perslid_voorletters IS NOT NULL
AND prs_perslid_nr = i.prs_perslid_nr);
COMMIT;
-- Als geen Voornaam aangeleverd, dan handmatig toegekende niet wissen.
UPDATE fac_imp_perslid i
SET i.prs_perslid_voornaam =
(SELECT MAX (prs_perslid_voornaam)
FROM prs_v_aanwezigperslid
WHERE prs_perslid_nr = i.prs_perslid_nr)
WHERE i.prs_perslid_voornaam IS NULL -- Aangeleverde Voornaam wint!
AND EXISTS
(SELECT 1
FROM prs_v_aanwezigperslid
WHERE prs_perslid_voornaam IS NOT NULL
AND prs_perslid_nr = i.prs_perslid_nr);
COMMIT;
-- Iedereen de Functie 'Collega'.
UPDATE fac_imp_perslid
SET prs_srtperslid_omschrijving = 'Collega';
COMMIT;
-- Als geen Email aangeleverd, dan handmatig toegekende niet wissen.
UPDATE fac_imp_perslid i
SET i.prs_perslid_email =
(SELECT MAX (prs_perslid_email)
FROM prs_v_aanwezigperslid
WHERE prs_perslid_nr = i.prs_perslid_nr)
WHERE i.prs_perslid_email IS NULL -- Aangeleverde Email wint!
AND EXISTS
(SELECT 1
FROM prs_v_aanwezigperslid
WHERE prs_perslid_email IS NOT NULL
AND prs_perslid_nr = i.prs_perslid_nr);
COMMIT;
-- Als geen Telefoonnr aangeleverd, dan handmatig toegekende niet wissen.
UPDATE fac_imp_perslid i
SET i.prs_perslid_telefoonnr =
(SELECT MAX (prs_perslid_telefoonnr)
FROM prs_v_aanwezigperslid
WHERE prs_perslid_nr = i.prs_perslid_nr)
WHERE i.prs_perslid_telefoonnr IS NULL -- Aangeleverde Telefoonnr wint!
AND EXISTS
(SELECT 1
FROM prs_v_aanwezigperslid
WHERE prs_perslid_telefoonnr IS NOT NULL
AND prs_perslid_nr = i.prs_perslid_nr);
COMMIT;
-- Als geen Mobiel aangeleverd, dan handmatig toegekende niet wissen.
UPDATE fac_imp_perslid i
SET i.prs_perslid_mobiel =
(SELECT MAX (prs_perslid_mobiel)
FROM prs_v_aanwezigperslid
WHERE prs_perslid_nr = i.prs_perslid_nr)
WHERE i.prs_perslid_mobiel IS NULL -- Aangeleverde Mobiel wint!
AND EXISTS
(SELECT 1
FROM prs_v_aanwezigperslid
WHERE prs_perslid_mobiel IS NOT NULL
AND prs_perslid_nr = i.prs_perslid_nr);
COMMIT;
-- Klantspecifieke aanpassingen.
-- Locatie/Gebouw/Verdieping/Ruimte bepalen via Kenmerk1-kolom -> Eigen
-- tabel 1221=MappingAfas2Gebouwcode -> Gebouw -> Alfabetisch eerste
-- Ruimte met Ruimtefunctie 121=Tbv. Afas-koppeling op Verdieping met
-- laagste volgnummer! Aldus met Lottie Rodrigues afgestemd op 13-1-25.
-- Als persoon al een WP heeft op import-locatie, dan is dat de juiste
-- en blijft deze (handmatig gecorrigeerde WP) ongewijzigd.
-- In alle andere gevallen verhuist persoon naar bovenstaande ruimte op
-- import-locatie.
-- WPs onder andere locaties dan op import-locatie blijven ongewijzigd!
UPDATE fac_imp_perslid i
SET i.alg_locatie_code =
(SELECT il.alg_locatie_code
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
alg_v_aanweziggebouw ig,
alg_locatie il
WHERE ud.fac_usrtab_key = 1221 -- MappingAfas2Gebouwcode
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
AND ig.alg_locatie_key = il.alg_locatie_key
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanweziggebouw
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
AND alg_locatie_key < il.alg_locatie_key)),
i.alg_gebouw_code =
(SELECT ig.alg_gebouw_code
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
alg_v_aanweziggebouw ig,
alg_locatie il
WHERE ud.fac_usrtab_key = 1221 -- MappingAfas2Gebouwcode
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
AND ig.alg_locatie_key = il.alg_locatie_key
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanweziggebouw
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
AND alg_locatie_key < il.alg_locatie_key)),
i.alg_verdieping_volgnr =
(SELECT iv.alg_verdieping_volgnr
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
alg_v_aanweziggebouw ig,
alg_locatie il,
alg_verdieping iv,
alg_ruimte ir
WHERE ud.fac_usrtab_key = 1221 -- MappingAfas2Gebouwcode
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
AND ig.alg_locatie_key = il.alg_locatie_key
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanweziggebouw
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
AND alg_locatie_key < il.alg_locatie_key)
AND ig.alg_gebouw_key = iv.alg_gebouw_key
AND iv.alg_verdieping_key = ir.alg_verdieping_key
AND ir.alg_srtruimte_key = 121 -- Afas-koppeling
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanwezigruimte r, alg_verdieping v
WHERE r.alg_srtruimte_key = 121 -- Afas-koppeling
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = iv.alg_gebouw_key
AND v.alg_verdieping_volgnr < iv.alg_verdieping_volgnr)),
i.alg_ruimte_nr =
(SELECT MIN (ir.alg_ruimte_nr)
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
alg_v_aanweziggebouw ig,
alg_locatie il,
alg_verdieping iv,
alg_ruimte ir
WHERE ud.fac_usrtab_key = 1221 -- MappingAfas2Gebouwcode
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
AND ig.alg_locatie_key = il.alg_locatie_key
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanweziggebouw
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
AND alg_locatie_key < il.alg_locatie_key)
AND ig.alg_gebouw_key = iv.alg_gebouw_key
AND iv.alg_verdieping_key = ir.alg_verdieping_key
AND ir.alg_srtruimte_key = 121 -- Afas-koppeling
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanwezigruimte r, alg_verdieping v
WHERE r.alg_srtruimte_key = 121 -- Afas-koppeling
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = iv.alg_gebouw_key
AND v.alg_verdieping_volgnr < iv.alg_verdieping_volgnr))
WHERE NOT EXISTS -- Nog geen werkplek op Locatie!
(SELECT 1
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
alg_v_aanweziggebouw ig,
alg_locatie il,
prs_v_aanwezigperslid p,
prs_perslidwerkplek pw,
prs_werkplek cw,
alg_v_aanwezigruimte cr,
alg_verdieping cv,
alg_gebouw cg
WHERE ud.fac_usrtab_key = 1221 -- MappingAfas2Gebouwcode
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
AND ig.alg_locatie_key = il.alg_locatie_key
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanweziggebouw
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
AND alg_locatie_key < il.alg_locatie_key)
AND p.prs_perslid_nr = i.prs_perslid_nr
AND p.prs_perslid_key = pw.prs_perslid_key
AND pw.prs_werkplek_key = cw.prs_werkplek_key
AND cw.prs_alg_ruimte_key = cr.alg_ruimte_key
AND cr.alg_verdieping_key = cv.alg_verdieping_key
AND cv.alg_gebouw_key = cg.alg_gebouw_key
AND cg.alg_locatie_key = il.alg_locatie_key);
COMMIT;
-- Resulteert in nette foutmelding als ruimte niet kan worden bepaald.
UPDATE fac_imp_perslid
SET alg_verdieping_volgnr = 0
WHERE alg_gebouw_code IS NOT NULL
AND alg_verdieping_volgnr IS NULL;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Inleesproces personen afgebroken!');
END vlkc_import_prs;
/
/*
SELECT i.prs_perslid_email,
i.prs_kenmerk1,
(SELECT COUNT (pwp.alg_gebouw_code)
FROM prs_v_aanwezigperslid p, prs_v_perslidwerkplek_gegevens pwp
WHERE p.prs_perslid_key = pwp.prs_perslid_key
AND pwp.prs_perslidwerkplek_key <= 11501
AND p.prs_perslid_nr = i.prs_perslid_nr)
aant_wp,
(SELECT MIN (pwp.alg_gebouw_code)
FROM prs_v_aanwezigperslid p, prs_v_perslidwerkplek_gegevens pwp
WHERE p.prs_perslid_key = pwp.prs_perslid_key
AND pwp.prs_perslidwerkplek_key <= 11501
AND p.prs_perslid_nr = i.prs_perslid_nr)
min_wp,
(SELECT MAX (pwp.alg_gebouw_code)
FROM prs_v_aanwezigperslid p, prs_v_perslidwerkplek_gegevens pwp
WHERE p.prs_perslid_key = pwp.prs_perslid_key
AND pwp.prs_perslidwerkplek_key <= 11501
AND p.prs_perslid_nr = i.prs_perslid_nr)
max_wp,
i.alg_locatie_code,
(SELECT il.alg_locatie_code
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
alg_v_aanweziggebouw ig,
alg_locatie il
WHERE ud.fac_usrtab_key = 1221 -- MappingAfas2Gebouwcode
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
AND ig.alg_locatie_key = il.alg_locatie_key
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanweziggebouw
WHERE UPPER (alg_gebouw_code) =
UPPER (ud.fac_usrdata_omschr)
AND alg_locatie_key < il.alg_locatie_key)),
i.alg_gebouw_code,
(SELECT ig.alg_gebouw_code
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
alg_v_aanweziggebouw ig,
alg_locatie il
WHERE ud.fac_usrtab_key = 1221 -- MappingAfas2Gebouwcode
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
AND ig.alg_locatie_key = il.alg_locatie_key
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanweziggebouw
WHERE UPPER (alg_gebouw_code) =
UPPER (ud.fac_usrdata_omschr)
AND alg_locatie_key < il.alg_locatie_key)),
i.alg_verdieping_volgnr,
(SELECT iv.alg_verdieping_volgnr
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
alg_v_aanweziggebouw ig,
alg_locatie il,
alg_verdieping iv,
alg_ruimte ir
WHERE ud.fac_usrtab_key = 1221 -- MappingAfas2Gebouwcode
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
AND ig.alg_locatie_key = il.alg_locatie_key
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanweziggebouw
WHERE UPPER (alg_gebouw_code) =
UPPER (ud.fac_usrdata_omschr)
AND alg_locatie_key < il.alg_locatie_key)
AND ig.alg_gebouw_key = iv.alg_gebouw_key
AND iv.alg_verdieping_key = ir.alg_verdieping_key
AND ir.alg_ruimte_nr = '0'
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanwezigruimte r, alg_verdieping v
WHERE r.alg_ruimte_nr = '0'
AND r.alg_verdieping_key =
v.alg_verdieping_key
AND v.alg_verdieping_volgnr <
iv.alg_verdieping_volgnr)),
i.alg_ruimte_nr,
(SELECT '0'
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
alg_v_aanweziggebouw ig,
alg_locatie il
WHERE ud.fac_usrtab_key = 1221 -- MappingAfas2Gebouwcode
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
AND ig.alg_locatie_key = il.alg_locatie_key
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanweziggebouw
WHERE UPPER (alg_gebouw_code) =
UPPER (ud.fac_usrdata_omschr)
AND alg_locatie_key < il.alg_locatie_key))
FROM fac_imp_perslid i
WHERE NOT EXISTS -- Nog geen werkplek op Locatie!
(SELECT 1
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
alg_v_aanweziggebouw ig,
alg_locatie il,
prs_v_aanwezigperslid p,
prs_perslidwerkplek pw,
prs_werkplek cw,
alg_v_aanwezigruimte cr,
alg_verdieping CV,
alg_gebouw cg
WHERE ud.fac_usrtab_key = 1221 -- MappingAfas2Gebouwcode
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
AND UPPER (ud.fac_usrdata_omschr) =
UPPER (ig.alg_gebouw_code)
AND ig.alg_locatie_key = il.alg_locatie_key
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanweziggebouw
WHERE UPPER (alg_gebouw_code) =
UPPER (ud.fac_usrdata_omschr)
AND alg_locatie_key < il.alg_locatie_key)
AND p.prs_perslid_nr = i.prs_perslid_nr
AND p.prs_perslid_key = pw.prs_perslid_key
AND pw.prs_werkplek_key = cw.prs_werkplek_key
AND cw.prs_alg_ruimte_key = cr.alg_ruimte_key
AND cr.alg_verdieping_key = CV.alg_verdieping_key
AND CV.alg_gebouw_key = cg.alg_gebouw_key
AND cg.alg_locatie_key = il.alg_locatie_key);
m.boer@vanlanschotkempen.com Den Bosch Hooge Steenweg 4 E RK-AMS-APOL DB-HSW
M.Walschots@vanlanschotkempen.com Den Bosch Hooge Steenweg 4 E RK-AMS-APOL DB-HSW
M.deGroot@vanlanschotkempen.com Den Bosch Hooge Steenweg 3 E RK-AMS-APOL DB-HSW
E.Deurhof@vanlanschotkempen.com Amsterdam Apollolaan 2 E HK AMS-APOL
f.jongen@vanlanschotkempen.com Amsterdam Beethovenstraat 2 COL-DHAA HK AMS-WTC
m.bink@vanlanschotkempen.com Amsterdam Beethovenstraat 2 ALL-GEBOUW COL-GRO-Ubbo AMS-WTC
M.Boere@vanlanschotkempen.com Amsterdam Apollolaan 1 E E AMS-APOL
e.bleukens@vanlanschotkempen.com Rotterdam 1 E E ROT
J.Godschalk@vanlanschotkempen.com Amsterdam Apollolaan 1 E E AMS-APOL
D.vanderGrinten@vanlanschotkempen.com Amsterdam Apollolaan 1 E E AMS-APOL
y.langeweg@vanlanschotkempen.com Amsterdam Apollolaan 1 COL-ZEIST COL-ZEIST AMS-APOL
S.Raspoort@vanlanschotkempen.com Amsterdam Apollolaan 1 E E AMS-APOL
A.vanWingerden@vanlanschotkempen.com Amsterdam Apollolaan 1 COL-ZEIST COL-ZEIST AMS-APOL
s.roele@vanlanschotkempen.com Amsterdam Beethovenstraat 1 RK-AMS-APOL RK-AMS-APOL AMS-WTC
n.ewald-smits@vanlanschotkempen.com Den Bosch Toren 1 E E DB-TOREN
F.Maghraoui@vanlanschotkempen.com Amsterdam Beethovenstraat 1 RK-AMS-APOL RK-AMS-APOL AMS-WTC
e.vanbraam@vanlanschotkempen.com Amsterdam Apollolaan 1 E E AMS-APOL
r.monincx@vanlanschotkempen.com Amsterdam Apollolaan 1 COL-ALK LOO COL-ALK LOO AMS-APOL
b.cools-vandinther@vanlanschotkempen.com Rotterdam 1 E E ROT
*/
CREATE OR REPLACE PROCEDURE vlkc_update_prs (p_import_key IN NUMBER)
AS
-- Maximale afname van medewerkers na import tov. huidig aantal met nummer!
c_max_delta_percentage NUMBER (10) := 25; -- 25%!
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_prs_import NUMBER (10); -- #actieve personen na import!
v_count_prs_actual NUMBER (10); -- #actieve personen voor import!
v_kostenplaats_key NUMBER (10);
-- Verwijderen personen niet in import (voor afdeling wel in import)!
CURSOR c_del
IS
SELECT p.prs_perslid_key, p.prs_perslid_nr
FROM prs_v_aanwezigperslid p --, prs_afdeling a
WHERE p.prs_perslid_nr IS NOT NULL -- Personen met nummer
AND p.prs_srtperslid_key = 3941 -- Personen met functie=Collega
AND NOT EXISTS
(SELECT 1
FROM fac_imp_perslid
WHERE prs_perslid_nr = p.prs_perslid_nr)
ORDER BY 2, 1;
-- Toekennen alternatieve login!
CURSOR c_login2
IS
SELECT '[' || p.prs_perslid_nr || '|' || TRIM (i.prs_kenmerk2) || '] ' aanduiding,
p.prs_perslid_key,
TRIM (i.prs_kenmerk2) prs_kenmerk2
FROM fac_imp_perslid i, prs_v_aanwezigperslid p
WHERE LENGTH (TRIM (i.prs_kenmerk2)) > 0 -- Login2
AND i.prs_perslid_nr = p.prs_perslid_nr
AND i.prs_kenmerk2 != p.prs_perslid_oslogin
ORDER BY 2, 1;
-- Toekennen(/aanmaken/bijwerken) persoonlijke kostenplaats!
CURSOR c_prskpn
IS
SELECT '[' || p.prs_perslid_nr || '|' || TRIM (i.prs_kenmerk3) || '|' || TRIM (i.prs_kenmerk4) || '] ' aanduiding,
p.prs_perslid_key,
TRIM (i.prs_kenmerk3) prs_kenmerk3,
TRIM (i.prs_kenmerk4) prs_kenmerk4,
kp.prs_kostenplaats_key
FROM fac_imp_perslid i, prs_v_aanwezigperslid p, prs_v_aanwezigkostenplaats kp
WHERE LENGTH (TRIM (i.prs_kenmerk3)) > 0 -- Kpnnr
AND i.prs_perslid_nr = p.prs_perslid_nr
AND TRIM (i.prs_kenmerk3) = TRIM (kp.prs_kostenplaats_nr(+))
ORDER BY 2, 1;
-- Toekennen autorisatiegroep _Default NL aan Nederlanders!
CURSOR c_nl
IS
SELECT '[' || p.prs_perslid_nr || '] ' aanduiding,
p.prs_perslid_key
FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab
WHERE p.prs_perslid_nr IS NOT NULL
AND p.prs_srtperslid_key = 3941 -- Personen met functie=Collega
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key2 != 7384 -- 10002/Mercier Van Lanschot/Alles NIET onder 10002 is NL!
AND NOT EXISTS
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key = 1 -- _Default NL
AND prs_perslid_key = p.prs_perslid_key)
ORDER BY 2, 1;
-- Toekennen autorisatiegroep _Default BE aan Belgen!
CURSOR c_be
IS
SELECT '[' || p.prs_perslid_nr || '] ' aanduiding,
p.prs_perslid_key
FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab
WHERE p.prs_perslid_nr IS NOT NULL
AND p.prs_srtperslid_key = 3941 -- Personen met functie=Collega
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key2 = 7384 -- 10002/Mercier Van Lanschot
AND NOT EXISTS
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key = 1381 -- _Default BE
AND prs_perslid_key = p.prs_perslid_key)
ORDER BY 2, 1;
BEGIN
-- Bepaal aantal personen na import.
SELECT COUNT (DISTINCT prs_perslid_nr)
INTO v_count_prs_import
FROM fac_imp_perslid
WHERE prs_perslid_nr IS NOT NULL;
-- Bepaal aantal personen voor import.
SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
INTO v_count_prs_actual
FROM prs_v_aanwezigperslid
WHERE prs_perslid_nr IS NOT NULL;
IF (TRUNC ( (v_count_prs_import / v_count_prs_actual) * 100) < (100 - c_max_delta_percentage))
THEN
fac.imp_writelog (
p_import_key, 'E',
'Verschil tussen huidig aantal en te importeren aantal personen te groot; zie specificatie!',
'- max. verschilpercentage = [' || TO_CHAR (c_max_delta_percentage) || '%]'
|| CHR (13) || CHR (10)
|| '- #personen/import = [' || TO_CHAR (v_count_prs_import) || ']'
|| CHR (13) || CHR (10)
|| '- #personen/huidig = [' || TO_CHAR (v_count_prs_actual) || ']');
ELSE
-- Verwijder personen die niet meer in de import voorkomen.
FOR rec IN c_del
LOOP
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
END LOOP;
COMMIT;
-- Generieke update (op personeelsnummer).
--prs.update_perslid (p_import_key, 'EMAIL', NULL); -- EENMALIG op e-mail!
prs.update_perslid (p_import_key, 'NR', NULL);
-- Toekennen alternatieve login!
FOR rec IN c_login2
LOOP
BEGIN
UPDATE prs_perslid
SET prs_perslid_oslogin2 = rec.prs_kenmerk2
WHERE prs_perslid_key = rec.prs_perslid_key;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', rec.aanduiding || v_errormsg, 'Toekennen login2');
END;
END LOOP;
-- Toekennen(/aanmaken/bijwerken) kostenplaats!
FOR rec IN c_prskpn
LOOP
BEGIN
v_kostenplaats_key := rec.prs_kostenplaats_key;
IF v_kostenplaats_key IS NULL
THEN
INSERT INTO prs_kostenplaats (prs_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_kostenplaats_module)
VALUES (rec.prs_kenmerk3, COALESCE (rec.prs_kenmerk4, rec.prs_kenmerk3), 'PRS')
RETURNING prs_kostenplaats_key
INTO v_kostenplaats_key;
ELSE
UPDATE prs_kostenplaats
SET prs_kostenplaats_omschrijving = COALESCE (rec.prs_kenmerk4, rec.prs_kenmerk3),
prs_kostenplaats_module = 'PRS'
WHERE prs_kostenplaats_key = v_kostenplaats_key;
END IF;
UPDATE prs_perslid
SET prs_kostenplaats_key = v_kostenplaats_key
WHERE prs_perslid_key = rec.prs_perslid_key;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', rec.aanduiding || v_errormsg, 'Toekennen kostenpaats');
END;
END LOOP;
-- Toekennen autorisatiegroep 1=_Default NL aan Nederlanders (en afnemen
-- 1381=_Default BE, maar alleen bij toekenning aan 1=_Default NL)!
FOR rec IN c_nl
LOOP
BEGIN
v_errormsg := 'Fout afnemen _Default BE';
DELETE FROM fac_gebruikersgroep
WHERE fac_groep_key = 1381 AND prs_perslid_key = rec.prs_perslid_key;
v_errormsg := 'Fout toekennen _Default NL';
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
VALUES (1, rec.prs_perslid_key);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', rec.aanduiding || v_errormsg, 'Toekennen _Default NL');
END;
END LOOP;
-- Toekennen autorisatiegroep 1381=_Default BE aan Belgen (en afnemen
-- 1=_Default NL, maar alleen bij toekenning aan 1381=_Default BE)!
FOR rec IN c_be
LOOP
BEGIN
v_errormsg := 'Fout afnemen _Default NL';
DELETE FROM fac_gebruikersgroep
WHERE fac_groep_key = 1 AND prs_perslid_key = rec.prs_perslid_key;
v_errormsg := 'Fout toekennen _Default BE';
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
VALUES (1381, rec.prs_perslid_key);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', rec.aanduiding || v_errormsg, 'Toekennen _Default BE');
END;
END LOOP;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'importproces personen afgebroken!');
END vlkc_update_prs;
/
-- VLKC#40719: Klantspecifieke FACTUUR-import/update die vereist dat bij VLKC
-- bestelopdrachten met een 'b' (of 'B') beginnen.
-- VLKC#56901: Facturen tegen CV-contracten accepteren (en CF dan ook maar)!
CREATE OR REPLACE PROCEDURE vlkc_import_factuur (p_import_key IN NUMBER)
AS
v_seq_of_columns VARCHAR(255);
BEGIN
v_seq_of_columns := '1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28';
fac_import_factuur_body(p_import_key, v_seq_of_columns);
END;
/
CREATE OR REPLACE PROCEDURE vlkc_update_factuur (p_import_key IN NUMBER)
AS
BEGIN
UPDATE fac_imp_factuur SET ordernr = 'X' || ordernr WHERE SUBSTR (ordernr, 1, 1) BETWEEN '0' AND '9';
UPDATE fac_imp_factuur SET ordernr = SUBSTR (ordernr, 2) WHERE UPPER (SUBSTR (ordernr, 1, 1)) = 'B' AND SUBSTR (ordernr, 2, 1) BETWEEN '0' AND '9'; -- Strip prefix 'B'
UPDATE fac_imp_factuur SET ordernr = 'C' || SUBSTR (ordernr, 3) WHERE UPPER (SUBSTR (ordernr, 1, 2)) = 'CF' AND SUBSTR (ordernr, 3, 1) BETWEEN '0' AND '9'; -- 'CF':='C'
UPDATE fac_imp_factuur SET ordernr = 'C' || SUBSTR (ordernr, 3) WHERE UPPER (SUBSTR (ordernr, 1, 2)) = 'CV' AND SUBSTR (ordernr, 3, 1) BETWEEN '0' AND '9'; -- 'CV':='C'
UPDATE fac_imp_factuur SET ordernr = 'C' || SUBSTR (ordernr, 3) WHERE UPPER (SUBSTR (ordernr, 1, 2)) = 'CH' AND SUBSTR (ordernr, 3, 1) BETWEEN '0' AND '9'; -- 'CH':='C'
fac_update_factuur (p_import_key); -- Standaard import verwacht voor BES-verplichting g<><67>n prefix, voor MLD-verplichting prefix<>'C' en voor CNT-verplichting prefix='C'!
END;
/
/* VLKC#57175 Rapportage Bloemen besteld voor medewerkers VLKC */
CREATE OR REPLACE VIEW VLKC_V_RAP_BES_BLOEMEN
(
OPDR_KEY,
OPDR_NR,
OPDR_DATUM,
NAAM_BESTELLER,
KOSTENPLAATS_KEY,
KOSTENPLAATS_NR,
KOSTENPLAATS_OMSCHR,
ARTIKEL_PRIJS_INC,
ARTIKEL_SOORT_KEY,
ARTIKEL_SOORT_OMSCHRIJVING,
VOOR_MEDEWERKER_VLKC
)
AS
SELECT beso.BES_BESTELOPDR_KEY,
beso.BES_BESTELOPDR_ID,
beso.BES_BESTELOPDR_DATUM,
pers.PRS_PERSLID_VOORNAAM || ' ' || pers.PRS_PERSLID_NAAM,
best.PRS_KOSTENPLAATS_KEY,
kpn.PRS_KOSTENPLAATS_NR,
kpn.PRS_KOSTENPLAATS_OMSCHRIJVING,
besi.BES_BESTELLING_ITEM_PRIJS,
besd.BES_SRTDEEL_NR,
besd.bes_srtdeel_omschrijving,
(SELECT fac_usrdata_omschr
FROM bes_kenmerkbestell kb, fac_usrdata
WHERE bes_kenmerk_key = 101
AND fac_usrtab_key = 61
AND bes_kenmerkbestell_waarde = TO_CHAR (fac_usrdata_key)
AND kb.BES_BESTELLING_KEY = besi.BES_BESTELLING_KEY)
voor_mdw_vl
FROM bes_bestelopdr beso,
bes_bestelopdr_item besoi,
bes_bestelling_item besi,
bes_srtdeel besd,
bes_srtgroep besg,
prs_perslid pers,
bes_bestelling best,
prs_kostenplaats kpn
WHERE beso.BES_BESTELOPDR_KEY = besoi.BES_BESTELOPDR_KEY
AND besi.BES_BESTELOPDR_ITEM_KEY = besoi.BES_BESTELOPDR_ITEM_KEY
AND besd.BES_SRTDEEL_KEY = besi.BES_SRTDEEL_KEY
AND besg.BES_SRTGROEP_KEY = besd.BES_SRTGROEP_KEY
AND besg.INS_DISCIPLINE_KEY = 661
AND pers.prs_perslid_key = beso.PRS_PERSLID_KEY
AND best.BES_BESTELLING_KEY = besi.BES_BESTELLING_KEY
AND best.PRS_KOSTENPLAATS_KEY = kpn.PRS_KOSTENPLAATS_KEY;
/* Formatted on 17-12-2015 15:32:28 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW vlkc_v_rap_res_maand
(
fclt_f_maand,
kostenplaats,
aantal,
totaalprijs
)
AS
SELECT TO_CHAR (res_rsv_artikel_levering, 'yyyy-mm'),
prs_kostenplaats_nr,
COUNT (DISTINCT res_id),
SUM (verw_prijs)
FROM (SELECT x.res_rsv_artikel_levering,
kp.prs_kostenplaats_nr,
kp.prs_kostenplaats_omschrijving,
x.res_id,
x.res_discipline_key,
x.res_rsv_artikel_key,
x.res_voorziening,
x.aantal,
x.stuksprijs,
x.verw_prijs,
x.prijs
FROM (SELECT rra.res_rsv_artikel_levering,
rrr.res_rsv_ruimte_host_key,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
res_id,
ra.res_discipline_key,
rra.res_rsv_artikel_key,
LTRIM (ra.res_artikel_omschrijving)
|| ' ('
|| COALESCE (ra.res_artikel_eenheid, '')
|| ')'
res_voorziening,
rra.res_rsv_artikel_aantal aantal,
ra.res_artikel_prijs stuksprijs,
rra.res_rsv_artikel_prijs verw_prijs,
rra.res_rsv_artikel_aantal * ra.res_artikel_prijs
prijs
FROM res_rsv_ruimte rrr,
res_v_aanwezigrsv_artikel rra,
res_artikel ra
WHERE rrr.alg_ruimte_key IS NULL
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_status_bo_key IN (5, 6)
AND rra.res_artikel_key = ra.res_artikel_key
UNION ALL
SELECT rra.res_rsv_artikel_levering,
rrr.res_rsv_ruimte_host_key,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
resid,
ra.res_discipline_key,
rra.res_rsv_artikel_key,
LTRIM (ra.res_artikel_omschrijving)
|| ' ('
|| COALESCE (ra.res_artikel_eenheid, '')
|| ')'
res_voorziening,
rra.res_rsv_artikel_aantal aantal,
ra.res_artikel_prijs stuksprijs,
rra.res_rsv_artikel_prijs verw_prijs,
rra.res_rsv_artikel_aantal * ra.res_artikel_prijs
prijs
FROM res_rsv_ruimte rrr,
res_v_aanwezigrsv_artikel rra,
res_artikel ra
WHERE rrr.res_ruimte_opstel_key IS NULL
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_status_bo_key IN (5, 6)
AND rra.res_artikel_key = ra.res_artikel_key) x,
prs_perslid p,
prs_afdeling a,
prs_kostenplaats kp
WHERE x.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key)
GROUP BY TO_CHAR (res_rsv_artikel_levering, 'yyyy-mm'), prs_kostenplaats_nr;
-- VLKC#35251/VLKC#39680/VLKC#39756: Kostenplaats volgens reservering (anders
-- gastheer) en beperken voor alleen locatie
-- AMS-BEET!
/* Formatted on 20-3-2017 12:26:42 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW vlkc_v_rap_cat_doorbelasting
(
fclt_f_jaar,
kostenplaatscode,
kostenplaats_oms,
jan,
feb,
mrt,
apr,
mei,
jun,
jul,
aug,
sep,
okt,
nov,
dec,
tot
)
AS
SELECT TO_CHAR (x.res_rsv_artikel_levering, 'yyyy') jaar,
COALESCE (x.prs_kostenplaats_nr, kp.prs_kostenplaats_nr),
DECODE (x.prs_kostenplaats_nr, NULL, kp.prs_kostenplaats_omschrijving, x.prs_kostenplaats_omschrijving),
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '01', verw_prijs, 0)) jan,
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '02', verw_prijs, 0)) feb,
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '03', verw_prijs, 0)) mrt,
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '04', verw_prijs, 0)) apr,
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '05', verw_prijs, 0)) mei,
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '06', verw_prijs, 0)) jun,
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '07', verw_prijs, 0)) jul,
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '08', verw_prijs, 0)) aug,
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '09', verw_prijs, 0)) sep,
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '10', verw_prijs, 0)) okt,
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '11', verw_prijs, 0)) nov,
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '12', verw_prijs, 0)) dec,
SUM (verw_prijs) tot
FROM (SELECT rra.res_rsv_artikel_levering,
rrr.res_rsv_ruimte_host_key,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr res_id,
ra.res_discipline_key,
rra.res_rsv_artikel_key,
LTRIM (ra.res_artikel_omschrijving) || ' (' || COALESCE (ra.res_artikel_eenheid, '') || ')' res_voorziening,
rra.res_rsv_artikel_aantal aantal,
ra.res_artikel_prijs stuksprijs,
rra.res_rsv_artikel_prijs verw_prijs,
rra.res_rsv_artikel_aantal * ra.res_artikel_prijs prijs,
l.alg_locatie_key,
kp.prs_kostenplaats_nr,
kp.prs_kostenplaats_omschrijving
FROM res_rsv_ruimte rrr,
res_v_aanwezigrsv_artikel rra,
res_artikel ra,
res_ruimte_opstelling rro,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_v_aanwezigalg_ruimte
GROUP BY res_ruimte_key) rar,
alg_v_onrgoed_boom aob,
alg_locatie l,
prs_kostenplaats kp
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_status_bo_key IN (5, 6)
AND rra.res_artikel_key = ra.res_artikel_key
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)
AND rro.res_ruimte_key = rar.res_ruimte_key(+)
AND COALESCE (rrr.alg_ruimte_key, rar.alg_ruimte_key) = aob.alg_ruimte_key
AND aob.alg_locatie_key = l.alg_locatie_key
AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)) x,
prs_perslid p,
prs_afdeling a,
prs_kostenplaats kp
WHERE x.res_rsv_artikel_levering > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
AND x.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND x.alg_locatie_key = 1 -- AMS-BEET (Kempen & Co)
GROUP BY TO_CHAR (x.res_rsv_artikel_levering, 'yyyy'),
COALESCE (x.prs_kostenplaats_nr, kp.prs_kostenplaats_nr),
DECODE (x.prs_kostenplaats_nr, NULL, kp.prs_kostenplaats_omschrijving, x.prs_kostenplaats_omschrijving);
-- VLKC#39680: Nieuwe variant voor alle locaties van Van Lanschot (en Kempen)!
CREATE OR REPLACE VIEW vlkc_v_rap_cat_doorbelasting2
(
fclt_f_maand,
kostenplaatscode,
kostenplaats_oms,
fclt_f_locatie,
tot
)
AS
SELECT TO_CHAR (x.res_rsv_artikel_levering, 'yyyy-mm') maand,
COALESCE (x.prs_kostenplaats_nr, kp.prs_kostenplaats_nr),
DECODE (x.prs_kostenplaats_nr, NULL, kp.prs_kostenplaats_omschrijving, x.prs_kostenplaats_omschrijving),
x.alg_locatie_omschrijving,
SUM (verw_prijs) tot
FROM (SELECT rra.res_rsv_artikel_levering,
rrr.res_rsv_ruimte_host_key,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr res_id,
ra.res_discipline_key,
rra.res_rsv_artikel_key,
LTRIM (ra.res_artikel_omschrijving) || ' (' || COALESCE (ra.res_artikel_eenheid, '') || ')' res_voorziening,
rra.res_rsv_artikel_aantal aantal,
ra.res_artikel_prijs stuksprijs,
rra.res_rsv_artikel_prijs verw_prijs,
rra.res_rsv_artikel_aantal * ra.res_artikel_prijs prijs,
l.alg_locatie_key,
l.alg_locatie_omschrijving,
kp.prs_kostenplaats_nr,
kp.prs_kostenplaats_omschrijving
FROM res_rsv_ruimte rrr,
res_v_aanwezigrsv_artikel rra,
res_artikel ra,
res_ruimte_opstelling rro,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_v_aanwezigalg_ruimte
GROUP BY res_ruimte_key) rar,
alg_v_onrgoed_boom aob,
alg_locatie l,
prs_kostenplaats kp
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_status_bo_key IN (5, 6)
AND rra.res_artikel_key = ra.res_artikel_key
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)
AND rro.res_ruimte_key = rar.res_ruimte_key(+)
AND COALESCE (rrr.alg_ruimte_key, rar.alg_ruimte_key) = aob.alg_ruimte_key
AND aob.alg_locatie_key = l.alg_locatie_key
AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)) x,
prs_perslid p,
prs_afdeling a,
prs_kostenplaats kp
WHERE x.res_rsv_artikel_levering > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
AND x.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key
GROUP BY TO_CHAR (x.res_rsv_artikel_levering, 'yyyy-mm'),
COALESCE (x.prs_kostenplaats_nr, kp.prs_kostenplaats_nr),
DECODE (x.prs_kostenplaats_nr, NULL, kp.prs_kostenplaats_omschrijving, x.prs_kostenplaats_omschrijving),
x.alg_locatie_omschrijving;
-- VLKC#35252
CREATE OR REPLACE VIEW vlkc_v_rap_bez_aanmelding
(
afspraakdatum,
afspraaknr,
fclt_f_contactpersoon,
fclt_f_gastheer,
bezoeker,
opmerking,
fclt_f_door,
locatie
)
AS
SELECT x.bez_afspraak_datum,
TO_CHAR (x.bez_afspraak_key),
x.contactpersoon,
x.gastheer,
x.bez_afspraak_naam,
x.bez_afspraak_opmerking,
DECODE (gg.prs_perslid_key, NULL, 'Eindgebruiker', 'Receptie'),
l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')'
FROM (SELECT a.bez_afspraak_datum,
a.bez_afspraak_key,
a.bez_afspraak_opmerking,
b.bez_afspraak_naam,
pc.prs_perslid_naam_full contactpersoon,
ph.prs_perslid_naam_full gastheer,
t.prs_perslid_key,
a.alg_locatie_key
FROM bez_afspraak a,
bez_bezoekers b,
prs_v_perslid_fullnames_all pc,
prs_v_perslid_fullnames_all ph,
fac_tracking t
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND a.bez_afspraak_contact_key = pc.prs_perslid_key
AND a.bez_afspraak_host_key = ph.prs_perslid_key
AND a.bez_afspraak_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = 26) x -- BEZMUT
LEFT JOIN ( SELECT bez_afspraak_key, COUNT ( * ) aantal
FROM bez_bezoekers
GROUP BY bez_afspraak_key) b
ON x.bez_afspraak_key = b.bez_afspraak_key
LEFT JOIN fac_gebruikersgroep gg -- 43=Receptie
ON x.prs_perslid_key = gg.prs_perslid_key
AND gg.fac_groep_key = 43
LEFT JOIN alg_locatie l
ON x.alg_locatie_key = l.alg_locatie_key;
-- VLKC#35749
/* Formatted on 18-7-2016 18:35:25 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW vlkc_v_rap_res_cateringrest
(
hide_f_volgorde,
fclt_x_lijst,
ruimte,
datum,
van,
tot,
resnr,
pers,
voorzieningen_opstelling,
opmerking_catering,
omschrijving,
aanvrager,
gastheer,
res_rsv_ruimte_key
)
AS
SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yymmddhh24miss')
|| TO_CHAR (rrr.res_rsv_ruimte_tot, 'yymmddhh24miss')
|| TO_CHAR (rrr.res_rsv_ruimte_key)
|| x.res_type,
'Cateringlijst L17 + Caf<61>',
COALESCE (alg_ruimte_geg.alg_ruimte_aanduiding, res_ruimte_geg.res_ruimte_nr),
x.res_reservering_van,
x.res_reservering_van,
x.res_reservering_tot,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
TO_CHAR (rrr.res_rsv_ruimte_bezoekers),
COALESCE (x.res_voorziening, res_ruimte_geg.res_opstelling_omschrijving),
kr.res_kenmerkreservering_waarde,
rrr.res_rsv_ruimte_omschrijving,
pa.prs_perslid_naam_full,
pg.prs_perslid_naam_full,
rrr.res_rsv_ruimte_key
FROM (SELECT '1R' res_type,
rrr.res_rsv_ruimte_key,
rrr.res_rsv_ruimte_van res_reservering_van,
rrr.res_rsv_ruimte_tot res_reservering_tot,
--TO_NUMBER (NULL) aantal,
NULL res_voorziening,
NULL res_discipline_key,
rrr.res_status_bo_key
FROM res_v_aanwezigrsv_ruimte rrr
WHERE rrr.alg_ruimte_key IS NULL
AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)
--AND EXISTS
-- (SELECT 1
-- FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
-- WHERE rra.res_artikel_key = ra.res_artikel_key
-- AND ra.res_discipline_key IN (41, 44, 45)
-- AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
UNION ALL
SELECT '3C' res_type,
rra.res_rsv_ruimte_key,
rra.res_rsv_artikel_levering res_reservering_van,
NULL res_reservering_tot,
--rra.res_rsv_artikel_aantal aantal aantal,
TO_CHAR (rra.res_rsv_artikel_aantal)
|| ' * '
|| LTRIM (ra.res_artikel_omschrijving)
|| ' ('
|| COALESCE (ra.res_artikel_eenheid, '')
|| ')'
res_voorziening,
ra.res_discipline_key,
rra.res_status_bo_key
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
WHERE rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key IN (41, 44, 45)
AND rra.res_rsv_artikel_levering BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)) x,
res_v_aanwezigrsv_ruimte rrr,
prs_v_perslid_fullnames_all pa,
prs_v_perslid_fullnames_all pg,
alg_v_ruimte_gegevens_all alg_ruimte_geg,
(SELECT rro.res_ruimte_opstel_key,
rro.res_ruimte_opstel_default,
rr.res_discipline_key,
rr.res_ruimte_nr,
ro.res_opstelling_omschrijving
FROM res_ruimte_opstelling rro, res_ruimte rr, res_opstelling ro
WHERE rro.res_ruimte_key = rr.res_ruimte_key
AND rro.res_opstelling_key = ro.res_opstelling_key)
res_ruimte_geg,
(SELECT *
FROM res_v_aanwezigkenmerkwaarde kr, res_kenmerk k
WHERE kr.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 1) kr -- Opmerking Catering
WHERE x.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_contact_key = pa.prs_perslid_key
AND rrr.res_rsv_ruimte_host_key = pg.prs_perslid_key
AND rrr.alg_ruimte_key = alg_ruimte_geg.alg_ruimte_key(+)
AND rrr.res_ruimte_opstel_key = res_ruimte_geg.res_ruimte_opstel_key(+)
AND rrr.res_rsv_ruimte_key = kr.res_rsv_ruimte_key(+)
AND res_ruimte_geg.res_discipline_key IN (21, 22, 23, 24)
UNION ALL
SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yymmddhh24miss')
|| TO_CHAR (rrr.res_rsv_ruimte_tot, 'yymmddhh24miss')
|| TO_CHAR (rrr.res_rsv_ruimte_key)
|| x.res_type,
'Cateringlijst L4 + L15',
COALESCE (alg_ruimte_geg.alg_ruimte_aanduiding, res_ruimte_geg.res_ruimte_nr),
x.res_reservering_van,
x.res_reservering_van,
x.res_reservering_tot,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
TO_CHAR (rrr.res_rsv_ruimte_bezoekers),
COALESCE (x.res_voorziening, res_ruimte_geg.res_opstelling_omschrijving),
kr.res_kenmerkreservering_waarde,
rrr.res_rsv_ruimte_omschrijving,
pa.prs_perslid_naam_full,
pg.prs_perslid_naam_full,
rrr.res_rsv_ruimte_key
FROM (SELECT '1R' res_type,
rrr.res_rsv_ruimte_key,
rrr.res_rsv_ruimte_van res_reservering_van,
rrr.res_rsv_ruimte_tot res_reservering_tot,
--TO_NUMBER (NULL) aantal,
NULL res_voorziening,
NULL res_discipline_key,
rrr.res_status_bo_key
FROM res_v_aanwezigrsv_ruimte rrr
WHERE rrr.alg_ruimte_key IS NULL
AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)
--AND EXISTS
-- (SELECT 1
-- FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
-- WHERE rra.res_artikel_key = ra.res_artikel_key
-- AND ra.res_discipline_key IN (42, 45)
-- AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
UNION ALL
SELECT '3C' res_type,
rra.res_rsv_ruimte_key,
rra.res_rsv_artikel_levering res_reservering_van,
NULL res_reservering_tot,
--rra.res_rsv_artikel_aantal aantal,
TO_CHAR (rra.res_rsv_artikel_aantal)
|| ' * '
|| LTRIM (ra.res_artikel_omschrijving)
|| ' ('
|| COALESCE (ra.res_artikel_eenheid, '')
|| ')'
res_voorziening,
ra.res_discipline_key,
rra.res_status_bo_key
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
WHERE rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key IN (42, 45)
AND rra.res_rsv_artikel_levering BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)) x,
res_v_aanwezigrsv_ruimte rrr,
prs_v_perslid_fullnames_all pa,
prs_v_perslid_fullnames_all pg,
alg_v_ruimte_gegevens_all alg_ruimte_geg,
(SELECT rro.res_ruimte_opstel_key,
rro.res_ruimte_opstel_default,
rr.res_discipline_key,
rr.res_ruimte_nr,
ro.res_opstelling_omschrijving
FROM res_ruimte_opstelling rro, res_ruimte rr, res_opstelling ro
WHERE rro.res_ruimte_key = rr.res_ruimte_key
AND rro.res_opstelling_key = ro.res_opstelling_key)
res_ruimte_geg,
(SELECT *
FROM res_v_aanwezigkenmerkwaarde kr, res_kenmerk k
WHERE kr.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 1) kr -- Opmerking Catering
WHERE x.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_contact_key = pa.prs_perslid_key
AND rrr.res_rsv_ruimte_host_key = pg.prs_perslid_key
AND rrr.alg_ruimte_key = alg_ruimte_geg.alg_ruimte_key(+)
AND rrr.res_ruimte_opstel_key = res_ruimte_geg.res_ruimte_opstel_key(+)
AND rrr.res_rsv_ruimte_key = kr.res_rsv_ruimte_key(+)
AND res_ruimte_geg.res_discipline_key IN (22, 26, 27, 121)
UNION ALL
SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yymmddhh24miss')
|| TO_CHAR (rrr.res_rsv_ruimte_tot, 'yymmddhh24miss')
|| TO_CHAR (rrr.res_rsv_ruimte_key)
|| x.res_type,
'Restaurantlijst',
COALESCE (alg_ruimte_geg.alg_ruimte_aanduiding, res_ruimte_geg.res_ruimte_nr),
x.res_reservering_van,
x.res_reservering_van,
x.res_reservering_tot,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
TO_CHAR (rrr.res_rsv_ruimte_bezoekers),
COALESCE (x.res_voorziening, res_ruimte_geg.res_opstelling_omschrijving),
kr.res_kenmerkreservering_waarde,
rrr.res_rsv_ruimte_omschrijving,
pa.prs_perslid_naam_full,
pg.prs_perslid_naam_full,
rrr.res_rsv_ruimte_key
FROM (SELECT '1R' res_type,
rrr.res_rsv_ruimte_key,
rrr.res_rsv_ruimte_van res_reservering_van,
rrr.res_rsv_ruimte_tot res_reservering_tot,
--TO_NUMBER (NULL) aantal,
NULL res_voorziening,
NULL res_discipline_key,
rrr.res_status_bo_key
FROM res_v_aanwezigrsv_ruimte rrr
WHERE rrr.alg_ruimte_key IS NULL
AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)
AND EXISTS
(SELECT 1
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
WHERE rra.res_artikel_key = ra.res_artikel_key
AND ra.res_artikel_key IN
(1,
2,
3,
4,
6,
12,
13,
14,
15,
16,
24,
28,
29,
30,
31,
32,
44,
61,
123,
142,
244,
261,
263,
264,
265,
268,
269,
281,
282,
284)
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
UNION ALL
SELECT '3C' res_type,
rra.res_rsv_ruimte_key,
rra.res_rsv_artikel_levering res_reservering_van,
NULL res_reservering_tot,
--rra.res_rsv_artikel_aantal aantal,
TO_CHAR (rra.res_rsv_artikel_aantal)
|| ' * '
|| LTRIM (ra.res_artikel_omschrijving)
|| ' ('
|| COALESCE (ra.res_artikel_eenheid, '')
|| ')'
res_voorziening,
ra.res_discipline_key,
rra.res_status_bo_key
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
WHERE rra.res_artikel_key = ra.res_artikel_key
AND ra.res_artikel_key IN
(1,
2,
3,
4,
6,
12,
13,
14,
15,
16,
24,
28,
29,
30,
31,
32,
44,
61,
123,
142,
244,
261,
263,
264,
265,
268,
269,
281,
282,
284)
AND rra.res_rsv_artikel_levering BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)) x,
res_v_aanwezigrsv_ruimte rrr,
prs_v_perslid_fullnames_all pa,
prs_v_perslid_fullnames_all pg,
alg_v_ruimte_gegevens_all alg_ruimte_geg,
(SELECT rro.res_ruimte_opstel_key,
rro.res_ruimte_opstel_default,
rr.res_discipline_key,
rr.res_ruimte_nr,
ro.res_opstelling_omschrijving
FROM res_ruimte_opstelling rro, res_ruimte rr, res_opstelling ro
WHERE rro.res_ruimte_key = rr.res_ruimte_key
AND rro.res_opstelling_key = ro.res_opstelling_key)
res_ruimte_geg,
(SELECT *
FROM res_v_aanwezigkenmerkwaarde kr, res_kenmerk K
WHERE kr.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 1) kr -- Opmerking Catering
WHERE x.res_status_bo_key = 2 -- Geregistreerd
AND x.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_contact_key = pa.prs_perslid_key
AND rrr.res_rsv_ruimte_host_key = pg.prs_perslid_key
AND rrr.alg_ruimte_key = alg_ruimte_geg.alg_ruimte_key(+)
AND rrr.res_ruimte_opstel_key = res_ruimte_geg.res_ruimte_opstel_key(+)
AND rrr.res_rsv_ruimte_key = kr.res_rsv_ruimte_key(+);
-- VLKC#52091: Locatie toegevoegd en uitbreiding reserveringstypen/catalogi.
-- VLKC#72707: Voortaan ook incl. roomservice-reserveringen (bezorgservice).
-- VLKC#73156: Locatie tonen voor Roomservice-reserveringen (bezorgservice).
CREATE OR REPLACE VIEW vlkc_v_rap_res_huismeesters
(
hide_f_volgorde,
ruimte,
locatie,
datum,
van,
tot,
resnr,
pers,
voorzieningen_opstelling,
opmerking_huismeester,
omschrijving,
aanvrager,
gastheer,
res_rsv_ruimte_key
)
AS
SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yymmddhh24miss') || TO_CHAR (rrr.res_rsv_ruimte_tot, 'yymmddhh24miss') || TO_CHAR (rrr.res_rsv_ruimte_key) || x.res_type,
COALESCE (rr.res_ruimte_nr, aog.alg_plaatsaanduiding),
l.alg_locatie_code locatie,
x.res_reservering_van,
x.res_reservering_van,
x.res_reservering_tot,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
TO_CHAR (rrr.res_rsv_ruimte_bezoekers),
COALESCE (x.res_voorziening, ro.res_opstelling_omschrijving),
kr.res_kenmerkreservering_waarde,
rrr.res_rsv_ruimte_omschrijving,
pa.prs_perslid_naam_full,
pg.prs_perslid_naam_full,
rrr.res_rsv_ruimte_key
FROM (SELECT '1R' res_type,
rrr.res_rsv_ruimte_key,
rrr.res_rsv_ruimte_van res_reservering_van,
rrr.res_rsv_ruimte_tot res_reservering_tot,
TO_NUMBER (NULL) aantal,
DECODE (rrr.alg_ruimte_key, NULL, NULL, a.res_activiteit_omschrijving) res_voorziening,
NULL res_discipline_key,
rrr.res_status_bo_key
FROM res_v_aanwezigrsv_ruimte rrr, res_activiteit a
WHERE 1 = 1 --rrr.alg_ruimte_key IS NULL -- Alleen ruimten (geen roomservice)!
AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)
AND rrr.res_activiteit_key = a.res_activiteit_key
AND (EXISTS
(SELECT 1
FROM res_v_aanwezigkenmerkwaarde kr, res_kenmerk k
WHERE kr.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 2 -- Opmerking Huismeester
AND kr.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
OR EXISTS
(SELECT 1
FROM res_v_aanwezigrsv_deel rrd, res_deel rd
WHERE rrd.res_deel_key = rd.res_deel_key
AND rd.res_discipline_key IN (49, 50, 51, 212, 361, 362)
AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
OR EXISTS
(SELECT 1
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
WHERE rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key IN (46, 81)
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
OR EXISTS
(SELECT 1
FROM res_ruimte_opstelling rro, res_ruimte rr
WHERE rro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key IN (121)
AND rro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key))
UNION ALL
SELECT '2V' res_type,
rrd.res_rsv_ruimte_key,
rrd.res_rsv_deel_van res_reservering_van,
rrd.res_rsv_deel_tot res_reservering_tot,
TO_NUMBER (NULL) aantal,
d.ins_deel_omschrijving || ' (' || COALESCE (rd.res_deel_eenheid, '') || ')' res_voorziening,
rd.res_discipline_key,
rrd.res_status_bo_key
FROM res_v_aanwezigrsv_deel rrd, res_deel rd, ins_deel d
WHERE rrd.res_rsv_deel_tot BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)
AND rrd.res_deel_key = rd.res_deel_key
AND rd.res_discipline_key IN (49, 50, 51, 212, 361, 362)
AND rd.res_ins_deel_key = d.ins_deel_key
UNION ALL
SELECT '3C' res_type,
rra.res_rsv_ruimte_key,
rra.res_rsv_artikel_levering res_reservering_van,
NULL res_reservering_tot,
rra.res_rsv_artikel_aantal aantal,
LTRIM (ra.res_artikel_omschrijving) || ' (' || COALESCE (ra.res_artikel_eenheid, '') || ')' res_voorziening,
ra.res_discipline_key,
rra.res_status_bo_key
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
WHERE rra.res_rsv_artikel_levering BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key IN (46, 81)) x,
res_v_aanwezigrsv_ruimte rrr,
prs_v_perslid_fullnames_all pa,
prs_v_perslid_fullnames_all pg,
res_ruimte_opstelling rro,
res_ruimte rr,
res_opstelling ro,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_key) rar1,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NOT NULL
GROUP BY res_ruimte_key) rar2,
alg_v_allonrgoed_gegevens aog,
alg_locatie l,
(SELECT *
FROM res_v_aanwezigkenmerkwaarde kr, res_kenmerk k
WHERE kr.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 2) kr -- Opmerking Huismeester
WHERE COALESCE (x.res_status_bo_key, 2) = 2 -- Geregistreerd (of roomservice)
AND x.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_status_fo_key != 4 -- Niet tonen 4=Vervallen reserveringen
AND rrr.res_rsv_ruimte_contact_key = pa.prs_perslid_key
AND rrr.res_rsv_ruimte_host_key = pg.prs_perslid_key
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)
AND rro.res_ruimte_key = rr.res_ruimte_key(+)
AND rro.res_opstelling_key = ro.res_opstelling_key(+)
AND rro.res_ruimte_key = rar1.res_ruimte_key(+)
AND rro.res_ruimte_key = rar2.res_ruimte_key(+)
AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = aog.alg_ruimte_key
AND aog.alg_locatie_key = l.alg_locatie_key
AND rrr.res_rsv_ruimte_key = kr.res_rsv_ruimte_key(+);
-- Zonder R van BROC (in de R geeft 'vlkc_v_rap_cat_doorbelasting' inzicht)!
-- VLKC#41246: Per 2018 facturen op variabele contracten (= CV) verwerken.
-- VLKC#55659: Om contracten te kunnen sluiten, voortaan Akkoord-facturen op
-- alle contracten (CV+CF) verwerken.
-- NB. Via een eenmalig script is dat voor alle Akkoord-facturen
-- t/m 2018 gedaan (<28>n bewust zonder tracking)!
/* Formatted on 20-1-2017 10:15:45 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW vlkc_v_coda_actual
(
bedrijf_key,
factuur_key,
bes_opdr_key,
mld_opdr_key,
cnt_key,
kostensoort, -- Van groep!
doorbelasten,
kostenplaats, -- Kostenplaats bij verplichting
kosten
)
AS -- Op basis van B-facturen!
SELECT bo.prs_bedrijf_key bedrijf_key,
f.fin_factuur_key factuur_key,
f.bes_bestelopdr_key bes_opdr_key,
NULL mld_opdr_key,
NULL cnt_key,
x.prs_kostensoortgrp_altcode kostensoort,
COALESCE (x.prs_kostensoort_doorbelasten, 0) doorbelasten,
x.prs_kostenplaats_nr,
SUM(DECODE (x.prs_kostensoort_btw,
1, f.fin_factuur_totaal + f.fin_factuur_totaal_btw,
f.fin_factuur_totaal))
kosten
FROM fin_factuur f,
bes_bestelopdr bo,
(SELECT DISTINCT boi.bes_bestelopdr_key,
ksg.prs_kostensoortgrp_altcode,
ks.prs_kostensoort_doorbelasten,
ks.prs_kostensoort_btw,
kp.prs_kostenplaats_nr
FROM bes_bestelopdr_item boi,
bes_bestelling_item bi,
bes_srtdeel sd,
bes_srtgroep sg,
ins_tab_discipline td,
prs_kostensoort ks,
prs_kostensoortgrp ksg,
bes_bestelling b,
prs_kostenplaats kp
WHERE boi.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 = td.ins_discipline_key
AND td.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+)
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND b.prs_kostenplaats_key = kp.prs_kostenplaats_key) x
WHERE f.fin_factuur_verwijder IS NULL AND f.fin_factuur_statuses_key = 6 -- Akkoord
AND fac.gettrackingdate ('FINFOK', f.fin_factuur_key) < TRUNC (SYSDATE)
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND bo.bes_bestelopdr_key = x.bes_bestelopdr_key
GROUP BY bo.prs_bedrijf_key,
f.fin_factuur_key,
f.bes_bestelopdr_key,
NULL,
NULL,
x.prs_kostensoortgrp_altcode,
COALESCE (x.prs_kostensoort_doorbelasten, 0),
x.prs_kostenplaats_nr
UNION ALL -- Op basis van O-facturen!
SELECT b.prs_bedrijf_key bedrijf_key,
f.fin_factuur_key factuur_key,
NULL bes_opdr_key,
f.mld_opdr_key mld_opdr_key,
NULL cnt_key,
COALESCE (ksgm.prs_kostensoortgrp_altcode, ksgv.prs_kostensoortgrp_altcode, NULL)
kostensoort,
COALESCE (ksm.prs_kostensoort_doorbelasten, ksv.prs_kostensoort_doorbelasten, 0)
doorbelasten,
kp.prs_kostenplaats_nr,
SUM(DECODE (
ksm.prs_kostensoort_doorbelasten,
1,
DECODE (ksm.prs_kostensoort_btw,
1, f.fin_factuur_totaal + f.fin_factuur_totaal_btw,
f.fin_factuur_totaal),
DECODE (ksv.prs_kostensoort_btw,
1, f.fin_factuur_totaal + f.fin_factuur_totaal_btw,
f.fin_factuur_totaal)))
kosten
FROM fin_factuur f,
mld_opdr o,
mld_melding m,
mld_stdmelding sm,
ins_tab_discipline td,
prs_kostensoort ksm,
prs_kostensoortgrp ksgm,
prs_kostensoort ksv,
prs_kostensoortgrp ksgv,
prs_kostenplaats kp,
prs_bedrijf b
WHERE f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key = 6 -- Akkoord
AND fac.gettrackingdate ('FINFOK', f.fin_factuur_key) < TRUNC (SYSDATE)
AND f.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
AND ksm.prs_kostensoortgrp_key = ksgm.prs_kostensoortgrp_key(+)
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND td.ins_srtdiscipline_key NOT IN (41, 42, 43, 44, 45) -- BE-vakgroeptypen
AND td.prs_kostensoort_key = ksv.prs_kostensoort_key(+)
AND ksv.prs_kostensoortgrp_key = ksgv.prs_kostensoortgrp_key(+)
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
GROUP BY b.prs_bedrijf_key,
f.fin_factuur_key,
NULL,
f.mld_opdr_key,
NULL,
COALESCE (ksgm.prs_kostensoortgrp_altcode, ksgv.prs_kostensoortgrp_altcode, NULL),
COALESCE (ksm.prs_kostensoort_doorbelasten, ksv.prs_kostensoort_doorbelasten, 0),
kp.prs_kostenplaats_nr
UNION ALL -- Op basis van C-facturen op alle contracten (CV+CF)!
SELECT c.cnt_prs_bedrijf_key bedrijf_key,
f.fin_factuur_key factuur_key,
NULL bes_opdr_key,
NULL mld_opdr_key,
f.cnt_contract_key cnt_key,
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL)
kostensoort,
COALESCE (ksc.prs_kostensoort_doorbelasten, ksd.prs_kostensoort_doorbelasten, 0)
doorbelasten,
kp.prs_kostenplaats_nr,
SUM(DECODE (
ksc.prs_kostensoort_doorbelasten,
1,
DECODE (ksc.prs_kostensoort_btw,
1, f.fin_factuur_totaal + f.fin_factuur_totaal_btw,
f.fin_factuur_totaal),
DECODE (ksd.prs_kostensoort_btw,
1, f.fin_factuur_totaal + f.fin_factuur_totaal_btw,
f.fin_factuur_totaal)))
kosten
FROM fin_factuur f,
cnt_v_aanwezigcontract c,
prs_kostensoort ksc,
prs_kostensoortgrp ksgc,
ins_tab_discipline td,
prs_kostensoort ksd,
prs_kostensoortgrp ksgd,
prs_kostenplaats kp
WHERE f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key = 6 -- Akkoord
AND fac.gettrackingdate ('FINFOK', f.fin_factuur_key) > TO_DATE ('01012018', 'ddmmyyyy')
AND f.cnt_contract_key = c.cnt_contract_key
AND c.prs_kostensoort_key = ksc.prs_kostensoort_key(+)
AND ksc.prs_kostensoortgrp_key = ksgc.prs_kostensoortgrp_key(+)
AND c.ins_discipline_key = td.ins_discipline_key
AND (td.ins_discipline_omschrijving LIKE 'CV%' OR td.ins_discipline_omschrijving LIKE 'CF%')
AND td.prs_kostensoort_key = ksd.prs_kostensoort_key(+)
AND ksd.prs_kostensoortgrp_key = ksgd.prs_kostensoortgrp_key(+)
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key
GROUP BY c.cnt_prs_bedrijf_key,
f.fin_factuur_key,
NULL,
NULL,
f.cnt_contract_key,
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL),
COALESCE (ksc.prs_kostensoort_doorbelasten, ksd.prs_kostensoort_doorbelasten, 0),
kp.prs_kostenplaats_nr
UNION ALL -- Op basis van C-termijnen op vaste contracten (= CF)!
SELECT c.cnt_prs_bedrijf_key bedrijf_key,
NULL factuur_key,
NULL bes_opdr_key,
NULL mld_opdr_key,
c.cnt_contract_key cnt_key,
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL)
kostensoort,
COALESCE (ksc.prs_kostensoort_doorbelasten, ksd.prs_kostensoort_doorbelasten, 0)
doorbelasten,
kp.prs_kostenplaats_nr,
c.cnt_contract_termijnkosten kosten
FROM cnt_v_aanwezigcontract c,
prs_kostensoort ksc,
prs_kostensoortgrp ksgc,
ins_tab_discipline td,
prs_kostensoort ksd,
prs_kostensoortgrp ksgd,
prs_kostenplaats kp
WHERE TRUNC (c.cnt_contract_looptijd_van) < TRUNC (SYSDATE, 'mm') - 1
AND c.cnt_contract_looptijd_tot >= TRUNC (SYSDATE, 'mm') - 1
--AND c.cnt_contract_status = 0 -- NIET Gesloten
--AND c.cnt_contract_kosten > 0
AND c.cnt_contract_termijnkosten > 0
AND c.prs_kostensoort_key = ksc.prs_kostensoort_key(+)
AND ksc.prs_kostensoortgrp_key = ksgc.prs_kostensoortgrp_key(+)
AND c.ins_discipline_key = td.ins_discipline_key
AND td.ins_discipline_omschrijving LIKE 'CF%'
AND td.prs_kostensoort_key = ksd.prs_kostensoort_key(+)
AND ksd.prs_kostensoortgrp_key = ksgd.prs_kostensoortgrp_key(+)
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key;
/* Formatted on 20-1-2017 12:42:24 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE vlkc_select_coda (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
-- 1. Alle goedgekeurde facturen AV-en.
-- 2. Termijn/maandbedrag van lopende vaste contracten (= CF) bevriezen in
-- Eigen tabel met key=81.
--[3. Achterliggende opdrachten AV-en.]
-- Cursor loopt over een tijdelijke tabel met daarin opgebouwd alle regels
-- van de (te bevriezen) verantwoording van kosten gebaseerd op B-facturen,
-- O-facturen, C-facturen (CV+CF) en C-termijnen.
CURSOR c1
IS
SELECT '[' || TO_CHAR (v.bedrijf_key) || '|' || TO_CHAR (v.factuur_key) || '|' || TO_CHAR (COALESCE (v.bes_opdr_key, v.mld_opdr_key, v.cnt_key)) || '] '
aanduiding,
v.factuur_key,
v.bes_opdr_key,
v.mld_opdr_key,
v.cnt_key,
c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)) cnt_nr,
cp.plaats,
v.kosten
FROM vlkc_v_coda_actual v,
cnt_contract c,
( SELECT cnt_contract_key, COUNT ( * ) aant, MIN (pa.alg_plaatsaanduiding) plaats
FROM cnt_contract_plaats cp, alg_v_plaatsaanduiding_all pa
WHERE cp.cnt_alg_plaats_key = pa.alg_onroerendgoed_keys
AND cp.cnt_alg_plaats_code = pa.alg_onroerendgoed_type
GROUP BY cnt_contract_key) cp
WHERE v.cnt_key = c.cnt_contract_key(+)
AND c.cnt_contract_key = cp.cnt_contract_key(+)
ORDER BY 2, 4;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200) := '';
v_holiday NUMBER;
v_line_count NUMBER;
v_amount_sum NUMBER (10, 2);
BEGIN
v_line_count := 0;
v_amount_sum := 0;
SELECT COUNT ( * )
INTO v_holiday
FROM mld_vrije_dagen
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1);
-- LET OP: CODA-export draait dagelijks na middernacht (begin van dag) en
-- de bedragen t/m *NU* worden maandelijks alleen in de nacht na 2e werkdag
-- van de maand doorgezet (= bevroren tbv. rapporten).
-- IF nacht na 2e werkdag van de maand (<28>n geen weekend <20>n geen vrije dag)!
-- count_work_days (d1,d2) bepaalt het #werkdagen van d1 tot d2 (als d1=d2,
-- dan return 0); daarom bepalen tov. laatste dag van vorige maand!
IF FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 2
AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
AND v_holiday = 0
THEN
FOR rec IN c1
LOOP
BEGIN
v_aanduiding := rec.aanduiding;
IF rec.bes_opdr_key IS NOT NULL -- B-facturen
THEN
v_errormsg := 'Fout verwerken B-factuur';
UPDATE fin_factuur f
SET fin_factuur_statuses_key = 7 -- AV
WHERE f.fin_factuur_key = rec.factuur_key;
fac.trackaction ('FINVER',
rec.factuur_key,
NULL, -- Dus _FACILITOR!
NULL,
NULL);
ELSIF rec.mld_opdr_key IS NOT NULL -- O-facturen
THEN
v_errormsg := 'Fout verwerken O-factuur';
UPDATE fin_factuur f
SET fin_factuur_statuses_key = 7 -- AV
WHERE f.fin_factuur_key = rec.factuur_key;
fac.trackaction ('FINVER',
rec.factuur_key,
NULL, -- Dus _FACILITOR!
NULL,
NULL);
ELSE -- C-facturen (CV+CF) <20>f C-termijnen (CF)!
IF rec.factuur_key IS NOT NULL -- C-factuur
THEN
v_errormsg := 'Fout verwerken C-factuur';
UPDATE fin_factuur f
SET fin_factuur_statuses_key = 7 -- AV
WHERE f.fin_factuur_key = rec.factuur_key;
fac.trackaction ('FINVER',
rec.factuur_key,
NULL, -- Dus _FACILITOR!
NULL,
NULL);
ELSE -- C-termijn
v_errormsg := 'Fout verwerken C-termijn';
INSERT INTO fac_usrdata (fac_usrtab_key,
fac_usrdata_code,
fac_usrdata_omschr,
fac_usrdata_aanmaak,
fac_usrdata_vervaldatum,
fac_usrdata_prijs)
VALUES (81, -- VasteKostenMnd
TO_CHAR (ADD_MONTHS (SYSDATE, -1), 'yyyy-mm') || '/' || TO_CHAR (rec.cnt_key),
TO_CHAR (rec.cnt_nr) || '/' || TO_CHAR (rec.plaats),
SYSDATE,
NULL,
rec.kosten);
END IF;
END IF;
COMMIT;
v_line_count := v_line_count + 1;
v_amount_sum := v_amount_sum + rec.kosten;
END;
END LOOP;
fac.writelog (p_applname, 'S', 'CODA-export/#regels: ' || TO_CHAR (v_line_count), TO_CHAR (v_amount_sum));
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.writelog (p_applname, 'E', v_aanduiding || v_errormsg, 'Proces CODA-export afgebroken!');
COMMIT;
END;
/
-- VLKC#89584: CODA NL-rapportages!
CREATE OR REPLACE VIEW vlkc_v_rap_coda_ordexp
(
fclt_f_periode,
kostensoort, -- 5 cijfers
kostenplaats, -- 4 cijfers
valuta, -- element3
bron, -- element4
bedrag_debet, -- incl. BTW en niet samen met bedrag_credit op <20><>n regel
bedrag_credit, -- incl. BTW en niet samen met bedrag_debet op <20><>n regel
omschrijving, -- max. 29 posities
verplichtingnummer,
leverancier,
leveranciersnummer,
factuurnummer,
fclt_f_vlkc,
fclt_f_opdrachttype,
fclt_f_investering,
melder, -- of besteller
melder_pnr, -- of besteller
melder_kpn, -- of besteller
locatie
)
AS
WITH lopendeperiode AS (SELECT COALESCE (MAX (TO_CHAR (ADD_MONTHS (fac.safe_to_date (SUBSTR (fac_usrdata_code, 1, 7), 'yyyy-mm'), 1), 'yyyy-mm')), '2017-01') maand
FROM fac_usrdata
WHERE fac_usrtab_key = 81)
SELECT DECODE (f.fin_factuur_statuses_key,
7, TO_CHAR (fac.gettrackingdate ('FINVER', f.fin_factuur_key) - 10, 'yyyy-mm'),
lp.maand || '*')
periode,
x.prs_kostensoortgrp_altcode kostensoort,
x.prs_kostenplaats_nr kostenplaats,
'EUR' element3,
DECODE (x.prs_kostenplaats_nr, '2216', 'Variabel', 'Eindgebruiker') element4,
DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
-1, TO_NUMBER (NULL),
(f.fin_factuur_totaal + f.fin_factuur_totaal_btw))
bedrag_debet,
DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
-1, -1 * (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
TO_NUMBER (NULL))
bedrag_credit,
'B-' || x.ins_discipline_omschrijving omschrijving,
'B' || x.bes_bestelopdr_id verplichtingnummer,
x.prs_bedrijf_naam leverancier,
x.prs_leverancier_nr leveranciersnummer,
f.fin_factuur_nr factuurnummer,
DECODE (SUBSTR (x.prs_kostenplaats_nr, 1, 1), '1', 'KC', 'VL') vlkc,
'Bestelopdracht' opdrachttype, -- Altijd 'Bestelopdracht'?
DECODE (x.bes_kenmerkbestell_waarde, '1', 'Ja', 'Nee') investering,
x.besteller,
x.besteller_pnr,
x.besteller_kpn,
x.alg_locatie_code locatie -- Soms dummy (bv. Fleurop)?
FROM lopendeperiode lp,
fin_factuur f,
(SELECT DISTINCT bo.bes_bestelopdr_key,
bo.bes_bestelopdr_id,
ksg.prs_kostensoortgrp_altcode,
kp.prs_kostenplaats_nr,
td.ins_discipline_omschrijving,
lev.prs_bedrijf_naam,
lev.prs_leverancier_nr,
bo.bes_bestelopdr_leverdatum,
inv.bes_kenmerkbestell_waarde,
bpf.prs_perslid_naam_full besteller,
bp.prs_perslid_nr besteller_pnr,
bkp.prs_kostenplaats_nr besteller_kpn,
l.alg_locatie_code
FROM bes_bestelopdr bo,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
bes_srtdeel sd,
bes_srtgroep sg,
ins_tab_discipline td,
prs_kostensoort ks,
prs_kostensoortgrp ksg,
bes_bestelling b,
prs_kostenplaats kp,
prs_bedrijf lev,
(SELECT *
FROM bes_kenmerkbestell kb
WHERE EXISTS
(SELECT 1
FROM bes_kenmerk
WHERE bes_kenmerk_key = kb.bes_kenmerk_key
AND bes_srtkenmerk_key = 21)) inv, -- Investeringsopdracht
prs_perslid bp,
prs_v_perslid_fullnames_all bpf,
prs_afdeling ba,
prs_kostenplaats bkp,
mld_adres a,
alg_locatie l
WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND boi.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 = td.ins_discipline_key
AND td.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+)
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND b.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND bo.prs_bedrijf_key = lev.prs_bedrijf_key
AND b.bes_bestelling_key = inv.bes_bestelling_key(+)
AND b.prs_perslid_key = bp.prs_perslid_key
AND bp.prs_perslid_key = bpf.prs_perslid_key
AND bp.prs_afdeling_key = ba.prs_afdeling_key
AND ba.prs_kostenplaats_key = bkp.prs_kostenplaats_key(+)
AND bo.mld_adres_key_lev = a.mld_adres_key
AND a.alg_locatie_key = l.alg_locatie_key(+)) x
WHERE f.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
AND f.bes_bestelopdr_key = x.bes_bestelopdr_key
UNION ALL -- Werk/Offerteopdrachten
SELECT DECODE (f.fin_factuur_statuses_key,
7, TO_CHAR (fac.gettrackingdate ('FINVER', f.fin_factuur_key) - 10, 'yyyy-mm'),
lp.maand || '*')
periode,
COALESCE (ksgo.prs_kostensoortgrp_altcode, ksgm.prs_kostensoortgrp_altcode, ksgv.prs_kostensoortgrp_altcode, NULL) kostensoort,
kp.prs_kostenplaats_nr kostenplaats,
'EUR' element3,
DECODE (kp.prs_kostenplaats_nr, '2216', 'Variabel', 'Eindgebruiker') element4,
DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
-1, TO_NUMBER (NULL),
(f.fin_factuur_totaal + f.fin_factuur_totaal_btw))
bedrag_debet,
DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
-1, -1 * (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
TO_NUMBER (NULL))
bedrag_credit,
--COALESCE (ksgm.prs_kostensoortgrp_oms, ksgv.prs_kostensoortgrp_oms, 'ONGEDEFINEERD')
sd.ins_srtdiscipline_prefix || '-' || sm.mld_stdmelding_omschrijving omschrijving,
sd.ins_srtdiscipline_prefix || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) verplichtingnummer,
lev.prs_bedrijf_naam leverancier,
lev.prs_leverancier_nr leveranciersnummer,
f.fin_factuur_nr factuurnummer,
DECODE (vlkc.mld_kenmerkopdr_waarde, '41', 'VL', '42', 'KC', NULL) vlkc,
DECODE (o.mld_typeopdr_key, 5, 'Werkopdracht', 283, 'Offerteopdracht', 'Jaaropdracht') opdrachttype,
DECODE (inv.mld_kenmerkopdr_waarde, '1', 'Ja', 'Nee') investering,
mpf.prs_perslid_naam_full melder,
mp.prs_perslid_nr melder_pnr,
mkp.prs_kostenplaats_nr melder_kpn,
l.alg_locatie_code locatie
FROM lopendeperiode lp,
fin_factuur f,
mld_opdr o,
mld_melding m,
mld_stdmelding sm,
prs_kostensoort ksm,
prs_kostensoortgrp ksgm,
prs_kostensoort kso,
prs_kostensoortgrp ksgo,
ins_tab_discipline td,
prs_kostensoort ksv,
prs_kostensoortgrp ksgv,
ins_srtdiscipline sd,
prs_kostenplaats kp,
prs_bedrijf lev,
(SELECT *
FROM mld_v_aanwezigkenmerkopdr ko
WHERE EXISTS
(SELECT 1
FROM mld_kenmerk
WHERE mld_kenmerk_key = ko.mld_kenmerk_key
AND mld_srtkenmerk_key = 81)) vlkc, -- Factuur/offerte naar
(SELECT *
FROM mld_v_aanwezigkenmerkopdr ko
WHERE EXISTS
(SELECT 1
FROM mld_kenmerk
WHERE mld_kenmerk_key = ko.mld_kenmerk_key
AND mld_srtkenmerk_key = 181)) inv, -- Investeringsopdracht
prs_perslid mp,
prs_v_perslid_fullnames_all mpf,
prs_afdeling ma,
prs_kostenplaats mkp,
alg_locatie l
WHERE f.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
AND f.mld_opdr_key = o.mld_opdr_key
AND o.mld_typeopdr_key IN (5, 283, 2781) -- Werkopdracht/Offerteopdracht/Jaaropdracht
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
AND ksm.prs_kostensoortgrp_key = ksgm.prs_kostensoortgrp_key(+)
AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+)
AND kso.prs_kostensoortgrp_key = ksgo.prs_kostensoortgrp_key(+)
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND td.prs_kostensoort_key = ksv.prs_kostensoort_key(+)
AND ksv.prs_kostensoortgrp_key = ksgv.prs_kostensoortgrp_key(+)
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key NOT IN (41, 42, 43, 44, 45) -- BE-vakgroeptypen
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND o.mld_uitvoerende_keys = lev.prs_bedrijf_key
AND o.mld_opdr_key = vlkc.mld_opdr_key(+)
AND o.mld_opdr_key = inv.mld_opdr_key(+)
AND m.prs_perslid_key = mp.prs_perslid_key
AND mp.prs_perslid_key = mpf.prs_perslid_key
AND mp.prs_afdeling_key = ma.prs_afdeling_key
AND ma.prs_kostenplaats_key = mkp.prs_kostenplaats_key(+)
AND m.mld_alg_locatie_key = l.alg_locatie_key(+);
CREATE OR REPLACE VIEW vlkc_v_rap_coda_cntexp
(
fclt_f_periode,
kostensoort, -- 5 cijfers
kostenplaats, -- 4 cijfers
valuta, -- element3
bron, -- element4
bedrag_debet, -- incl. BTW en niet samen met bedrag_credit op <20><>n regel
bedrag_credit, -- incl. BTW en niet samen met bedrag_debet op <20><>n regel
omschrijving, -- max. 29 posities
--verplichtingnummer,
contractnummer,
leverancier,
leveranciersnummer,
factuurnummer,
fclt_f_vlkc,
locatie
)
AS
WITH lopendeperiode AS (SELECT COALESCE (MAX (TO_CHAR (ADD_MONTHS (fac.safe_to_date (SUBSTR (fac_usrdata_code, 1, 7), 'yyyy-mm'), 1), 'yyyy-mm')), '2017-01') maand
FROM fac_usrdata
WHERE fac_usrtab_key = 81)
SELECT SUBSTR (ud.fac_usrdata_code, 1, 7) periode, -- yyyy-mm
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL) kostensoort,
kp.prs_kostenplaats_nr kostenplaats,
'EUR' valuta,
'Vast' element4,
ud.fac_usrdata_prijs bedrag_debet,
TO_NUMBER (NULL) bedrag_credit,
td.ins_discipline_omschrijving omschrijving,
--'C' || SUBSTR (ud.fac_usrdata_omschr, 1, INSTR (ud.fac_usrdata_omschr, '/') - 1) verplichtingnummer,
--DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', 'CV', 'C') || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)) contractnummer,
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', 'CV', 'C') || SUBSTR (ud.fac_usrdata_omschr, 1, INSTR (ud.fac_usrdata_omschr, '/') - 1) contractnummer,
lev.prs_bedrijf_naam leverancier,
lev.prs_leverancier_nr leveranciersnummer,
'N.v.t.' factuurnummer,
DECODE (ab.prs_afdeling_key1, 82, 'VL', 81, 'KC', NULL) vlkc,
LISTAGG (cp.alg_locatie_code, ',') WITHIN GROUP (ORDER BY cp.alg_locatie_code) locatie
FROM fac_v_aanwezigusrdata ud, -- VLKC#65233: Geen verwijderde entries!
cnt_contract c, -- Alles, want fac_usrdata "rules"!
prs_kostensoort ksc,
prs_kostensoortgrp ksgc,
ins_tab_discipline td,
prs_kostensoort ksd,
prs_kostensoortgrp ksgd,
prs_kostenplaats kp,
prs_bedrijf lev,
prs_v_afdeling_boom ab,
(SELECT cp.cnt_contract_key, l.alg_locatie_code
FROM cnt_v_aanwezigcontract_plaats cp, alg_gebouw g, alg_locatie l
WHERE cp.cnt_alg_plaats_code = 'G'
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
UNION
SELECT cp.cnt_contract_key, l.alg_locatie_code
FROM cnt_v_aanwezigcontract_plaats cp, alg_locatie l
WHERE cp.cnt_alg_plaats_code = 'L'
AND cp.cnt_alg_plaats_key = l.alg_locatie_key) cp
WHERE ud.fac_usrtab_key = 81 -- VasteKostenMnd
AND SUBSTR (ud.fac_usrdata_code, INSTR (ud.fac_usrdata_code, '/') + 1) = TO_CHAR (c.cnt_contract_key)
AND c.prs_kostensoort_key = ksc.prs_kostensoort_key(+)
AND ksc.prs_kostensoortgrp_key = ksgc.prs_kostensoortgrp_key(+)
AND c.ins_discipline_key = td.ins_discipline_key
AND td.prs_kostensoort_key = ksd.prs_kostensoort_key(+)
AND ksd.prs_kostensoortgrp_key = ksgd.prs_kostensoortgrp_key(+)
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND c.cnt_prs_bedrijf_key = lev.prs_bedrijf_key
AND c.prs_afdeling_key_eig = ab.prs_afdeling_key(+)
AND c.cnt_contract_key = cp.cnt_contract_key(+)
GROUP BY SUBSTR (ud.fac_usrdata_code, 1, 7), -- yyyy-mm
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL),
kp.prs_kostenplaats_nr,
'EUR',
'Vast',
ud.fac_usrdata_prijs,
TO_NUMBER (NULL),
td.ins_discipline_omschrijving,
--'C' || SUBSTR (ud.fac_usrdata_omschr, 1, INSTR (ud.fac_usrdata_omschr, '/') - 1),
--DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', 'CV', 'C') || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)),
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', 'CV', 'C') || SUBSTR (ud.fac_usrdata_omschr, 1, INSTR (ud.fac_usrdata_omschr, '/') - 1),
lev.prs_bedrijf_naam,
lev.prs_leverancier_nr,
'N.v.t.',
DECODE (ab.prs_afdeling_key1, 82, 'VL', 81, 'KC', NULL)
UNION ALL
SELECT lp.maand || '*' periode,
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL) kostensoort,
kp.prs_kostenplaats_nr kostenplaats,
'EUR' valuta,
'Vast' element4,
c.cnt_contract_termijnkosten bedrag_debet,
TO_NUMBER (NULL) bedrag_credit,
td.ins_discipline_omschrijving omschrijving,
'C' || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)) verplichtingnummer,
lev.prs_bedrijf_naam leverancier,
lev.prs_leverancier_nr leveranciersnummer,
'N.v.t.' factuurnummer,
DECODE (ab.prs_afdeling_key1, 82, 'VL', 81, 'KC', NULL) vlkc,
LISTAGG (cp.alg_locatie_code, ',') WITHIN GROUP (ORDER BY cp.alg_locatie_code) locatie
FROM lopendeperiode lp,
cnt_v_aanwezigcontract c, -- Alleen aanwezige vaste contracten (= CF)!
prs_kostensoort ksc,
prs_kostensoortgrp ksgc,
ins_tab_discipline td,
prs_kostensoort ksd,
prs_kostensoortgrp ksgd,
prs_kostenplaats kp,
prs_bedrijf lev,
prs_v_afdeling_boom ab,
(SELECT cp.cnt_contract_key, l.alg_locatie_code
FROM cnt_v_aanwezigcontract_plaats cp, alg_gebouw g, alg_locatie l
WHERE cp.cnt_alg_plaats_code = 'G'
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
UNION
SELECT cp.cnt_contract_key, l.alg_locatie_code
FROM cnt_v_aanwezigcontract_plaats cp, alg_locatie l
WHERE cp.cnt_alg_plaats_code = 'L'
AND cp.cnt_alg_plaats_key = l.alg_locatie_key) cp
WHERE TRUNC (c.cnt_contract_looptijd_van) < LAST_DAY (TO_DATE (lp.maand || '-01', 'yyyy-mm-dd'))
AND c.cnt_contract_looptijd_tot >= LAST_DAY (TO_DATE (lp.maand || '-01', 'yyyy-mm-dd'))
AND c.prs_kostensoort_key = ksc.prs_kostensoort_key(+)
AND ksc.prs_kostensoortgrp_key = ksgc.prs_kostensoortgrp_key(+)
AND c.ins_discipline_key = td.ins_discipline_key
AND td.ins_discipline_omschrijving LIKE 'CF%' -- TODO: Of ook CV?
AND td.prs_kostensoort_key = ksd.prs_kostensoort_key(+)
AND ksd.prs_kostensoortgrp_key = ksgd.prs_kostensoortgrp_key(+)
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND c.cnt_prs_bedrijf_key = lev.prs_bedrijf_key
AND c.prs_afdeling_key_eig = ab.prs_afdeling_key(+)
AND c.cnt_contract_key = cp.cnt_contract_key(+)
GROUP BY lp.maand || '*',
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL),
kp.prs_kostenplaats_nr,
'EUR',
'Vast',
c.cnt_contract_termijnkosten,
TO_NUMBER (NULL),
td.ins_discipline_omschrijving,
'C' || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)),
lev.prs_leverancier_nr,
lev.prs_bedrijf_naam,
'N.v.t.',
DECODE (ab.prs_afdeling_key1, 82, 'VL', 81, 'KC', NULL)
UNION ALL
SELECT DECODE (f.fin_factuur_statuses_key,
7, TO_CHAR (fac.gettrackingdate ('FINVER', f.fin_factuur_key) - 10, 'yyyy-mm'),
lp.maand || '*')
periode,
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL) kostensoort,
kp.prs_kostenplaats_nr kostenplaats,
'EUR' valuta,
'Vast' element4,
DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
-1, TO_NUMBER (NULL),
(f.fin_factuur_totaal + f.fin_factuur_totaal_btw))
bedrag_debet,
DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
-1, -1 * (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
TO_NUMBER (NULL))
bedrag_credit,
td.ins_discipline_omschrijving omschrijving,
'CV' || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)) verplichtingnummer,
lev.prs_bedrijf_naam leverancier,
lev.prs_leverancier_nr leveranciersnummer,
f.fin_factuur_nr factuurnummer,
DECODE (ab.prs_afdeling_key1, 82, 'VL', 81, 'KC', NULL) vlkc,
LISTAGG (cp.alg_locatie_code, ',') WITHIN GROUP (ORDER BY cp.alg_locatie_code) locatie
FROM lopendeperiode lp,
fin_factuur f,
cnt_v_aanwezigcontract c, -- Alleen aanwezige (CV-)contracten!
prs_kostensoort ksc,
prs_kostensoortgrp ksgc,
ins_tab_discipline td,
prs_kostensoort ksd,
prs_kostensoortgrp ksgd,
prs_kostenplaats kp,
prs_bedrijf lev,
prs_v_afdeling_boom ab,
(SELECT cp.cnt_contract_key, l.alg_locatie_code
FROM cnt_v_aanwezigcontract_plaats cp, alg_gebouw g, alg_locatie l
WHERE cp.cnt_alg_plaats_code = 'G'
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
UNION
SELECT cp.cnt_contract_key, l.alg_locatie_code
FROM cnt_v_aanwezigcontract_plaats cp, alg_locatie l
WHERE cp.cnt_alg_plaats_code = 'L'
AND cp.cnt_alg_plaats_key = l.alg_locatie_key) cp
WHERE f.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
AND fac.gettrackingdate ('FINFOK', f.fin_factuur_key) > TO_DATE ('01012018', 'ddmmyyyy')
AND f.cnt_contract_key = c.cnt_contract_key
AND c.prs_kostensoort_key = ksc.prs_kostensoort_key(+)
AND ksc.prs_kostensoortgrp_key = ksgc.prs_kostensoortgrp_key(+)
AND c.ins_discipline_key = td.ins_discipline_key
AND td.ins_discipline_omschrijving LIKE 'CV%' -- Zou zo moeten zijn (nu nog tenminste)!
AND td.prs_kostensoort_key = ksd.prs_kostensoort_key(+)
AND ksd.prs_kostensoortgrp_key = ksgd.prs_kostensoortgrp_key(+)
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND c.cnt_prs_bedrijf_key = lev.prs_bedrijf_key
AND c.prs_afdeling_key_eig = ab.prs_afdeling_key(+)
AND c.cnt_contract_key = cp.cnt_contract_key(+)
GROUP BY DECODE (f.fin_factuur_statuses_key,
7, TO_CHAR (fac.gettrackingdate ('FINVER', f.fin_factuur_key) - 10, 'yyyy-mm'),
lp.maand || '*'),
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL),
kp.prs_kostenplaats_nr,
'EUR',
'Vast',
DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
-1, TO_NUMBER (NULL),
(f.fin_factuur_totaal + f.fin_factuur_totaal_btw)),
DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
-1, -1 * (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
TO_NUMBER (NULL)),
td.ins_discipline_omschrijving,
'CV' || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)),
lev.prs_leverancier_nr,
lev.prs_bedrijf_naam,
f.fin_factuur_nr,
DECODE (ab.prs_afdeling_key1, 82, 'VL', 81, 'KC', NULL);
CREATE OR REPLACE VIEW vlkc_v_rap_coda_ordrun
(
fclt_f_periode,
kostensoort, -- 5 cijfers
kostenplaats, -- 4 cijfers
valuta, -- element3
bron, -- element4
bedrag_debet, -- incl. BTW en niet samen met bedrag_credit op <20><>n regel
bedrag_credit, -- incl. BTW en niet samen met bedrag_debet op <20><>n regel
omschrijving, -- max. 29 posities
verplichtingnummer,
leverancier,
leveranciersnummer,
factuurnummer,
fclt_f_vlkc,
fclt_f_opdrachttype,
fclt_f_investering,
einddatum,
locatie
)
AS -- Bestelopdrachten
SELECT NULL periode,
x.prs_kostensoortgrp_altcode kostensoort,
x.prs_kostenplaats_nr kostenplaats,
'EUR' element3,
DECODE (x.prs_kostenplaats_nr, '2216', 'Variabel', 'Eindgebruiker') element4,
DECODE (
f_run.fin_factuur_key,
NULL, -- Geen ingevoerde facturen
DECODE (SIGN (COALESCE (x.kosten, 0)),
-1, TO_NUMBER (NULL),
COALESCE (x.kosten, 0)),
DECODE (
SIGN (f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw),
-1, TO_NUMBER (NULL),
(f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw)))
bedrag_debet,
DECODE (
f_run.fin_factuur_key,
NULL, -- Geen ingevoerde facturen
DECODE (SIGN (COALESCE (x.kosten, 0)),
-1, -1 * COALESCE (x.kosten, 0),
TO_NUMBER (NULL)),
DECODE (
SIGN (f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw),
-1, -1 * (f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw),
TO_NUMBER (NULL)))
bedrag_credit,
'B-' || x.ins_discipline_omschrijving omschrijving,
'B' || x.bes_bestelopdr_id verplichtingnummer,
x.prs_bedrijf_naam leverancier,
x.prs_leverancier_nr leveranciersnummer,
f_run.fin_factuur_nr factuurnummer,
DECODE (SUBSTR (x.prs_kostenplaats_nr, 1, 1), '1', 'KC', 'VL') vlkc,
'Bestelopdracht' opdrachttype, -- Altijd 'Bestelopdracht'?
DECODE (x.bes_kenmerkbestell_waarde, '1', 'Ja', 'Nee') investering,
x.bes_bestelopdr_datum einddatum, -- VLKC#57171: Opdrachtdatum!
x.alg_locatie_code locatie -- Soms dummy (bv. Fleurop)?
FROM ( SELECT bo.bes_bestelopdr_key,
bo.bes_bestelopdr_id,
ksg.prs_kostensoortgrp_altcode,
kp.prs_kostenplaats_nr,
td.ins_discipline_omschrijving,
lev.prs_bedrijf_naam,
lev.prs_leverancier_nr,
inv.bes_kenmerkbestell_waarde,
bo.bes_bestelopdr_datum,
l.alg_locatie_code,
SUM ((boi.bes_bestelopdr_item_aantal * boi.bes_bestelopdr_item_brutoprijs))
kosten
FROM bes_bestelopdr bo,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
bes_srtdeel sd,
bes_srtgroep sg,
ins_tab_discipline td,
prs_kostensoort ks,
prs_kostensoortgrp ksg,
bes_bestelling b,
prs_kostenplaats kp,
prs_bedrijf lev,
(SELECT *
FROM bes_kenmerkbestell kb
WHERE EXISTS
(SELECT 1
FROM bes_kenmerk
WHERE bes_kenmerk_key = kb.bes_kenmerk_key
AND bes_srtkenmerk_key = 21)) inv, -- Investeringsopdracht
mld_adres a,
alg_locatie l
WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND boi.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 = td.ins_discipline_key
AND td.ins_discipline_key != 721 -- VLKC#53739: Anders dan Relatiegeschenken!
AND td.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+)
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND b.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND bo.prs_bedrijf_key = lev.prs_bedrijf_key
AND b.bes_bestelling_key = inv.bes_bestelling_key(+)
AND bo.mld_adres_key_lev = a.mld_adres_key
AND a.alg_locatie_key = l.alg_locatie_key(+)
AND NOT EXISTS -- Geen Bestelopdrachten met een Reden "0-order" (bij de Bestelling)!
(SELECT 1
FROM bes_kenmerkbestell kb, bes_kenmerk k
WHERE kb.bes_kenmerkbestell_verwijder IS NULL
AND kb.bes_kenmerk_key = k.bes_kenmerk_key
AND k.bes_srtkenmerk_key = 141 -- Reden "0-order"
AND kb.bes_bestelling_key = b.bes_bestelling_key)
GROUP BY bo.bes_bestelopdr_key,
bo.bes_bestelopdr_id,
ksg.prs_kostensoortgrp_altcode,
kp.prs_kostenplaats_nr,
td.ins_discipline_omschrijving,
lev.prs_bedrijf_naam,
lev.prs_leverancier_nr,
inv.bes_kenmerkbestell_waarde,
bo.bes_bestelopdr_datum,
l.alg_locatie_code) x
LEFT JOIN ( SELECT bes_bestelopdr_key, COUNT ( * ) aantal
FROM fin_factuur
WHERE bes_bestelopdr_key IS NOT NULL AND fin_factuur_verwijder IS NULL
GROUP BY bes_bestelopdr_key) f_cnt
ON x.bes_bestelopdr_key = f_cnt.bes_bestelopdr_key
LEFT JOIN fin_factuur f_run
ON x.bes_bestelopdr_key = f_run.bes_bestelopdr_key AND f_run.fin_factuur_verwijder IS NULL
WHERE f_cnt.bes_bestelopdr_key IS NULL
OR COALESCE (f_run.fin_factuur_statuses_key, 2) = 2 -- Ingevoerd
UNION ALL -- Werkopdrachten
SELECT NULL periode,
x.kostensoort,
x.kostenplaats,
'EUR' element3,
DECODE (x.kostenplaats, '2216', 'Variabel', 'Eindgebruiker') element4,
DECODE (
f_run.fin_factuur_key,
NULL, -- Geen ingevoerde facturen
DECODE (SIGN (COALESCE (x.mld_opdr_kosten, 0)),
-1, TO_NUMBER (NULL),
COALESCE (x.mld_opdr_kosten, 0)),
DECODE (
SIGN (f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw),
-1, TO_NUMBER (NULL),
(f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw)))
bedrag_debet,
DECODE (
f_run.fin_factuur_key,
NULL, -- Geen ingevoerde facturen
DECODE (SIGN (COALESCE (x.mld_opdr_kosten, 0)),
-1, -1 * COALESCE (x.mld_opdr_kosten, 0),
TO_NUMBER (NULL)),
DECODE (
SIGN (f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw),
-1, -1 * (f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw),
TO_NUMBER (NULL)))
bedrag_credit,
x.ins_srtdiscipline_prefix || '-' || x.mld_stdmelding_omschrijving omschrijving,
x.ins_srtdiscipline_prefix || TO_CHAR (x.mld_melding_key) || '/' || TO_CHAR (x.mld_opdr_bedrijfopdr_volgnr) verplichtingnummer,
x.prs_bedrijf_naam leverancier,
x.prs_leverancier_nr leveranciersnummer,
f_run.fin_factuur_nr factuurnummer,
DECODE (x.vlkc, '41', 'VL', '42', 'KC', NULL) vlkc,
DECODE (x.mld_typeopdr_key, 5, 'Werkopdracht', 'Jaaropdracht') opdrachttype,
DECODE (x.inv, '1', 'Ja', 'Nee') investering,
x.mld_opdr_einddatum,
x.alg_locatie_code locatie
FROM (SELECT o.mld_opdr_key,
o.mld_melding_key,
o.mld_opdr_bedrijfopdr_volgnr,
COALESCE (ksgo.prs_kostensoortgrp_altcode, ksgm.prs_kostensoortgrp_altcode, ksgv.prs_kostensoortgrp_altcode, NULL) kostensoort,
kp.prs_kostenplaats_nr kostenplaats,
o.mld_opdr_kosten,
sd.ins_srtdiscipline_prefix,
sm.mld_stdmelding_omschrijving,
lev.prs_bedrijf_naam,
lev.prs_leverancier_nr,
vlkc.mld_kenmerkopdr_waarde vlkc,
o.mld_typeopdr_key,
inv.mld_kenmerkopdr_waarde inv,
o.mld_opdr_einddatum,
l.alg_locatie_code
FROM mld_opdr o,
mld_melding m,
mld_stdmelding sm,
prs_kostensoort ksm,
prs_kostensoortgrp ksgm,
prs_kostensoort kso,
prs_kostensoortgrp ksgo,
ins_tab_discipline td,
prs_kostensoort ksv,
prs_kostensoortgrp ksgv,
ins_srtdiscipline sd,
prs_kostenplaats kp,
prs_bedrijf lev,
(SELECT *
FROM mld_v_aanwezigkenmerkopdr ko
WHERE EXISTS
(SELECT 1
FROM mld_kenmerk
WHERE mld_kenmerk_key = ko.mld_kenmerk_key
AND mld_srtkenmerk_key = 81)) vlkc, -- Factuur/offerte naar
(SELECT *
FROM mld_v_aanwezigkenmerkopdr ko
WHERE EXISTS
(SELECT 1
FROM mld_kenmerk
WHERE mld_kenmerk_key = ko.mld_kenmerk_key
AND mld_srtkenmerk_key = 181)) inv, -- Investeringsopdracht
alg_locatie l
WHERE o.mld_typeopdr_key IN (5, 2781) -- Werkopdracht/Jaaropdracht
AND o.mld_statusopdr_key NOT IN (1, 2) -- Afgewezen/Niet akkoord
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
AND ksm.prs_kostensoortgrp_key = ksgm.prs_kostensoortgrp_key(+)
AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+)
AND kso.prs_kostensoortgrp_key = ksgo.prs_kostensoortgrp_key(+)
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND td.prs_kostensoort_key = ksv.prs_kostensoort_key(+)
AND ksv.prs_kostensoortgrp_key = ksgv.prs_kostensoortgrp_key(+)
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key NOT IN (41, 42, 43, 44, 45) -- BE-vakgroeptypen
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND o.mld_uitvoerende_keys = lev.prs_bedrijf_key
AND o.mld_opdr_key = vlkc.mld_opdr_key(+)
AND o.mld_opdr_key = inv.mld_opdr_key(+)
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND NOT EXISTS -- Geen Werkopdrachten/Jaaropdrachten met Reden "0-order"!
(SELECT 1
FROM mld_v_aanwezigkenmerkopdr
WHERE mld_kenmerk_key IN (201, 2764) -- Reden "0-order"
AND mld_opdr_key = o.mld_opdr_key)) x
LEFT JOIN ( SELECT mld_opdr_key, COUNT ( * ) aantal
FROM fin_factuur
WHERE mld_opdr_key IS NOT NULL AND fin_factuur_verwijder IS NULL
GROUP BY mld_opdr_key) f_cnt
ON x.mld_opdr_key = f_cnt.mld_opdr_key
LEFT JOIN fin_factuur f_run
ON x.mld_opdr_key = f_run.mld_opdr_key AND f_run.fin_factuur_verwijder IS NULL
WHERE f_cnt.mld_opdr_key IS NULL
OR COALESCE (f_run.fin_factuur_statuses_key, 2) = 2 -- Ingevoerd
UNION ALL -- Offerteopdrachten
SELECT NULL periode,
x.kostensoort,
x.kostenplaats,
'EUR' element3,
DECODE (x.kostenplaats, '2216', 'Variabel', 'Eindgebruiker') element4,
DECODE (
COALESCE (f.aantal, 0),
0, -- Nog geen factuur ontvangen
DECODE (SIGN (COALESCE (x.mld_opdr_kosten, 0)),
-1, TO_NUMBER (NULL),
COALESCE (x.mld_opdr_kosten, 0)),
DECODE (
SIGN(COALESCE (x.mld_opdr_kosten, 0) - COALESCE (debet.tot_incl_btw, 0) - COALESCE (credit.tot_incl_btw, 0)),
-1, TO_NUMBER (NULL),
COALESCE (x.mld_opdr_kosten, 0) - COALESCE (debet.tot_incl_btw, 0) - COALESCE (credit.tot_incl_btw, 0)))
bedrag_debet,
DECODE (
COALESCE (f.aantal, 0),
0, -- Nog geen factuur ontvangen
DECODE (SIGN (COALESCE (x.mld_opdr_kosten, 0)),
-1, -1 * COALESCE (x.mld_opdr_kosten, 0),
TO_NUMBER (NULL)),
DECODE (
SIGN(COALESCE (x.mld_opdr_kosten, 0) - COALESCE (debet.tot_incl_btw, 0) - COALESCE (credit.tot_incl_btw, 0)),
-1, -1 * (COALESCE (x.mld_opdr_kosten, 0) - COALESCE (debet.tot_incl_btw, 0) - COALESCE (credit.tot_incl_btw, 0)),
TO_NUMBER (NULL)))
bedrag_credit,
--COALESCE (ksgm.prs_kostensoortgrp_oms, ksgv.prs_kostensoortgrp_oms, 'ONGEDEFINEERD')
x.ins_srtdiscipline_prefix || '-' || x.mld_stdmelding_omschrijving omschrijving,
x.ins_srtdiscipline_prefix || TO_CHAR (x.mld_melding_key) || '/' || TO_CHAR (x.mld_opdr_bedrijfopdr_volgnr) verplichtingnummer,
x.prs_bedrijf_naam leverancier,
x.prs_leverancier_nr leveranciersnummer,
GREATEST (debet.fin_factuur_nr, credit.fin_factuur_nr) factuurnummer,
DECODE (x.vlkc, '41', 'VL', '42', 'KC', NULL) vlkc,
'Offerteopdracht' opdrachttype,
DECODE (x.inv, '1', 'Ja', 'Nee') investering,
x.mld_opdr_einddatum,
x.alg_locatie_code locatie
FROM (SELECT o.mld_opdr_key,
o.mld_melding_key,
o.mld_opdr_bedrijfopdr_volgnr,
COALESCE (ksgo.prs_kostensoortgrp_altcode, ksgm.prs_kostensoortgrp_altcode, ksgv.prs_kostensoortgrp_altcode, NULL) kostensoort,
kp.prs_kostenplaats_nr kostenplaats,
o.mld_opdr_kosten,
sd.ins_srtdiscipline_prefix,
sm.mld_stdmelding_omschrijving,
lev.prs_bedrijf_naam,
lev.prs_leverancier_nr,
vlkc.mld_kenmerkopdr_waarde vlkc,
o.mld_typeopdr_key,
inv.mld_kenmerkopdr_waarde inv,
o.mld_opdr_einddatum,
l.alg_locatie_code
FROM mld_opdr o,
mld_melding m,
mld_stdmelding sm,
prs_kostensoort ksm,
prs_kostensoortgrp ksgm,
prs_kostensoort kso,
prs_kostensoortgrp ksgo,
ins_tab_discipline td,
prs_kostensoort ksv,
prs_kostensoortgrp ksgv,
ins_srtdiscipline sd,
prs_kostenplaats kp,
prs_bedrijf lev,
(SELECT *
FROM mld_v_aanwezigkenmerkopdr ko
WHERE EXISTS
(SELECT 1
FROM mld_kenmerk
WHERE mld_kenmerk_key = ko.mld_kenmerk_key
AND mld_srtkenmerk_key = 81)) vlkc, -- Factuur/offerte naar
(SELECT *
FROM mld_v_aanwezigkenmerkopdr ko
WHERE EXISTS
(SELECT 1
FROM mld_kenmerk
WHERE mld_kenmerk_key = ko.mld_kenmerk_key
AND mld_srtkenmerk_key = 181)) inv, -- Investeringsopdracht
alg_locatie l
WHERE o.mld_typeopdr_key = 283 -- Offerteopdracht
AND o.mld_statusopdr_key NOT IN (1, 2, 3, 10) -- Afgewezen/Niet akkoord/Ter fiattering/Ter goedkeuring
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
AND ksm.prs_kostensoortgrp_key = ksgm.prs_kostensoortgrp_key(+)
AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+)
AND kso.prs_kostensoortgrp_key = ksgo.prs_kostensoortgrp_key(+)
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND td.prs_kostensoort_key = ksv.prs_kostensoort_key(+)
AND ksv.prs_kostensoortgrp_key = ksgv.prs_kostensoortgrp_key(+)
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key NOT IN (41, 42, 43, 44, 45) -- BE-vakgroeptypen
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND o.mld_uitvoerende_keys = lev.prs_bedrijf_key
AND o.mld_opdr_key = vlkc.mld_opdr_key(+)
AND o.mld_opdr_key = inv.mld_opdr_key(+)
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND NOT EXISTS -- Geen Offerteopdrachten met Reden "0-order"!
(SELECT 1
FROM mld_v_aanwezigkenmerkopdr
WHERE mld_kenmerk_key = 1101 -- Reden "0-order"
AND mld_opdr_key = o.mld_opdr_key)) x
LEFT JOIN ( SELECT mld_opdr_key, COUNT ( * ) aantal
FROM fin_factuur
WHERE mld_opdr_key IS NOT NULL AND fin_factuur_verwijder IS NULL
GROUP BY mld_opdr_key) f
ON x.mld_opdr_key = f.mld_opdr_key
LEFT JOIN ( SELECT mld_opdr_key, COUNT ( * ) aantal, MAX (fin_factuur_nr) fin_factuur_nr,
SUM (fin_factuur_totaal + fin_factuur_totaal_btw) tot_incl_btw
FROM fin_factuur
WHERE mld_opdr_key IS NOT NULL
AND fin_factuur_statuses_key IN (6, 7)
AND (fin_factuur_totaal + fin_factuur_totaal_btw) >= 0
GROUP BY mld_opdr_key) debet
ON x.mld_opdr_key = debet.mld_opdr_key
LEFT JOIN ( SELECT mld_opdr_key, COUNT ( * ) aantal, MAX (fin_factuur_nr) fin_factuur_nr,
SUM (fin_factuur_totaal + fin_factuur_totaal_btw) tot_incl_btw
FROM fin_factuur
WHERE mld_opdr_key IS NOT NULL
AND fin_factuur_statuses_key IN (6, 7)
AND (fin_factuur_totaal + fin_factuur_totaal_btw) < 0
GROUP BY mld_opdr_key) credit
ON x.mld_opdr_key = credit.mld_opdr_key
WHERE ROUND (COALESCE (x.mld_opdr_kosten, 0), 2) != ROUND (COALESCE (debet.tot_incl_btw, 0) + COALESCE (credit.tot_incl_btw, 0), 2);
-- VLKC#40188: Hernoemen Jaarbedrag naar Contractbedrag/toevoegen Einddatum en Jaarbedrag=12xTermijnbedrag.
-- VLKC#40188: Verantwoording per jaar/hernoemen Jaarbedrag naar Jaarbedrag_heel/toevoegen Jaarbedrag_deel.
-- VLKC#56902: Uitbreiding met extra CF/CV-kolom. Tevens in de bestaande Contractnummer-kolom de variabele
-- contracten de prefix CV gegeven (en de prefix voor vaste contracten ongewijzigd C gebleven).
-- VLKC#64166: Alleen CF- en CV-contracten beschouwen en daarmee CH-(huur)contracten uitsluiten! Tevens de
-- prefix voor vaste contracten voortaan op CF (ipv. C).
CREATE OR REPLACE VIEW vlkc_v_rap_cnt_verantw
(
fclt_f_jaar,
contractnummer,
cf_of_cv,
leverancier,
leveranciersnummer,
contractbedrag,
reeds_gefactureerd,
reeds_verantwoord,
kostensoort, -- 5 cijfers
kostenplaats, -- 4 cijfers
fclt_x_vlkc,
einddatum_contract,
jaarbedrag_heel,
jaarbedrag_deel,
locatie
)
AS
SELECT TO_CHAR (c.jaar, 'yyyy') jaar,
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', 'CV', 'C') || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)) contractnummer,
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', 'CV', 'C') cf_of_cv,
lev.prs_bedrijf_naam leverancier,
lev.prs_leverancier_nr leveranciersnummer,
c.cnt_contract_kosten contractbedrag,
verantw.reeds_gefactureerd,
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', verantw.reeds_verwerkt, verantw.reeds_verantwoord) reeds_verantwoord,
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL) kostensoort,
kp.prs_kostenplaats_nr kostenplaats,
DECODE (ab.prs_afdeling_key1, 82, 'VL', 81, 'KC', NULL) vlkc,
c.cnt_contract_looptijd_tot einddatum_contract,
12 * c.cnt_contract_termijnkosten jaar_heel, -- Termijnbedrag=Maandbedrag (ongeacht Factuurtermijn)!
ROUND (MONTHS_BETWEEN (LEAST (TRUNC (c.cnt_contract_looptijd_tot), ADD_MONTHS (c.jaar, 12) - 1), GREATEST (TRUNC (c.cnt_contract_looptijd_van), c.jaar)), 0) * c.cnt_contract_termijnkosten jaar_deel,
LISTAGG (cp.alg_locatie_code, ',') WITHIN GROUP (ORDER BY cp.alg_locatie_code) locatie
FROM (SELECT TO_CHAR (p.jaar, 'yyyy') || '/' || TO_CHAR (c.cnt_contract_key) jaarkey, p.jaar, c.*
FROM ( SELECT ADD_MONTHS (TO_DATE ('01012017', 'ddmmyyyy'), (LEVEL - 1) * 12) jaar
FROM DUAL
CONNECT BY LEVEL <= MONTHS_BETWEEN (SYSDATE, TO_DATE ('01012017', 'ddmmyyyy')) / 12 + 1) p,
cnt_contract c -- Alle contracten/versies (incl. verwijderde?)
WHERE p.jaar BETWEEN TRUNC (c.cnt_contract_looptijd_van, 'yyyy') AND c.cnt_contract_looptijd_tot) c,
( SELECT jaarkey, SUM (reeds_gefactureerd) reeds_gefactureerd, SUM (reeds_verwerkt) reeds_verwerkt, SUM (reeds_verantwoord) reeds_verantwoord
FROM (SELECT TO_CHAR (DECODE (t.fac_srtnotificatie_key, 122, t.fac_tracking_datum, t.fac_tracking_datum - 10), 'yyyy') || '/' || TO_CHAR (f.cnt_contract_key) jaarkey, -- Oude bepaling boekmaand!
COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0) reeds_gefactureerd,
DECODE (f.fin_factuur_statuses_key, 6, 0, COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0)) reeds_verwerkt,
0 reeds_verantwoord
FROM fin_factuur f,
( SELECT fac_tracking_refkey, MAX (fac_srtnotificatie_key) fac_srtnotificatie_key, MAX (fac_tracking_datum) fac_tracking_datum
FROM fac_tracking
WHERE fac_srtnotificatie_key IN (122, 128) -- FINFOK/FINVER
GROUP BY fac_tracking_refkey) t
WHERE f.cnt_contract_key IS NOT NULL
AND f.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
AND f.fin_factuur_key = t.fac_tracking_refkey
AND t.fac_tracking_datum < TO_DATE ('04042018 05:05', 'ddmmyyyy hh24:mi')
UNION ALL
SELECT SUBSTR (f.fin_factuur_boekmaand, 1, 4) || '/' || TO_CHAR (f.cnt_contract_key) jaarkey, -- Nieuwe bepaling boekmaand!
COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0) reeds_gefactureerd,
DECODE (f.fin_factuur_statuses_key, 6, 0, COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0)) reeds_verwerkt,
0 reeds_verantwoord
FROM fin_factuur f,
( SELECT fac_tracking_refkey, MAX (fac_srtnotificatie_key) fac_srtnotificatie_key, MAX (fac_tracking_datum) fac_tracking_datum
FROM fac_tracking
WHERE fac_srtnotificatie_key IN (122, 128) -- FINFOK/FINVER
GROUP BY fac_tracking_refkey) t
WHERE f.cnt_contract_key IS NOT NULL
AND f.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
AND f.fin_factuur_key = t.fac_tracking_refkey
AND t.fac_tracking_datum > TO_DATE ('04042018 05:05', 'ddmmyyyy hh24:mi')
UNION ALL
SELECT SUBSTR (fac_usrdata_code, 1, 4) || SUBSTR (fac_usrdata_code, INSTR (fac_usrdata_code, '/')) jaarkey,
0 reeds_gefactureerd,
0 reeds_verwerkt,
COALESCE (fac_usrdata_prijs, 0) reeds_verantwoord
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 81) -- VasteKostenMnd
GROUP BY jaarkey) verantw,
prs_kostensoort ksc,
prs_kostensoortgrp ksgc,
ins_tab_discipline td,
prs_kostensoort ksd,
prs_kostensoortgrp ksgd,
prs_kostenplaats kp,
prs_bedrijf lev,
prs_v_afdeling_boom ab,
(SELECT cp.cnt_contract_key, l.alg_locatie_code
FROM cnt_v_aanwezigcontract_plaats cp, alg_gebouw g, alg_locatie l
WHERE cp.cnt_alg_plaats_code = 'G'
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
UNION
SELECT cp.cnt_contract_key, l.alg_locatie_code
FROM cnt_v_aanwezigcontract_plaats cp, alg_locatie l
WHERE cp.cnt_alg_plaats_code = 'L'
AND cp.cnt_alg_plaats_key = l.alg_locatie_key) cp
WHERE c.jaarkey = verantw.jaarkey(+)
AND c.prs_kostensoort_key = ksc.prs_kostensoort_key(+)
AND ksc.prs_kostensoortgrp_key = ksgc.prs_kostensoortgrp_key(+)
AND c.ins_discipline_key = td.ins_discipline_key
AND SUBSTR (td.ins_discipline_omschrijving, 1, 2) IN ('CF', 'CV')
AND td.prs_kostensoort_key = ksd.prs_kostensoort_key(+)
AND ksd.prs_kostensoortgrp_key = ksgd.prs_kostensoortgrp_key(+)
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND c.cnt_prs_bedrijf_key = lev.prs_bedrijf_key
AND c.prs_afdeling_key_eig = ab.prs_afdeling_key(+)
AND (c.cnt_contract_verwijder IS NULL OR COALESCE (verantw.reeds_gefactureerd, 0) <> 0 OR COALESCE (verantw.reeds_verantwoord, 0) <> 0)
AND c.cnt_contract_key = cp.cnt_contract_key(+)
GROUP BY TO_CHAR (c.jaar, 'yyyy'),
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', 'CV', 'C') || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)),
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', 'CV', 'C'),
lev.prs_bedrijf_naam,
lev.prs_leverancier_nr,
c.cnt_contract_kosten,
verantw.reeds_gefactureerd,
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', verantw.reeds_verwerkt, verantw.reeds_verantwoord),
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL),
kp.prs_kostenplaats_nr,
DECODE (ab.prs_afdeling_key1, 82, 'VL', 81, 'KC', NULL),
c.cnt_contract_looptijd_tot,
12 * c.cnt_contract_termijnkosten,
ROUND (MONTHS_BETWEEN (LEAST (TRUNC (c.cnt_contract_looptijd_tot), ADD_MONTHS (c.jaar, 12) - 1), GREATEST (TRUNC (c.cnt_contract_looptijd_van), c.jaar)), 0) * c.cnt_contract_termijnkosten
UNION ALL -- Facturatie/verantwoording op verlopen contracten!
SELECT SUBSTR (verantw.jaarkey, 1, 4) jaar,
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', 'CV', 'C') || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)) contractnummer,
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', 'CV', 'C') cf_of_cv,
lev.prs_bedrijf_naam leverancier,
lev.prs_leverancier_nr leveranciersnummer,
c.cnt_contract_kosten contractbedrag,
verantw.reeds_gefactureerd,
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', verantw.reeds_verwerkt, verantw.reeds_verantwoord) reeds_verantwoord,
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL) kostensoort,
kp.prs_kostenplaats_nr kostenplaats,
DECODE (ab.prs_afdeling_key1, 82, 'VL', 81, 'KC', NULL) vlkc,
c.cnt_contract_looptijd_tot einddatum_contract,
0 jaar_heel, -- Contract verlopen!
0 jaar_deel, -- Contract verlopen!
LISTAGG (cp.alg_locatie_code, ',') WITHIN GROUP (ORDER BY cp.alg_locatie_code) locatie
FROM cnt_contract c, -- Alle contracten/versies (incl. verwijderde?)
( SELECT jaarkey, SUM (reeds_gefactureerd) reeds_gefactureerd, SUM (reeds_verwerkt) reeds_verwerkt, SUM (reeds_verantwoord) reeds_verantwoord
FROM (SELECT TO_CHAR (DECODE (t.fac_srtnotificatie_key, 122, t.fac_tracking_datum, t.fac_tracking_datum - 10), 'yyyy') || '/' || TO_CHAR (f.cnt_contract_key) jaarkey, -- Oude bepaling boekmaand!
COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0) reeds_gefactureerd,
DECODE (f.fin_factuur_statuses_key, 6, 0, COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0)) reeds_verwerkt,
0 reeds_verantwoord
FROM fin_factuur f,
( SELECT fac_tracking_refkey, MAX (fac_srtnotificatie_key) fac_srtnotificatie_key, MAX (fac_tracking_datum) fac_tracking_datum
FROM fac_tracking
WHERE fac_srtnotificatie_key IN (122, 128) -- FINFOK/FINVER
GROUP BY fac_tracking_refkey) t
WHERE f.cnt_contract_key IS NOT NULL
AND f.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
AND f.fin_factuur_key = t.fac_tracking_refkey
AND t.fac_tracking_datum < TO_DATE ('04042018 05:05', 'ddmmyyyy hh24:mi')
UNION ALL
SELECT SUBSTR (f.fin_factuur_boekmaand, 1, 4) || '/' || TO_CHAR (f.cnt_contract_key) jaarkey, -- Nieuwe bepaling boekmaand!
COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0) reeds_gefactureerd,
DECODE (f.fin_factuur_statuses_key, 6, 0, COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0)) reeds_verwerkt,
0 reeds_verantwoord
FROM fin_factuur f,
( SELECT fac_tracking_refkey, MAX (fac_srtnotificatie_key) fac_srtnotificatie_key, MAX (fac_tracking_datum) fac_tracking_datum
FROM fac_tracking
WHERE fac_srtnotificatie_key IN (122, 128) -- FINFOK/FINVER
GROUP BY fac_tracking_refkey) t
WHERE f.cnt_contract_key IS NOT NULL
AND f.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
AND f.fin_factuur_key = t.fac_tracking_refkey
AND t.fac_tracking_datum > TO_DATE ('04042018 05:05', 'ddmmyyyy hh24:mi')
UNION ALL
SELECT SUBSTR (fac_usrdata_code, 1, 4) || SUBSTR (fac_usrdata_code, INSTR (fac_usrdata_code, '/')) jaarkey,
0 reeds_gefactureerd,
0 reeds_verwerkt,
COALESCE (fac_usrdata_prijs, 0) reeds_verantwoord
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 81) -- VasteKostenMnd
GROUP BY jaarkey) verantw,
prs_kostensoort ksc,
prs_kostensoortgrp ksgc,
ins_tab_discipline td,
prs_kostensoort ksd,
prs_kostensoortgrp ksgd,
prs_kostenplaats kp,
prs_bedrijf lev,
prs_v_afdeling_boom ab,
(SELECT cp.cnt_contract_key, l.alg_locatie_code
FROM cnt_v_aanwezigcontract_plaats cp, alg_gebouw g, alg_locatie l
WHERE cp.cnt_alg_plaats_code = 'G'
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
UNION
SELECT cp.cnt_contract_key, l.alg_locatie_code
FROM cnt_v_aanwezigcontract_plaats cp, alg_locatie l
WHERE cp.cnt_alg_plaats_code = 'L'
AND cp.cnt_alg_plaats_key = l.alg_locatie_key) cp
WHERE TO_CHAR (c.cnt_contract_key) = SUBSTR (verantw.jaarkey, INSTR (verantw.jaarkey, '/') + 1)
AND TO_CHAR (c.cnt_contract_looptijd_tot, 'yyyy') < SUBSTR (verantw.jaarkey, 1, 4)
AND c.prs_kostensoort_key = ksc.prs_kostensoort_key(+)
AND ksc.prs_kostensoortgrp_key = ksgc.prs_kostensoortgrp_key(+)
AND c.ins_discipline_key = td.ins_discipline_key
AND SUBSTR (td.ins_discipline_omschrijving, 1, 2) IN ('CF', 'CV')
AND td.prs_kostensoort_key = ksd.prs_kostensoort_key(+)
AND ksd.prs_kostensoortgrp_key = ksgd.prs_kostensoortgrp_key(+)
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND c.cnt_prs_bedrijf_key = lev.prs_bedrijf_key
AND c.prs_afdeling_key_eig = ab.prs_afdeling_key(+)
AND c.cnt_contract_key = cp.cnt_contract_key(+)
GROUP BY SUBSTR (verantw.jaarkey, 1, 4),
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', 'CV', 'C') || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)),
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', 'CV', 'C'),
lev.prs_bedrijf_naam,
lev.prs_leverancier_nr,
c.cnt_contract_kosten,
verantw.reeds_gefactureerd,
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', verantw.reeds_verwerkt, verantw.reeds_verantwoord),
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL),
kp.prs_kostenplaats_nr,
DECODE (ab.prs_afdeling_key1, 82, 'VL', 81, 'KC', NULL),
c.cnt_contract_looptijd_tot,
0,
0;
-- VLKC#89584: CODA BE-rapportages op MLD, dus niet BES/CNT en zonder facturen!
CREATE OR REPLACE VIEW vlkc_v_rap_coda_ordexp_be
(
fclt_f_periode,
kostensoort, -- 5 cijfers
kostenplaats, -- 4 cijfers
valuta, -- element3
bron, -- element4
bedrag_debet, -- incl. BTW en niet samen met bedrag_credit op <20><>n regel
bedrag_credit, -- incl. BTW en niet samen met bedrag_debet op <20><>n regel
omschrijving, -- max. 29 posities
verplichtingnummer,
leverancier,
leveranciersnummer,
factuurnummer,
fclt_f_vlkc,
fclt_f_opdrachttype,
fclt_f_investering,
melder, -- of besteller
melder_pnr, -- of besteller
melder_kpn, -- of besteller
locatie
)
AS
WITH lopendeperiode AS (SELECT COALESCE (MAX (TO_CHAR (ADD_MONTHS (fac.safe_to_date (SUBSTR (fac_usrdata_code, 1, 7), 'yyyy-mm'), 1), 'yyyy-mm')), '2017-01') maand
FROM fac_usrdata
WHERE fac_usrtab_key = 81)
SELECT --TO_CHAR (o.mld_opdr_datumbegin, 'yyyy-mm') -- TODO:Wat doen voor BE?
DECODE (f.fin_factuur_statuses_key,
7, TO_CHAR (fac.gettrackingdate ('FINVER', f.fin_factuur_key) - 10, 'yyyy-mm'),
lp.maand || '*')
periode,
COALESCE (ksgo.prs_kostensoortgrp_altcode, ksgm.prs_kostensoortgrp_altcode, ksgv.prs_kostensoortgrp_altcode, NULL) kostensoort,
kp.prs_kostenplaats_nr kostenplaats,
'EUR' element3,
--DECODE (kp.prs_kostenplaats_nr, '2216', 'Variabel', 'Eindgebruiker') element4,
'BE' element4, -- BE voor BE
--TO_NUMBER (NULL) -- TODO:NULL voor BE?
DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
-1, TO_NUMBER (NULL),
(f.fin_factuur_totaal + f.fin_factuur_totaal_btw))
bedrag_debet,
--TO_NUMBER (NULL) -- TODO:NULL voor BE?
DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
-1, -1 * (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
TO_NUMBER (NULL))
bedrag_credit,
--COALESCE (ksgm.prs_kostensoortgrp_oms, ksgv.prs_kostensoortgrp_oms, 'ONGEDEFINEERD')
sd.ins_srtdiscipline_prefix || '-' || sm.mld_stdmelding_omschrijving omschrijving,
sd.ins_srtdiscipline_prefix || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) verplichtingnummer,
lev.prs_bedrijf_naam leverancier,
lev.prs_leverancier_nr leveranciersnummer,
--NULL factuurnummer, -- TODO:NULL voor BE?
f.fin_factuur_nr factuurnummer,
--DECODE (vlkc.mld_kenmerkopdr_waarde, '41', 'VL', '42', 'KC', NULL) vlkc,
NULL vlkc, -- NULL voor BE
DECODE (o.mld_typeopdr_key, 5, 'Werkopdracht', 283, 'Offerteopdracht', 'Jaaropdracht') opdrachttype,
DECODE (inv.mld_kenmerkopdr_waarde, '1', 'Ja', 'Nee') investering,
mpf.prs_perslid_naam_full melder,
mp.prs_perslid_nr melder_pnr,
mkp.prs_kostenplaats_nr melder_kpn,
l.alg_locatie_code locatie
FROM lopendeperiode lp,
fin_factuur f,
mld_opdr o,
mld_melding m,
mld_stdmelding sm,
prs_kostensoort ksm,
prs_kostensoortgrp ksgm,
prs_kostensoort kso,
prs_kostensoortgrp ksgo,
ins_tab_discipline td,
prs_kostensoort ksv,
prs_kostensoortgrp ksgv,
ins_srtdiscipline sd,
prs_kostenplaats kp,
prs_bedrijf lev,
(SELECT *
FROM mld_v_aanwezigkenmerkopdr ko
WHERE EXISTS
(SELECT 1
FROM mld_kenmerk
WHERE mld_kenmerk_key = ko.mld_kenmerk_key
AND mld_srtkenmerk_key = 81)) vlkc, -- Factuur/offerte naar
(SELECT *
FROM mld_v_aanwezigkenmerkopdr ko
WHERE EXISTS
(SELECT 1
FROM mld_kenmerk
WHERE mld_kenmerk_key = ko.mld_kenmerk_key
AND mld_srtkenmerk_key = 181)) inv, -- Investeringsopdracht
prs_perslid mp,
prs_v_perslid_fullnames_all mpf,
prs_afdeling ma,
prs_kostenplaats mkp,
alg_locatie l
WHERE f.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
AND f.mld_opdr_key = o.mld_opdr_key
AND o.mld_typeopdr_key IN (5, 283, 2781) -- Werkopdracht/Offerteopdracht/Jaaropdracht
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
AND ksm.prs_kostensoortgrp_key = ksgm.prs_kostensoortgrp_key(+)
AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+)
AND kso.prs_kostensoortgrp_key = ksgo.prs_kostensoortgrp_key(+)
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND td.prs_kostensoort_key = ksv.prs_kostensoort_key(+)
AND ksv.prs_kostensoortgrp_key = ksgv.prs_kostensoortgrp_key(+)
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key IN (41, 42, 43, 44, 45) -- BE-vakgroeptypen
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND o.mld_uitvoerende_keys = lev.prs_bedrijf_key
AND o.mld_opdr_key = vlkc.mld_opdr_key(+)
AND o.mld_opdr_key = inv.mld_opdr_key(+)
AND m.prs_perslid_key = mp.prs_perslid_key
AND mp.prs_perslid_key = mpf.prs_perslid_key
AND mp.prs_afdeling_key = ma.prs_afdeling_key
AND ma.prs_kostenplaats_key = mkp.prs_kostenplaats_key(+)
AND m.mld_alg_locatie_key = l.alg_locatie_key(+);
--CREATE OR REPLACE VIEW vlkc_v_rap_coda_cntexp_be
CREATE OR REPLACE VIEW vlkc_v_rap_coda_ordrun_be
(
fclt_f_periode,
kostensoort, -- 5 cijfers
kostenplaats, -- 4 cijfers
valuta, -- element3
bron, -- element4
bedrag_debet, -- incl. BTW en niet samen met bedrag_credit op <20><>n regel
bedrag_credit, -- incl. BTW en niet samen met bedrag_debet op <20><>n regel
omschrijving, -- max. 29 posities
verplichtingnummer,
leverancier,
leveranciersnummer,
factuurnummer,
fclt_f_vlkc,
fclt_f_opdrachttype,
fclt_f_investering,
einddatum,
locatie
)
AS -- Werkopdrachten
SELECT NULL periode,
x.kostensoort,
x.kostenplaats,
'EUR' element3,
--DECODE (x.kostenplaats, '2216', 'Variabel', 'Eindgebruiker') element4,
'BE' element4, -- BE voor BE
DECODE (
f_run.fin_factuur_key,
NULL, -- Geen ingevoerde facturen
DECODE (SIGN (COALESCE (x.mld_opdr_kosten, 0)),
-1, TO_NUMBER (NULL),
COALESCE (x.mld_opdr_kosten, 0)),
DECODE (
SIGN (f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw),
-1, TO_NUMBER (NULL),
(f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw)))
bedrag_debet,
DECODE (
f_run.fin_factuur_key,
NULL, -- Geen ingevoerde facturen
DECODE (SIGN (COALESCE (x.mld_opdr_kosten, 0)),
-1, -1 * COALESCE (x.mld_opdr_kosten, 0),
TO_NUMBER (NULL)),
DECODE (
SIGN (f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw),
-1, -1 * (f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw),
TO_NUMBER (NULL)))
bedrag_credit,
x.ins_srtdiscipline_prefix || '-' || x.mld_stdmelding_omschrijving omschrijving,
x.ins_srtdiscipline_prefix || TO_CHAR (x.mld_melding_key) || '/' || TO_CHAR (x.mld_opdr_bedrijfopdr_volgnr) verplichtingnummer,
x.prs_bedrijf_naam leverancier,
x.prs_leverancier_nr leveranciersnummer,
f_run.fin_factuur_nr factuurnummer,
--DECODE (x.vlkc, '41', 'VL', '42', 'KC', NULL) vlkc,
NULL vlkc, -- NULL voor BE
DECODE (x.mld_typeopdr_key, 5, 'Werkopdracht', 'Jaaropdracht') opdrachttype,
DECODE (x.inv, '1', 'Ja', 'Nee') investering,
x.mld_opdr_einddatum,
x.alg_locatie_code locatie
FROM (SELECT o.mld_opdr_key,
o.mld_melding_key,
o.mld_opdr_bedrijfopdr_volgnr,
COALESCE (ksgo.prs_kostensoortgrp_altcode, ksgm.prs_kostensoortgrp_altcode, ksgv.prs_kostensoortgrp_altcode, NULL) kostensoort,
kp.prs_kostenplaats_nr kostenplaats,
o.mld_opdr_kosten,
sd.ins_srtdiscipline_prefix,
sm.mld_stdmelding_omschrijving,
lev.prs_bedrijf_naam,
lev.prs_leverancier_nr,
vlkc.mld_kenmerkopdr_waarde vlkc,
o.mld_typeopdr_key,
inv.mld_kenmerkopdr_waarde inv,
o.mld_opdr_einddatum,
l.alg_locatie_code
FROM mld_opdr o,
mld_melding m,
mld_stdmelding sm,
prs_kostensoort ksm,
prs_kostensoortgrp ksgm,
prs_kostensoort kso,
prs_kostensoortgrp ksgo,
ins_tab_discipline td,
prs_kostensoort ksv,
prs_kostensoortgrp ksgv,
ins_srtdiscipline sd,
prs_kostenplaats kp,
prs_bedrijf lev,
(SELECT *
FROM mld_v_aanwezigkenmerkopdr ko
WHERE EXISTS
(SELECT 1
FROM mld_kenmerk
WHERE mld_kenmerk_key = ko.mld_kenmerk_key
AND mld_srtkenmerk_key = 81)) vlkc, -- Factuur/offerte naar
(SELECT *
FROM mld_v_aanwezigkenmerkopdr ko
WHERE EXISTS
(SELECT 1
FROM mld_kenmerk
WHERE mld_kenmerk_key = ko.mld_kenmerk_key
AND mld_srtkenmerk_key = 181)) inv, -- Investeringsopdracht
alg_locatie l
WHERE o.mld_typeopdr_key IN (5, 2781) -- Werkopdracht/Jaaropdracht
AND o.mld_statusopdr_key NOT IN (1, 2) -- Afgewezen/Niet akkoord
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
AND ksm.prs_kostensoortgrp_key = ksgm.prs_kostensoortgrp_key(+)
AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+)
AND kso.prs_kostensoortgrp_key = ksgo.prs_kostensoortgrp_key(+)
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND td.prs_kostensoort_key = ksv.prs_kostensoort_key(+)
AND ksv.prs_kostensoortgrp_key = ksgv.prs_kostensoortgrp_key(+)
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key IN (41, 42, 43, 44, 45) -- BE-vakgroeptypen
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND o.mld_uitvoerende_keys = lev.prs_bedrijf_key
AND o.mld_opdr_key = vlkc.mld_opdr_key(+)
AND o.mld_opdr_key = inv.mld_opdr_key(+)
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND NOT EXISTS -- Geen Werkopdrachten/Jaaropdrachten met Reden "0-order"!
(SELECT 1
FROM mld_v_aanwezigkenmerkopdr
WHERE mld_kenmerk_key IN (201, 2764) -- Reden "0-order"
AND mld_opdr_key = o.mld_opdr_key)) x
LEFT JOIN ( SELECT mld_opdr_key, COUNT ( * ) aantal
FROM fin_factuur
WHERE mld_opdr_key IS NOT NULL AND fin_factuur_verwijder IS NULL
GROUP BY mld_opdr_key) f_cnt
ON x.mld_opdr_key = f_cnt.mld_opdr_key
LEFT JOIN fin_factuur f_run
ON x.mld_opdr_key = f_run.mld_opdr_key AND f_run.fin_factuur_verwijder IS NULL
WHERE f_cnt.mld_opdr_key IS NULL
OR COALESCE (f_run.fin_factuur_statuses_key, 2) = 2 -- Ingevoerd
UNION ALL -- Offerteopdrachten
SELECT NULL periode,
x.kostensoort,
x.kostenplaats,
'EUR' element3,
--DECODE (x.kostenplaats, '2216', 'Variabel', 'Eindgebruiker') element4,
'BE' element4, -- BE voor BE
DECODE (
COALESCE (f.aantal, 0),
0, -- Nog geen factuur ontvangen
DECODE (SIGN (COALESCE (x.mld_opdr_kosten, 0)),
-1, TO_NUMBER (NULL),
COALESCE (x.mld_opdr_kosten, 0)),
DECODE (
SIGN(COALESCE (x.mld_opdr_kosten, 0) - COALESCE (debet.tot_incl_btw, 0) - COALESCE (credit.tot_incl_btw, 0)),
-1, TO_NUMBER (NULL),
COALESCE (x.mld_opdr_kosten, 0) - COALESCE (debet.tot_incl_btw, 0) - COALESCE (credit.tot_incl_btw, 0)))
bedrag_debet,
DECODE (
COALESCE (f.aantal, 0),
0, -- Nog geen factuur ontvangen
DECODE (SIGN (COALESCE (x.mld_opdr_kosten, 0)),
-1, -1 * COALESCE (x.mld_opdr_kosten, 0),
TO_NUMBER (NULL)),
DECODE (
SIGN(COALESCE (x.mld_opdr_kosten, 0) - COALESCE (debet.tot_incl_btw, 0) - COALESCE (credit.tot_incl_btw, 0)),
-1, -1 * (COALESCE (x.mld_opdr_kosten, 0) - COALESCE (debet.tot_incl_btw, 0) - COALESCE (credit.tot_incl_btw, 0)),
TO_NUMBER (NULL)))
bedrag_credit,
--COALESCE (ksgm.prs_kostensoortgrp_oms, ksgv.prs_kostensoortgrp_oms, 'ONGEDEFINEERD')
x.ins_srtdiscipline_prefix || '-' || x.mld_stdmelding_omschrijving omschrijving,
x.ins_srtdiscipline_prefix || TO_CHAR (x.mld_melding_key) || '/' || TO_CHAR (x.mld_opdr_bedrijfopdr_volgnr) verplichtingnummer,
x.prs_bedrijf_naam leverancier,
x.prs_leverancier_nr leveranciersnummer,
GREATEST (debet.fin_factuur_nr, credit.fin_factuur_nr) factuurnummer,
--DECODE (x.vlkc, '41', 'VL', '42', 'KC', NULL) vlkc,
NULL vlkc, -- NULL voor BE
'Offerteopdracht' opdrachttype,
DECODE (x.inv, '1', 'Ja', 'Nee') investering,
x.mld_opdr_einddatum,
x.alg_locatie_code locatie
FROM (SELECT o.mld_opdr_key,
o.mld_melding_key,
o.mld_opdr_bedrijfopdr_volgnr,
COALESCE (ksgo.prs_kostensoortgrp_altcode, ksgm.prs_kostensoortgrp_altcode, ksgv.prs_kostensoortgrp_altcode, NULL) kostensoort,
kp.prs_kostenplaats_nr kostenplaats,
o.mld_opdr_kosten,
sd.ins_srtdiscipline_prefix,
sm.mld_stdmelding_omschrijving,
lev.prs_bedrijf_naam,
lev.prs_leverancier_nr,
vlkc.mld_kenmerkopdr_waarde vlkc,
o.mld_typeopdr_key,
inv.mld_kenmerkopdr_waarde inv,
o.mld_opdr_einddatum,
l.alg_locatie_code
FROM mld_opdr o,
mld_melding m,
mld_stdmelding sm,
prs_kostensoort ksm,
prs_kostensoortgrp ksgm,
prs_kostensoort kso,
prs_kostensoortgrp ksgo,
ins_tab_discipline td,
prs_kostensoort ksv,
prs_kostensoortgrp ksgv,
ins_srtdiscipline sd,
prs_kostenplaats kp,
prs_bedrijf lev,
(SELECT *
FROM mld_v_aanwezigkenmerkopdr ko
WHERE EXISTS
(SELECT 1
FROM mld_kenmerk
WHERE mld_kenmerk_key = ko.mld_kenmerk_key
AND mld_srtkenmerk_key = 81)) vlkc, -- Factuur/offerte naar
(SELECT *
FROM mld_v_aanwezigkenmerkopdr ko
WHERE EXISTS
(SELECT 1
FROM mld_kenmerk
WHERE mld_kenmerk_key = ko.mld_kenmerk_key
AND mld_srtkenmerk_key = 181)) inv, -- Investeringsopdracht
alg_locatie l
WHERE o.mld_typeopdr_key = 283 -- Offerteopdracht
AND o.mld_statusopdr_key NOT IN (1, 2, 3, 10) -- Afgewezen/Niet akkoord/Ter fiattering/Ter goedkeuring
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
AND ksm.prs_kostensoortgrp_key = ksgm.prs_kostensoortgrp_key(+)
AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+)
AND kso.prs_kostensoortgrp_key = ksgo.prs_kostensoortgrp_key(+)
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND td.prs_kostensoort_key = ksv.prs_kostensoort_key(+)
AND ksv.prs_kostensoortgrp_key = ksgv.prs_kostensoortgrp_key(+)
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key IN (41, 42, 43, 44, 45) -- BE-vakgroeptypen
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND o.mld_uitvoerende_keys = lev.prs_bedrijf_key
AND o.mld_opdr_key = vlkc.mld_opdr_key(+)
AND o.mld_opdr_key = inv.mld_opdr_key(+)
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND NOT EXISTS -- Geen Offerteopdrachten met Reden "0-order"!
(SELECT 1
FROM mld_v_aanwezigkenmerkopdr
WHERE mld_kenmerk_key = 1101 -- Reden "0-order"
AND mld_opdr_key = o.mld_opdr_key)) x
LEFT JOIN ( SELECT mld_opdr_key, COUNT ( * ) aantal
FROM fin_factuur
WHERE mld_opdr_key IS NOT NULL AND fin_factuur_verwijder IS NULL
GROUP BY mld_opdr_key) f
ON x.mld_opdr_key = f.mld_opdr_key
LEFT JOIN ( SELECT mld_opdr_key, COUNT ( * ) aantal, MAX (fin_factuur_nr) fin_factuur_nr,
SUM (fin_factuur_totaal + fin_factuur_totaal_btw) tot_incl_btw
FROM fin_factuur
WHERE mld_opdr_key IS NOT NULL
AND fin_factuur_statuses_key IN (6, 7)
AND (fin_factuur_totaal + fin_factuur_totaal_btw) >= 0
GROUP BY mld_opdr_key) debet
ON x.mld_opdr_key = debet.mld_opdr_key
LEFT JOIN ( SELECT mld_opdr_key, COUNT ( * ) aantal, MAX (fin_factuur_nr) fin_factuur_nr,
SUM (fin_factuur_totaal + fin_factuur_totaal_btw) tot_incl_btw
FROM fin_factuur
WHERE mld_opdr_key IS NOT NULL
AND fin_factuur_statuses_key IN (6, 7)
AND (fin_factuur_totaal + fin_factuur_totaal_btw) < 0
GROUP BY mld_opdr_key) credit
ON x.mld_opdr_key = credit.mld_opdr_key
WHERE ROUND (COALESCE (x.mld_opdr_kosten, 0), 2) != ROUND (COALESCE (debet.tot_incl_btw, 0) + COALESCE (credit.tot_incl_btw, 0), 2);
--CREATE OR REPLACE VIEW vlkc_v_rap_cnt_verantw_be
-- VLKC#40302: Export van import-bestand met de kolommen:
-- '%Personeelsnummer;Loginnaam;Achternaam;Tussenvoegsel;Voorletters;Voornaam;Afdelingscode;Functie;Email;Telefoonnr;Mobiel;Stamplaats%');
/* Formatted on 31-5-2017 11:35:05 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW vlkc_v_rap_import_prs
(
personeelsnummer,
loginnaam,
achternaam,
tussenvoegsel,
voorletters,
voornaam,
afdelingscode,
functie,
email,
telefoonnr,
mobiel,
stamplaats
)
AS
SELECT p.prs_perslid_nr,
p.prs_perslid_oslogin,
p.prs_perslid_naam,
p.prs_perslid_tussenvoegsel,
p.prs_perslid_voorletters,
p.prs_perslid_voornaam,
a.prs_afdeling_naam,
sp.prs_srtperslid_omschrijving,
p.prs_perslid_email,
p.prs_perslid_telefoonnr,
p.prs_perslid_mobiel,
NULL standplaats
FROM prs_v_aanwezigperslid p,
prs_v_afdeling_boom ab,
prs_afdeling a,
prs_kostenplaats kp,
prs_srtperslid sp
WHERE p.prs_perslid_nr IS NOT NULL
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND p.prs_srtperslid_key = sp.prs_srtperslid_key;
-- VLKC#60657: Rapportage met RT-objecten die 4 werkdagen "overdue" zijn en
-- waarvoor het bedrijf *uniek* kan worden bepaald op basis van de
-- dienst zoals geregistreerd bij de taak.
CREATE OR REPLACE VIEW vlkc_v_rap_inspectieobjecten
(
extra_key, -- Moet zo heten!
prs_dienst_key,
alg_locatie_key,
ins_srtcontrole_key,
ins_srtcontrole_omschrijving,
plandatum,
groep,
objectsoort,
bedrijf,
locatiecode,
ins_deel_key,
identificatie,
beschrijving,
registratiedatum
)
AS
SELECT bdl.prs_bedrijf_key,
bdl.prs_dienst_key,
bdl.alg_locatie_key,
din.ins_srtcontrole_key,
din.ins_srtcontrole_omschrijving,
din.inspectie_next,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_omschrijving,
b.prs_bedrijf_naam,
l.alg_locatie_code,
d.ins_deel_key,
d.ins_deel_omschrijving,
d.ins_deel_opmerking,
d.ins_deel_aanmaak
FROM ins_v_aanwezigdeel d,
ins_srtdeel sd,
ins_srtgroep sg,
(SELECT ins_deel_key, inspectie_next, ins_srtcontrole_key, ins_srtcontrole_omschrijving
FROM (WITH defined_inspect
AS (SELECT d.ins_deel_key, d.ins_deel_aanmaak, sc.*
FROM ins_deel d, ins_srtdeel sd, ins_srtcontrole sc
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND (sc.ins_srtcontrole_niveau = 'S' AND sc.ins_srtinstallatie_key = d.ins_srtdeel_key
OR sc.ins_srtcontrole_niveau = 'G' AND sc.ins_srtinstallatie_key = sd.ins_srtgroep_key
OR sc.ins_srtcontrole_niveau = 'D' AND sc.ins_srtinstallatie_key = d.ins_discipline_key))
SELECT 1 rn, -- NOG GEEN INSPECTIES GEWEEST!
di.ins_deel_key,
fac.nextcyclusdate (
di.ins_deel_aanmaak,
di.ins_srtcontrole_mode,
COALESCE (xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid),
COALESCE (xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode),
COALESCE (xcp.ins_srtcontroledl_xcp_bits, di.ins_srtcontrole_bits),
1)
inspectie_next,
di.ins_srtcontrole_key,
di.ins_srtcontrole_omschrijving
FROM defined_inspect di, ins_srtcontroledl_xcp xcp
WHERE (di.ins_deel_key, di.ins_srtcontrole_key) NOT IN
(SELECT ins_deel_key, ins_srtcontrole_key
FROM ins_deelsrtcontrole
WHERE ins_deelsrtcontrole_status IN (5, 6))
AND di.ins_deel_key = xcp.ins_deel_key(+)
AND di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)
AND (xcp.ins_srtcontroledl_xcp_eind(+) IS NULL OR xcp.ins_srtcontroledl_xcp_eind(+) > TRUNC (SYSDATE))
UNION ALL
SELECT RANK ()
OVER (
PARTITION BY di.ins_deel_key, dsc.ins_srtcontrole_key
ORDER BY dsc.ins_deelsrtcontrole_datum DESC)
rn,
di.ins_deel_key,
fac.nextcyclusdate (
CASE
WHEN di.ins_srtcontrole_mode = 0
THEN dsc.ins_deelsrtcontrole_datum_org
ELSE dsc.ins_deelsrtcontrole_datum
END,
di.ins_srtcontrole_mode,
COALESCE (xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid),
COALESCE (xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode),
COALESCE (xcp.ins_srtcontroledl_xcp_bits, di.ins_srtcontrole_bits),
1)
inspectie_next,
di.ins_srtcontrole_key,
di.ins_srtcontrole_omschrijving
FROM ins_deelsrtcontrole dsc, defined_inspect di, ins_srtcontroledl_xcp xcp
WHERE dsc.ins_deelsrtcontrole_status IN (5, 6)
AND di.ins_deel_key = dsc.ins_deel_key
AND di.ins_srtcontrole_key = dsc.ins_srtcontrole_key
AND di.ins_deel_key = xcp.ins_deel_key(+)
AND di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)
AND (xcp.ins_srtcontroledl_xcp_eind(+) IS NULL OR xcp.ins_srtcontroledl_xcp_eind(+) > TRUNC (SYSDATE))
ORDER BY inspectie_next)
WHERE rn = 1) din,
ins_srtcontrole sc,
( SELECT prs_dienst_key, alg_locatie_key, MIN (prs_bedrijf_key) prs_bedrijf_key, COUNT (DISTINCT prs_bedrijf_key) aantal
FROM (SELECT prs_bedrijf_key, prs_dienst_key, alg_locatie_key
FROM prs_bedrijfdienstlocatie
WHERE alg_locatie_key IS NOT NULL
UNION ALL
SELECT bdl.prs_bedrijf_key, bdl.prs_dienst_key, g.alg_locatie_key
FROM prs_bedrijfdienstlocatie bdl, alg_gebouw g
WHERE bdl.alg_gebouw_key = g.alg_gebouw_key
UNION ALL
SELECT bdl.prs_bedrijf_key, bdl.prs_dienst_key, l.alg_locatie_key
FROM prs_bedrijfdienstlocatie bdl, alg_locatie l
WHERE bdl.alg_locatie_key IS NULL AND bdl.alg_gebouw_key IS NULL)
GROUP BY prs_dienst_key, alg_locatie_key) bdl,
alg_locatie l,
prs_bedrijf b
WHERE d.ins_deel_module = 'INS'
AND d.ins_deel_parent_key IS NULL
AND (d.ins_deel_vervaldatum IS NULL OR FAC.count_work_days (d.ins_deel_vervaldatum, SYSDATE) > 4) -- Niet vervallen of pas na volgende inspectie!
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND d.ins_deel_key = din.ins_deel_key
AND din.ins_srtcontrole_key = sc.ins_srtcontrole_key
AND sc.prs_dienst_key = bdl.prs_dienst_key
AND bdl.alg_locatie_key = d.ins_alg_locatie_key
AND d.ins_alg_locatie_key = l.alg_locatie_key
AND bdl.prs_bedrijf_key = b.prs_bedrijf_key
AND bdl.aantal = 1 -- *unieke* bedrijf-dienst-locatie voor inspectie
AND FAC.count_work_days (din.inspectie_next, SYSDATE) = 4
AND TO_CHAR (SYSDATE, 'd') BETWEEN '2' AND '6';
-- Dummy export NACHTWERK!
-- VLKC#59969: Per december 2019 automatisch afmelden/verwerken reserveringen.
CREATE OR REPLACE PROCEDURE vlkc_select_nachtwerk (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
-- Cursor loopt over alle bestelopdracht-items met status 'In bestelling';
-- deze worden verondersteld te zijn geleverd na 'leverdagen'+'notidagen'!
CURSOR cboi
IS
SELECT DISTINCT bo.bes_bestelopdr_key
FROM bes_bestelopdr bo,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
bes_bestelling b,
bes_srtdeel sd,
bes_srtgroep sg,
bes_disc_params bdp
WHERE bo.bes_bestelopdr_status = 4 -- In bestelling
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND bi.bes_bestelling_key = b.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 = -1
AND sg.ins_discipline_key = bdp.bes_ins_discipline_key
AND bdp.bes_disc_params_noti_dagen IS NOT NULL
AND (b.bes_bestelling_datum IS NULL OR fac.datumtijdplusuitvoertijd (b.bes_bestelling_leverdatum, bdp.bes_disc_params_noti_dagen, 'DAGEN') < SYSDATE)
ORDER BY 1;
-- Cursor loopt over alle bestelling-items met status 'Besteld' waarvan
-- de bijbehorende bestelopdracht-items zijn geleverd; deze worden dan ook
-- gesloten!
CURSOR cbi
IS
SELECT DISTINCT
'[' || TO_CHAR (b.bes_bestelling_key) || '|' || TO_CHAR (ud.fac_usrdata_key) || '] ' aanduiding,
b.bes_bestelling_key, ud.fac_usrdata_key, b.prs_perslid_key_voor
FROM bes_bestelling b,
bes_bestelling_item bi,
bes_bestelopdr_item boi,
bes_srtdeel sd,
bes_srtgroep sg,
(SELECT *
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 481) ud -- BESOTV catalogi
WHERE b.bes_bestelling_status = 5 -- Besteld
AND b.bes_bestelling_key = bi.bes_bestelling_key
--AND bi.bes_bestelling_item_aantal != COALESCE (bi.bes_bestelling_item_aantalontv, 0)
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND boi.bes_bestelopdr_item_aantal = boi.bes_bestelopdr_item_aantalontv
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key(+)
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key(+)
AND sg.ins_discipline_key = fac.safe_to_number (ud.fac_usrdata_code(+))
ORDER BY 1;
/*
-- VLKC#60069:
-- Cursor loopt over alle BESOTV-tracking in de voorgaande 24 uur waarvan
-- de bijbehorende catalogus voorkomt in de Eigen tabel met key=481; voor
-- deze bestellingen wordt een CUST03-noti verstuurd!
CURSOR ccust03
IS
SELECT DISTINCT
'[' || TO_CHAR (b.bes_bestelling_key) || '|' || TO_CHAR (ud.fac_usrdata_key) || '] ' aanduiding,
b.bes_bestelling_key, ud.fac_usrdata_key, b.prs_perslid_key_voor
FROM fac_tracking t,
bes_bestelling b,
bes_bestelling_item bi,
bes_srtdeel sd,
bes_srtgroep sg,
(SELECT *
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 481) ud -- BESOTV catalogi
WHERE t.fac_srtnotificatiecode = 8 -- BESOTV
AND t.fac_tracking_datum > TRUNC (SYSDATE) + (6 / 24)
AND t.fac_tracking_refkey = b.bes_bestelling_key
AND b.bes_bestelling_status = 6 -- Geleverd
AND 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 = fac.safe_to_number (ud.fac_usrdata_code);
*/
-- Afmelden/verwerken reserveringen (in juiste volgorde)!
-- VLKC#61687: Per april 2020 niet meer verwerken (alleen nog afmelden)!
CURSOR cres
IS
SELECT '[' || TO_CHAR (rra.res_rsv_ruimte_key) || '|' || TO_CHAR (rra.res_rsv_artikel_key) || '] ' aanduiding,
rra.res_rsv_ruimte_key,
rra.res_rsv_artikel_key,
NULL res_rsv_deel_key,
rra.res_status_bo_key,
rra.res_artikel_key,
TO_CHAR (rra.res_rsv_artikel_levering, 'yyyy') jaar
FROM res_v_aanwezigrsv_artikel rra
WHERE rra.res_status_bo_key = 2 --!= 6
--AND rra.res_rsv_artikel_levering > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
AND rra.res_rsv_artikel_levering < TRUNC (SYSDATE, 'mm')
AND rra.res_rsv_artikel_dirtlevel = 0
UNION ALL
SELECT '[' || TO_CHAR (rrd.res_rsv_ruimte_key) || '|' || TO_CHAR (rrd.res_rsv_deel_key) || '] ' aanduiding,
rrd.res_rsv_ruimte_key,
NULL res_rsv_artikel_key,
rrd.res_rsv_deel_key,
rrd.res_status_bo_key,
NULL res_artikel_key,
TO_CHAR (rrd.res_rsv_deel_tot, 'yyyy') jaar
FROM res_v_aanwezigrsv_deel rrd
WHERE rrd.res_status_bo_key = 2 --!= 6
--AND rrd.res_rsv_deel_van > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
AND rrd.res_rsv_deel_tot < TRUNC (SYSDATE, 'mm')
AND rrd.res_rsv_deel_dirtlevel = 0
AND rrd.res_rsv_ruimte_key IS NOT NULL -- Geen parkeerplaatsen bij niet reservering-gebonden afspraken?
UNION ALL
SELECT '[' || TO_CHAR (rrr.res_rsv_ruimte_key) || '] ' aanduiding,
rrr.res_rsv_ruimte_key,
NULL res_rsv_artdeel_key,
NULL res_rsv_deel_key,
rrr.res_status_bo_key,
NULL res_artikel_key,
TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy') jaar
FROM res_v_aanwezigrsv_ruimte rrr
WHERE rrr.res_status_bo_key = 2 --!= 6/Dit sluit "roomservice" al uit?
--AND rrr.res_rsv_ruimte_van > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
AND rrr.res_rsv_ruimte_tot < TRUNC (SYSDATE, 'mm')
AND rrr.res_rsv_ruimte_dirtlevel = 0
AND rrr.res_ruimte_opstel_key IS NOT NULL -- Geen "roomservice"
ORDER BY 2, 3;
-- VLKC#60657: Cursor loopt over rapportage met RT-objecten die 4 werkdagen
-- "overdue" zijn; hiervoor wordt een bundelnotificatie
-- verstuurd via het Noti-kanaal (en anders het Geen/Overige
-- opdrachten-kanaal) van het *uniek* bepaalde bedrijf op basis
-- van de dienst zoals geregistreerd bij de taak.
/*
CURSOR ccust02
IS
SELECT DISTINCT
--'[' || TO_CHAR (v.bedrijf) || '|' || TO_CHAR (v.locatiecode) || '|' || v.ins_srtcontrole_omschrijving || '] ' aanduiding,
--sn.fac_srtnotificatie_key, v.extra_key, v.alg_locatie_key, v.ins_srtcontrole_key, v.ins_srtcontrole_omschrijving, v.bedrijf,
'[' || TO_CHAR (v.extra_key) || '] ' aanduiding,
sn.fac_srtnotificatie_key, v.extra_key,
REPLACE (
REPLACE (
sn.fac_srtnotificatie_oms,
'##SRTDEEL##',
DECODE (
v.objectsoort_min,
v.objectsoort_max, v.objectsoort_min, -- || DECODE (v.aantal, 1, '/' || v.ins_srtcontrole_omschrijving, ''),
v.objectsoort_min || ', ...')),
'##AANTAL##',
v.aantal)
subject,
r.fac_usrrap_key,
TRIM (COALESCE (ba.url1, ba.url2)) receiver
FROM ( SELECT extra_key, --alg_locatie_key, ins_srtcontrole_key, ins_srtcontrole_omschrijving, bedrijf, locatiecode,
MIN (objectsoort) objectsoort_min,
MAX (objectsoort) objectsoort_max,
COUNT (*) aantal
FROM vlkc_v_rap_inspectieobjecten
GROUP BY extra_key) v, --, alg_locatie_key, ins_srtcontrole_key, ins_srtcontrole_omschrijving, bedrijf, locatiecode) v,
(SELECT x.prs_bedrijf_key, x.alg_locatie_key,
SUBSTR (ba1.prs_bedrijfadres_url, 8) url1,
SUBSTR (ba2.prs_bedrijfadres_url, 8) url2
FROM (SELECT b.prs_bedrijf_key, l.alg_locatie_key
FROM prs_v_aanwezigbedrijf b, alg_v_aanweziglocatie l
WHERE 1=1) x --b.prs_bedrijf_uitvoerende = 1) x
LEFT JOIN (SELECT prs_bedrijf_key, --alg_locatie_key,
prs_bedrijfadres_url
FROM prs_bedrijfadres
WHERE prs_bedrijfadres_type = 'N'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND alg_locatie_key IS NOT NULL
UNION ALL
SELECT ba.prs_bedrijf_key, --l.alg_locatie_key,
ba.prs_bedrijfadres_url
FROM prs_bedrijfadres ba, alg_locatie l
WHERE ba.prs_bedrijfadres_type = 'N'
AND UPPER (ba.prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND ba.alg_locatie_key IS NULL
AND ba.alg_district_key = l.alg_district_key
AND NOT EXISTS
(SELECT 1
FROM prs_bedrijfadres
WHERE prs_bedrijfadres_type = 'N'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND prs_bedrijf_key = ba.prs_bedrijf_key
AND alg_locatie_key = l.alg_locatie_key)
UNION ALL
SELECT ba.prs_bedrijf_key, --l.alg_locatie_key,
ba.prs_bedrijfadres_url
FROM prs_bedrijfadres ba, alg_locatie l
WHERE ba.prs_bedrijfadres_type = 'N'
AND UPPER (ba.prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND ba.alg_locatie_key IS NULL
AND ba.alg_district_key IS NULL
AND NOT EXISTS
(SELECT 1
FROM prs_bedrijfadres
WHERE prs_bedrijfadres_type = 'N'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND prs_bedrijf_key = ba.prs_bedrijf_key
AND (alg_locatie_key = l.alg_locatie_key OR alg_district_key = l.alg_district_key))) ba1
ON x.prs_bedrijf_key = ba1.prs_bedrijf_key --AND x.alg_locatie_key = ba1.alg_locatie_key
LEFT JOIN (SELECT prs_bedrijf_key, --alg_locatie_key,
prs_bedrijfadres_url
FROM prs_bedrijfadres
WHERE mld_typeopdr_key IS NULL -- Overige opdrachten-kanaal
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND alg_locatie_key IS NOT NULL
UNION ALL
SELECT ba.prs_bedrijf_key, --l.alg_locatie_key,
ba.prs_bedrijfadres_url
FROM prs_bedrijfadres ba, alg_locatie l
WHERE ba.mld_typeopdr_key IS NULL -- Overige opdrachten-kanaal
AND ba.prs_bedrijfadres_type = 'O'
AND UPPER (ba.prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND ba.alg_locatie_key IS NULL
AND ba.alg_district_key = l.alg_district_key
AND NOT EXISTS
(SELECT 1
FROM prs_bedrijfadres
WHERE mld_typeopdr_key IS NULL
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND prs_bedrijf_key = ba.prs_bedrijf_key
AND alg_locatie_key = l.alg_locatie_key)
UNION ALL
SELECT ba.prs_bedrijf_key, --l.alg_locatie_key,
ba.prs_bedrijfadres_url
FROM prs_bedrijfadres ba, alg_locatie l
WHERE ba.mld_typeopdr_key IS NULL -- Overige opdrachten-kanaal
AND ba.prs_bedrijfadres_type = 'O'
AND UPPER (ba.prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND ba.alg_locatie_key IS NULL
AND ba.alg_district_key IS NULL
AND NOT EXISTS
(SELECT 1
FROM prs_bedrijfadres
WHERE mld_typeopdr_key IS NULL
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND prs_bedrijf_key = ba.prs_bedrijf_key
AND (alg_locatie_key = l.alg_locatie_key OR alg_district_key = l.alg_district_key))) ba2
ON x.prs_bedrijf_key = ba2.prs_bedrijf_key --AND x.alg_locatie_key = ba2.alg_locatie_key
WHERE ba1.prs_bedrijfadres_url IS NOT NULL OR ba2.prs_bedrijfadres_url IS NOT NULL) ba,
fac_usrrap r,
fac_srtnotificatie sn
WHERE v.extra_key = ba.prs_bedrijf_key
AND v.alg_locatie_key = ba.alg_locatie_key
AND UPPER (r.fac_usrrap_view_name) = 'VLKC_V_RAP_INSPECTIEOBJECTEN'
AND sn.fac_srtnotificatie_code = 'CUST02';
*/
CURSOR ccust02
IS
SELECT '[' || TRIM (COALESCE (ba.url1, ba.url2)) || '] ' aanduiding,
sn.fac_srtnotificatie_key,
v.extra_key,
REPLACE (
REPLACE (
sn.fac_srtnotificatie_oms,
'##SRTDEEL##',
DECODE (
v.objectsoort_min,
v.objectsoort_max, v.objectsoort_min,
v.objectsoort_min || ', ...')),
'##AANTAL##',
v.aantal)
subject,
r.fac_usrrap_key,
TRIM (COALESCE (ba.url1, ba.url2)) receiver
FROM ( SELECT extra_key, MIN (objectsoort) objectsoort_min, MAX (objectsoort) objectsoort_max, COUNT (*) aantal
FROM vlkc_v_rap_inspectieobjecten
GROUP BY extra_key) v,
(SELECT x.prs_bedrijf_key, SUBSTR (ba1.prs_bedrijfadres_url, 8) url1, SUBSTR (ba2.prs_bedrijfadres_url, 8) url2
FROM (SELECT prs_bedrijf_key
FROM prs_v_aanwezigbedrijf
WHERE 1=1) x --b.prs_bedrijf_uitvoerende = 1) x
LEFT JOIN (SELECT DISTINCT prs_bedrijf_key, prs_bedrijfadres_url
FROM prs_bedrijfadres
WHERE prs_bedrijfadres_type = 'N'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%') ba1
ON x.prs_bedrijf_key = ba1.prs_bedrijf_key
LEFT JOIN (SELECT DISTINCT prs_bedrijf_key, prs_bedrijfadres_url
FROM prs_bedrijfadres
WHERE mld_typeopdr_key IS NULL -- Overige opdrachten-kanaal
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%') ba2
ON x.prs_bedrijf_key = ba2.prs_bedrijf_key
WHERE ba1.prs_bedrijfadres_url IS NOT NULL OR ba2.prs_bedrijfadres_url IS NOT NULL) ba,
fac_usrrap r,
fac_srtnotificatie sn
WHERE v.extra_key = ba.prs_bedrijf_key
AND UPPER (r.fac_usrrap_view_name) = 'VLKC_V_RAP_INSPECTIEOBJECTEN'
AND sn.fac_srtnotificatie_code = 'CUST02'
ORDER BY 3;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_holiday NUMBER (10);
v_old_rsv_ruimte_key NUMBER (10);
v_prijs NUMBER (9, 2);
BEGIN
v_errormsg := 'Fout leveren bestelopdracht';
FOR rec IN cboi
LOOP
-- Zeg dat alles geleverd is wat besteld is.
UPDATE bes_bestelopdr_item
SET bes_bestelopdr_item_aantalontv = bes_bestelopdr_item_aantal
WHERE bes_bestelopdr_key = rec.bes_bestelopdr_key;
bes.updatebestelopdrstatus (rec.bes_bestelopdr_key, NULL);
END LOOP;
v_errormsg := 'Fout sluiten bestelaanvraag';
FOR rec IN cbi
LOOP
-- Sluit alle aanvraagregels af die nu geheel geleverd zijn.
UPDATE bes_bestelling_item
SET bes_bestelling_item_aantalontv = bes_bestelling_item_aantal
WHERE bes_bestelling_key = rec.bes_bestelling_key;
bes.updatebestellingstatus (rec.bes_bestelling_key, NULL);
-- VLKC#60069: CUST03-noti!
IF rec.fac_usrdata_key IS NOT NULL
THEN
BEGIN
v_errormsg := 'Fout toevoegen CUST03-email';
fac.putnotificationsrtprio (NULL, -- pfrom
rec.prs_perslid_key_voor, -- pto
'CUST03', -- pcode
rec.bes_bestelling_key, -- pref
NULL, -- poptmessage
NULL, -- poptstatus
NULL, -- poptemail
NULL, -- poptmobile
NULL, -- pxref
NULL, -- pprio
NULL, -- psender
NULL -- pattach
);
v_errormsg := 'Fout toevoegen CUST03-track';
fac.trackaction ('CUST03', rec.bes_bestelling_key, NULL, NULL, NULL);
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.writelog (p_applname, 'E', rec.aanduiding || v_errormsg, 'CUST03-noti');
COMMIT;
END;
END IF;
END LOOP;
COMMIT;
/*
-- VLKC#60069: CUST03-noti!
FOR rec IN ccust03
LOOP
BEGIN
v_errormsg := 'Fout toevoegen CUST03-email';
fac.putnotificationsrtprio (NULL, -- pfrom
rec.prs_perslid_key_voor, -- pto
'CUST03', -- pcode
rec.bes_bestelling_key, -- pref
NULL, -- poptmessage
NULL, -- poptstatus
NULL, -- poptemail
NULL, -- poptmobile
NULL, -- pxref
NULL, -- pprio
NULL, -- psender
NULL -- pattach
);
v_errormsg := 'Fout toevoegen CUST03-track';
fac.trackaction ('CUST03', rec.bes_bestelling_key, NULL, NULL, NULL);
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.writelog (p_applname, 'E', rec.aanduiding || v_errormsg, 'CUST03-noti');
COMMIT;
END;
END LOOP;
COMMIT;
*/
SELECT COUNT ( * )
INTO v_holiday
FROM mld_vrije_dagen
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1);
-- LET OP: De NACHTWERK-export draait dagelijks na 0:00 (begin van dag).
-- De RES-afmelding/verwerking wordt maandelijks alleen in nacht na 1e
-- werkdag van de maand uitgevoerd.
-- VLKC#61687: Per april 2020 niet meer verwerken (alleen nog afmelden)!
-- IF 1e werkdag van maand (<28>n<EFBFBD>geen weekend <20>n<EFBFBD>geen vrije dag)!
IF (FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 1 -- Nacht na 1e werkdag!
AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
AND v_holiday = 0)
THEN
v_old_rsv_ruimte_key := -1;
FOR rec IN cres
LOOP
BEGIN
IF v_old_rsv_ruimte_key = -1
THEN
v_old_rsv_ruimte_key := rec.res_rsv_ruimte_key;
ELSIF rec.res_rsv_ruimte_key != v_old_rsv_ruimte_key
THEN
COMMIT; -- Per res_rsv_ruimte_key 1x COMMIT
v_old_rsv_ruimte_key := rec.res_rsv_ruimte_key;
END IF;
IF rec.res_rsv_artikel_key IS NOT NULL
THEN -- Verbruiksartikel-regel
IF rec.res_status_bo_key = 2 -- Per VLKC#61687 altijd zo!
THEN
v_errormsg := 'Fout bepalen res_rsv_artikel_prijs';
SELECT res.getartikelprijs (rec.res_rsv_artikel_key)
INTO v_prijs
FROM DUAL;
v_errormsg := 'Fout afmelden res_rsv_artikel';
UPDATE res_rsv_artikel
SET res_status_bo_key = 5,
res_rsv_artikel_prijs = v_prijs,
res_rsv_artikel_inkoopprijs =
(SELECT res_artikel_inkoopprijs
FROM res_artikel
WHERE res_artikel_key = rec.res_artikel_key),
res_rsv_artikel_btw =
(SELECT res_artikel_btw
FROM res_artikel
WHERE res_artikel_key = rec.res_artikel_key)
WHERE res_rsv_artikel_key = rec.res_rsv_artikel_key;
v_errormsg := 'Fout tracken afmelding';
fac.trackaction ('RESAFM', rec.res_rsv_ruimte_key, NULL, NULL, 'Catering afgemeld');
END IF;
/*
v_errormsg := 'Fout verwerken res_rsv_artikel';
UPDATE res_rsv_artikel
SET res_status_bo_key = 6 -- AV (en zet ook Verwerkt-date)
WHERE res_rsv_artikel_key = rec.res_rsv_artikel_key;
v_errormsg := 'Fout tracken verwerking';
fac.trackaction ('RESVER', rec.res_rsv_ruimte_key, NULL, NULL, 'Catering verwerkt');
*/
ELSIF rec.res_rsv_deel_key IS NOT NULL
THEN -- Voorziening-regel
IF rec.res_status_bo_key = 2 -- Per VLKC#61687 altijd zo!
THEN
v_errormsg := 'Fout bepalen res_rsv_artikel_prijs';
SELECT res.getdeelprijs (rec.res_rsv_deel_key)
INTO v_prijs
FROM DUAL;
v_errormsg := 'Fout afmelden res_rsv_deel';
UPDATE res_rsv_deel
SET res_status_bo_key = 5,
res_rsv_deel_prijs = v_prijs
WHERE res_rsv_deel_key = rec.res_rsv_deel_key;
v_errormsg := 'Fout tracken afmelding';
fac.trackaction ('RESAFM', rec.res_rsv_ruimte_key, NULL, NULL, 'Voorziening(en) afgemeld');
END IF;
/*
v_errormsg := 'Fout verwerken res_rsv_deel';
UPDATE res_rsv_deel
SET res_status_bo_key = 6 -- AV (en zet ook Verwerkt-date)
WHERE res_rsv_deel_key = rec.res_rsv_deel_key;
v_errormsg := 'Fout tracken verwerking';
fac.trackaction ('RESVER', rec.res_rsv_ruimte_key, NULL, NULL, 'Voorziening(en) verwerkt');
*/
ELSE -- Ruimte-regel
IF rec.res_status_bo_key = 2 -- Per VLKC#61687 altijd zo!
THEN
v_errormsg := 'Fout bepalen res_rsv_ruimte_prijs';
SELECT res.getruimteprijs (rec.res_rsv_ruimte_key)
INTO v_prijs
FROM DUAL;
v_errormsg := 'Fout afmelden res_rsv_ruimte';
UPDATE res_rsv_ruimte
SET res_status_bo_key = 5,
res_rsv_ruimte_prijs = v_prijs
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
v_errormsg := 'Fout tracken afmelding';
fac.trackaction ('RESAFM', rec.res_rsv_ruimte_key, NULL, NULL, NULL);
END IF;
/*
v_errormsg := 'Fout verwerken res_rsv_ruimte';
UPDATE res_rsv_ruimte
SET res_status_bo_key = 6 -- AV
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
v_errormsg := 'Fout tracken verwerking';
fac.trackaction ('RESVER', rec.res_rsv_ruimte_key, NULL, NULL, NULL);
*/
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.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, 'Afmelden/verwerken RES');
COMMIT;
END;
END LOOP;
END IF;
COMMIT;
-- VLKC#60657: CUST02-noti!
FOR rec IN ccust02
LOOP
BEGIN
v_errormsg := 'Fout toevoegen CUST02-email';
fac.putnotificationsrtprio (NULL, -- pfrom
NULL, -- pto
'CUST02', -- pcode
rec.fac_usrrap_key, -- pref
rec.subject, -- poptmessage
NULL, -- poptstatus
rec.receiver, -- poptemail
NULL, -- poptmobile
rec.extra_key, -- pxref
2, -- pprio
NULL, -- psender
NULL -- pattach
);
FOR rcd
IN ( SELECT ins_deel_key, bedrijf, ins_srtcontrole_omschrijving
FROM vlkc_v_rap_inspectieobjecten
WHERE extra_key = rec.extra_key
ORDER BY 1)
LOOP
BEGIN
v_errormsg := 'Fout toevoegen CUST02-track';
fac.trackaction ('INSUPD', rcd.ins_deel_key, NULL, NULL, 'CUST02-noti naar ' || rcd.bedrijf || ' [' || rcd.ins_srtcontrole_omschrijving || ']');
END;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', rec.aanduiding || v_errormsg, 'CUST02-noti');
COMMIT;
END;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', 'Proces NACHTWERK afgebroken!', v_errormsg);
END vlkc_select_nachtwerk;
/
-- view tbv kenmerkdomein
CREATE OR REPLACE VIEW vlkc_v_alg_gebouw
(
alg_gebouw_key,
alg_gebouw_omschrijving,
alg_gebouw_verw
)
AS
SELECT g.alg_gebouw_key,
g.alg_gebouw_omschrijving,
DECODE (d.alg_regio_key,
21, fac.safe_to_date ('01-10-2025', 'dd-mm-yyyy'), -- Belgi<67>
COALESCE (g.alg_gebouw_verwijder, g.alg_gebouw_vervaldatum)) alg_gebouw_verw
FROM alg_gebouw g, alg_locatie l, alg_district d
WHERE g.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key;
CREATE OR REPLACE VIEW vlkc_v_alg_gebouw_be
(
alg_gebouw_key,
alg_gebouw_omschrijving,
alg_gebouw_verw
)
AS
SELECT g.alg_gebouw_key,
g.alg_gebouw_omschrijving,
COALESCE (g.alg_gebouw_verwijder, g.alg_gebouw_vervaldatum) alg_gebouw_verw
FROM alg_gebouw g
WHERE EXISTS
(SELECT 1
FROM alg_locatie l, alg_district d
WHERE l.alg_district_key = d.alg_district_key
AND d.alg_regio_key = 21 -- Belgi<67>
AND l.alg_locatie_key = g.alg_locatie_key);
-- view tbv kenmerkdomein
CREATE OR REPLACE VIEW vlkc_v_prs_dienst
(
prs_dienst_key,
prs_dienst_omschrijving
)
AS
SELECT prs_dienst_key, prs_dienst_omschrijving FROM prs_dienst;
CREATE OR REPLACE VIEW vlkc_v_rap_keyvsfe
(
soort_gebruiker,
naam,
loginnaam,
laatste_login
)
AS
SELECT DECODE (key_user, 1, 'KEY', 'FE'),
pf.prs_perslid_naam_full,
oslogin,
prs_perslid_login
FROM (SELECT *
FROM (SELECT p.prs_perslid_key prs_key,
COALESCE (p.prs_perslid_oslogin,
p.prs_perslid_oslogin2)
oslogin,
1 login, -- 1=user heeft login + groep + rechten
DECODE (
SIGN(TRUNC(COALESCE (p.prs_perslid_login + 92,
SYSDATE - 1))
- TRUNC (SYSDATE)),
-1,
0,
1) -- 1=user heeft laatste 92 dagen ingelogd
recent_login
FROM prs_v_aanwezigperslid p
WHERE EXISTS -- op basis van login + groep + rechten
(SELECT 1
FROM fac_v_webgebruiker gg
WHERE gg.prs_perslid_key = p.prs_perslid_key)
AND NOT EXISTS -- FSN#36597: WEB_FACFAC-users niet meetellen!
(SELECT 1
FROM fac_v_webgebruiker gg, fac_functie f
WHERE gg.prs_perslid_key =
p.prs_perslid_key
AND gg.fac_functie_key =
f.fac_functie_key
AND fac_functie_code = 'WEB_FACFAC')
UNION ALL -- FSN#24029: Soms ook personen zonder login meetellen!
SELECT p.prs_perslid_key,
NULL oslogin,
1 login, -- 1=user telt mee, want allow_for_others!
0 recent_login -- geen login, dus nooit recent ingelogd
FROM prs_v_aanwezigperslid p
WHERE COALESCE (p.prs_perslid_oslogin,
p.prs_perslid_oslogin2) IS NULL
AND (fac.getsetting ('mld_allow_for_others') = 1
OR EXISTS
(SELECT 1
FROM bes_disc_params dp
WHERE dp.bes_disc_params_for_others = 1))
UNION ALL -- FSN#27315: En ook eventuele "sensorusers" meetellen!
SELECT NULL prs_perslid_key,
NULL oslogin,
COUNT ( * ) login, -- elke sensoruser telt mee als FE!
1 recent_login -- recent actief dus tellen als recent
FROM ins_v_aanwezigdeel d
WHERE ins_deel_statedate > TRUNC (SYSDATE - 30)) x
LEFT JOIN -- 1=user heeft rechten op key-codes=notFE-codes
(SELECT DISTINCT fclt_f_login, 1 key_user
FROM fac_v_rap_groeprechten gr, fac_functie f
WHERE gr.fclt_f_funcode = f.fac_functie_code
AND f.fac_functie_groep IN (1, 2)) a
ON x.oslogin = a.fclt_f_login
LEFT JOIN -- FSN#30404: 1=user is cross-domain (xd) user
(SELECT p.prs_perslid_key, 1 xd_user
FROM prs_v_aanwezigperslid p,
prs_v_afdeling_boom ab
WHERE p.prs_afdeling_key = ab.prs_afdeling_key
AND p.prs_perslid_apikey IS NOT NULL
AND ab.prs_bedrijf_key =
fac.safe_to_number(fac.getsetting('xd_primary_bedrijfkey')))
b
ON x.prs_key = b.prs_perslid_key) st,
prs_perslid p,
prs_v_perslid_fullnames pf
WHERE login = 1
AND p.prs_perslid_key = st.prs_key
AND pf.prs_perslid_key = p.prs_perslid_key;
CREATE OR REPLACE VIEW vlkc_v_rap_cnttrack
(
wijzig_datum,
wijziging,
gewijzigd_door,
cnt_contract_key,
contract_nummer,
contract_nummer_extern,
contract_versie,
contractsoort,
omschrijving,
ingangsdatum,
einddatum,
contractbedrag,
termijnkosten,
beheerder,
status,
bedrijf,
leveranciernr,
kostensoort
)
AS
SELECT fac_tracking_datum,
REPLACE (fac_tracking_oms, 'Contract gewijzigd' || CHR (10), '')
wijziging,
pf2.prs_perslid_naam_full gewijzigd_door,
cnt_contract_key,
COALESCE (cnt_contract_nummer_intern, TO_CHAR (cnt_contract_key))
contract_nummer,
cnt_contract_nummer,
cnt_contract_versie,
cd.ins_discipline_omschrijving,
cnt_contract_omschrijving,
cnt_contract_looptijd_van,
cnt_contract_looptijd_tot,
cnt_contract_kosten,
cnt_contract_termijnkosten,
pf.prs_perslid_naam_full beheerder,
cnt_contract_status,
b.prs_bedrijf_naam,
b.prs_leverancier_nr,
COALESCE (cks.prs_kostensoort_omschr, sks.prs_kostensoort_omschr)
kostensoort
FROM cnt_contract c,
fac_tracking ft,
fac_srtnotificatie sn,
prs_v_perslid_fullnames pf,
prs_v_perslid_fullnames pf2,
cnt_discipline cd,
prs_bedrijf b,
(SELECT prs_kostensoort_key,
prs_kostensoort_oms || '-' || prs_kostensoort_opmerking
prs_kostensoort_omschr
FROM prs_kostensoort) sks,
(SELECT prs_kostensoort_key,
prs_kostensoort_oms || '-' || prs_kostensoort_opmerking
prs_kostensoort_omschr
FROM prs_kostensoort) cks
WHERE cnt_contract_verwijder IS NULL
AND c.cnt_contract_key = ft.fac_tracking_refkey
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND fac_srtnotificatie_xmlnode = 'contract'
AND ( UPPER (fac_tracking_oms) LIKE '%TERMIJNBEDRAG%'
OR UPPER (fac_tracking_oms) LIKE '%INGANGSDATUM%'
OR UPPER (fac_tracking_oms) LIKE '%EINDDATUM%')
AND pf.prs_perslid_key = prs_perslid_key_beh
AND ft.prs_perslid_key = pf2.prs_perslid_key(+)
AND cd.ins_discipline_key = c.ins_discipline_key
AND b.prs_bedrijf_key(+) = cnt_prs_bedrijf_key
AND cd.prs_kostensoort_key = sks.prs_kostensoort_key(+)
AND c.prs_kostensoort_key = cks.prs_kostensoort_key(+);
-- VLKC#54894: Rapportage tbv. doorbelasting parkeerpassen!
CREATE OR REPLACE VIEW vlkc_v_rap_bez_parkeerpas
(
afspraakmaand,
afspraakdatum,
afspraakdatum_van,
afspraakdatum_tot,
afspraaknr, -- Niet gevraagd
parkeerpasnummer, -- 23-cijferig
contactpersoon, -- Niet gevraagd
gastheer, -- Niet gevraagd
bezoeker,
opmerking, -- Niet gevraagd
kostenplaats,
kostenplaats_bezoeker,
kostenplaats_gastheer,
locatie,
bez_afspraak_key
)
AS
SELECT TO_CHAR (x.bez_afspraak_datum, 'yyyy-mm') maand,
x.bez_afspraak_datum,
x.bez_afspraak_datum van,
x.bez_afspraak_eind tot,
TO_CHAR (x.bez_afspraak_key) afspraaknr,
pp.bez_kenmerkwaarde_waarde parkeerpasnummer,
x.contactpersoon,
x.gastheer,
x.bez_afspraak_naam,
x.bez_afspraak_opmerking,
COALESCE (kpb.prs_kostenplaats_nr, kph.prs_kostenplaats_nr) kp,
kpb.prs_kostenplaats_nr kp_bezoeker,
DECODE (pb.prs_perslid_key, NULL, kph.prs_kostenplaats_nr, NULL) kp_gastheer,
l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')',
x.bez_afspraak_key
FROM (SELECT a.bez_afspraak_key,
a.bez_afspraak_datum,
a.bez_afspraak_eind,
a.bez_afspraak_opmerking,
a.bez_afspraak_host_key,
a.alg_locatie_key,
b.bez_bezoekers_key,
b.bez_afspraak_naam,
b.prs_perslid_key,
pc.prs_perslid_naam_full contactpersoon,
ph.prs_perslid_naam_full gastheer
FROM bez_afspraak a,
bez_bezoekers b,
prs_v_perslid_fullnames_all pc,
prs_v_perslid_fullnames_all ph
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND a.bez_afspraak_contact_key = pc.prs_perslid_key
AND a.bez_afspraak_host_key = ph.prs_perslid_key) x
LEFT JOIN prs_perslid pb
ON x.prs_perslid_key = pb.prs_perslid_key
LEFT JOIN prs_afdeling ab
ON pb.prs_afdeling_key = ab.prs_afdeling_key
LEFT JOIN prs_kostenplaats kpb
ON ab.prs_kostenplaats_key = kpb.prs_kostenplaats_key
LEFT JOIN prs_perslid ph
ON x.bez_afspraak_host_key = ph.prs_perslid_key
LEFT JOIN prs_afdeling ah
ON ph.prs_afdeling_key = ah.prs_afdeling_key
LEFT JOIN prs_kostenplaats kph
ON ah.prs_kostenplaats_key = kph.prs_kostenplaats_key
LEFT JOIN bez_kenmerkwaarde pp
ON x.bez_bezoekers_key = pp.bez_bezoekers_key
AND pp.bez_kenmerkwaarde_verwijder IS NULL
AND pp.bez_kenmerk_key = 1040 -- Parkeerpas
LEFT JOIN alg_locatie l
ON x.alg_locatie_key = l.alg_locatie_key
WHERE x.bez_afspraak_datum > TO_DATE ('01-01-2019', 'dd-mm-yyyy')
AND x.bez_afspraak_datum > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
AND pp.bez_kenmerkwaarde_waarde IS NOT NULL;
-- VLKC#63904: Toevoegen voornaam (feitelijk alle naam-velden).
-- VLKC#80721: Toevoegen afdeling en kostenplaats.
CREATE OR REPLACE VIEW vlkc_v_rap_groepleden_plus
(
prs_perslid_key,
login,
gebruiker1,
gebruiker2,
voorletters,
voornaam,
tussenvoegel,
naam,
bedrijf_naam,
locatie_omschrijving,
locatie_code,
gebouw_omschrijving,
gebouw_code,
ruimte_aanduiding,
groep,
aantal_rechten,
afdeling,
--kostenplaats_code,
--kostenplaats_omschrijving
kostenplaats
)
AS
SELECT gr.prs_perslid_key,
p.prs_perslid_oslogin,
pf.prs_perslid_naam_full,
pf.prs_perslid_naam_friendly,
p.prs_perslid_voorletters,
p.prs_perslid_voornaam,
p.prs_perslid_tussenvoegsel,
p.prs_perslid_naam,
cp.prs_bedrijf_naam,
wp.alg_locatie_omschrijving,
wp.alg_locatie_code,
wp.alg_gebouw_omschrijving,
wp.alg_gebouw_code,
wp.alg_ruimte_aanduiding,
gr.fac_groep_omschrijving,
gr.aantal_rechten,
--a.prs_afdeling_naam,
--a.prs_afdeling_omschrijving,
a.prs_afdeling_naam || '-' || a.prs_afdeling_omschrijving afdeling,
--kp.prs_kostenplaats_nr,
--kp.prs_kostenplaats_omschrijving
DECODE (kp.prs_kostenplaats_key, NULL, NULL, kp.prs_kostenplaats_nr || '-' || kp.prs_kostenplaats_omschrijving) kostenplaats
FROM ( SELECT gg.prs_perslid_key,
g.fac_groep_omschrijving,
COUNT ( * ) aantal_rechten
FROM fac_gebruikersgroep gg, fac_groep g, fac_groeprechten gr
WHERE gg.fac_groep_key = g.fac_groep_key
AND g.fac_groep_key = gr.fac_groep_key
GROUP BY gg.prs_perslid_key,
g.fac_groep_omschrijving) gr,
(SELECT pw.prs_perslid_key,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
wpg.alg_gebouw_code,
wpg.alg_gebouw_omschrijving,
wpg.alg_ruimte_aanduiding
FROM prs_perslidwerkplek pw, prs_v_werkplek_gegevens wpg, alg_v_aanweziglocatie l
WHERE pw.prs_werkplek_key = wpg.prs_werkplek_key
AND wpg.alg_locatie_key = l.alg_locatie_key) wp,
(SELECT cp.prs_perslid_key,
b.prs_bedrijf_naam
FROM prs_contactpersoon cp, prs_v_aanwezigbedrijf b
WHERE cp.prs_contactpersoon_verwijder IS NULL
AND cp.prs_perslid_key IS NOT NULL
AND cp.prs_bedrijf_key = b.prs_bedrijf_key) cp,
prs_v_aanwezigperslid p,
prs_afdeling a,
prs_v_aanwezigkostenplaats kp,
prs_v_perslid_fullnames pf
WHERE gr.prs_perslid_key = cp.prs_perslid_key(+)
AND gr.prs_perslid_key = wp.prs_perslid_key(+)
AND gr.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND p.prs_perslid_key = pf.prs_perslid_key;
-- VLKC#56903: Rapportage factuurgoedkeuring
CREATE OR REPLACE VIEW vlkc_v_rap_factuurgoedkeuring
(
factuurdatum,
fin_factuur_key,
factuurnummer,
uitvoerende,
opdrachtnummer,
bedrag_excl_btw,
bedrag_incl_btw,
status,
verdeelperiode,
kostensoort_code,
kostensoort_oms,
goedgekeurd,
verwerkt
)
AS
SELECT f.fin_factuur_datum,
f.fin_factuur_key,
f.fin_factuur_nr,
(SELECT prs_bedrijf_naam
FROM prs_bedrijf
WHERE prs_bedrijf_key = COALESCE (o.mld_uitvoerende_keys, c.cnt_prs_bedrijf_key, bo.prs_bedrijf_key))
uitvoerende,
COALESCE (
NVL2 (f.mld_opdr_key, sd.ins_srtdiscipline_prefix || TO_CHAR (o.mld_melding_key) || '/' || o.mld_opdr_bedrijfopdr_volgnr, NULL),
NVL2 (f.cnt_contract_key, 'C' || c.cnt_contract_nummer_intern || NVL2 (c.cnt_contract_versie, '.' || c.cnt_contract_versie, ''), NULL),
NVL2 (f.bes_bestelopdr_key, bo.bes_bestelopdr_id, NULL),
NULL)
opdrachtnr,
f.fin_factuur_totaal bedrag_excl_btw,
f.fin_factuur_totaal + f.fin_factuur_totaal_btw bedrag_incl_btw,
fs.fin_factuur_statuses_omschr,
f.fin_factuur_boekmaand,
ks.prs_kostensoort_oms,
ks.prs_kostensoort_opmerking,
fac.gettrackingdate ('FINFOK', f.fin_factuur_key) goedgekeurd,
fac.gettrackingdate ('FINVER', f.fin_factuur_key) verwerkt
FROM fin_factuur f,
mld_opdr o,
mld_melding m,
mld_discipline d,
mld_stdmelding sm,
ins_srtdiscipline sd,
cnt_contract c,
cnt_discipline cd,
bes_bestelopdr bo,
fin_factuur_statuses fs,
prs_kostensoort ks
WHERE f.fin_factuur_datum > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
AND f.mld_opdr_key = o.mld_opdr_key(+)
AND o.mld_melding_key = m.mld_melding_key(+)
AND m.mld_stdmelding_key = sm.mld_stdmelding_key(+)
AND sm.mld_ins_discipline_key = d.ins_discipline_key(+)
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)
AND f.cnt_contract_key = c.cnt_contract_key(+)
AND c.ins_discipline_key = cd.ins_discipline_key(+)
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
AND f.fin_factuur_statuses_key = fs.fin_factuur_statuses_key(+)
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+);
-- VLKC#59966: Rapportage bestelopdrachtkosten (verplichting vs. gefactureerd).
CREATE OR REPLACE VIEW vlkc_v_rap_bes_kosten
(
catalogus,
leverancier,
opdrachtid,
status,
aangemaakt,
verzonden,
geleverd,
kostensoort_omschr,
kostensoort_vinkje,
kostenplaats_code,
kostenplaats_omschr,
verplichting,
verpl_minbtw,
verpl_maxbtw,
gefactureerd,
aantal_fact,
aanvrager,
bes_bestelopdr_key
)
AS
SELECT x.ins_discipline_omschrijving,
x.prs_bedrijf_naam,
x.bes_bestelopdr_id,
x.bes_bestelopdrstatuses_omschr status,
fac.gettrackingdate ('BES2NE', x.bes_bestelopdr_key) aangemaakt,
fac.gettrackingdate ('BES2SN', x.bes_bestelopdr_key) verzonden,
fac.gettrackingdate ('BES2AF', x.bes_bestelopdr_key) geleverd,
x.prs_kostensoort_oms,
x.prs_kostensoort_btw,
x.prs_kostenplaats_nr,
x.prs_kostenplaats_omschrijving,
-- ROUND (verplichting.kosten, 2) kosten,
ROUND (x.kosten, 2) kosten,
x.minbtw,
x.maxbtw,
gefactureerd.kosten,
gefactureerd.aantal,
(SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key = x.prs_perslid_key) aanvrager,
x.bes_bestelopdr_key
FROM ( SELECT bo.bes_bestelopdr_key,
bd.ins_discipline_omschrijving,
lev.prs_bedrijf_naam,
bo.bes_bestelopdr_id,
bos.bes_bestelopdrstatuses_omschr,
ks.prs_kostensoort_oms,
ks.prs_kostensoort_btw,
kp.prs_kostenplaats_nr,
kp.prs_kostenplaats_omschrijving,
b.prs_perslid_key,
SUM (DECODE (ks.prs_kostensoort_btw,
1, boi.bes_bestelopdr_item_aantal * boi.bes_bestelopdr_item_prijs,
boi.bes_bestelopdr_item_aantal * (boi.bes_bestelopdr_item_prijs / 100 * (100 + COALESCE (sd.bes_srtdeel_btw, 0))))) kosten,
MIN (COALESCE (sd.bes_srtdeel_btw, 0)) minbtw,
MAX (COALESCE (sd.bes_srtdeel_btw, 0)) maxbtw
FROM bes_bestelopdr bo,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
bes_bestelling b,
bes_srtdeel sd,
bes_srtgroep sg,
bes_discipline bd,
prs_kostensoort ks,
prs_kostenplaats kp,
prs_bedrijf lev,
bes_bestelopdrstatuses bos
WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key(+)
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key(+)
AND bi.bes_bestelling_key = b.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 = bd.ins_discipline_key(+)
AND bd.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND b.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND sd.prs_bedrijf_key = lev.prs_bedrijf_key(+)
AND bo.bes_bestelopdr_status = bos.bes_bestelopdrstatuses_key
GROUP BY bo.bes_bestelopdr_key,
bd.ins_discipline_omschrijving,
lev.prs_bedrijf_naam,
bo.bes_bestelopdr_id,
bos.bes_bestelopdrstatuses_omschr,
ks.prs_kostensoort_oms,
ks.prs_kostensoort_btw,
kp.prs_kostenplaats_nr,
kp.prs_kostenplaats_omschrijving,
b.prs_perslid_key) x
LEFT JOIN ( SELECT bes_bestelopdr_key,
SUM (bes_bestelopdr_item_aantal * bes_bestelopdr_item_prijs) kosten
FROM bes_bestelopdr_item
GROUP BY bes_bestelopdr_key) verplichting
ON x.bes_bestelopdr_key = verplichting.bes_bestelopdr_key
LEFT JOIN ( SELECT bes_bestelopdr_key,
SUM (fin_factuur_totaal + fin_factuur_totaal_btw) kosten,
COUNT (DISTINCT fin_factuur_key) aantal
FROM fin_factuur
WHERE fin_factuur_verwijder IS NULL
AND fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
GROUP BY bes_bestelopdr_key) gefactureerd
ON x.bes_bestelopdr_key = gefactureerd.bes_bestelopdr_key;
-- VLKC#59982: Rapportage opdrachtkosten (verplichting vs. gefactureerd).
CREATE OR REPLACE VIEW vlkc_v_rap_mld_kosten
(
vakgroeptype,
vakgroep,
soortmelding,
opdrachttype,
uitvoerende,
opdrachtid,
status,
aangemaakt,
toegekend,
verzonden,
afgemeld,
afgerond,
kostensoort_omschr,
kostensoort_vinkje,
kostenplaats_code,
kostenplaats_omschr,
verplichting,
gefactureerd,
aantal_fact,
aanvrager,
mld_opdr_key
)
AS
SELECT x.ins_srtdiscipline_omschrijving vakgroeptype,
x.ins_discipline_omschrijving vakgroep,
x.mld_stdmelding_omschrijving soortmelding,
x.mld_typeopdr_omschrijving opdrachttype,
COALESCE (x.prs_bedrijf_naam, x.prs_perslid_naam_full) uitvoerende,
x.mld_opdr_id,
x.mld_statusopdr_omschrijving status,
x.mld_opdr_datumbegin aangemaakt,
fac.gettrackingdate ('ORDNEW', x.mld_opdr_key) toegekend,
x.mld_opdr_verzonden verzonden,
fac.gettrackingdate ('ORDAFM', x.mld_opdr_key) afgemeld,
fac.gettrackingdate ('ORDAFR', x.mld_opdr_key) afgerond,
x.prs_kostensoort_oms,
x.prs_kostensoort_btw,
x.prs_kostenplaats_nr,
x.prs_kostenplaats_omschrijving,
ROUND (x.mld_opdr_kosten, 2) kosten,
gefactureerd.kosten,
gefactureerd.aantal,
(SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key = x.prs_perslid_key) aanvrager,
x.mld_opdr_key
FROM (SELECT o.mld_opdr_key,
sd.ins_srtdiscipline_omschrijving,
md.ins_discipline_omschrijving,
sm.mld_stdmelding_omschrijving,
ot.mld_typeopdr_key,
ot.mld_typeopdr_omschrijving,
lev.prs_bedrijf_naam,
iuv.prs_perslid_naam_full,
TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) mld_opdr_id,
os.mld_statusopdr_omschrijving,
ks.prs_kostensoort_oms,
ks.prs_kostensoort_btw,
kp.prs_kostenplaats_nr,
kp.prs_kostenplaats_omschrijving,
o.mld_opdr_datumbegin,
o.mld_opdr_verzonden,
o.mld_opdr_kosten,
m.prs_perslid_key
FROM mld_opdr o,
mld_typeopdr ot,
mld_melding m,
mld_discipline md,
mld_stdmelding sm,
ins_srtdiscipline sd,
prs_kostensoort ks,
prs_kostenplaats kp,
prs_bedrijf lev,
prs_v_perslid_fullnames iuv,
mld_statusopdr os
WHERE o.mld_melding_key = m.mld_melding_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND COALESCE (o.prs_kostensoort_key, sm.prs_kostensoort_key, md.prs_kostensoort_key) = ks.prs_kostensoort_key(+)
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND o.mld_uitvoerende_keys = lev.prs_bedrijf_key(+)
AND o.mld_uitvoerende_keys = iuv.prs_perslid_key(+)
AND o.mld_statusopdr_key = os.mld_statusopdr_key) x
LEFT JOIN ( SELECT mld_opdr_key,
SUM (fin_factuur_totaal + fin_factuur_totaal_btw) kosten,
COUNT (DISTINCT fin_factuur_key) aantal
FROM fin_factuur
WHERE fin_factuur_verwijder IS NULL
AND fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
GROUP BY mld_opdr_key) gefactureerd
ON x.mld_opdr_key = gefactureerd.mld_opdr_key
WHERE x.mld_typeopdr_key != 282 -- Offerteaanvraag
OR gefactureerd.aantal > 0;
-- VLKC#60050: Wie heeft wanneer de opdrachtkosten gewijzigd?
CREATE OR REPLACE VIEW vlkc_v_rap_ordupd_kosten
(
opdrachttype,
uitvoerende,
opdrachtid,
datum,
door,
email,
contactpers,
medewerker,
functie,
afd_code,
afd_oms,
tracking_oms,
oud_totaal,
nieuw_totaal,
mld_opdr_key
)
AS
SELECT ot.mld_typeopdr_omschrijving opdrachttype,
COALESCE (lev.prs_bedrijf_naam, iuv.prs_perslid_naam_full) uitvoerende,
TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) opdrachtid,
t.fac_tracking_datum datum,
pf.prs_perslid_naam_full door,
p.prs_perslid_email email,
DECODE ((SELECT COUNT(*) FROM prs_contactpersoon WHERE prs_perslid_key = p.prs_perslid_key), 0, 'Nee', 'Ja') contactpers,
DECODE (p.prs_perslid_nr, NULL, 'Nee', 'Ja') medewerker,
sp.prs_srtperslid_omschrijving functie,
a.prs_afdeling_naam afd_code,
a.prs_afdeling_omschrijving afd_code,
t.fac_tracking_oms tracking_oms,
fac.safe_to_number (
TRIM(SUBSTR (
SUBSTR (t.fac_tracking_oms, INSTR (t.fac_tracking_oms, 'Totaal <20>:') + 9),
1,
INSTR (SUBSTR (t.fac_tracking_oms, INSTR (t.fac_tracking_oms, 'Totaal <20>:') + 9), '-->') - 1)))
tot_oud,
fac.safe_to_number (
TRIM(SUBSTR (
SUBSTR (t.fac_tracking_oms, INSTR (t.fac_tracking_oms, 'Totaal <20>:') + 9),
INSTR (SUBSTR (t.fac_tracking_oms, INSTR (t.fac_tracking_oms, 'Totaal <20>:') + 9), '-->') + 3,
INSTR (REPLACE (REPLACE (SUBSTR (t.fac_tracking_oms, INSTR (t.fac_tracking_oms, 'Totaal <20>:') + 9), CHR (10), '#'), CHR (13), '#') || '#', '#')
- INSTR (SUBSTR (t.fac_tracking_oms, INSTR (t.fac_tracking_oms, 'Totaal <20>:') + 9), '-->') - 3)))
tot_nieuw,
o.mld_opdr_key
FROM fac_tracking t,
mld_opdr o,
mld_typeopdr ot,
prs_bedrijf lev,
prs_v_perslid_fullnames iuv,
prs_perslid p,
prs_v_perslid_fullnames pf,
prs_afdeling a,
prs_srtperslid sp
WHERE t.fac_srtnotificatie_key = 60 -- ORDUPD
AND t.fac_tracking_datum > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy')
AND INSTR (t.fac_tracking_oms, 'Totaal <20>:') > 0
AND t.fac_tracking_refkey = o.mld_opdr_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND o.mld_uitvoerende_keys = lev.prs_bedrijf_key(+)
AND o.mld_uitvoerende_keys = iuv.prs_perslid_key(+)
AND t.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_srtperslid_key = sp.prs_srtperslid_key;
-- VLKC#57098: CUST01-noti naar leverancier op de dag/ochtend na de dag waarop
-- de offerteopdracht is afgekeurd nadat deze is voorafgegaan door
-- een offerteaanvraag!
-- VLKC#69256: CUST01-noti ook naar leverancier bij afkeuren offerteopdrachten
-- zonder dat deze is voorafgegaan doot een offerteaanvraag!
-- Besloten om als 2e variant toe te voegen (UNION ALL), want toch
-- op nuances verschillen tussen beide varianten!
CREATE OR REPLACE VIEW vlkc_v_noti_offerteopdr_afk
(
code,
sender,
receiver,
text,
key,
xkey,
xsender,
xemail,
xmobile,
attachments
)
AS
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (sn.fac_srtnotificatie_oms, '##OPDRKEY##', TO_CHAR (oa.mld_melding_key) || '/' || TO_CHAR (oa.mld_opdr_bedrijfopdr_volgnr)),
oo.mld_opdr_key,
NULL,
NULL,
TRIM (COALESCE (ba.url1, ba.url2, ba.prs_bedrijf_email)),
NULL,
NULL
FROM fac_tracking t,
mld_opdr oo,
mld_opdr oa,
mld_melding m,
(SELECT x.prs_bedrijf_key, x.alg_locatie_key,
SUBSTR (ba1.prs_bedrijfadres_url, 8) url1,
SUBSTR (ba2.prs_bedrijfadres_url, 8) url2,
x.prs_bedrijf_email
FROM (SELECT b.prs_bedrijf_key, l.alg_locatie_key, b.prs_bedrijf_email
FROM prs_v_aanwezigbedrijf b, alg_v_aanweziglocatie l
WHERE b.prs_bedrijf_uitvoerende = 1) x
LEFT JOIN (SELECT prs_bedrijf_key, alg_locatie_key, prs_bedrijfadres_url
FROM prs_bedrijfadres
WHERE mld_typeopdr_key = 282 -- Offerteaanvraag-kanaal
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND alg_locatie_key IS NOT NULL
UNION ALL
SELECT ba.prs_bedrijf_key, l.alg_locatie_key, ba.prs_bedrijfadres_url
FROM prs_bedrijfadres ba, alg_locatie l
WHERE ba.mld_typeopdr_key = 282 -- Offerteaanvraag-kanaal
AND ba.prs_bedrijfadres_type = 'O'
AND UPPER (ba.prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND ba.alg_locatie_key IS NULL
AND ba.alg_district_key = l.alg_district_key
AND NOT EXISTS
(SELECT 1
FROM prs_bedrijfadres
WHERE mld_typeopdr_key = 282
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND prs_bedrijf_key = ba.prs_bedrijf_key
AND alg_locatie_key = l.alg_locatie_key)
UNION ALL
SELECT ba.prs_bedrijf_key, l.alg_locatie_key, ba.prs_bedrijfadres_url
FROM prs_bedrijfadres ba, alg_locatie l
WHERE ba.mld_typeopdr_key = 282 -- Offerteaanvraag-kanaal
AND ba.prs_bedrijfadres_type = 'O'
AND UPPER (ba.prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND ba.alg_locatie_key IS NULL
AND ba.alg_district_key IS NULL
AND NOT EXISTS
(SELECT 1
FROM prs_bedrijfadres
WHERE mld_typeopdr_key = 282
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND prs_bedrijf_key = ba.prs_bedrijf_key
AND (alg_locatie_key = l.alg_locatie_key OR alg_district_key = l.alg_district_key))) ba1
ON x.prs_bedrijf_key = ba1.prs_bedrijf_key AND x.alg_locatie_key = ba1.alg_locatie_key
LEFT JOIN (SELECT prs_bedrijf_key, alg_locatie_key, prs_bedrijfadres_url
FROM prs_bedrijfadres
WHERE mld_typeopdr_key IS NULL -- Overige opdrachten-kanaal
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND alg_locatie_key IS NOT NULL
UNION ALL
SELECT ba.prs_bedrijf_key, l.alg_locatie_key, ba.prs_bedrijfadres_url
FROM prs_bedrijfadres ba, alg_locatie l
WHERE ba.mld_typeopdr_key IS NULL -- Overige opdrachten-kanaal
AND ba.prs_bedrijfadres_type = 'O'
AND UPPER (ba.prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND ba.alg_locatie_key IS NULL
AND ba.alg_district_key = l.alg_district_key
AND NOT EXISTS
(SELECT 1
FROM prs_bedrijfadres
WHERE mld_typeopdr_key IS NULL
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND prs_bedrijf_key = ba.prs_bedrijf_key
AND alg_locatie_key = l.alg_locatie_key)
UNION ALL
SELECT ba.prs_bedrijf_key, l.alg_locatie_key, ba.prs_bedrijfadres_url
FROM prs_bedrijfadres ba, alg_locatie l
WHERE ba.mld_typeopdr_key IS NULL -- Overige opdrachten-kanaal
AND ba.prs_bedrijfadres_type = 'O'
AND UPPER (ba.prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND ba.alg_locatie_key IS NULL
AND ba.alg_district_key IS NULL
AND NOT EXISTS
(SELECT 1
FROM prs_bedrijfadres
WHERE mld_typeopdr_key IS NULL
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND prs_bedrijf_key = ba.prs_bedrijf_key
AND (alg_locatie_key = l.alg_locatie_key OR alg_district_key = l.alg_district_key))) ba2
ON x.prs_bedrijf_key = ba2.prs_bedrijf_key AND x.alg_locatie_key = ba2.alg_locatie_key
WHERE ba1.prs_bedrijfadres_url IS NOT NULL OR ba2.prs_bedrijfadres_url IS NOT NULL OR x.prs_bedrijf_email IS NOT NULL) ba,
fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key = 72 -- ORDGNO
AND t.fac_tracking_refkey = oo.mld_opdr_key
AND oo.mld_typeopdr_key = 283 -- Offerteopdracht
AND oo.mld_statusopdr_key = 2 -- Niet akkoord
AND oo.mld_opdr_parent_key = oa.mld_opdr_key -- Na Offerteaanvraag
AND oa.mld_melding_key = m.mld_melding_key
AND oa.mld_uitvoerende_keys = ba.prs_bedrijf_key
AND m.mld_alg_locatie_key = ba.alg_locatie_key
AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE - 1)
AND sn.fac_srtnotificatie_code = 'CUST01'
UNION ALL
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (sn.fac_srtnotificatie_oms, '##OPDRKEY##', TO_CHAR (oo.mld_melding_key) || '/' || TO_CHAR (oo.mld_opdr_bedrijfopdr_volgnr)),
oo.mld_opdr_key,
NULL,
NULL,
TRIM (COALESCE (ba.url1, ba.url2, ba.prs_bedrijf_email)),
NULL,
NULL
FROM fac_tracking t,
mld_opdr oo,
mld_melding m,
(SELECT x.prs_bedrijf_key, x.alg_locatie_key,
SUBSTR (ba1.prs_bedrijfadres_url, 8) url1,
SUBSTR (ba2.prs_bedrijfadres_url, 8) url2,
x.prs_bedrijf_email
FROM (SELECT b.prs_bedrijf_key, l.alg_locatie_key, b.prs_bedrijf_email
FROM prs_v_aanwezigbedrijf b, alg_v_aanweziglocatie l
WHERE b.prs_bedrijf_uitvoerende = 1) x
LEFT JOIN (SELECT prs_bedrijf_key, alg_locatie_key, prs_bedrijfadres_url
FROM prs_bedrijfadres
WHERE mld_typeopdr_key = 282 -- Offerteaanvraag-kanaal
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND alg_locatie_key IS NOT NULL
UNION ALL
SELECT ba.prs_bedrijf_key, l.alg_locatie_key, ba.prs_bedrijfadres_url
FROM prs_bedrijfadres ba, alg_locatie l
WHERE ba.mld_typeopdr_key = 282 -- Offerteaanvraag-kanaal
AND ba.prs_bedrijfadres_type = 'O'
AND UPPER (ba.prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND ba.alg_locatie_key IS NULL
AND ba.alg_district_key = l.alg_district_key
AND NOT EXISTS
(SELECT 1
FROM prs_bedrijfadres
WHERE mld_typeopdr_key = 282
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND prs_bedrijf_key = ba.prs_bedrijf_key
AND alg_locatie_key = l.alg_locatie_key)
UNION ALL
SELECT ba.prs_bedrijf_key, l.alg_locatie_key, ba.prs_bedrijfadres_url
FROM prs_bedrijfadres ba, alg_locatie l
WHERE ba.mld_typeopdr_key = 282 -- Offerteaanvraag-kanaal
AND ba.prs_bedrijfadres_type = 'O'
AND UPPER (ba.prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND ba.alg_locatie_key IS NULL
AND ba.alg_district_key IS NULL
AND NOT EXISTS
(SELECT 1
FROM prs_bedrijfadres
WHERE mld_typeopdr_key = 282
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND prs_bedrijf_key = ba.prs_bedrijf_key
AND (alg_locatie_key = l.alg_locatie_key OR alg_district_key = l.alg_district_key))) ba1
ON x.prs_bedrijf_key = ba1.prs_bedrijf_key AND x.alg_locatie_key = ba1.alg_locatie_key
LEFT JOIN (SELECT prs_bedrijf_key, alg_locatie_key, prs_bedrijfadres_url
FROM prs_bedrijfadres
WHERE mld_typeopdr_key IS NULL -- Overige opdrachten-kanaal
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND alg_locatie_key IS NOT NULL
UNION ALL
SELECT ba.prs_bedrijf_key, l.alg_locatie_key, ba.prs_bedrijfadres_url
FROM prs_bedrijfadres ba, alg_locatie l
WHERE ba.mld_typeopdr_key IS NULL -- Overige opdrachten-kanaal
AND ba.prs_bedrijfadres_type = 'O'
AND UPPER (ba.prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND ba.alg_locatie_key IS NULL
AND ba.alg_district_key = l.alg_district_key
AND NOT EXISTS
(SELECT 1
FROM prs_bedrijfadres
WHERE mld_typeopdr_key IS NULL
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND prs_bedrijf_key = ba.prs_bedrijf_key
AND alg_locatie_key = l.alg_locatie_key)
UNION ALL
SELECT ba.prs_bedrijf_key, l.alg_locatie_key, ba.prs_bedrijfadres_url
FROM prs_bedrijfadres ba, alg_locatie l
WHERE ba.mld_typeopdr_key IS NULL -- Overige opdrachten-kanaal
AND ba.prs_bedrijfadres_type = 'O'
AND UPPER (ba.prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND ba.alg_locatie_key IS NULL
AND ba.alg_district_key IS NULL
AND NOT EXISTS
(SELECT 1
FROM prs_bedrijfadres
WHERE mld_typeopdr_key IS NULL
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND prs_bedrijf_key = ba.prs_bedrijf_key
AND (alg_locatie_key = l.alg_locatie_key OR alg_district_key = l.alg_district_key))) ba2
ON x.prs_bedrijf_key = ba2.prs_bedrijf_key AND x.alg_locatie_key = ba2.alg_locatie_key
WHERE ba1.prs_bedrijfadres_url IS NOT NULL OR ba2.prs_bedrijfadres_url IS NOT NULL OR x.prs_bedrijf_email IS NOT NULL) ba,
fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key = 72 -- ORDGNO
AND t.fac_tracking_refkey = oo.mld_opdr_key
AND oo.mld_typeopdr_key = 283 -- Offerteopdracht
AND oo.mld_statusopdr_key = 2 -- Niet akkoord
AND oo.mld_opdr_parent_key IS NULL -- Niet na Offerteaanvraag
AND oo.mld_melding_key = m.mld_melding_key
AND oo.mld_uitvoerende_keys = ba.prs_bedrijf_key
AND m.mld_alg_locatie_key = ba.alg_locatie_key
AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE - 1)
AND sn.fac_srtnotificatie_code = 'CUST01';
/*
CREATE OR REPLACE VIEW vlkc_v_noti_inspectiereminder
(
code,
sender,
receiver,
text,
key,
par1,
par2,
xkey,
xemail,
xmobile
)
AS
SELECT DISTINCT
sn.fac_srtnotificatie_code code,
NULL sender,
NULL receiver,
REPLACE (
REPLACE (
sn.fac_srtnotificatie_oms,
'##SRTDEEL##',
DECODE (
v.objectsoort_min,
v.objectsoort_max, v.objectsoort_min || DECODE (v.aantal, 1, '/' || v.ins_srtcontrole_omschrijving, ''),
v.objectsoort_min || ', ...')),
'##AANTAL##',
v.aantal)
subject,
r.fac_usrrap_key,
NULL,
NULL,
v.extra_key,
TRIM (COALESCE (ba.url1, ba.url2)),
NULL
FROM ( SELECT extra_key, alg_locatie_key, ins_srtcontrole_omschrijving,
MIN (objectsoort) objectsoort_min,
MAX (objectsoort) objectsoort_max,
COUNT (*) aantal
FROM vlkc_v_rap_inspectieobjecten
GROUP BY extra_key, alg_locatie_key, ins_srtcontrole_omschrijving) v,
(SELECT x.prs_bedrijf_key, x.alg_locatie_key,
SUBSTR (ba1.prs_bedrijfadres_url, 8) url1,
SUBSTR (ba2.prs_bedrijfadres_url, 8) url2
FROM (SELECT b.prs_bedrijf_key, l.alg_locatie_key
FROM prs_v_aanwezigbedrijf b, alg_v_aanweziglocatie l
WHERE b.prs_bedrijf_uitvoerende = 1) x
LEFT JOIN (SELECT prs_bedrijf_key, alg_locatie_key, prs_bedrijfadres_url
FROM prs_bedrijfadres
WHERE mld_typeopdr_key = 282 -- Offerteaanvraag-kanaal
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND alg_locatie_key IS NOT NULL
UNION ALL
SELECT ba.prs_bedrijf_key, l.alg_locatie_key, ba.prs_bedrijfadres_url
FROM prs_bedrijfadres ba, alg_locatie l
WHERE ba.mld_typeopdr_key = 282 -- Offerteaanvraag-kanaal
AND ba.prs_bedrijfadres_type = 'O'
AND UPPER (ba.prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND ba.alg_locatie_key IS NULL
AND ba.alg_district_key = l.alg_district_key
AND NOT EXISTS
(SELECT 1
FROM prs_bedrijfadres
WHERE mld_typeopdr_key = 282
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND prs_bedrijf_key = ba.prs_bedrijf_key
AND alg_locatie_key = l.alg_locatie_key)
UNION ALL
SELECT ba.prs_bedrijf_key, l.alg_locatie_key, ba.prs_bedrijfadres_url
FROM prs_bedrijfadres ba, alg_locatie l
WHERE ba.mld_typeopdr_key = 282 -- Offerteaanvraag-kanaal
AND ba.prs_bedrijfadres_type = 'O'
AND UPPER (ba.prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND ba.alg_locatie_key IS NULL
AND ba.alg_district_key IS NULL
AND NOT EXISTS
(SELECT 1
FROM prs_bedrijfadres
WHERE mld_typeopdr_key = 282
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND prs_bedrijf_key = ba.prs_bedrijf_key
AND (alg_locatie_key = l.alg_locatie_key OR alg_district_key = l.alg_district_key))) ba1
ON x.prs_bedrijf_key = ba1.prs_bedrijf_key AND x.alg_locatie_key = ba1.alg_locatie_key
LEFT JOIN (SELECT prs_bedrijf_key, alg_locatie_key, prs_bedrijfadres_url
FROM prs_bedrijfadres
WHERE mld_typeopdr_key IS NULL -- Overige opdrachten-kanaal
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND alg_locatie_key IS NOT NULL
UNION ALL
SELECT ba.prs_bedrijf_key, l.alg_locatie_key, ba.prs_bedrijfadres_url
FROM prs_bedrijfadres ba, alg_locatie l
WHERE ba.mld_typeopdr_key IS NULL -- Overige opdrachten-kanaal
AND ba.prs_bedrijfadres_type = 'O'
AND UPPER (ba.prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND ba.alg_locatie_key IS NULL
AND ba.alg_district_key = l.alg_district_key
AND NOT EXISTS
(SELECT 1
FROM prs_bedrijfadres
WHERE mld_typeopdr_key IS NULL
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND prs_bedrijf_key = ba.prs_bedrijf_key
AND alg_locatie_key = l.alg_locatie_key)
UNION ALL
SELECT ba.prs_bedrijf_key, l.alg_locatie_key, ba.prs_bedrijfadres_url
FROM prs_bedrijfadres ba, alg_locatie l
WHERE ba.mld_typeopdr_key IS NULL -- Overige opdrachten-kanaal
AND ba.prs_bedrijfadres_type = 'O'
AND UPPER (ba.prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND ba.alg_locatie_key IS NULL
AND ba.alg_district_key IS NULL
AND NOT EXISTS
(SELECT 1
FROM prs_bedrijfadres
WHERE mld_typeopdr_key IS NULL
AND prs_bedrijfadres_type = 'O'
AND UPPER (prs_bedrijfadres_url) LIKE 'MAILTO:%'
AND prs_bedrijf_key = ba.prs_bedrijf_key
AND (alg_locatie_key = l.alg_locatie_key OR alg_district_key = l.alg_district_key))) ba2
ON x.prs_bedrijf_key = ba2.prs_bedrijf_key AND x.alg_locatie_key = ba2.alg_locatie_key
WHERE ba1.prs_bedrijfadres_url IS NOT NULL OR ba2.prs_bedrijfadres_url IS NOT NULL) ba,
fac_usrrap r,
fac_srtnotificatie sn
WHERE v.extra_key = ba.prs_bedrijf_key
AND v.alg_locatie_key = ba.alg_locatie_key
AND UPPER (r.fac_usrrap_view_name) = 'VLKC_V_RAP_INSPECTIEOBJECTEN'
AND sn.fac_srtnotificatie_code = 'CUST02';
*/
-- VLKC#84847: CUST04-noti naar externe bezoeker nav. registratie afspraak.
CREATE OR REPLACE VIEW VLKC_V_NOTI_EXT_BEZOEKER
(
code,
sender,
receiver,
text,
key,
xkey,
xsender,
xemail,
xmobile,
attachments
)
AS
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (
REPLACE (sn.fac_srtnotificatie_oms,
'##KEY##',
TO_CHAR (a.bez_afspraak_key)),
'##DATIJD##',
TO_CHAR (a.bez_afspraak_datum, 'dd-mm-yyyy hh24:mi')),
a.bez_afspraak_key,
NULL,
NULL,
--kb.bez_kenmerkwaarde_waarde,
b.bez_bezoekers_email,
NULL,
NULL
FROM fac_tracking t,
bez_afspraak a,
bez_bezoekers b,
bez_kenmerkwaarde kb,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE t.fac_srtnotificatie_key = 14 -- BEZMUT
AND t.fac_tracking_refkey = a.bez_afspraak_key
AND a.bez_afspraak_key = b.bez_afspraak_key
--AND b.bez_bezoekers_key = kb.bez_bezoekers_key
--AND kb.bez_kenmerk_key = 1080 -- E-mail adres
--AND EXISTS -- Als waarde voor Notificeren-vinkje bestaat, dan gezet!
-- (SELECT 1
-- FROM bez_kenmerkwaarde
-- WHERE bez_kenmerkwaarde_verwijder IS NULL
-- AND bez_kenmerk_key = 1002 -- Notificeren-vinkje
-- AND bez_bezoekers_key = b.bez_bezoekers_key)
AND sn.fac_srtnotificatie_code = 'CUST04'
AND nj.fac_notificatie_job_view = 'VLKC_V_NOTI_EXT_BEZOEKER'
AND t.fac_tracking_datum > nj.fac_notificatie_job_lastrun;
create or replace view vlkc_v_rap_mld_x_res
as
SELECT m.mld_melding_key,
sd.ins_srtdiscipline_prefix || m.mld_melding_key meldingnr,
mld_melding_datum,
std.mld_stdmelding_omschrijving melding,
d.ins_discipline_omschrijving vagkroep,
d.ins_discipline_key fclt_3d_discipline_key,
sd.ins_srtdiscipline_omschrijving vakgroeptype,
aog.alg_plaatsaanduiding plaats,
l.alg_locatie_key fclt_3d_locatie_key,
l.alg_locatie_omschrijving locatie,
pf.prs_perslid_naam_full melder,
s.mld_statuses_omschrijving status,
m.mld_melding_onderwerp onderwerp,
m.mld_melding_omschrijving omschrijving,
rrr.res_rsv_ruimte_key,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
reservering,
rrr.res_rsv_ruimte_omschrijving reservering_omschrijving,
mo.opdrachtnr,
mo.mld_opdr_datumbegin opdrachtdatum,
mo.mld_opdr_einddatum opdracht_eind,
mo.mld_opdr_plandatum opdracht_plan,
mo.uitvoerende,
mo.mld_opdr_kosten kosten,
mo.opdracht_status,
mo.opdracht_type,
mo.factuurincl
FROM mld_melding m,
res_rsv_ruimte rrr,
mld_stdmelding std,
mld_discipline d,
ins_srtdiscipline sd,
alg_v_allonrgoed_gegevens aog,
mld_statuses s,
alg_locatie l,
prs_v_perslid_fullnames_all pf,
(SELECT o.mld_opdr_key,
mld_melding_key,
o.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr
opdrachtnr,
o.mld_opdr_datumbegin,
mld_opdr_einddatum,
mld_opdr_plandatum,
mu.naam uitvoerende,
mld_opdr_kosten,
so.mld_statusopdr_omschrijving opdracht_status,
ot.mld_typeopdr_omschrijving opdracht_type,
fo.factuurincl
FROM mld_opdr o,
mld_typeopdr ot,
mld_statusopdr so,
mld_v_uitvoerende mu,
( SELECT mld_opdr_key,
SUM (f.fin_factuur_totaal + f.fin_factuur_totaal_btw)
factuurincl
FROM fin_factuur f
WHERE mld_opdr_key IS NOT NULL
AND f.fin_factuur_verwijder IS NULL
GROUP BY mld_opdr_key) fo
WHERE o.mld_uitvoerende_keys = mu.mld_uitvoerende_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_typeopdr_key
AND o.mld_statusopdr_key = so.mld_statusopdr_key
AND o.mld_opdr_key = fo.mld_opdr_key(+)) mo
WHERE rrr.res_rsv_ruimte_key = m.res_rsv_ruimte_key
AND std.mld_stdmelding_key = m.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
AND m.mld_melding_status = s.mld_statuses_key
AND aog.alg_locatie_key = l.alg_locatie_key
AND m.prs_perslid_key = pf.prs_perslid_key
AND mo.mld_melding_key(+) = m.mld_melding_key;
-- VLKC#64128: Technische adressen!
CREATE OR REPLACE VIEW vlkc_v_rap_bedrijf_kanalen
(
prs_bedrijf_key,
leverancier,
leveranciersnummer,
servicemanager,
l_relatie,
u_relatie,
c_relatie,
h_relatie,
kanaal,
opdrachttype,
--protocol,
technisch_adres,
district,
locatiecode,
locatieomschrijving
)
AS
SELECT lev.prs_bedrijf_key,
lev.prs_bedrijf_naam leverancier,
lev.prs_leverancier_nr leveranciersnummer,
b2sm.servicemanager,
DECODE (lev.prs_bedrijf_leverancier, NULL, NULL, 'L'),
DECODE (lev.prs_bedrijf_uitvoerende, NULL, NULL, 'U'),
DECODE (lev.prs_bedrijf_contract, NULL, NULL, 'C'),
DECODE (lev.prs_bedrijf_huurder, NULL, NULL, 'H'),
ba.prs_bedrijfadres_type,
DECODE (ba.prs_bedrijfadres_type, 'O', COALESCE (ot.mld_typeopdr_omschrijving, 'Alle (overige)'), NULL),
--NULL protocol,
ba.prs_bedrijfadres_url, -- Inclusief protocol
d.alg_district_omschrijving || DECODE (d.alg_district_verwijder, NULL, '', '*'),
l.alg_locatie_code || DECODE (l.alg_locatie_verwijder, NULL, '', '*'),
l.alg_locatie_omschrijving || DECODE (l.alg_locatie_verwijder, NULL, '', '*')
FROM prs_v_aanwezigbedrijf lev,
(SELECT kl.prs_link_key prs_bedrijf_key, pf.prs_perslid_naam_full servicemanager
FROM prs_v_aanwezigkenmerklink kl, prs_v_perslid_fullnames pf
WHERE kl.prs_kenmerk_key = 1120 -- Verantwoordelijke servicemanager
AND fac.safe_to_number (kl.prs_kenmerklink_waarde) = pf.prs_perslid_key) b2sm,
prs_bedrijfadres ba,
mld_typeopdr ot,
alg_district d,
alg_locatie l
WHERE lev.prs_bedrijf_key = ba.prs_bedrijf_key(+)
AND lev.prs_bedrijf_key = b2sm.prs_bedrijf_key(+)
AND ba.mld_typeopdr_key = ot.mld_typeopdr_key(+)
AND ba.alg_district_key = d.alg_district_key(+)
AND ba.alg_locatie_key = l.alg_locatie_key(+);
-- VLKC#74776: Mail2Melding + Mail2Opdracht. Twee stromen:
-- - NIEUWEMELDING -: Registreren nieuwe melding van Soortmelding=2121
-- (Mailmelding) onder Vakgroep=306 (Algemeen) onder
-- Vakgroeptype=23 (Melding)!
-- - OPDRACHTNOTITIE -: Toevoegen opdrachtnotitie!
CREATE OR REPLACE PROCEDURE VLKC_processemail (
pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER)
AS
c_onbekend_key NUMBER (10) := 34940; -- Facilitydesk
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_van_regel VARCHAR2 (255) := '';
v_van_email VARCHAR2 (255) := '';
v_perslid_key NUMBER (10);
v_kostenplaats_key NUMBER (10);
v_locatie_key NUMBER (10);
v_discipline_key NUMBER (10);
v_stdmelding_key NUMBER (10);
v_body VARCHAR2 (4000);
v_melding_key NUMBER (10);
v_folder_kkey NUMBER (10);
v_opdracht_id VARCHAR2 (255);
v_opdracht_key NUMBER (10);
v_typeopdr_key NUMBER (10);
v_count NUMBER (10);
BEGIN
CASE
--WHEN UPPER (pto) LIKE 'NIEUWEMELDING@%'
WHEN INSTR (UPPER (pfrom), 'FACILITYDESK@VANLANSCHOTKEMPEN.COM') > 0 AND UPPER (pto) LIKE 'NIEUWEMELDING@%'
THEN
-- Probeer melder te bepalen op basis van e-mail adres tussen '<>' na eerste voorkomen 'Van:'!
v_errormsg := 'Fout bepalen melder';
IF INSTR (UPPER (pbody), 'VAN:') > 0
THEN
v_van_regel := TRIM (SUBSTR (pbody,
INSTR (UPPER (pbody), 'VAN:') + 4,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR (13), '#'), CHR (10), '#') || '#', INSTR (pbody, 'VAN:') + 4), '#') - 1));
IF INSTR (v_van_regel, '<') > 0 AND INSTR (v_van_regel, '<') < INSTR (v_van_regel, '>')
THEN
v_van_email := SUBSTR (v_van_regel, INSTR (v_van_regel, '<') + 1, INSTR (v_van_regel, '>') - INSTR (v_van_regel, '<') - 1);
END IF;
END IF;
SELECT COUNT (*)
INTO v_count
FROM prs_v_aanwezigperslid
WHERE UPPER (prs_perslid_email) LIKE UPPER (v_van_email) || '%';
IF v_count = 1
THEN
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, MIN (wpg.alg_locatie_key)
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
FROM prs_v_aanwezigperslid p, prs_afdeling a,
(SELECT pw.prs_perslid_key, pw.prs_werkplek_key
FROM prs_perslidwerkplek pw
WHERE NOT EXISTS
(SELECT 1
FROM prs_perslidwerkplek
WHERE prs_perslid_key = pw.prs_perslid_key
AND prs_perslidwerkplek_key > pw.prs_perslidwerkplek_key)) pw,
prs_v_werkplekperslid_gegevens wpg
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND UPPER (p.prs_perslid_email) LIKE UPPER (v_van_email) || '%'
AND p.prs_perslid_key = pw.prs_perslid_key(+)
AND pw.prs_werkplek_key = wpg.prs_werkplek_key(+)
GROUP BY p.prs_perslid_key, a.prs_kostenplaats_key;
ELSE -- Melder kan niet 1-duidig worden bepaald, dus Onbekend en 1=AMS-WTC!
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, 1
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
FROM prs_v_aanwezigperslid p, prs_afdeling a
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_perslid_key = c_onbekend_key;
END IF;
-- Bepaal de afgesproken soortmelding met key=2121=Mailmelding!
v_errormsg := 'Fout bepalen soortmelding';
SELECT mld_ins_discipline_key, mld_stdmelding_key
INTO v_discipline_key, v_stdmelding_key
FROM mld_stdmelding
WHERE mld_stdmelding_key = 2121;
-- Body overnemen tot 1e voorkomen van hard afgesproken start DISCLAIMER!
v_errormsg := 'Fout strippen disclaimer';
IF INSTR (UPPER (pbody), 'DISCLAIMER') > 0 --AND INSTR (UPPER (pbody), 'DE INFORMATIE IN DIT BERICHT') > 0
THEN
--v_body := TRIM (SUBSTR (pbody, 1, INSTR (UPPER (pbody), 'DE INFORMATIE IN DIT BERICHT') - 12));
v_body := TRIM (SUBSTR (pbody, 1, INSTR (UPPER (pbody), 'DISCLAIMER') - 1));
ELSE
v_body := pbody;
END IF;
-- Suggested extensions:
-- - Check for MLDUSE-write autorisations
-- - Parse the subject to find the appropriate stdmelding, if uniquely possible
-- - Append (as a note?) to an existing melding if #key is found in the subject
v_errormsg := 'Fout toevoegen melding';
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_omschrijving,
mld_stdmelding_key,
mld_melding_t_uitvoertijd,
prs_kostenplaats_key,
prs_perslid_key,
prs_perslid_key_voor,
mld_melding_status,
mld_melding_spoed,
mld_melding_onderwerp,
mld_melding_behandelaar2_key,
mld_ins_discipline_key)
VALUES ('MLD',
4, -- Email
COALESCE (v_locatie_key, 1), -- Fallback op 1=AMS-WTC
NULL, --v_onrgoed_keys,
SYSDATE,
SUBSTR (v_body, 1, 2000),
v_stdmelding_key,
NULL,
v_kostenplaats_key,
v_perslid_key,
v_perslid_key,
NULL,
3, -- Prio normaal
SUBSTR (psubject, 1, 80),
NULL,
NULL) -- BT?
RETURNING mld_melding_key
INTO v_melding_key;
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key);
-- Find the lowest volgnummer of the Folder-flexfield.
v_errormsg := 'Fout toevoegen melding-bijlage';
SELECT MIN (k1.mld_kenmerk_key)
INTO v_folder_kkey
FROM mld_stdmelding sm1, ins_tab_discipline td1, mld_kenmerk k1, mld_srtkenmerk sk1
WHERE sm1.mld_stdmelding_key = v_stdmelding_key
AND sm1.mld_ins_discipline_key = td1.ins_discipline_key
AND k1.mld_kenmerk_verwijder IS NULL
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
AND ((k1.mld_stdmelding_key = sm1.mld_stdmelding_key AND k1.mld_kenmerk_niveau = 'S')
OR (k1.mld_stdmelding_key = td1.ins_discipline_key AND k1.mld_kenmerk_niveau = 'D')
OR (k1.mld_stdmelding_key = td1.ins_srtdiscipline_key AND k1.mld_kenmerk_niveau = 'T'))
AND NOT EXISTS
(SELECT 1
FROM mld_stdmelding sm2, ins_tab_discipline td2, mld_kenmerk k2, mld_srtkenmerk sk2
WHERE sm2.mld_stdmelding_key = v_stdmelding_key
AND sm2.mld_ins_discipline_key = td2.ins_discipline_key
AND k2.mld_kenmerk_verwijder IS NULL
AND k2.mld_srtkenmerk_key = sk2.mld_srtkenmerk_key
AND sk2.mld_srtkenmerk_kenmerktype = 'M'
AND ((k2.mld_stdmelding_key = sm2.mld_stdmelding_key AND k2.mld_kenmerk_niveau = 'S')
OR (k2.mld_stdmelding_key = td2.ins_discipline_key AND k2.mld_kenmerk_niveau = 'D')
OR (k2.mld_stdmelding_key = td2.ins_srtdiscipline_key AND k2.mld_kenmerk_niveau = 'T'))
AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer);
IF v_folder_kkey IS NOT NULL
THEN
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'kenmerkpath', 'MLD\M' || TO_CHAR (TRUNC (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || v_folder_kkey || '\');
END IF;
-- Handle workflow actions for completion (in case of new melding).
IF v_count = 0
THEN
MLD.mld_nextworkflowstep (v_melding_key, -1); -- -1=Initial
END IF;
--WHEN UPPER (pto) LIKE 'OPDRACHTNOTITIE@%'
WHEN INSTR (UPPER (pfrom), 'FACILITYDESK@VANLANSCHOTKEMPEN.COM') > 0 AND UPPER (pto) LIKE 'OPDRACHTNOTITIE@%'
THEN
-- Probeer noteur te bepalen op basis van e-mail adres tussen '<>' na eerste voorkomen 'Van:'!
v_errormsg := 'Fout bepalen noteur';
IF INSTR (UPPER (pbody), 'VAN:') > 0
THEN
v_van_regel := TRIM (SUBSTR (pbody,
INSTR (UPPER (pbody), 'VAN:') + 4,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR (13), '#'), CHR (10), '#') || '#', INSTR (pbody, 'VAN:') + 4), '#') - 1));
IF INSTR (v_van_regel, '<') > 0 AND INSTR (v_van_regel, '<') < INSTR (v_van_regel, '>')
THEN
v_van_email := SUBSTR (v_van_regel, INSTR (v_van_regel, '<') + 1, INSTR (v_van_regel, '>') - INSTR (v_van_regel, '<') - 1);
END IF;
END IF;
SELECT COUNT (*)
INTO v_count
FROM prs_contactpersoon
WHERE prs_contactpersoon_email IS NULL
AND prs_perslid_key IS NOT NULL
AND UPPER (prs_contactpersoon_email) LIKE UPPER (v_van_email) || '%';
IF v_count = 1
THEN
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_contactpersoon
WHERE prs_contactpersoon_email IS NULL
AND prs_perslid_key IS NOT NULL
AND UPPER (prs_contactpersoon_email) LIKE UPPER (v_van_email) || '%';
ELSE -- Noteur kan niet 1-duidig worden bepaald, dus Onbekend!
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_v_aanwezigperslid
WHERE prs_perslid_key = c_onbekend_key;
END IF;
v_errormsg := 'Fout bepalen opdracht';
v_opdracht_id := psubject;
IF REGEXP_INSTR (v_opdracht_id, '\d') > 0
THEN
v_opdracht_id := SUBSTR (v_opdracht_id, REGEXP_INSTR (v_opdracht_id, '\d')) || ' '; -- Gedeelte vanaf eerste cijfer in v_exist_ticket plus ' '!
v_opdracht_id := SUBSTR (v_opdracht_id, 1, REGEXP_INSTR (v_opdracht_id, '\s') - 1); -- Gedeelte tot eerste white space in v_exist_ticket!
END IF;
v_errormsg := 'Fout bepalen opdracht ' || v_opdracht_id;
SELECT o.mld_opdr_key, o.mld_typeopdr_key
INTO v_opdracht_key, v_typeopdr_key
FROM mld_opdr o
WHERE TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) = SUBSTR (v_opdracht_id, REGEXP_INSTR (v_opdracht_id, '\d'))
AND NOT EXISTS
(SELECT 1
FROM mld_discipline md, mld_stdmelding sm, mld_melding m
WHERE md.ins_srtdiscipline_key IN (41, 42, 43, 44, 45) -- BE-vakgroeptypen
AND md.ins_discipline_key = sm.mld_ins_discipline_key
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND m.mld_melding_key = o.mld_melding_key);
-- Body overnemen tot 1e voorkomen van hard afgesproken start DISCLAIMER!
v_errormsg := 'Fout strippen disclaimer';
IF INSTR (UPPER (pbody), 'DISCLAIMER') > 0 AND INSTR (UPPER (pbody), 'DE INFORMATIE IN DIT BERICHT') > 0
THEN
v_body := TRIM (SUBSTR (pbody, 1, INSTR (UPPER (pbody), 'DE INFORMATIE IN DIT BERICHT') - 12));
ELSE
v_body := pbody;
END IF;
v_errormsg := 'Fout toevoegen opdracht-notitie';
INSERT INTO mld_opdr_note (mld_opdr_key, prs_perslid_key, mld_opdr_note_omschrijving)
VALUES (v_opdracht_key, v_perslid_key, pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (v_body, 1, 2000));
v_errormsg := 'Fout bijwerken opdracht-kleurbolletje';
UPDATE mld_opdr
SET mld_opdr_flag = 1 -- Zwart
WHERE mld_opdr_key = v_opdracht_key;
-- Find the lowest volgnummer of the Folder-flexfield.
v_errormsg := 'Fout toevoegen opdracht-bijlage';
SELECT MIN (k1.mld_kenmerk_key)
INTO v_folder_kkey
FROM mld_kenmerk k1, mld_srtkenmerk sk1
WHERE k1.mld_typeopdr_key = v_typeopdr_key
AND k1.mld_kenmerk_verwijder IS NULL
AND k1.mld_kenmerk_niveau = 'O'
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
AND NOT EXISTS
(SELECT 1
FROM mld_kenmerk k2, mld_srtkenmerk sk2
WHERE k2.mld_typeopdr_key = v_typeopdr_key
AND k2.mld_kenmerk_verwijder IS NULL
AND k2.mld_kenmerk_niveau = 'O'
AND k2.mld_srtkenmerk_key = sk2.mld_srtkenmerk_key
AND sk2.mld_srtkenmerk_kenmerktype = 'M'
AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer);
IF v_folder_kkey IS NOT NULL
THEN
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'kenmerkpath', 'MLD\O' || TO_CHAR (TRUNC (v_opdracht_key / 1000), 'FM0000') || '___\O' || v_opdracht_key || '\' || v_folder_kkey || '\');
END IF;
--WHEN UPPER (pto) LIKE 'BELGIEMELDING@%'
WHEN INSTR (UPPER (pfrom), 'FACILITIES@MERCIERVANLANSCHOT.BE') > 0 AND UPPER (pto) LIKE 'BELGIEMELDING@%'
THEN
-- Probeer melder te bepalen op basis van e-mail adres tussen '<>' na eerste voorkomen 'Van:'!
v_errormsg := 'Fout bepalen melder';
IF INSTR (UPPER (pbody), 'VAN:') > 0
THEN
v_van_regel := TRIM (SUBSTR (pbody,
INSTR (UPPER (pbody), 'VAN:') + 4,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR (13), '#'), CHR (10), '#') || '#', INSTR (pbody, 'VAN:') + 4), '#') - 1));
IF INSTR (v_van_regel, '<') > 0 AND INSTR (v_van_regel, '<') < INSTR (v_van_regel, '>')
THEN
v_van_email := SUBSTR (v_van_regel, INSTR (v_van_regel, '<') + 1, INSTR (v_van_regel, '>') - INSTR (v_van_regel, '<') - 1);
END IF;
END IF;
SELECT COUNT (*)
INTO v_count
FROM prs_v_aanwezigperslid
WHERE UPPER (prs_perslid_email) LIKE UPPER (v_van_email) || '%';
IF v_count = 1
THEN
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, MIN (wpg.alg_locatie_key)
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
FROM prs_v_aanwezigperslid p, prs_afdeling a,
(SELECT pw.prs_perslid_key, pw.prs_werkplek_key
FROM prs_perslidwerkplek pw
WHERE NOT EXISTS
(SELECT 1
FROM prs_perslidwerkplek
WHERE prs_perslid_key = pw.prs_perslid_key
AND prs_perslidwerkplek_key > pw.prs_perslidwerkplek_key)) pw,
prs_v_werkplekperslid_gegevens wpg
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND UPPER (p.prs_perslid_email) LIKE UPPER (v_van_email) || '%'
AND p.prs_perslid_key = pw.prs_perslid_key(+)
AND pw.prs_werkplek_key = wpg.prs_werkplek_key(+)
GROUP BY p.prs_perslid_key, a.prs_kostenplaats_key;
ELSE -- Melder kan niet 1-duidig worden bepaald, dus Onbekend en 301=BEL-ANT!
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, 301
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
FROM prs_v_aanwezigperslid p, prs_afdeling a
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_perslid_key = c_onbekend_key;
END IF;
-- Bepaal de afgesproken soortmelding met key=3801=Mailmelding Belgi<67>!
v_errormsg := 'Fout bepalen soortmelding';
SELECT mld_ins_discipline_key, mld_stdmelding_key
INTO v_discipline_key, v_stdmelding_key
FROM mld_stdmelding
WHERE mld_stdmelding_key = 3801;
-- Body overnemen tot 1e voorkomen van hard afgesproken start DISCLAIMER!
v_errormsg := 'Fout strippen disclaimer';
IF INSTR (UPPER (pbody), 'DISCLAIMER') > 0 --AND INSTR (UPPER (pbody), 'DE INFORMATIE IN DIT BERICHT') > 0
THEN
--v_body := TRIM (SUBSTR (pbody, 1, INSTR (UPPER (pbody), 'DE INFORMATIE IN DIT BERICHT') - 12));
v_body := TRIM (SUBSTR (pbody, 1, INSTR (UPPER (pbody), 'DISCLAIMER') - 1));
ELSE
v_body := pbody;
END IF;
-- Suggested extensions:
-- - Check for MLDUSE-write autorisations
-- - Parse the subject to find the appropriate stdmelding, if uniquely possible
-- - Append (as a note?) to an existing melding if #key is found in the subject
v_errormsg := 'Fout toevoegen melding';
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_omschrijving,
mld_stdmelding_key,
mld_melding_t_uitvoertijd,
prs_kostenplaats_key,
prs_perslid_key,
prs_perslid_key_voor,
mld_melding_status,
mld_melding_spoed,
mld_melding_onderwerp,
mld_melding_behandelaar2_key,
mld_ins_discipline_key)
VALUES ('MLD',
4, -- Email
COALESCE (v_locatie_key, 301), -- Fallback op 301=BEL-ANT
NULL, --v_onrgoed_keys,
SYSDATE,
SUBSTR (v_body, 1, 2000),
v_stdmelding_key,
NULL,
v_kostenplaats_key,
v_perslid_key,
v_perslid_key,
NULL,
3, -- Prio normaal
SUBSTR (psubject, 1, 80),
NULL,
NULL) -- BT?
RETURNING mld_melding_key
INTO v_melding_key;
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key);
-- Find the lowest volgnummer of the Folder-flexfield.
v_errormsg := 'Fout toevoegen melding-bijlage';
SELECT MIN (k1.mld_kenmerk_key)
INTO v_folder_kkey
FROM mld_stdmelding sm1, ins_tab_discipline td1, mld_kenmerk k1, mld_srtkenmerk sk1
WHERE sm1.mld_stdmelding_key = v_stdmelding_key
AND sm1.mld_ins_discipline_key = td1.ins_discipline_key
AND k1.mld_kenmerk_verwijder IS NULL
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
AND ((k1.mld_stdmelding_key = sm1.mld_stdmelding_key AND k1.mld_kenmerk_niveau = 'S')
OR (k1.mld_stdmelding_key = td1.ins_discipline_key AND k1.mld_kenmerk_niveau = 'D')
OR (k1.mld_stdmelding_key = td1.ins_srtdiscipline_key AND k1.mld_kenmerk_niveau = 'T'))
AND NOT EXISTS
(SELECT 1
FROM mld_stdmelding sm2, ins_tab_discipline td2, mld_kenmerk k2, mld_srtkenmerk sk2
WHERE sm2.mld_stdmelding_key = v_stdmelding_key
AND sm2.mld_ins_discipline_key = td2.ins_discipline_key
AND k2.mld_kenmerk_verwijder IS NULL
AND k2.mld_srtkenmerk_key = sk2.mld_srtkenmerk_key
AND sk2.mld_srtkenmerk_kenmerktype = 'M'
AND ((k2.mld_stdmelding_key = sm2.mld_stdmelding_key AND k2.mld_kenmerk_niveau = 'S')
OR (k2.mld_stdmelding_key = td2.ins_discipline_key AND k2.mld_kenmerk_niveau = 'D')
OR (k2.mld_stdmelding_key = td2.ins_srtdiscipline_key AND k2.mld_kenmerk_niveau = 'T'))
AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer);
IF v_folder_kkey IS NOT NULL
THEN
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'kenmerkpath', 'MLD\M' || TO_CHAR (TRUNC (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || v_folder_kkey || '\');
END IF;
-- Handle workflow actions for completion (in case of new melding).
IF v_count = 0
THEN
MLD.mld_nextworkflowstep (v_melding_key, -1); -- -1=Initial
END IF;
--WHEN UPPER (pto) LIKE 'BELGIENOTITIE@%'
WHEN INSTR (UPPER (pfrom), 'FACILITIES@MERCIERVANLANSCHOT.BE') > 0 AND UPPER (pto) LIKE 'BELGIENOTITIE@%'
THEN
-- Probeer noteur te bepalen op basis van e-mail adres tussen '<>' na eerste voorkomen 'Van:'!
v_errormsg := 'Fout bepalen noteur';
IF INSTR (UPPER (pbody), 'VAN:') > 0
THEN
v_van_regel := TRIM (SUBSTR (pbody,
INSTR (UPPER (pbody), 'VAN:') + 4,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR (13), '#'), CHR (10), '#') || '#', INSTR (pbody, 'VAN:') + 4), '#') - 1));
IF INSTR (v_van_regel, '<') > 0 AND INSTR (v_van_regel, '<') < INSTR (v_van_regel, '>')
THEN
v_van_email := SUBSTR (v_van_regel, INSTR (v_van_regel, '<') + 1, INSTR (v_van_regel, '>') - INSTR (v_van_regel, '<') - 1);
END IF;
END IF;
SELECT COUNT (*)
INTO v_count
FROM prs_contactpersoon
WHERE prs_contactpersoon_email IS NULL
AND prs_perslid_key IS NOT NULL
AND UPPER (prs_contactpersoon_email) LIKE UPPER (v_van_email) || '%';
IF v_count = 1
THEN
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_contactpersoon
WHERE prs_contactpersoon_email IS NULL
AND prs_perslid_key IS NOT NULL
AND UPPER (prs_contactpersoon_email) LIKE UPPER (v_van_email) || '%';
ELSE -- Noteur kan niet 1-duidig worden bepaald, dus Onbekend!
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_v_aanwezigperslid
WHERE prs_perslid_key = c_onbekend_key;
END IF;
v_errormsg := 'Fout bepalen opdracht';
v_opdracht_id := psubject;
IF REGEXP_INSTR (v_opdracht_id, '\d') > 0
THEN
v_opdracht_id := SUBSTR (v_opdracht_id, REGEXP_INSTR (v_opdracht_id, '\d')) || ' '; -- Gedeelte vanaf eerste cijfer in v_exist_ticket plus ' '!
v_opdracht_id := SUBSTR (v_opdracht_id, 1, REGEXP_INSTR (v_opdracht_id, '\s') - 1); -- Gedeelte tot eerste white space in v_exist_ticket!
END IF;
v_errormsg := 'Fout bepalen opdracht ' || v_opdracht_id;
SELECT o.mld_opdr_key, o.mld_typeopdr_key
INTO v_opdracht_key, v_typeopdr_key
FROM mld_opdr o
WHERE TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) = SUBSTR (v_opdracht_id, REGEXP_INSTR (v_opdracht_id, '\d'))
AND EXISTS
(SELECT 1
FROM mld_discipline md, mld_stdmelding sm, mld_melding m
WHERE md.ins_srtdiscipline_key IN (41, 42, 43, 44, 45) -- BE-vakgroeptypen
AND md.ins_discipline_key = sm.mld_ins_discipline_key
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND m.mld_melding_key = o.mld_melding_key);
-- Body overnemen tot 1e voorkomen van hard afgesproken start DISCLAIMER!
v_errormsg := 'Fout strippen disclaimer';
IF INSTR (UPPER (pbody), 'DISCLAIMER') > 0 AND INSTR (UPPER (pbody), 'DE INFORMATIE IN DIT BERICHT') > 0
THEN
v_body := TRIM (SUBSTR (pbody, 1, INSTR (UPPER (pbody), 'DE INFORMATIE IN DIT BERICHT') - 12));
ELSE
v_body := pbody;
END IF;
v_errormsg := 'Fout toevoegen opdracht-notitie';
INSERT INTO mld_opdr_note (mld_opdr_key, prs_perslid_key, mld_opdr_note_omschrijving)
VALUES (v_opdracht_key, v_perslid_key, pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (v_body, 1, 2000));
v_errormsg := 'Fout bijwerken opdracht-kleurbolletje';
UPDATE mld_opdr
SET mld_opdr_flag = 1 -- Zwart
WHERE mld_opdr_key = v_opdracht_key;
-- Find the lowest volgnummer of the Folder-flexfield.
v_errormsg := 'Fout toevoegen opdracht-bijlage';
SELECT MIN (k1.mld_kenmerk_key)
INTO v_folder_kkey
FROM mld_kenmerk k1, mld_srtkenmerk sk1
WHERE k1.mld_typeopdr_key = v_typeopdr_key
AND k1.mld_kenmerk_verwijder IS NULL
AND k1.mld_kenmerk_niveau = 'O'
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
AND NOT EXISTS
(SELECT 1
FROM mld_kenmerk k2, mld_srtkenmerk sk2
WHERE k2.mld_typeopdr_key = v_typeopdr_key
AND k2.mld_kenmerk_verwijder IS NULL
AND k2.mld_kenmerk_niveau = 'O'
AND k2.mld_srtkenmerk_key = sk2.mld_srtkenmerk_key
AND sk2.mld_srtkenmerk_kenmerktype = 'M'
AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer);
IF v_folder_kkey IS NOT NULL
THEN
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'kenmerkpath', 'MLD\O' || TO_CHAR (TRUNC (v_opdracht_key / 1000), 'FM0000') || '___\O' || v_opdracht_key || '\' || v_folder_kkey || '\');
END IF;
ELSE
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'errormsg', 'Ontvanger ongeldig - Neem contact op met uw systeembeheerder ');
END CASE;
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.writelog ('PROCESSEMAIL', 'E', 'VLKC_processemail afgebroken!', '[' || v_van_email || '] ' || v_errormsg);
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'errormsg', 'Database fout - Neem contact op met uw systeembeheerder ');
COMMIT;
END;
/
-- VLKC#65151: Uitrijkaarten.
CREATE OR REPLACE VIEW vlkc_v_rap_uitrijkaarten
(
afspraakmaand,
afspraakdatum,
afspraakdatum_van,
afspraakdatum_tot,
afspraaknr, -- Niet gevraagd
parkeerpasnummer, -- 23-cijferig
uitrijkaart,
uitrijkaartprijs,
contactpersoon, -- Niet gevraagd
gastheer, -- Niet gevraagd
bezoeker,
opmerking, -- Niet gevraagd
kostenplaats,
kostenplaats_bezoeker,
kostenplaats_gastheer,
locatie,
bez_afspraak_key
)
AS
SELECT TO_CHAR (x.bez_afspraak_datum, 'yyyy-mm') maand,
x.bez_afspraak_datum,
x.bez_afspraak_datum van,
x.bez_afspraak_eind tot,
TO_CHAR (x.bez_afspraak_key) afspraaknr,
pp.bez_kenmerkwaarde_waarde parkeerpasnummer,
uk_ud.fac_usrdata_omschr uitrijkaart,
uk_ud.fac_usrdata_prijs uitrijkaartprijs,
x.contactpersoon,
x.gastheer,
x.bez_afspraak_naam,
x.bez_afspraak_opmerking,
COALESCE (kpb.prs_kostenplaats_nr, kph.prs_kostenplaats_nr) kp,
kpb.prs_kostenplaats_nr kp_bezoeker,
DECODE (pb.prs_perslid_key, NULL, kph.prs_kostenplaats_nr, NULL) kp_gastheer,
l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')',
x.bez_afspraak_key
FROM (SELECT a.bez_afspraak_key,
a.bez_afspraak_datum,
a.bez_afspraak_eind,
a.bez_afspraak_opmerking,
a.bez_afspraak_host_key,
a.alg_locatie_key,
b.bez_bezoekers_key,
b.bez_afspraak_naam,
b.prs_perslid_key,
pc.prs_perslid_naam_full contactpersoon,
ph.prs_perslid_naam_full gastheer
FROM bez_afspraak a,
bez_bezoekers b,
prs_v_perslid_fullnames_all pc,
prs_v_perslid_fullnames_all ph
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND a.bez_afspraak_contact_key = pc.prs_perslid_key
AND a.bez_afspraak_host_key = ph.prs_perslid_key) x
LEFT JOIN prs_perslid pb
ON x.prs_perslid_key = pb.prs_perslid_key
LEFT JOIN prs_afdeling ab
ON pb.prs_afdeling_key = ab.prs_afdeling_key
LEFT JOIN prs_kostenplaats kpb
ON ab.prs_kostenplaats_key = kpb.prs_kostenplaats_key
LEFT JOIN prs_perslid ph
ON x.bez_afspraak_host_key = ph.prs_perslid_key
LEFT JOIN prs_afdeling ah
ON ph.prs_afdeling_key = ah.prs_afdeling_key
LEFT JOIN prs_kostenplaats kph
ON ah.prs_kostenplaats_key = kph.prs_kostenplaats_key
LEFT JOIN bez_kenmerkwaarde pp
ON x.bez_bezoekers_key = pp.bez_bezoekers_key
AND pp.bez_kenmerkwaarde_verwijder IS NULL
AND pp.bez_kenmerk_key = 1040 -- Parkeerpasnummer
LEFT JOIN bez_kenmerkwaarde uk
ON x.bez_bezoekers_key = uk.bez_bezoekers_key
AND uk.bez_kenmerkwaarde_verwijder IS NULL
AND uk.bez_kenmerk_key = 1060 -- Uitrijkaart
LEFT JOIN fac_v_aanwezigusrdata uk_ud
ON fac.safe_to_number (uk.bez_kenmerkwaarde_waarde) = uk_ud.fac_usrdata_key
LEFT JOIN alg_locatie l
ON x.alg_locatie_key = l.alg_locatie_key
WHERE x.bez_afspraak_datum > TO_DATE ('01-01-2020', 'dd-mm-yyyy')
AND x.bez_afspraak_datum > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy');
-- VLKC#69695: Automatisch uitgegeven opdrachten (bijna kopie van vlkc_v_rap_mld_kosten).
CREATE OR REPLACE VIEW vlkc_v_rap_autoorders
(
vakgroeptype,
vakgroep,
soortmelding,
opdrachttype,
opdrachtid,
uitvoerende,
omschrijving,
status,
aangemaakt,
toegekend,
verzonden,
kosten_opdr,
kosten_fact,
aantal_fact,
einddatum,
mld_opdr_key, -- VLKC#71567
uitvoerende_key, -- VLKC#72197
locatie_key, -- VLKC#72197
locatiecode, -- VLKC#72197
locatie -- VLKC#72197
)
AS
SELECT x.ins_srtdiscipline_omschrijving vakgroeptype,
x.ins_discipline_omschrijving vakgroep,
x.mld_stdmelding_omschrijving soortmelding,
x.mld_typeopdr_omschrijving opdrachttype,
TO_CHAR (x.mld_melding_key) || '/' || TO_CHAR (x.mld_opdr_bedrijfopdr_volgnr) opdrachtid,
COALESCE (x.prs_bedrijf_naam, x.prs_perslid_naam_full) uitvoerende,
x.mld_opdr_omschrijving omschrijving,
x.mld_statusopdr_omschrijving status,
x.mld_opdr_datumbegin aangemaakt,
fac.gettrackingdate ('ORDNEW', x.mld_opdr_key) toegekend,
x.mld_opdr_verzonden verzonden,
ROUND (x.mld_opdr_kosten, 2) kosten_opdr,
gefactureerd.kosten kosten_fact,
gefactureerd.aantal aantal_fact,
x.mld_opdr_einddatum einddatum,
x.mld_opdr_key,
x.mld_uitvoerende_keys,
x.alg_locatie_key,
x.alg_locatie_code,
x.alg_locatie_omschrijving
FROM (SELECT o.mld_opdr_key,
o.mld_melding_key,
o.mld_opdr_bedrijfopdr_volgnr,
sd.ins_srtdiscipline_omschrijving,
md.ins_discipline_omschrijving,
sm.mld_stdmelding_omschrijving,
ot.mld_typeopdr_key,
ot.mld_typeopdr_omschrijving,
o.mld_uitvoerende_keys,
lev.prs_bedrijf_naam,
iuv.prs_perslid_naam_full,
o.mld_opdr_omschrijving,
os.mld_statusopdr_omschrijving,
o.mld_opdr_datumbegin,
o.mld_opdr_einddatum,
o.mld_opdr_verzonden,
o.mld_opdr_kosten,
l.alg_locatie_key,
l.alg_locatie_code,
l.alg_locatie_omschrijving
FROM mld_opdr o,
mld_typeopdr ot,
mld_melding m,
mld_discipline md,
mld_stdmelding sm,
ins_srtdiscipline sd,
prs_bedrijf lev,
prs_v_perslid_fullnames iuv,
mld_statusopdr os,
alg_locatie l
WHERE o.mld_melding_key = m.mld_melding_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_stdmelding_autoorder = 1 -- Autoorder!
AND sm.mld_typeopdr_key IS NOT NULL
AND sm.prs_dienst_key IS NOT NULL
AND FLOOR ((m.mld_melding_datum - o.mld_opdr_datumbegin) * 24 * 60) = 0 -- Opdracht binnen minuut na melding aangemaakt!
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND o.mld_uitvoerende_keys = lev.prs_bedrijf_key(+)
AND o.mld_uitvoerende_keys = iuv.prs_perslid_key(+)
AND o.mld_statusopdr_key = os.mld_statusopdr_key
AND m.mld_alg_locatie_key = l.alg_locatie_key) x
LEFT JOIN ( SELECT mld_opdr_key,
SUM (fin_factuur_totaal + fin_factuur_totaal_btw) kosten,
COUNT (DISTINCT fin_factuur_key) aantal
FROM fin_factuur
WHERE fin_factuur_verwijder IS NULL
AND fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
GROUP BY mld_opdr_key) gefactureerd
ON x.mld_opdr_key = gefactureerd.mld_opdr_key;
-- VLKC#69696: Alle opdrachten incl. automatisch vs. niet automatisch aangemaakt.
CREATE OR REPLACE VIEW vlkc_v_udr_opdrachten
(
vakgroeptype,
vakgroep,
soortmelding,
mld_typeopdr_key,
opdrachttype,
mld_opdr_key,
mld_melding_key,
opdrachtid,
uitvoerende,
open_gesloten,
status,
aangemaakt,
toegekend,
verzonden,
geaccepteerd,
afgemeld,
afgerond,
verwerkt,
auto_desk
)
AS
SELECT sd.ins_srtdiscipline_omschrijving,
md.ins_discipline_omschrijving,
sm.mld_stdmelding_omschrijving,
ot.mld_typeopdr_key,
ot.mld_typeopdr_omschrijving,
o.mld_opdr_key,
o.mld_melding_key,
TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) opdrachtid,
COALESCE (lev.prs_bedrijf_naam, iuv.prs_perslid_naam_full) uitvoerende,
CASE
WHEN os.mld_statusopdr_key IN (3, 4, 5, 8, 10) THEN 'Open'
ELSE 'Gesloten'
END
open_gesloten,
os.mld_statusopdr_omschrijving,
o.mld_opdr_datumbegin aangemaakt,
fac.gettrackingdate ('ORDNEW', o.mld_opdr_key) toegekend,
o.mld_opdr_verzonden verzonden,
fac.gettrackingdate ('ORDACP', o.mld_opdr_key) afgemeld,
fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) afgemeld,
fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) afgerond,
fac.gettrackingdate ('ORDVER', o.mld_opdr_key) verwerkt,
'Auto-opdracht'
FROM mld_opdr o,
mld_typeopdr ot,
mld_melding m,
mld_discipline md,
mld_stdmelding sm,
ins_srtdiscipline sd,
prs_bedrijf lev,
prs_v_perslid_fullnames iuv,
mld_statusopdr os
WHERE o.mld_opdr_datumbegin > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy')
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_stdmelding_autoorder = 1 -- Autoorder!
AND sm.mld_typeopdr_key IS NOT NULL
AND sm.prs_dienst_key IS NOT NULL
AND FLOOR ((m.mld_melding_datum - o.mld_opdr_datumbegin) * 24 * 60) = 0 -- Opdracht <1 minuut na melding aangemaakt!
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND o.mld_uitvoerende_keys = lev.prs_bedrijf_key(+)
AND o.mld_uitvoerende_keys = iuv.prs_perslid_key(+)
AND o.mld_statusopdr_key = os.mld_statusopdr_key
UNION ALL
SELECT sd.ins_srtdiscipline_omschrijving,
md.ins_discipline_omschrijving,
sm.mld_stdmelding_omschrijving,
ot.mld_typeopdr_key,
ot.mld_typeopdr_omschrijving,
o.mld_opdr_key,
o.mld_melding_key,
TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) opdrachtid,
COALESCE (lev.prs_bedrijf_naam, iuv.prs_perslid_naam_full) uitvoerende,
CASE
WHEN os.mld_statusopdr_key IN (3, 4, 5, 8, 10) THEN 'Open'
ELSE 'Gesloten'
END
open_gesloten,
os.mld_statusopdr_omschrijving,
o.mld_opdr_datumbegin aangemaakt,
fac.gettrackingdate ('ORDNEW', o.mld_opdr_key) toegekend,
o.mld_opdr_verzonden verzonden,
fac.gettrackingdate ('ORDACP', o.mld_opdr_key) afgemeld,
fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) afgemeld,
fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) afgerond,
fac.gettrackingdate ('ORDVER', o.mld_opdr_key) verwerkt,
'Desk-opdracht'
FROM mld_opdr o,
mld_typeopdr ot,
mld_melding m,
mld_discipline md,
mld_stdmelding sm,
ins_srtdiscipline sd,
prs_bedrijf lev,
prs_v_perslid_fullnames iuv,
mld_statusopdr os
WHERE o.mld_opdr_datumbegin > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy')
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND (sm.mld_stdmelding_autoorder = 0
OR sm.mld_typeopdr_key IS NULL
OR sm.prs_dienst_key IS NULL
OR FLOOR ((m.mld_melding_datum - o.mld_opdr_datumbegin) * 24 * 60) > 0) -- Opdracht >1 minuut na melding aangemaakt!
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND o.mld_uitvoerende_keys = lev.prs_bedrijf_key(+)
AND o.mld_uitvoerende_keys = iuv.prs_perslid_key(+)
AND o.mld_statusopdr_key = os.mld_statusopdr_key;
-- VLKC#69003: Doorlooptijden van uitvoerenden tov. afgesproken uitvoertijd
-- over gesloten opdrachten.
CREATE OR REPLACE VIEW VLKC_V_RAP_OPDR_DT
(
mld_opdr_key,
mld_melding_key,
opdrachtid,
status,
uitvoerende_key,
uitvoerende,
vakgroeptype,
fclt_3d_discipline_key,
vakgroep,
soortmelding,
fclt_3d_locatie_key,
locatiecode,
locatie,
mld_typeopdr_key,
opdrachttype,
uitvoertijd,
verstrektdatum,
afmelddatum,
--uiterste_afmelddatum,
geplande_einddatum,
duur,
optijd_telaat
)
AS
SELECT x.mld_opdr_key,
x.mld_melding_key,
x.ins_srtdiscipline_prefix || TO_CHAR (x.mld_melding_key) || '/' || TO_CHAR (x.mld_opdr_bedrijfopdr_volgnr) opdrachtid,
x.mld_statusopdr_omschrijving status,
x.mld_uitvoerende_keys uitvoerende_key,
COALESCE (x.prs_bedrijf_naam, x.prs_perslid_naam_full) uitvoerende,
x.ins_srtdiscipline_omschrijving vakgroeptype,
x.ins_discipline_key vakgroep_key,
x.ins_discipline_omschrijving vakgroep,
x.mld_stdmelding_omschrijving soortmelding,
x.alg_locatie_key,
x.alg_locatie_code,
x.alg_locatie_omschrijving,
x.mld_typeopdr_key,
x.mld_typeopdr_omschrijving,
TO_CHAR (x.mld_melding_t_uitvoertijd.tijdsduur) || x.mld_melding_t_uitvoertijd.eenheid uitvoertijd,
COALESCE (x.verzonden, x.toegekend) verstrektdatum,
x.afmelddatum,
--x.uiterste_afmelddatum,
x.geplande_datum,
mld.getactualuitvoer (COALESCE (x.verzonden, x.toegekend), x.afmelddatum, x.mld_stdmelding_key, NULL, NULL, NULL, 'U').tijdsduur duur,
--DECODE (SIGN (x.uiterste_afmelddatum - x.afmelddatum), -1, 'Te laat', 'Op tijd')
DECODE (SIGN (x.geplande_datum - x.afmelddatum),
-1, 'Te laat',
DECODE (SIGN (x.wd_voor_geplande_datum - x.afmelddatum),
-1, 'Dag voor einddatum',
'Binnen einddatum'))
optijd_telaat
FROM (SELECT o.mld_opdr_key,
o.mld_melding_key,
o.mld_opdr_bedrijfopdr_volgnr,
os.mld_statusopdr_omschrijving,
o.mld_uitvoerende_keys,
lev.prs_bedrijf_naam,
iuv.prs_perslid_naam_full,
sd.ins_srtdiscipline_prefix,
sd.ins_srtdiscipline_omschrijving,
md.ins_discipline_key,
md.ins_discipline_omschrijving,
sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
l.alg_locatie_key,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
ot.mld_typeopdr_key,
ot.mld_typeopdr_omschrijving,
m.mld_melding_spoed,
m.mld_melding_t_uitvoertijd,
fac.gettrackingdate ('ORDNEW', o.mld_opdr_key) toegekend,
o.mld_opdr_verzonden verzonden,
fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) afmelddatum,
--fac.datumtijdplusuitvoertijd (
-- COALESCE (o.mld_opdr_verzonden, fac.gettrackingdate ('ORDNEW', o.mld_opdr_key)),
-- m.mld_melding_t_uitvoertijd.tijdsduur,
-- m.mld_melding_t_uitvoertijd.eenheid)
-- uiterste_afmelddatum
o.mld_opdr_einddatum geplande_datum,
--fac.datumtijdplusuitvoertijd (
-- COALESCE (o.mld_opdr_verzonden, fac.gettrackingdate ('ORDNEW', o.mld_opdr_key)),
-- DECODE (m.mld_melding_t_uitvoertijd.eenheid,
-- 'D', GREATEST (m.mld_melding_t_uitvoertijd.tijdsduur - 1, 0),
-- GREATEST (m.mld_melding_t_uitvoertijd.tijdsduur - 9, 0)), -- 'U'
-- m.mld_melding_t_uitvoertijd.eenheid)
-- dag_voor_uiterste_afmdat,
--o.mld_opdr_einddatum - 1 d_voor_geplande_datum, -- Dag voor geplande einddatum
fac.datumtijdplusuitvoertijd (
o.mld_opdr_einddatum - 14,
mld.getactualuitvoer (o.mld_opdr_einddatum - 14, o.mld_opdr_einddatum, sm.mld_stdmelding_key, -1, -1, -1, 'D').tijdsduur - 1,
'D')
wd_voor_geplande_datum -- Werkdag voor geplande einddatum (niet triviaal, maar best slim bedacht, al zeg ik het zelf)
FROM mld_opdr o,
mld_typeopdr ot,
mld_melding m,
alg_locatie l,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd,
prs_bedrijf lev,
prs_v_perslid_fullnames iuv,
mld_statusopdr os
WHERE o.mld_opdr_datumbegin > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy')
AND o.mld_statusopdr_key IN (6, 7, 9) -- Gesloten opdrachten (excl. Afgewezen/Niet akkoord)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND o.mld_uitvoerende_keys = lev.prs_bedrijf_key(+)
AND o.mld_uitvoerende_keys = iuv.prs_perslid_key(+)
AND o.mld_statusopdr_key = os.mld_statusopdr_key) x;
-- VLKC#72196: Doorlooptijden van uitvoerenden tov. afgesproken uitvoertijd
-- over open opdrachten.
CREATE OR REPLACE VIEW VLKC_V_RAP_OPDR_DT_OPEN
(
mld_opdr_key,
mld_melding_key,
opdrachtid,
status,
uitvoerende_key,
uitvoerende,
vakgroeptype,
fclt_3d_discipline_key,
vakgroep,
soortmelding,
fclt_3d_locatie_key,
locatiecode,
locatie,
mld_typeopdr_key,
opdrachttype,
uitvoertijd,
verstrektdatum,
afmelddatum,
--uiterste_afmelddatum,
geplande_einddatum,
duur,
optijd_telaat
)
AS
SELECT x.mld_opdr_key,
x.mld_melding_key,
x.ins_srtdiscipline_prefix || TO_CHAR (x.mld_melding_key) || '/' || TO_CHAR (x.mld_opdr_bedrijfopdr_volgnr) opdrachtid,
x.mld_statusopdr_omschrijving status,
x.mld_uitvoerende_keys uitvoerende_key,
COALESCE (x.prs_bedrijf_naam, x.prs_perslid_naam_full) uitvoerende,
x.ins_srtdiscipline_omschrijving vakgroeptype,
x.ins_discipline_key vakgroep_key,
x.ins_discipline_omschrijving vakgroep,
x.mld_stdmelding_omschrijving soortmelding,
x.alg_locatie_key,
x.alg_locatie_code,
x.alg_locatie_omschrijving,
x.mld_typeopdr_key,
x.mld_typeopdr_omschrijving,
TO_CHAR (x.mld_melding_t_uitvoertijd.tijdsduur) || x.mld_melding_t_uitvoertijd.eenheid uitvoertijd,
COALESCE (x.verzonden, x.toegekend) verstrektdatum,
x.afmelddatum,
--x.uiterste_afmdat,
x.geplande_datum,
mld.getactualuitvoer (COALESCE (x.verzonden, x.toegekend), COALESCE (x.afmelddatum, SYSDATE), x.mld_stdmelding_key, NULL, NULL, NULL, 'U').tijdsduur duur,
--DECODE (SIGN (x.uiterste_afmelddatum - COALESCE (x.afmelddatum, SYSDATE)), -1, 'Te laat', 'Op tijd')
--DECODE (SIGN (x.uiterste_afmdat - COALESCE (x.afmelddatum, SYSDATE)),
-- -1, 'Te laat',
-- DECODE (SIGN (x.wd_voor_geplande_datum - COALESCE (x.afmelddatum, SYSDATE)),
-- -1, 'Dag voor SLA',
-- 'Binnen SLA'))
DECODE (SIGN (x.geplande_datum - COALESCE (x.afmelddatum, SYSDATE)),
-1, 'Te laat',
DECODE (SIGN (x.wd_voor_geplande_datum - COALESCE (x.afmelddatum, SYSDATE)),
-1, 'Dag voor einddatum',
'Binnen einddatum'))
optijd_telaat
FROM (SELECT o.mld_opdr_key,
o.mld_melding_key,
o.mld_opdr_bedrijfopdr_volgnr,
os.mld_statusopdr_omschrijving,
o.mld_uitvoerende_keys,
lev.prs_bedrijf_naam,
iuv.prs_perslid_naam_full,
sd.ins_srtdiscipline_prefix,
sd.ins_srtdiscipline_omschrijving,
md.ins_discipline_key,
md.ins_discipline_omschrijving,
sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
l.alg_locatie_key,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
ot.mld_typeopdr_key,
ot.mld_typeopdr_omschrijving,
m.mld_melding_spoed,
m.mld_melding_t_uitvoertijd,
fac.gettrackingdate ('ORDNEW', o.mld_opdr_key) toegekend,
o.mld_opdr_verzonden verzonden,
fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) afmelddatum,
--fac.datumtijdplusuitvoertijd (
-- COALESCE (o.mld_opdr_verzonden, fac.gettrackingdate ('ORDNEW', o.mld_opdr_key)),
-- m.mld_melding_t_uitvoertijd.tijdsduur,
-- m.mld_melding_t_uitvoertijd.eenheid)
-- uiterste_afmdat,
o.mld_opdr_einddatum geplande_datum,
--fac.datumtijdplusuitvoertijd (
-- COALESCE (o.mld_opdr_verzonden, fac.gettrackingdate ('ORDNEW', o.mld_opdr_key)),
-- DECODE (m.mld_melding_t_uitvoertijd.eenheid,
-- 'D', GREATEST (m.mld_melding_t_uitvoertijd.tijdsduur - 1, 0),
-- GREATEST (m.mld_melding_t_uitvoertijd.tijdsduur - 9, 0)), -- 'U'
-- m.mld_melding_t_uitvoertijd.eenheid)
-- dag_voor_uiterste_afmdat,
--o.mld_opdr_einddatum - 1 d_voor_geplande_datum, -- Dag voor geplande einddatum
fac.datumtijdplusuitvoertijd (
o.mld_opdr_einddatum - 14,
mld.getactualuitvoer (o.mld_opdr_einddatum - 14, o.mld_opdr_einddatum, sm.mld_stdmelding_key, -1, -1, -1, 'D').tijdsduur - 1,
'D')
wd_voor_geplande_datum -- Werkdag voor geplande einddatum (niet triviaal, maar best slim bedacht, al zeg ik het zelf)
FROM mld_opdr o,
mld_typeopdr ot,
mld_melding m,
alg_locatie l,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd,
prs_bedrijf lev,
prs_v_perslid_fullnames iuv,
mld_statusopdr os
WHERE o.mld_opdr_datumbegin > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy')
AND o.mld_statusopdr_key NOT IN (1, 2, 6, 7, 9) -- Open opdrachten
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND o.mld_uitvoerende_keys = lev.prs_bedrijf_key(+)
AND o.mld_uitvoerende_keys = iuv.prs_perslid_key(+)
AND o.mld_statusopdr_key = os.mld_statusopdr_key) x;
/*
CREATE OR REPLACE VIEW VLKC_V_UDR_MELDING_PLUS
(
MELDING_KEY,
MELDINGNUMMER,
MELDING_START_KEY,
EXTERNNUMMER,
MELDING_REGIO,
MELDING_DISTRICT,
MELDING_LOCATIECODE,
MELDING_LOCATIE,
MELDING_LOCATIEPLAATS,
FCLT_3D_LOCATIE_KEY,
MELDING_GEBOUWCODE,
MELDING_GEBOUW,
MELDING_VERDIEPING,
MELDING_RUIMTENR,
MELDING_RUIMTE,
MELDING_ORDERNR,
KOSTENSOORTGROEP,
KOSTENSOORT,
KOSTENPLAATS,
KOSTENPLAATS_OMS,
MELDER,
MELDER_KEY,
MELDER_EMAIL,
AFDELING,
AFDELING_OMSCHRIJVING,
FCLT_3D_AFDELING_KEY,
DIVISIE,
DIVISIE_OMSCHRIJVING,
FCLT_3D_DIVISIE_KEY,
BEDRIJF_KEY,
INVOERDER,
MELDBRON,
SOORTMELDING,
FCLT_3D_DISCIPLINE_KEY,
PRODUCTGROEP,
SUBPRODUCTGROEP,
BEHANDELGROEP,
BEHANDELAAR,
BEHANDELAAR_KEY,
SUBPRODUCTGROEPGROEP,
FCLT_3D_DISCIPLINE2_KEY,
ACTIEVE_BEHANDELGROEP,
ACTIEVE_BEHANDELAAR_KEY,
ACTIEVE_BEHANDELAAR,
MELDING_STATUS,
SLA_NVT,
SLA_WERKDGN,
SLA_WERKUREN,
SLA_RESPIJTDGN,
SLA_RESPIJTUREN,
SLA_ACCPTDGN,
SLA_ACCPTUREN,
PLAN_UITVOERTIJD_SLA,
MELDING_DATUM,
MELDING_EINDDATUM,
MELDING_EINDDATUM_STD,
MELDING_ACCEPTDATUM,
MELDING_AFGEMELD,
MELDING_ACCEPTED,
DOORLOOPTIJD_WERKDGN,
DOORLOOPTIJD_WERKUREN,
ONDERWERP,
VOMSCHRIJVING,
MELDING_OPMERKING,
PRIORITEIT,
PRIORITEITTXT,
RATING,
RATING_OPMERKING,
BOLLETJE,
ACTIECODE,
ACCEPT_SLA_DAGEN,
ACCEPT_SLA_UREN,
UITVOERING_SLA_DAGEN,
UITVOERING_SLA_UREN,
AFSPRAAK_SLA_DAGEN,
AFSPRAAK_SLA_UREN,
ACCEPT_SLA_OPTIJD,
UITVOERING_SLA_OPTIJD,
AFSPRAAK_SLA_OPTIJD,
SELFSERVICE
)
AS
SELECT * -- TODO
FROM mld_v_udr_melding;
*/
CREATE OR REPLACE VIEW VLKC_V_UDR_OPDRACHT_PLUS
(
OPDRACHT_KEY,
OPDRACHT_NUMMER,
OPDRACHT_REGIO,
OPDRACHT_DISTRICT,
OPDRACHT_LOCATIE_CODE,
OPDRACHT_LOCATIE,
OPDRACHT_LOCATIEPLAATS,
FCLT_3D_LOCATIE_KEY,
OPDRACHT_GEBOUWCODE,
OPDRACHT_GEBOUW,
OPDRACHT_VERDIEPING,
OPDRACHT_RUIMTENR,
OPDRACHT_RUIMTE,
OPDRACHT_KOSTENPLAATS,
OPDRACHT_KOSTENPLAATS_OMS,
MELDING_KEY,
OPDRACHT_TYPE,
OPDRACHT_VOLGNUMMER,
OPDRACHT_STATUS,
OPDRACHT_DUUR_GEPLAND,
OPDRACHT_DATUM,
OPDRACHT_EINDDATUM,
OPDRACHT_PLANDATUM,
OPDRACHT_ACCEPTDATUM,
OPDRACHT_AFGEMELD,
OPDRACHT_DOORLOOPTIJD,
OPDRACHT_ACCEPTTIJD,
OPDRACHT_OMSCHRIJVING,
OPDRACHT_OPMERKING,
OPDRACHT_UITVOERENDE,
OPDRACHT_UITVOERENDE_CONTACT,
OPDRACHT_BEHANDELAAR,
OPDRACHT_CONTRACT,
OPDRACHT_CONTRACT_VERSIE,
OPDRACHT_CONTACTPERSOON,
OPDRACHT_UREN,
OPDRACHT_CORRECTIE,
OPDRACHT_MATERIAAL,
OPDRACHT_UURTARIEF,
OPDRACHT_KOSTEN,
OPDRACHT_PARENT_KEY,
OPDRACHT_PARENT_NUMMER,
OPDRACHT_PARENT_VOLGNUMMER,
OPDRACHT_VERSTREKTDATUM,
OPDRACHT_LEV_DOORLOOPDAGEN,
OPDRACHT_LEV_DOORLOOPUREN,
OPDRACHT_UITVOERENDE_KEY
)
AS
SELECT x.OPDRACHT_KEY,
x.OPDRACHT_NUMMER,
x.OPDRACHT_REGIO,
x.OPDRACHT_DISTRICT,
x.OPDRACHT_LOCATIE_CODE,
x.OPDRACHT_LOCATIE,
x.OPDRACHT_LOCATIEPLAATS,
x.FCLT_3D_LOCATIE_KEY,
x.OPDRACHT_GEBOUWCODE,
x.OPDRACHT_GEBOUW,
x.OPDRACHT_VERDIEPING,
x.OPDRACHT_RUIMTENR,
x.OPDRACHT_RUIMTE,
x.OPDRACHT_KOSTENPLAATS,
x.OPDRACHT_KOSTENPLAATS_OMS,
x.MELDING_KEY,
x.OPDRACHT_TYPE,
x.OPDRACHT_VOLGNUMMER,
x.opdracht_status,
x.opdracht_duur_gepland,
x.opdracht_datum,
x.opdracht_einddatum,
x.opdracht_plandatum,
x.opdracht_acceptdatum,
x.opdracht_afgemeld,
x.opdracht_doorlooptijd,
x.opdracht_accepttijd,
x.opdracht_omschrijving,
x.opdracht_opmerking,
x.opdracht_uitvoerende,
x.opdracht_uitvoerende_contact,
x.opdracht_behandelaar,
x.opdracht_contract,
x.opdracht_contract_versie,
x.opdracht_contactpersoon,
x.opdracht_uren,
x.opdracht_correctie,
x.opdracht_materiaal,
x.opdracht_uurtarief,
x.opdracht_kosten,
x.opdracht_parent_key,
x.opdracht_parent_nummer,
x.opdracht_parent_volgnummer,
x.opdracht_verstrektdatum,
x.opdracht_lev_doorloopdagen,
x.opdracht_lev_doorloopuren,
COALESCE (b.prs_bedrijf_key, pf.prs_perslid_key) opdracht_uitvoerende_key
FROM mld_v_udr_opdracht x, mld_opdr o, prs_bedrijf b, prs_v_perslid_fullnames pf
WHERE x.opdracht_key = o.mld_opdr_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key(+)
AND o.mld_uitvoerende_keys = pf.prs_perslid_key(+);
-- VLKC#71874: Projectkostenrapportage.
CREATE OR REPLACE VIEW VLKC_V_RAP_PROJECTKOSTEN
(
mld_opdr_key,
mld_melding_key,
opdrachtid,
alg_locatie_key,
locatiecode,
locatie,
gebouwcode,
gebouw,
verdieping,
mld_typeopdr_key,
opdrachttype,
status,
omschrijving,
uitvoerende_key,
uitvoerende,
kostenplaats,
kostenplaats_oms,
--kostensoort,
kostensoort_oms,
opdrachtkosten,
gefactureerd,
investering,
reden_0_order,
aangemaakt,
toegekend,
verzonden
)
AS
SELECT x.mld_opdr_key,
x.mld_melding_key,
x.ins_srtdiscipline_prefix || TO_CHAR (x.mld_melding_key) || '/' || TO_CHAR (x.mld_opdr_bedrijfopdr_volgnr)
opdrachtid,
x.alg_locatie_key,
x.alg_locatie_code,
x.alg_locatie_omschrijving,
x.alg_gebouw_code,
x.alg_gebouw_naam,
x.alg_verdieping_code,
x.mld_typeopdr_key,
x.mld_typeopdr_omschrijving,
x.mld_statusopdr_omschrijving status,
x.mld_opdr_omschrijving omschrijving,
x.mld_uitvoerende_keys uitvoerende_key,
COALESCE (x.prs_bedrijf_naam, x.prs_perslid_naam_full) uitvoerende,
x.kostenplaats,
x.kostenplaats_oms,
--x.kostensoort,
x.kostensoort_oms,
TO_CHAR (x.opdrachtkosten, 'fm999999999999999990,00') opdrachtkosten,
TO_CHAR (gefactureerd.kosten, 'fm999999999999999990,00') gefactureerd,
DECODE (io.mld_kenmerkopdr_key, NULL, 'Nee', 'Ja') investering,
ro.mld_kenmerkopdr_waarde reden_0_order,
x.mld_opdr_datumbegin aangemaakt,
fac.gettrackingdate ('ORDNEW', x.mld_opdr_key) toegekend,
x.mld_opdr_verzonden verzonden
FROM (SELECT o.mld_opdr_key,
sd.ins_srtdiscipline_prefix,
o.mld_melding_key,
o.mld_opdr_bedrijfopdr_volgnr,
l.alg_locatie_key,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
aog.alg_gebouw_code,
aog.alg_gebouw_naam,
aog.alg_verdieping_code,
ot.mld_typeopdr_key,
ot.mld_typeopdr_omschrijving,
os.mld_statusopdr_omschrijving,
o.mld_opdr_omschrijving,
o.mld_uitvoerende_keys,
lev.prs_bedrijf_naam,
iuv.prs_perslid_naam_full,
kp.prs_kostenplaats_nr kostenplaats,
kp.prs_kostenplaats_omschrijving kostenplaats_oms,
--COALESCE (ksgo.prs_kostensoortgrp_altcode, ksgm.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode)
-- kostensoort,
COALESCE (kso.prs_kostensoort_oms, ksm.prs_kostensoort_oms, ksd.prs_kostensoort_oms)
kostensoort_oms,
o.mld_opdr_kosten opdrachtkosten,
o.mld_opdr_datumbegin,
mld_opdr_verzonden
FROM mld_opdr o,
mld_typeopdr ot,
mld_melding m,
alg_locatie l,
alg_v_allonrgoed_gegevens aog,
prs_bedrijf lev,
prs_v_perslid_fullnames iuv,
mld_statusopdr os,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd,
prs_kostenplaats kp,
prs_kostensoort kso,
prs_kostensoortgrp ksgo,
prs_kostensoort ksm,
prs_kostensoortgrp ksgm,
prs_kostensoort ksd,
prs_kostensoortgrp ksgd
WHERE o.mld_opdr_datumbegin > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy')
AND o.mld_statusopdr_key IN (6, 7, 9)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
--AND o.mld_typeopdr_key != 282 -- Offerteaanvraag
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys(+)
AND o.mld_uitvoerende_keys = lev.prs_bedrijf_key(+)
AND o.mld_uitvoerende_keys = iuv.prs_perslid_key(+)
AND o.mld_statusopdr_key = os.mld_statusopdr_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND md.ins_srtdiscipline_key = 21 -- Project
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+)
AND kso.prs_kostensoortgrp_key = ksgo.prs_kostensoortgrp_key(+)
AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
AND ksm.prs_kostensoortgrp_key = ksgm.prs_kostensoortgrp_key(+)
AND md.prs_kostensoort_key = ksd.prs_kostensoort_key(+)
AND ksd.prs_kostensoortgrp_key = ksgd.prs_kostensoortgrp_key(+)) x
LEFT JOIN ( SELECT mld_opdr_key,
SUM (fin_factuur_totaal + fin_factuur_totaal_btw) kosten
FROM fin_factuur
WHERE fin_factuur_verwijder IS NULL
AND fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
GROUP BY mld_opdr_key) gefactureerd
ON x.mld_opdr_key = gefactureerd.mld_opdr_key
LEFT JOIN mld_v_aanwezigkenmerkopdr io
ON x.mld_opdr_key = io.mld_opdr_key
AND EXISTS
(SELECT 1
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 181 -- Investeringsopdracht
AND mld_kenmerk_key = io.mld_kenmerk_key)
LEFT JOIN mld_v_aanwezigkenmerkopdr ro
ON x.mld_opdr_key = ro.mld_opdr_key
AND EXISTS
(SELECT 1
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 161 -- Reden "0-order"
AND mld_kenmerk_key = ro.mld_kenmerk_key);
------ 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