Files
Customer/VLKC/vlkc.sql
Maarten van der Heide 3932d65ee2 VLKC#56901 Bon+Rap/Prefixen contracten
svn path=/Customer/trunk/; revision=43020
2019-06-20 07:47:07 +00:00

4098 lines
195 KiB
MySQL

--
-- $Id$
-- Comment voor éncoding test
-- 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;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
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; -- F. Van Lanschot Bankiers 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, 0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 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 F. van Lanschot!
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, 0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 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
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 >= 2 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 <= 6 -- 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 <= 6 -- 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);
COMMIT;
-- Zet afdelingen op VERVALLEN; de rest handmatig verder maar regelen!
v_errormsg := 'Fout inactiveren afdelingen.';
SELECT COUNT ( * ) -- ALLEEN onder F. van Lanschot!
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 F. van Lanschot!
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 F. van Lanschot!
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";"Loginnaam";"Achternaam";"Tussenvoegsel";"Voorletters";"Voornaam";"Afdelingscode";"Functie";"Email";"Telefoonnr";"Mobiel";"Stamplaats"%');
--'%Personeelsnummer;Loginnaam;Achternaam;Tussenvoegsel;Voorletters;Voornaam;Afdelingscode;Functie;Email;Telefoonnr;Mobiel;Stamplaats%');
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;0;0;'
|| '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%');
-- 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 (key = 1) ->
-- Gebouw en daaronder Ruimte '_000' op de verdieping met het laagste volgnummer!
-- 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
-- '_000' op de meegegeven locatie.
-- Eventuele WPs onder andere locaties dan import-locatie blijven ook 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 = -1
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 = -1
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 = -1
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 = '_000'
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanwezigruimte r, alg_verdieping v
WHERE r.alg_ruimte_nr = '_000'
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_verdieping_volgnr < iv.alg_verdieping_volgnr)),
i.alg_ruimte_nr =
(SELECT '_000'
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
alg_v_aanweziggebouw ig,
alg_locatie il
WHERE ud.fac_usrtab_key = -1
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))
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 = -1
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;
/
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_afd_count NUMBER (10);
v_afd_digit VARCHAR2 (1);
v_count_prs_import NUMBER (10); -- #actieve personen na import!
v_count_prs_actual NUMBER (10); -- #actieve personen voor import!
-- Verwijderen personen niet in import (voor afdeling wel in import)!
/*
CURSOR c_del (p_afd_digit VARCHAR2)
IS
SELECT p.prs_perslid_key, p.prs_perslid_email
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_email IS NOT NULL -- Personen met e-mail adres
AND p.prs_srtperslid_key = 3941 -- Personen met functie=Collega
AND NOT EXISTS
(SELECT 1
FROM fac_imp_perslid
WHERE prs_perslid_email = p.prs_perslid_email)
ORDER BY 2, 1;
*/
CURSOR c_del (p_afd_digit VARCHAR2)
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 p.prs_afdeling_key = a.prs_afdeling_key
--AND SUBSTR (a.prs_afdeling_upper, 1, 1) = UPPER (p_afd_digit)
--AND EXISTS
-- (SELECT 1
-- FROM fac_imp_perslid
-- WHERE UPPER (SUBSTR (prs_afdeling_naam, 1, 1)) = UPPER (p_afd_digit))
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 || '|' || i.prs_kenmerk2 || '] ' aanduiding,
p.prs_perslid_key,
i.prs_kenmerk2
FROM fac_imp_perslid i, prs_v_aanwezigperslid p
WHERE i.prs_kenmerk2 IS NOT NULL -- Login2
AND i.prs_perslid_nr = p.prs_perslid_nr
AND i.prs_kenmerk2 != p.prs_perslid_oslogin;
BEGIN
/*
SELECT COUNT (DISTINCT SUBSTR (prs_afdeling_naam, 1, 1)), MIN (SUBSTR (prs_afdeling_naam, 1, 1))
INTO v_afd_count, v_afd_digit
FROM fac_imp_perslid;
-- Bepaal aantal personen na import (beginnend met v_afd_digit).
SELECT COUNT (DISTINCT prs_perslid_nr)
INTO v_count_prs_import
FROM fac_imp_perslid
WHERE SUBSTR (prs_afdeling_naam, 1, 1) = v_afd_digit;
-- Bepaal aantal personen voor import (beginnend met v_afd_digit).
SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
INTO v_count_prs_actual
FROM prs_v_aanwezigperslid p, prs_afdeling a
WHERE p.prs_perslid_nr IS NOT NULL
AND p.prs_afdeling_key = a.prs_afdeling_key
AND SUBSTR (a.prs_afdeling_naam, 1, 1) = v_afd_digit;
IF (v_afd_count > 1)
THEN
fac.imp_writelog (
p_import_key, 'W',
'Personen niet onder dezelfde afdeling op het hoogste niveau (VL en KC); zie specificatie!',
'Geen personen verwijderd');
ELSIF (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 (v_afd_digit)
LOOP
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
END LOOP;
COMMIT;
-- Generieke update (op personeelsnummer).
prs.update_perslid (p_import_key, 'NR', NULL);
END IF;
*/
-- 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 (v_afd_digit)
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;
END IF;
END vlkc_update_prs;
/
-- Import vanuit Strukton
/* Formatted on 19-12-2016 15:15:45 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE vlkc_import_opdrstat_strukton (p_import_key IN NUMBER)
AS
c_delim VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input 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;
v_ongeldig NUMBER (1) := 0;
-- De importvelden
v_mld_opdr_key_tekst VARCHAR2 (100);
v_mld_opdr_key NUMBER (10);
v_mld_opdr_opmerking VARCHAR2 (4000);
v_extern_nummer VARCHAR2 (100);
v_status_code VARCHAR2 (100);
v_status NUMBER (10);
v_datumtijd_tekst VARCHAR2 (100);
v_datumtijd DATE;
v_status_tekst VARCHAR2 (100);
v_opmerking VARCHAR2 (4000);
v_totaal NUMBER (8,2);
v_totaal_str VARCHAR2 (100);
-- Overige velden:
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
-- Eerst opruiming
DELETE FROM vlkc_imp_opdrstat_strukton;
COMMIT;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout opvragen importregel';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_delim, v_mld_opdr_key_tekst);
fac.imp_getfield (v_newline, c_delim, v_extern_nummer);
fac.imp_getfield (v_newline, c_delim, v_status_code); -- typeID
fac.imp_getfield (v_newline, c_delim, v_datumtijd_tekst);
fac.imp_getfield (v_newline, c_delim, v_status_tekst);
fac.imp_getfield (v_newline, c_delim, v_opmerking);
fac.imp_getfield (v_newline, c_delim, v_totaal_str);
v_opmerking := SUBSTR (v_opmerking, 1, 1000);
-- Verwijder de markering voor cr/lf die in stylesheet is toegevoegd.
v_opmerking := REPLACE (v_opmerking, '@@', CHR (13) || CHR (10));
v_totaal := fac.safe_to_number (v_totaal_str);
fac.imp_writelog (p_import_key, 'I',
'v_totaal_str:' || v_totaal_str || ' / v_totaal:' || TO_CHAR (v_totaal), '');
v_aanduiding :=
'['
|| v_mld_opdr_key_tekst
|| '|'
|| v_extern_nummer
|| '|'
|| v_status_code
|| '|'
|| v_datumtijd_tekst
|| '|'
|| v_status_tekst
|| '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste
-- kolommen de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF header_is_valid = 0
THEN
IF UPPER (TRIM (v_mld_opdr_key_tekst)) = 'REFERENCEID'
AND UPPER (TRIM (v_extern_nummer)) = 'SERVICEREQUESTID'
AND UPPER (TRIM (v_status_code)) = 'TYPEID'
AND UPPER (TRIM (v_datumtijd_tekst)) = 'DATETIME'
AND UPPER (TRIM (v_opmerking)) = 'REMARKS'
AND UPPER (TRIM (v_totaal_str)) = 'TOTAL'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Fout bepalen opdracht';
v_mld_opdr_key := TRIM (v_mld_opdr_key);
BEGIN
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
INTO v_mld_opdr_key, v_mld_opdr_opmerking
FROM mld_opdr o, mld_melding m, mld_stdmelding sm, ins_tab_discipline td, ins_srtdiscipline sd
WHERE o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr = v_mld_opdr_key_tekst;
EXCEPTION
WHEN OTHERS
THEN
v_ongeldig := 1;
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_import_key, 'W', v_aanduiding || v_errormsg, '');
END;
IF v_ongeldig = 0
THEN
v_errormsg := 'Fout bepalen status';
CASE
WHEN v_status_code = '5'
THEN
v_status := 5; -- uitgegeven
WHEN v_status_code = '10'
THEN
v_status := 8; -- geaccepteerd
WHEN v_status_code = '20' -- monteur gereed
THEN
v_status := 6; -- afgemeld
WHEN v_status_code = '25' -- specialist gereed
THEN
v_status := 6; -- afgemeld
WHEN v_status_code = '30' -- technisch gereed
THEN
v_status := 6; -- afgemeld
-- For future use
--WHEN v_status_code = '40' -- uitgeprijst
--THEN
-- v_status := 9; -- afgerond
WHEN v_status_code = '70'
THEN
v_status := 1; -- geannuleerd
WHEN v_status_code = '80'
THEN
v_status := 1; -- afgewezen
ELSE
v_status := NULL;
v_ongeldig := 1; -- nog te bezien
END CASE;
END IF;
IF v_ongeldig = 0
THEN
v_errormsg := 'Fout converteren datumtijd';
IF INSTR (v_datumtijd_tekst, '.') > 0
THEN
v_datumtijd := fac.safe_to_date (REPLACE (SUBSTR (v_datumtijd_tekst, 1, INSTR (v_datumtijd_tekst, '.') - 1), 'T', ' '), 'yyyy-mm-dd hh24:mi:ss');
ELSE
v_datumtijd := fac.safe_to_date (v_datumtijd_tekst, 'yyyy-mm-dd hh24:mi:ss');
END IF;
END IF;
IF v_ongeldig = 0
THEN
v_errormsg := 'Fout aanvullen opmerking';
-- Controleer of de opmerking is gevuld en deze opmerking niet
-- al bij een eerdere statusovergang is gemeld.
IF v_opmerking IS NOT NULL AND INSTR (v_mld_opdr_opmerking, v_opmerking) = 0
THEN
v_opmerking := '[' || v_datumtijd_tekst || '] - ' || v_status_tekst || CHR (13) || CHR (10) || v_opmerking;
ELSE
v_opmerking := '[' || v_datumtijd_tekst || '] - ' || v_status_tekst;
END IF;
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout wegschrijven statusbericht';
INSERT INTO vlkc_imp_opdrstat_strukton (mld_opdr_key, extern_nummer, status, datumtijd, opmerking, totaal)
VALUES (v_mld_opdr_key, v_extern_nummer, v_status, v_datumtijd, v_opmerking, v_totaal);
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, 'E', v_aanduiding || v_errormsg, '');
END;
ELSE
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, '');
END IF;
END IF;
END;
END LOOP;
IF header_is_valid = 0
THEN
fac.imp_writelog (p_import_key, 'E',
'Ongeldig importbestand', 'Geen header of header niet volgens specificatie!');
ELSE
fac.imp_writelog (p_import_key, 'S',
'Inleesproces/#ingelezen statusberichten: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key, 'S',
'Inleesproces/#ongeldige niet ingelezen statusberichten: ' || TO_CHAR (v_count_tot - v_count_imp), '');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Inleesproces statusberichten afgebroken!');
END;
/
CREATE OR REPLACE PROCEDURE vlkc_update_opdrstat_strukton (p_import_key IN NUMBER)
AS
-- Cursor loopt - in volgorde! - over alle ingelezen statusberichten.
CURSOR c1
IS
SELECT mld_opdr_key, extern_nummer, datumtijd, status, opmerking, totaal
FROM vlkc_imp_opdrstat_strukton
ORDER BY 1, 3;
c_user_key NUMBER (10) := 5; -- _STRUKTON-user
c_refnr_srtkkey NUMBER (10) := 42; -- Refnr. Leverancier
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_count_tot NUMBER (10) := 0;
v_count NUMBER (10) := 0;
v_mld_key NUMBER (10) := 0;
v_opdr_key NUMBER (10) := 0;
v_opdr_status NUMBER (10) := 0;
v_mld_typeopdr_key mld_typeopdr.mld_typeopdr_key%TYPE;
v_mld_kenmerk_key mld_kenmerk.mld_kenmerk_key%TYPE;
v_mld_kenmerkopdr_key mld_kenmerkopdr.mld_kenmerkopdr_key%TYPE;
BEGIN
-- Loop over alle ingelezen Strukton-statusberichten.
FOR rec IN c1
LOOP
BEGIN
v_aanduiding :=
'['
|| rec.mld_opdr_key
|| '|'
|| SUBSTR (rec.opmerking, 1, 100)
|| '] ';
v_count_tot := v_count_tot + 1;
-- Key van melding/opdracht bepalen en Refnr. bij opdracht opslaan.
IF rec.mld_opdr_key IS NOT NULL
THEN
v_errormsg := 'Fout bepalen opdracht.';
SELECT mld_melding_key, mld_opdr_key, mld_statusopdr_key, mld_typeopdr_key
INTO v_mld_key, v_opdr_key, v_opdr_status, v_mld_typeopdr_key
FROM mld_opdr
WHERE mld_opdr_key = rec.mld_opdr_key;
v_errormsg := 'Fout bepalen Refnr-kenmerk.';
SELECT k.mld_kenmerk_key
INTO v_mld_kenmerk_key
FROM mld_kenmerk k
WHERE k.mld_srtkenmerk_key = c_refnr_srtkkey
AND k.mld_typeopdr_key = v_mld_typeopdr_key;
v_errormsg := 'Fout bepalen Refnr-kenmerkopdracht.';
SELECT MAX (ko.mld_kenmerkopdr_key)
INTO v_mld_kenmerkopdr_key
FROM mld_kenmerkopdr ko
WHERE ko.mld_opdr_key = v_opdr_key
AND v_mld_kenmerk_key = ko.mld_kenmerk_key;
IF v_mld_kenmerkopdr_key IS NULL
THEN
-- Kenmerk toevoegen
v_errormsg := 'Fout toevoegen Refnr-kenmerkopdracht.';
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key,
mld_opdr_key,
mld_kenmerkopdr_waarde)
VALUES (v_mld_kenmerk_key, v_opdr_key, rec.extern_nummer);
ELSE
-- Kenmerk bijwerken
v_errormsg := 'Fout bijwerken Refnr-kenmerkopdracht.';
UPDATE mld_kenmerkopdr
SET mld_kenmerkopdr_waarde = rec.extern_nummer
WHERE mld_kenmerkopdr_key = v_mld_kenmerkopdr_key;
END IF;
v_errormsg := 'Fout bijwerken Opmerking (opdracht).';
v_count := LENGTH (rec.opmerking) + 5; -- Beetje speling qua lengte!
UPDATE mld_opdr
SET mld_opdr_opmerking =
DECODE (
mld_opdr_opmerking,
NULL,
rec.opmerking,
rec.opmerking
|| CHR (13)
|| CHR (10)
|| SUBSTR (mld_opdr_opmerking, 1, (4000 - v_count)))
WHERE mld_opdr_key = v_opdr_key;
v_errormsg := 'Fout bijwerken Status.';
IF v_opdr_status <> rec.status
THEN
IF rec.status = 8 AND v_opdr_status = 5
THEN
-- Accepteer opdracht als de opdracht uitgegeven was
MLD.setopdrachtstatus (v_opdr_key, 8, c_user_key); -- Strukton
ELSIF rec.status = 6 AND v_opdr_status = 5
THEN
-- Meld de opdracht af als deze uitgegeven was
MLD.setopdrachtstatus (v_opdr_key, 8, c_user_key); -- Strukton, eerst accepteren
MLD.setopdrachtstatus (v_opdr_key, 6, c_user_key); -- Strukton
ELSIF rec.status = 6 AND v_opdr_status = 8
THEN
-- Meld de opdracht af als deze geaccepteerd was
MLD.setopdrachtstatus (v_opdr_key, 6, c_user_key); -- Strukton
ELSIF rec.status = 1 AND v_opdr_status IN (5, 8)
THEN
-- Wijs de opdracht af als deze niet/wel geaccepteerd was
MLD.setopdrachtstatus (v_opdr_key, 1, c_user_key); -- Strukton
MLD.updatemeldingstatusAV (v_mld_key, 0, c_user_key, 0);
ELSIF rec.status = 9 AND v_opdr_status = 6 -- DODE TAK; er geldt nooit rec.status = 9!
THEN
-- Rond de opdracht af als deze afgemeld was
mld.setopdrachtstatus (v_opdr_key, 9, c_user_key); -- Strukton
END IF;
IF rec.status = 6 AND v_opdr_status <> 6
THEN
-- Niet meer melding bijwerken (en afmelden was ook al niet meer)!
/*
v_errormsg := 'Fout bijwerken Opmerking (melding).';
UPDATE mld_melding m
SET mld_melding_opmerking =
DECODE (
mld_melding_opmerking,
NULL,
rec.opmerking,
rec.opmerking || CHR (13) || CHR (10)
|| SUBSTR (mld_melding_opmerking,
1,
(4000 - v_count)))
WHERE mld_melding_key = v_mld_key
AND mld_melding_status IN (4, 7)
AND NOT EXISTS
( -- Afhandeling in melding niet aanpassen voor projecten
SELECT sm.mld_stdmelding_key
FROM mld_stdmelding sm,
ins_tab_discipline td,
ins_srtdiscipline sd
WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_prefix = 'QQQ');
*/
-- Sinds AADO#30922 wordt de melding niet meer automatisch afgemeld.
MLD.updatemeldingstatusAV (v_mld_key, 0, c_user_key, 0);
END IF;
END IF;
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Statusbericht-loop');
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.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Importproces statusberichten afgebroken!');
END;
/
-- VLKC#40719: Klantspecifieke FACTUUR-import/update die vereist dat bij VLKC
-- bestelopdrachten met een 'b' (of 'B') beginnen.
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 = '?' || 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';
fac_update_factuur (p_import_key);
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 = 5
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 = 5
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 = 5
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 = 5
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é',
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 per februari 2018: locatie toegevoegd, per april 2018: uitbreiding reserveringstypen/catalogi
/* Formatted on 21-4-2016 15:48:12 (QP5 v5.136.908.31019) */
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 (alg_ruimte_geg.alg_ruimte_aanduiding,
res_ruimte_geg.res_ruimte_nr),
(SELECT MIN (ALG_LOCATIE.ALG_LOCATIE_CODE)
FROM ALG_LOCATIE,
ALG_GEBOUW,
ALG_VERDIEPING,
ALG_RUIMTE,
RES_ALG_RUIMTE,
RES_RUIMTE_OPSTELLING,
RES_RSV_RUIMTE
WHERE ALG_LOCATIE.ALG_LOCATIE_KEY = ALG_GEBOUW.ALG_LOCATIE_KEY
AND ALG_GEBOUW.ALG_GEBOUW_KEY =
ALG_VERDIEPING.ALG_GEBOUW_KEY
AND ALG_VERDIEPING.ALG_VERDIEPING_KEY =
ALG_RUIMTE.ALG_VERDIEPING_KEY
AND ALG_RUIMTE.ALG_RUIMTE_KEY =
RES_ALG_RUIMTE.ALG_RUIMTE_KEY
AND RES_ALG_RUIMTE.RES_RUIMTE_KEY =
RES_RUIMTE_OPSTELLING.RES_RUIMTE_KEY
AND RES_RUIMTE_OPSTELLING.RES_RUIMTE_OPSTEL_KEY =
RES_RSV_RUIMTE.RES_RUIMTE_OPSTEL_KEY
AND RES_RSV_RUIMTE.RES_RSV_RUIMTE_KEY =
X.RES_RSV_RUIMTE_Key)
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,
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_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 rru
WHERE rro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key
AND rru.res_ruimte_key = rro.res_ruimte_key
AND rru.res_discipline_key IN (121)))
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_deel_key = rd.res_deel_key
AND rd.res_ins_deel_key = d.ins_deel_key
AND rd.res_discipline_key IN (49, 50, 51, 212, 361, 362)
AND rrd.res_rsv_deel_tot BETWEEN TRUNC (SYSDATE)
AND TRUNC (SYSDATE + 15)
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_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key IN (46, 81)
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 = 2) kr -- Opmerking Huismeester
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(+);
-- 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 (é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.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.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 (én geen weekend é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) ó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;
/
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 één regel
bedrag_credit, -- incl. BTW en niet samen met bedrag_debet op éé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', 'Offerteopdracht') 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) -- Werkopdracht/Offerteopdracht
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 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 één regel
bedrag_credit, -- incl. BTW en niet samen met bedrag_debet op één regel
omschrijving, -- max. 29 posities
verplichtingnummer,
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,
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_usrdata ud,
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),
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,
'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,
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,
'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,
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 één regel
bedrag_credit, -- incl. BTW en niet samen met bedrag_debet op éé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', '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 = 5 -- Werkopdracht
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 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 met Reden "0-order"!
(SELECT 1
FROM mld_v_aanwezigkenmerkopdr
WHERE mld_kenmerk_key = 201 -- 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,
DECODE (x.mld_typeopdr_key, 5, 'Werkopdracht', '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) -- 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 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) - COALESCE (debet.tot_incl_btw, 0) - COALESCE (credit.tot_incl_btw, 0)), 2) != 0;
-- 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).
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 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 (in jaren né cnt_contract_looptijd_tot)!
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 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#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;
-- Dummy export NACHTWERK!
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);
-- 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 b.bes_bestelling_key
FROM bes_bestelling b,
bes_bestelling_item bi,
bes_bestelopdr_item boi
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;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
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);
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 alg_gebouw_key,
alg_gebouw_omschrijving,
COALESCE (alg_gebouw_verwijder, alg_gebouw_vervaldatum)
alg_gebouw_verw
FROM alg_gebouw;
-- 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;
CREATE OR REPLACE VIEW vlkc_v_rap_groepleden_plus
(
prs_perslid_key,
login,
naam,
bedrijf_naam,
locatie_omschrijving,
locatie_code,
gebouw_omschrijving,
gebouw_code,
ruimte_aanduiding,
groep,
aantal_rechten
)
AS
SELECT autr.prs_perslid_key,
prs_perslid_oslogin,
prs_perslid_naam,
prs_bedrijf_naam,
alg_locatie_omschrijving,
alg_locatie_code,
alg_gebouw_omschrijving,
alg_gebouw_code,
alg_ruimte_aanduiding,
fac_groep_omschrijving,
aantal_rechten
FROM ( SELECT p.prs_perslid_key,
p.prs_perslid_naam,
p.prs_perslid_oslogin,
gr.fac_groep_omschrijving,
fac.safe_to_number (COUNT ( * )) aantal_rechten
FROM fac_gebruikersgroep gg,
prs_v_aanwezigperslid p,
fac_groep gr,
fac_groeprechten grr
WHERE p.prs_perslid_key = gg.prs_perslid_key
AND gg.fac_groep_key = gr.fac_groep_key
AND gr.fac_groep_key = grr.fac_groep_key
GROUP BY p.prs_perslid_key,
p.prs_perslid_naam,
p.prs_perslid_oslogin,
gr.fac_groep_omschrijving) autr,
(SELECT prs_perslid_key, prs_bedrijf_naam
FROM prs_contactpersoon pcp, prs_bedrijf b
WHERE prs_contactpersoon_verwijder IS NULL
AND pcp.prs_bedrijf_key = b.prs_bedrijf_key
AND prs_perslid_key IS NOT NULL
AND b.prs_bedrijf_verwijder IS NULL) cp,
(SELECT pwp.prs_perslid_key,
l.alg_locatie_omschrijving,
l.alg_locatie_code,
pw.alg_gebouw_code,
pw.alg_gebouw_omschrijving,
pw.alg_ruimte_aanduiding
FROM prs_perslidwerkplek pwp,
prs_v_werkplek_gegevens pw,
alg_locatie l
WHERE pwp.prs_werkplek_key = pw.prs_werkplek_key
AND pw.alg_locatie_key = l.alg_locatie_key
AND alg_locatie_verwijder IS NULL) wp
WHERE cp.prs_perslid_key(+) = autr.prs_perslid_key
AND wp.prs_perslid_key(+) = autr.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(+);
------ 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