Files
Customer/VLKC/vlkc.sql
Maarten van der Heide 423186a71d VLKC#36864 ORG-import/Bijwerken kostenplaats
svn path=/Customer/trunk/; revision=32343
2017-01-12 18:33:31 +00:00

2342 lines
108 KiB
MySQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific db-configuration for VLKC.
DEFINE thisfile = 'VLKC.SQL'
DEFINE dbuser = '^VLKC'
DEFINE custid = '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?
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?
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?
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"
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%');
'%"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;
-- 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_nr
FROM prs_v_aanwezigperslid p, prs_afdeling a
WHERE p.prs_perslid_nr IS NOT NULL -- Personen met nummer
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, '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;
*/
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;
/
/* 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
/* Formatted on 28-1-2016 21:12:24 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW vlkc_v_rap_cat_doorbelasting
(
fclt_f_jaar,
kostenplaatscode,
kostenplaats_oms,
--aantal,
jan,
feb,
mrt,
apr,
mei,
jun,
jul,
aug,
sep,
okt,
nov,
dec,
tot
)
AS
SELECT TO_CHAR (x.res_rsv_artikel_levering, 'yyyy') jaar,
kp.prs_kostenplaats_nr,
kp.prs_kostenplaats_omschrijving,
--COUNT (DISTINCT res_id),
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
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 TO_CHAR (x.res_rsv_artikel_levering, 'yyyy') = TO_CHAR (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'), kp.prs_kostenplaats_nr, kp.prs_kostenplaats_omschrijving
UNION ALL
SELECT TO_CHAR (x.res_rsv_artikel_levering, 'yyyy') jaar,
kp.prs_kostenplaats_nr,
kp.prs_kostenplaats_omschrijving,
--COUNT (DISTINCT res_id),
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
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 TO_CHAR (x.res_rsv_artikel_levering, 'yyyy') = TO_CHAR (SYSDATE, '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'), kp.prs_kostenplaats_nr, kp.prs_kostenplaats_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_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(+);
/* Formatted on 25-11-2016 15:36:24 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW vlkc_v_rap_coda_export
(
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,
factuurnummer
)
AS
SELECT TO_CHAR (fac.gettrackingdate ('FINFOK', f.fin_factuur_key), 'yyyy-mm')
|| DECODE (TO_CHAR (fac.gettrackingdate ('FINFOK', f.fin_factuur_key), 'yyyy-mm'),
TO_CHAR (SYSDATE, 'yyyy-mm'), '*',
'')
periode, -- ToDo!
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, 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,
b.prs_bedrijf_naam leverancier,
f.fin_factuur_nr factuurnummer
FROM 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 b
WHERE 1 = 1
AND f.fin_factuur_statuses_key = 6 -- Akkoord
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 td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
UNION ALL
SELECT TO_CHAR (SYSDATE, 'yyyy-mm') || '*' periode, -- ToDo!
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)
c.cnt_contract_termijnkosten bedrag_debet,
--DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
-- -1, f.fin_factuur_totaal + f.fin_factuur_totaal_btw,
-- TO_NUMBER (NULL))
NULL bedrag_credit,
--COALESCE (ksgc.prs_kostensoortgrp_oms, ksgd.prs_kostensoortgrp_oms, 'ONGEDEFINEERD')
td.ins_discipline_omschrijving omschrijving,
'C' || c.cnt_contract_nummer_intern verplichtingnummer,
b.prs_bedrijf_naam leverancier,
--f.fin_factuur_nr factuurnummer
'N.v.t.' factuurnummer
FROM --fin_factuur f,
cnt_contract c,
prs_kostensoort ksc,
prs_kostensoortgrp ksgc,
ins_tab_discipline td,
prs_kostensoort ksd,
prs_kostensoortgrp ksgd,
prs_kostenplaats kp,
prs_bedrijf b
WHERE 1 = 1
--AND f.fin_factuur_statuses_key = 6 -- Akkoord
--AND f.cnt_contract_key = c.cnt_contract_key
--AND c.cnt_contract_looptijd_van < SYSDATE -- Altijd van eerste maand?
AND c.cnt_contract_looptijd_tot > TRUNC (SYSDATE, 'mm') -- Altijd tot eerste maand?
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(+)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key;
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,
factuurnummer
)
AS
SELECT TO_CHAR (fac.gettrackingdate ('FINFOK', f.fin_factuur_key), 'yyyy-mm')
|| DECODE (TO_CHAR (fac.gettrackingdate ('FINFOK', f.fin_factuur_key), 'yyyy-mm'),
TO_CHAR (SYSDATE, 'yyyy-mm'), '*',
'')
periode, -- ToDo!
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, 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,
b.prs_bedrijf_naam leverancier,
f.fin_factuur_nr factuurnummer
FROM mld_opdr o,
fin_factuur f,
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 b
WHERE 1 = 1
AND o.mld_typeopdr_key IN (5, 283) -- Werkopdracht/Offerteopdracht
AND o.mld_opdr_key = f.mld_opdr_key
AND f.fin_factuur_statuses_key = 6 -- 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 = b.prs_bedrijf_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,
factuurnummer
)
AS
SELECT TO_CHAR (SYSDATE, 'yyyy-mm') || '*' periode, -- ToDo!
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)
c.cnt_contract_termijnkosten bedrag_debet,
--DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
-- -1, f.fin_factuur_totaal + f.fin_factuur_totaal_btw,
-- TO_NUMBER (NULL))
TO_NUMBER (NULL) bedrag_credit,
--COALESCE (ksgc.prs_kostensoortgrp_oms, ksgd.prs_kostensoortgrp_oms, 'ONGEDEFINEERD')
td.ins_discipline_omschrijving omschrijving,
'C' || c.cnt_contract_nummer_intern verplichtingnummer,
b.prs_bedrijf_naam leverancier,
--f.fin_factuur_nr factuurnummer
'N.v.t.' factuurnummer
FROM cnt_contract c,
--fin_factuur f,
prs_kostensoort ksc,
prs_kostensoortgrp ksgc,
ins_tab_discipline td,
prs_kostensoort ksd,
prs_kostensoortgrp ksgd,
prs_kostenplaats kp,
prs_bedrijf b
WHERE 1 = 1
--AND c.cnt_contract_looptijd_van < SYSDATE -- Altijd van eerste maand?
AND c.cnt_contract_looptijd_tot > TRUNC (SYSDATE, 'mm') -- Altijd tot eerste maand?
--AND c.cnt_contract_key = f.cnt_contract_key
--AND f.fin_factuur_statuses_key = 6 -- Akkoord
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(+)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key;
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,
factuurnummer
)
AS
SELECT NULL 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, 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,
b.prs_bedrijf_naam leverancier,
f.fin_factuur_nr factuurnummer
FROM mld_opdr o,
(SELECT *
FROM fin_factuur
WHERE fin_factuur_statuses_key IN (2, 3)) f, -- Ingevoerd/Incompleet
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 b
WHERE 1 = 1
AND o.mld_typeopdr_key IN (5, 283) -- Werkopdracht/Offerteopdracht
AND o.mld_opdr_key = f.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 td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key;
CREATE OR REPLACE VIEW vlkc_v_rap_cnt_verantw
(
fclt_f_jaar,
contractnummer,
leverancier,
leveranciersnummer,
jaarbedrag,
reeds_gefactureerd,
reeds_verantwoord,
kostensoort, -- 5 cijfers
kostenplaats -- 4 cijfers
)
AS
SELECT TO_CHAR (c.cnt_contract_looptijd_tot, 'yyyy') jaar, -- Altijd nieuwe versie per jaar?
c.cnt_contract_nummer_intern contractnummer,
b.prs_bedrijf_naam leverancier,
b.prs_leverancier_nr leveranciersnummer,
c.cnt_contract_kosten jaarbedrag, -- Is dat altijd jaarbedrag?
SUM(DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
-1, f.fin_factuur_totaal + f.fin_factuur_totaal_btw,
0))
reeds_gefactureerd,
SUM (COALESCE (ud.fac_usrdata_prijs, 0)) reeds_verantwoord,
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL) kostensoort,
kp.prs_kostenplaats_nr kostenplaats
FROM cnt_contract c,
(SELECT *
FROM fin_factuur
WHERE fin_factuur_statuses_key IN (2, 6, 7)) f, -- Ingevoerd/Akkoord/Verwerkt
prs_kostensoort ksc,
prs_kostensoortgrp ksgc,
ins_tab_discipline td,
prs_kostensoort ksd,
prs_kostensoortgrp ksgd,
prs_kostenplaats kp,
prs_bedrijf b,
(SELECT *
FROM fac_usrdata
WHERE fac_usrtab_key = -1) ud
WHERE 1 = 1 -- Alle contracten!
AND c.cnt_contract_key = f.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 = b.prs_bedrijf_key
AND TO_CHAR (c.cnt_contract_key) = ud.fac_usrdata_omschr(+)
GROUP BY TO_CHAR (c.cnt_contract_looptijd_tot, 'yyyy'), -- Altijd nieuwe versie per jaar?
c.cnt_contract_nummer_intern,
b.prs_bedrijf_naam,
b.prs_leverancier_nr,
c.cnt_contract_kosten, -- Is dat altijd jaarbedrag?
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL),
kp.prs_kostenplaats_nr;
------ 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