Files
Customer/VLKC/vlkc.sql
Ruud Lipper 37134d2fad VLKC#51973 rapportage tbv wijzigingen contract
svn path=/Customer/trunk/; revision=36775
2018-01-30 14:32:04 +00:00

3513 lines
165 KiB
MySQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific db-configuration for VLKC.
DEFINE thisfile = 'VLKC.SQL'
DEFINE dbuser = '^VLKC'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
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
-- 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;0;0;0;'
|| '0;0;0;0;0;0;0;0;0;0;'
|| '0;0;0;0;0;0',
'%Personeelsnummer;Loginnaam;Achternaam;Tussenvoegsel;Voorletters;Voornaam;Afdelingscode;Functie;Email;Telefoonnr;Mobiel;Stamplaats%');
-- Klantspecifieke aanpassingen.
-- Als geen Loginnaam aangeleverd, dan handmatig toegekende niet wissen.
UPDATE fac_imp_perslid i
SET i.prs_perslid_oslogin =
(SELECT MAX (p.prs_perslid_oslogin)
FROM prs_v_aanwezigperslid p
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 p
WHERE p.prs_perslid_oslogin IS NOT NULL
AND p.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 (p.prs_perslid_voorletters)
FROM prs_v_aanwezigperslid p
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 p
WHERE p.prs_perslid_voorletters IS NOT NULL
AND p.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 (p.prs_perslid_voornaam)
FROM prs_v_aanwezigperslid p
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 p
WHERE p.prs_perslid_voornaam IS NOT NULL
AND p.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 (p.prs_perslid_email)
FROM prs_v_aanwezigperslid p
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 p
WHERE p.prs_perslid_email IS NOT NULL
AND p.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 (p.prs_perslid_telefoonnr)
FROM prs_v_aanwezigperslid p
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 p
WHERE p.prs_perslid_telefoonnr IS NOT NULL
AND p.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 (p.prs_perslid_mobiel)
FROM prs_v_aanwezigperslid p
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 p
WHERE p.prs_perslid_mobiel IS NOT NULL
AND p.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 i
SET i.alg_verdieping_volgnr = 0
WHERE i.alg_gebouw_code IS NOT NULL
AND i.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_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 i
WHERE i.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 i
WHERE UPPER (SUBSTR (i.prs_afdeling_naam, 1, 1)) = UPPER (p_afd_digit))
AND NOT EXISTS
(SELECT 1
FROM fac_imp_perslid i
WHERE i.prs_perslid_nr = p.prs_perslid_nr)
ORDER BY 2, 1;
BEGIN
-- Generieke update (op personeelsnummer).
--prs.update_perslid (p_import_key, 'EMAIL', NULL); -- EENMALIG op e-mail!
prs.update_perslid (p_import_key, 'NR', NULL);
-- Verwijder personen die niet meer in de import voorkomen.
SELECT COUNT (DISTINCT SUBSTR (prs_afdeling_naam, 1, 1)),
MAX (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;
-- 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
FOR rec IN c_del (v_afd_digit)
LOOP
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
END LOOP;
END IF;
*/
FOR rec IN c_del (v_afd_digit)
LOOP
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
END LOOP;
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
BEGIN
fac_import_factuur (p_import_key);
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;
/
/* 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
/* Formatted on 10-3-2016 16:20:40 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW vlkc_v_rap_bez_aanmelding
(
afspraakdatum,
afspraaknr,
fclt_f_contactpersoon,
fclt_f_gastheer,
bezoeker,
opmerking,
fclt_f_door
)
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')
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
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;
-- VLKC#35749
/* Formatted on 18-7-2016 18:35:25 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW vlkc_v_rap_res_cateringrest
(
hide_f_volgorde,
fclt_x_lijst,
ruimte,
datum,
van,
tot,
resnr,
pers,
voorzieningen_opstelling,
opmerking_catering,
omschrijving,
aanvrager,
gastheer,
res_rsv_ruimte_key
)
AS
SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yymmddhh24miss')
|| TO_CHAR (rrr.res_rsv_ruimte_tot, 'yymmddhh24miss')
|| TO_CHAR (rrr.res_rsv_ruimte_key)
|| x.res_type,
'Cateringlijst L17 + Caf<61>',
COALESCE (alg_ruimte_geg.alg_ruimte_aanduiding, res_ruimte_geg.res_ruimte_nr),
x.res_reservering_van,
x.res_reservering_van,
x.res_reservering_tot,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
TO_CHAR (rrr.res_rsv_ruimte_bezoekers),
COALESCE (x.res_voorziening, res_ruimte_geg.res_opstelling_omschrijving),
kr.res_kenmerkreservering_waarde,
rrr.res_rsv_ruimte_omschrijving,
pa.prs_perslid_naam_full,
pg.prs_perslid_naam_full,
rrr.res_rsv_ruimte_key
FROM (SELECT '1R' res_type,
rrr.res_rsv_ruimte_key,
rrr.res_rsv_ruimte_van res_reservering_van,
rrr.res_rsv_ruimte_tot res_reservering_tot,
--TO_NUMBER (NULL) aantal,
NULL res_voorziening,
NULL res_discipline_key,
rrr.res_status_bo_key
FROM res_v_aanwezigrsv_ruimte rrr
WHERE rrr.alg_ruimte_key IS NULL
AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)
--AND EXISTS
-- (SELECT 1
-- FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
-- WHERE rra.res_artikel_key = ra.res_artikel_key
-- AND ra.res_discipline_key IN (41, 44, 45)
-- AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
UNION ALL
SELECT '3C' res_type,
rra.res_rsv_ruimte_key,
rra.res_rsv_artikel_levering res_reservering_van,
NULL res_reservering_tot,
--rra.res_rsv_artikel_aantal aantal aantal,
TO_CHAR (rra.res_rsv_artikel_aantal)
|| ' * '
|| LTRIM (ra.res_artikel_omschrijving)
|| ' ('
|| COALESCE (ra.res_artikel_eenheid, '')
|| ')'
res_voorziening,
ra.res_discipline_key,
rra.res_status_bo_key
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
WHERE rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key IN (41, 44, 45)
AND rra.res_rsv_artikel_levering BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)) x,
res_v_aanwezigrsv_ruimte rrr,
prs_v_perslid_fullnames_all pa,
prs_v_perslid_fullnames_all pg,
alg_v_ruimte_gegevens_all alg_ruimte_geg,
(SELECT rro.res_ruimte_opstel_key,
rro.res_ruimte_opstel_default,
rr.res_discipline_key,
rr.res_ruimte_nr,
ro.res_opstelling_omschrijving
FROM res_ruimte_opstelling rro, res_ruimte rr, res_opstelling ro
WHERE rro.res_ruimte_key = rr.res_ruimte_key
AND rro.res_opstelling_key = ro.res_opstelling_key)
res_ruimte_geg,
(SELECT *
FROM res_v_aanwezigkenmerkwaarde kr, res_kenmerk k
WHERE kr.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 1) kr -- Opmerking Catering
WHERE x.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_contact_key = pa.prs_perslid_key
AND rrr.res_rsv_ruimte_host_key = pg.prs_perslid_key
AND rrr.alg_ruimte_key = alg_ruimte_geg.alg_ruimte_key(+)
AND rrr.res_ruimte_opstel_key = res_ruimte_geg.res_ruimte_opstel_key(+)
AND rrr.res_rsv_ruimte_key = kr.res_rsv_ruimte_key(+)
AND res_ruimte_geg.res_discipline_key IN (21, 22, 23, 24)
UNION ALL
SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yymmddhh24miss')
|| TO_CHAR (rrr.res_rsv_ruimte_tot, 'yymmddhh24miss')
|| TO_CHAR (rrr.res_rsv_ruimte_key)
|| x.res_type,
'Cateringlijst L4 + L15',
COALESCE (alg_ruimte_geg.alg_ruimte_aanduiding, res_ruimte_geg.res_ruimte_nr),
x.res_reservering_van,
x.res_reservering_van,
x.res_reservering_tot,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
TO_CHAR (rrr.res_rsv_ruimte_bezoekers),
COALESCE (x.res_voorziening, res_ruimte_geg.res_opstelling_omschrijving),
kr.res_kenmerkreservering_waarde,
rrr.res_rsv_ruimte_omschrijving,
pa.prs_perslid_naam_full,
pg.prs_perslid_naam_full,
rrr.res_rsv_ruimte_key
FROM (SELECT '1R' res_type,
rrr.res_rsv_ruimte_key,
rrr.res_rsv_ruimte_van res_reservering_van,
rrr.res_rsv_ruimte_tot res_reservering_tot,
--TO_NUMBER (NULL) aantal,
NULL res_voorziening,
NULL res_discipline_key,
rrr.res_status_bo_key
FROM res_v_aanwezigrsv_ruimte rrr
WHERE rrr.alg_ruimte_key IS NULL
AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)
--AND EXISTS
-- (SELECT 1
-- FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
-- WHERE rra.res_artikel_key = ra.res_artikel_key
-- AND ra.res_discipline_key IN (42, 45)
-- AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
UNION ALL
SELECT '3C' res_type,
rra.res_rsv_ruimte_key,
rra.res_rsv_artikel_levering res_reservering_van,
NULL res_reservering_tot,
--rra.res_rsv_artikel_aantal aantal,
TO_CHAR (rra.res_rsv_artikel_aantal)
|| ' * '
|| LTRIM (ra.res_artikel_omschrijving)
|| ' ('
|| COALESCE (ra.res_artikel_eenheid, '')
|| ')'
res_voorziening,
ra.res_discipline_key,
rra.res_status_bo_key
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
WHERE rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key IN (42, 45)
AND rra.res_rsv_artikel_levering BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)) x,
res_v_aanwezigrsv_ruimte rrr,
prs_v_perslid_fullnames_all pa,
prs_v_perslid_fullnames_all pg,
alg_v_ruimte_gegevens_all alg_ruimte_geg,
(SELECT rro.res_ruimte_opstel_key,
rro.res_ruimte_opstel_default,
rr.res_discipline_key,
rr.res_ruimte_nr,
ro.res_opstelling_omschrijving
FROM res_ruimte_opstelling rro, res_ruimte rr, res_opstelling ro
WHERE rro.res_ruimte_key = rr.res_ruimte_key
AND rro.res_opstelling_key = ro.res_opstelling_key)
res_ruimte_geg,
(SELECT *
FROM res_v_aanwezigkenmerkwaarde kr, res_kenmerk k
WHERE kr.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 1) kr -- Opmerking Catering
WHERE x.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_contact_key = pa.prs_perslid_key
AND rrr.res_rsv_ruimte_host_key = pg.prs_perslid_key
AND rrr.alg_ruimte_key = alg_ruimte_geg.alg_ruimte_key(+)
AND rrr.res_ruimte_opstel_key = res_ruimte_geg.res_ruimte_opstel_key(+)
AND rrr.res_rsv_ruimte_key = kr.res_rsv_ruimte_key(+)
AND res_ruimte_geg.res_discipline_key IN (22, 26, 27, 121)
UNION ALL
SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yymmddhh24miss')
|| TO_CHAR (rrr.res_rsv_ruimte_tot, 'yymmddhh24miss')
|| TO_CHAR (rrr.res_rsv_ruimte_key)
|| x.res_type,
'Restaurantlijst',
COALESCE (alg_ruimte_geg.alg_ruimte_aanduiding, res_ruimte_geg.res_ruimte_nr),
x.res_reservering_van,
x.res_reservering_van,
x.res_reservering_tot,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
TO_CHAR (rrr.res_rsv_ruimte_bezoekers),
COALESCE (x.res_voorziening, res_ruimte_geg.res_opstelling_omschrijving),
kr.res_kenmerkreservering_waarde,
rrr.res_rsv_ruimte_omschrijving,
pa.prs_perslid_naam_full,
pg.prs_perslid_naam_full,
rrr.res_rsv_ruimte_key
FROM (SELECT '1R' res_type,
rrr.res_rsv_ruimte_key,
rrr.res_rsv_ruimte_van res_reservering_van,
rrr.res_rsv_ruimte_tot res_reservering_tot,
--TO_NUMBER (NULL) aantal,
NULL res_voorziening,
NULL res_discipline_key,
rrr.res_status_bo_key
FROM res_v_aanwezigrsv_ruimte rrr
WHERE rrr.alg_ruimte_key IS NULL
AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)
AND EXISTS
(SELECT 1
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
WHERE rra.res_artikel_key = ra.res_artikel_key
AND ra.res_artikel_key IN
(1,
2,
3,
4,
6,
12,
13,
14,
15,
16,
24,
28,
29,
30,
31,
32,
44,
61,
123,
142,
244,
261,
263,
264,
265,
268,
269,
281,
282,
284)
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
UNION ALL
SELECT '3C' res_type,
rra.res_rsv_ruimte_key,
rra.res_rsv_artikel_levering res_reservering_van,
NULL res_reservering_tot,
--rra.res_rsv_artikel_aantal aantal,
TO_CHAR (rra.res_rsv_artikel_aantal)
|| ' * '
|| LTRIM (ra.res_artikel_omschrijving)
|| ' ('
|| COALESCE (ra.res_artikel_eenheid, '')
|| ')'
res_voorziening,
ra.res_discipline_key,
rra.res_status_bo_key
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
WHERE rra.res_artikel_key = ra.res_artikel_key
AND ra.res_artikel_key IN
(1,
2,
3,
4,
6,
12,
13,
14,
15,
16,
24,
28,
29,
30,
31,
32,
44,
61,
123,
142,
244,
261,
263,
264,
265,
268,
269,
281,
282,
284)
AND rra.res_rsv_artikel_levering BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)) x,
res_v_aanwezigrsv_ruimte rrr,
prs_v_perslid_fullnames_all pa,
prs_v_perslid_fullnames_all pg,
alg_v_ruimte_gegevens_all alg_ruimte_geg,
(SELECT rro.res_ruimte_opstel_key,
rro.res_ruimte_opstel_default,
rr.res_discipline_key,
rr.res_ruimte_nr,
ro.res_opstelling_omschrijving
FROM res_ruimte_opstelling rro, res_ruimte rr, res_opstelling ro
WHERE rro.res_ruimte_key = rr.res_ruimte_key
AND rro.res_opstelling_key = ro.res_opstelling_key)
res_ruimte_geg,
(SELECT *
FROM res_v_aanwezigkenmerkwaarde kr, res_kenmerk K
WHERE kr.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 1) kr -- Opmerking Catering
WHERE x.res_status_bo_key = 2 -- Geregistreerd
AND x.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_contact_key = pa.prs_perslid_key
AND rrr.res_rsv_ruimte_host_key = pg.prs_perslid_key
AND rrr.alg_ruimte_key = alg_ruimte_geg.alg_ruimte_key(+)
AND rrr.res_ruimte_opstel_key = res_ruimte_geg.res_ruimte_opstel_key(+)
AND rrr.res_rsv_ruimte_key = kr.res_rsv_ruimte_key(+);
/* 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,
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),
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 (51)
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))
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 (51)
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 inclusief facturen op variabele contracten (VC).
/* 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 variabele contracten (CV)!
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%'
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. Goedgekeurde facturen AV-en.
-- 2. Termijn/maandbedrag van lopende contracten bevriezen (in Eigen tabel).
--[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 en C-termijnen.
CURSOR c1
IS
SELECT '[' || TO_CHAR (v.bedrijf_key) || '|' || TO_CHAR (v.factuur_key) || '|' || TO_CHAR (COALESCE (v.bes_opdr_key, v.mld_opdr_key, v.cnt_key)) || '] '
aanduiding,
v.factuur_key,
v.bes_opdr_key,
v.mld_opdr_key,
v.cnt_key,
c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)) cnt_nr,
cp.plaats,
v.kosten
FROM vlkc_v_coda_actual v,
cnt_contract c,
( SELECT cnt_contract_key, COUNT ( * ) aant, MIN (pa.alg_plaatsaanduiding) plaats
FROM cnt_contract_plaats cp, alg_v_plaatsaanduiding_all pa
WHERE cp.cnt_alg_plaats_key = pa.alg_onroerendgoed_keys
AND cp.cnt_alg_plaats_code = pa.alg_onroerendgoed_type
GROUP BY cnt_contract_key) cp
WHERE v.cnt_key = c.cnt_contract_key(+)
AND c.cnt_contract_key = cp.cnt_contract_key(+)
ORDER BY 2, 4;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200) := '';
v_holiday NUMBER;
v_line_count NUMBER;
v_amount_sum NUMBER (10, 2);
BEGIN
v_line_count := 0;
v_amount_sum := 0;
SELECT COUNT ( * )
INTO v_holiday
FROM mld_vrije_dagen
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1);
-- LET OP: CODA-export draait dagelijks na middernacht (begin van dag) en
-- de bedragen t/m *NU* worden maandelijks alleen in de nacht na 2e werkdag
-- van de maand doorgezet (= bevroren tbv. rapporten).
-- IF nacht na 2e werkdag van de maand (<28>n geen weekend <20>n geen vrije dag)!
-- count_work_days (d1,d2) bepaalt het #werkdagen van d1 tot d2 (als d1=d2,
-- dan return 0); daarom bepalen tov. laatste dag van vorige maand!
IF FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 2
AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
AND v_holiday = 0
THEN
FOR rec IN c1
LOOP
BEGIN
v_aanduiding := rec.aanduiding;
IF rec.bes_opdr_key IS NOT NULL -- B-facturen
THEN
v_errormsg := 'Fout verwerken B-factuur';
UPDATE fin_factuur f
SET fin_factuur_statuses_key = 7 -- AV
WHERE f.fin_factuur_key = rec.factuur_key;
fac.trackaction ('FINVER',
rec.factuur_key,
NULL, -- Dus _FACILITOR!
NULL,
NULL);
ELSIF rec.mld_opdr_key IS NOT NULL -- O-facturen
THEN
v_errormsg := 'Fout verwerken O-factuur';
UPDATE fin_factuur f
SET fin_factuur_statuses_key = 7 -- AV
WHERE f.fin_factuur_key = rec.factuur_key;
fac.trackaction ('FINVER',
rec.factuur_key,
NULL, -- Dus _FACILITOR!
NULL,
NULL);
ELSE -- C-facturen (CV) <20>f C-termijnen (CF)!
IF rec.factuur_key IS NOT NULL -- C-factuur
THEN
v_errormsg := 'Fout verwerken C-factuur';
UPDATE fin_factuur f
SET fin_factuur_statuses_key = 7 -- AV
WHERE f.fin_factuur_key = rec.factuur_key;
fac.trackaction ('FINVER',
rec.factuur_key,
NULL, -- Dus _FACILITOR!
NULL,
NULL);
ELSE -- C-termijn
v_errormsg := 'Fout verwerken C-termijn';
INSERT INTO fac_usrdata (fac_usrtab_key,
fac_usrdata_code,
fac_usrdata_omschr,
fac_usrdata_aanmaak,
fac_usrdata_vervaldatum,
fac_usrdata_prijs)
VALUES (81, -- VasteKostenMnd
TO_CHAR (ADD_MONTHS (SYSDATE, -1), 'yyyy-mm') || '/' || TO_CHAR (rec.cnt_key),
TO_CHAR (rec.cnt_nr) || '/' || TO_CHAR (rec.plaats),
SYSDATE,
NULL,
rec.kosten);
END IF;
END IF;
COMMIT;
v_line_count := v_line_count + 1;
v_amount_sum := v_amount_sum + rec.kosten;
END;
END LOOP;
fac.writelog (p_applname, 'S', 'CODA-export/#regels: ' || TO_CHAR (v_line_count), TO_CHAR (v_amount_sum));
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', v_aanduiding || v_errormsg, 'Proces CODA-export afgebroken!');
COMMIT;
END;
/
CREATE OR REPLACE VIEW vlkc_v_rap_coda_ordexp
(
fclt_f_periode,
kostensoort, -- 5 cijfers
kostenplaats, -- 4 cijfers
valuta, -- element3
bron, -- element4
bedrag_debet, -- incl. BTW en niet samen met bedrag_credit op <20><>n regel
bedrag_credit, -- incl. BTW en niet samen met bedrag_debet op <20><>n regel
omschrijving, -- max. 29 posities
verplichtingnummer,
leverancier,
leveranciersnummer,
factuurnummer,
fclt_f_vlkc,
fclt_f_opdrachttype,
fclt_f_investering,
melder, -- of besteller
melder_pnr, -- of besteller
melder_kpn, -- of besteller
locatie
)
AS
WITH lopendeperiode AS (SELECT COALESCE (MAX (TO_CHAR (ADD_MONTHS (fac.safe_to_date (SUBSTR (fac_usrdata_code, 1, 7), 'yyyy-mm'), 1), 'yyyy-mm')), '2017-01') maand
FROM fac_usrdata
WHERE fac_usrtab_key = 81)
SELECT DECODE (f.fin_factuur_statuses_key,
7, TO_CHAR (fac.gettrackingdate ('FINVER', f.fin_factuur_key) - 10, 'yyyy-mm'),
lp.maand || '*')
periode,
x.prs_kostensoortgrp_altcode kostensoort,
x.prs_kostenplaats_nr kostenplaats,
'EUR' element3,
DECODE (x.prs_kostenplaats_nr, '2216', 'Variabel', 'Eindgebruiker') element4,
DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
-1, TO_NUMBER (NULL),
(f.fin_factuur_totaal + f.fin_factuur_totaal_btw))
bedrag_debet,
DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
-1, -1 * (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
TO_NUMBER (NULL))
bedrag_credit,
'B-' || x.ins_discipline_omschrijving omschrijving,
'B' || x.bes_bestelopdr_id verplichtingnummer,
x.prs_bedrijf_naam leverancier,
x.prs_leverancier_nr leveranciersnummer,
f.fin_factuur_nr factuurnummer,
DECODE (SUBSTR (x.prs_kostenplaats_nr, 1, 1), '1', 'KC', 'VL') vlkc,
'Bestelopdracht' opdrachttype, -- Altijd 'Bestelopdracht'?
DECODE (x.bes_kenmerkbestell_waarde, '1', 'Ja', 'Nee') investering,
x.besteller,
x.besteller_pnr,
x.besteller_kpn,
x.alg_locatie_code locatie -- Soms dummy (bv. Fleurop)?
FROM lopendeperiode lp,
fin_factuur f,
(SELECT DISTINCT bo.bes_bestelopdr_key,
bo.bes_bestelopdr_id,
ksg.prs_kostensoortgrp_altcode,
kp.prs_kostenplaats_nr,
td.ins_discipline_omschrijving,
lev.prs_bedrijf_naam,
lev.prs_leverancier_nr,
bo.bes_bestelopdr_leverdatum,
inv.bes_kenmerkbestell_waarde,
bpf.prs_perslid_naam_full besteller,
bp.prs_perslid_nr besteller_pnr,
bkp.prs_kostenplaats_nr besteller_kpn,
l.alg_locatie_code
FROM bes_bestelopdr bo,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
bes_srtdeel sd,
bes_srtgroep sg,
ins_tab_discipline td,
prs_kostensoort ks,
prs_kostensoortgrp ksg,
bes_bestelling b,
prs_kostenplaats kp,
prs_bedrijf lev,
(SELECT *
FROM bes_kenmerkbestell kb
WHERE EXISTS
(SELECT 1
FROM bes_kenmerk
WHERE bes_kenmerk_key = kb.bes_kenmerk_key
AND bes_srtkenmerk_key = 21)) inv, -- Investeringsopdracht
prs_perslid bp,
prs_v_perslid_fullnames_all bpf,
prs_afdeling ba,
prs_kostenplaats bkp,
mld_adres a,
alg_locatie l
WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = td.ins_discipline_key
AND td.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+)
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND b.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND bo.prs_bedrijf_key = lev.prs_bedrijf_key
AND b.bes_bestelling_key = inv.bes_bestelling_key(+)
AND b.prs_perslid_key = bp.prs_perslid_key
AND bp.prs_perslid_key = bpf.prs_perslid_key
AND bp.prs_afdeling_key = ba.prs_afdeling_key
AND ba.prs_kostenplaats_key = bkp.prs_kostenplaats_key(+)
AND bo.mld_adres_key_lev = a.mld_adres_key
AND a.alg_locatie_key = l.alg_locatie_key(+)) x
WHERE f.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
AND f.bes_bestelopdr_key = x.bes_bestelopdr_key
UNION ALL -- Werk/Offerteopdrachten
SELECT DECODE (f.fin_factuur_statuses_key,
7, TO_CHAR (fac.gettrackingdate ('FINVER', f.fin_factuur_key) - 10, 'yyyy-mm'),
lp.maand || '*')
periode,
COALESCE (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,
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 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 <20><>n regel
bedrag_credit, -- incl. BTW en niet samen met bedrag_debet op <20><>n regel
omschrijving, -- max. 29 posities
verplichtingnummer,
leverancier,
leveranciersnummer,
factuurnummer,
fclt_f_vlkc,
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 (l.alg_locatie_code, ',') WITHIN GROUP (ORDER BY l.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,
cnt_v_aanwezigcontract_plaats cp,
alg_v_allonroerendgoed aog,
alg_locatie l
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(+)
AND cp.cnt_alg_plaats_code = aog.alg_type(+)
AND cp.cnt_alg_plaats_key = aog.alg_onroerendgoed_keys(+)
AND aog.alg_locatie_key = l.alg_locatie_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 (l.alg_locatie_code, ',') WITHIN GROUP (ORDER BY l.alg_locatie_code) locatie
FROM lopendeperiode lp,
cnt_v_aanwezigcontract c, -- Alleen aanwezige (CF-)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,
cnt_v_aanwezigcontract_plaats cp,
alg_v_allonroerendgoed aog,
alg_locatie l
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(+)
AND cp.cnt_alg_plaats_code = aog.alg_type(+)
AND cp.cnt_alg_plaats_key = aog.alg_onroerendgoed_keys(+)
AND aog.alg_locatie_key = l.alg_locatie_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 (l.alg_locatie_code, ',') WITHIN GROUP (ORDER BY l.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,
cnt_v_aanwezigcontract_plaats cp,
alg_v_allonroerendgoed aog,
alg_locatie l
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(+)
AND cp.cnt_alg_plaats_code = aog.alg_type(+)
AND cp.cnt_alg_plaats_key = aog.alg_onroerendgoed_keys(+)
AND aog.alg_locatie_key = l.alg_locatie_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 <20><>n regel
bedrag_credit, -- incl. BTW en niet samen met bedrag_debet op <20><>n regel
omschrijving, -- max. 29 posities
verplichtingnummer,
leverancier,
leveranciersnummer,
factuurnummer,
fclt_f_vlkc,
fclt_f_opdrachttype,
fclt_f_investering,
einddatum,
locatie
)
AS -- Bestelopdrachten
SELECT NULL periode,
x.prs_kostensoortgrp_altcode kostensoort,
x.prs_kostenplaats_nr kostenplaats,
'EUR' element3,
DECODE (x.prs_kostenplaats_nr, '2216', 'Variabel', 'Eindgebruiker') element4,
DECODE (
f_run.fin_factuur_key,
NULL, -- Geen ingevoerde facturen
DECODE (SIGN (COALESCE (x.kosten, 0)),
-1, TO_NUMBER (NULL),
COALESCE (x.kosten, 0)),
DECODE (
SIGN (f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw),
-1, TO_NUMBER (NULL),
(f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw)))
bedrag_debet,
DECODE (
f_run.fin_factuur_key,
NULL, -- Geen ingevoerde facturen
DECODE (SIGN (COALESCE (x.kosten, 0)),
-1, -1 * COALESCE (x.kosten, 0),
TO_NUMBER (NULL)),
DECODE (
SIGN (f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw),
-1, -1 * (f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw),
TO_NUMBER (NULL)))
bedrag_credit,
'B-' || x.ins_discipline_omschrijving omschrijving,
'B' || x.bes_bestelopdr_id verplichtingnummer,
x.prs_bedrijf_naam leverancier,
x.prs_leverancier_nr leveranciersnummer,
f_run.fin_factuur_nr factuurnummer,
DECODE (SUBSTR (x.prs_kostenplaats_nr, 1, 1), '1', 'KC', 'VL') vlkc,
'Bestelopdracht' opdrachttype, -- Altijd 'Bestelopdracht'?
DECODE (x.bes_kenmerkbestell_waarde, '1', 'Ja', 'Nee') investering,
x.bes_bestelopdr_leverdatum einddatum, -- Soms dummy (bv. Fleurop)?
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_leverdatum,
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.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(+)
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_leverdatum,
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 (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,
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 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 een Reden "0-order"!
(SELECT 1
FROM mld_v_aanwezigkenmerkopdr
WHERE mld_opdr_key = o.mld_opdr_key
AND mld_kenmerk_key IN (201))) x -- Reden "0-order"
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 (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,
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 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(+)) 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 (COALESCE (x.mld_opdr_kosten, 0) - COALESCE (debet.tot_incl_btw, 0) - COALESCE (credit.tot_incl_btw, 0)) != 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.
CREATE OR REPLACE VIEW vlkc_v_rap_cnt_verantw
(
fclt_f_jaar,
contractnummer,
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'),
'C' || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)) contractnummer,
lev.prs_bedrijf_naam leverancier,
lev.prs_leverancier_nr leveranciersnummer,
c.cnt_contract_kosten contractbedrag,
f.reeds_gefactureerd,
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', f.reeds_verantwoord, ud.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 (l.alg_locatie_code, ',') WITHIN GROUP (ORDER BY l.alg_locatie_code) locatie
FROM (SELECT TO_CHAR (p.jaar, 'yyyy') || '/' || c.cnt_contract_key jaarkey, p.jaar, c.*
FROM ( SELECT ADD_MONTHS (TO_DATE ('2017', 'yyyy'), (LEVEL - 1) * 12) jaar
FROM DUAL
CONNECT BY LEVEL <= MONTHS_BETWEEN (SYSDATE, TO_DATE ('2017', 'yyyy')) / 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 TO_CHAR (t.fac_tracking_datum, 'yyyy') || '/' || f.cnt_contract_key jaarkey,
( SELECT TO_CHAR (DECODE (f.fin_factuur_statuses_key, 6, t.fac_tracking_datum, t.fac_tracking_datum - 10), 'yyyy') || '/' || f.cnt_contract_key jaarkey,
SUM (COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0)) reeds_gefactureerd,
SUM (DECODE (f.fin_factuur_statuses_key, 6, 0, COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0))) reeds_verantwoord
FROM fin_factuur f,
( SELECT fac_tracking_refkey,
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.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
AND f.fin_factuur_key = t.fac_tracking_refkey
GROUP BY TO_CHAR (DECODE (f.fin_factuur_statuses_key, 6, t.fac_tracking_datum, t.fac_tracking_datum - 10), 'yyyy') || '/' || f.cnt_contract_key) f,
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 SUBSTR (fac_usrdata_code, 1, 4) || SUBSTR (fac_usrdata_code, INSTR (fac_usrdata_code, '/')) jaarkey,
SUM (COALESCE (fac_usrdata_prijs, 0)) reeds_verantwoord
FROM fac_usrdata
WHERE fac_usrtab_key = 81 -- VasteKostenMnd
GROUP BY SUBSTR (fac_usrdata_code, 1, 4) || SUBSTR (fac_usrdata_code, INSTR (fac_usrdata_code, '/'))) ud,
cnt_v_aanwezigcontract_plaats cp,
alg_v_allonroerendgoed aog,
alg_locatie l
WHERE c.jaarkey = f.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.jaarkey = ud.jaarkey(+)
AND c.cnt_contract_key = cp.cnt_contract_key(+)
AND cp.cnt_alg_plaats_code = aog.alg_type(+)
AND cp.cnt_alg_plaats_key = aog.alg_onroerendgoed_keys(+)
AND aog.alg_locatie_key = l.alg_locatie_key(+)
GROUP BY TO_CHAR (c.jaar, 'yyyy'),
'C' || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)),
lev.prs_bedrijf_naam,
lev.prs_leverancier_nr,
c.cnt_contract_kosten,
f.reeds_gefactureerd,
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', f.reeds_verantwoord, ud.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;
-- 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_versie,
contractsoort,
omschrijving,
ingangsdatum,
einddatum,
contractbedrag,
termijnkosten,
beheerder,
status
)
AS
SELECT fac_tracking_datum,
REPLACE (fac_tracking_oms, 'Contract gewijzigd' || CHR (10), '')
Wijziging,
pf2.prs_perslid_naam_full gewijzigd_door,
cnt_contract_key,
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
FROM cnt_contract c,
fac_tracking ft,
fac_srtnotificatie sn,
prs_v_perslid_fullnames pf,
prs_v_perslid_fullnames pf2,
cnt_discipline cd
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;
------ 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