4098 lines
195 KiB
MySQL
4098 lines
195 KiB
MySQL
--
|
|
-- $Id$
|
|
-- Comment voor éncoding test
|
|
-- Script containing customer specific db-configuration for VLKC.
|
|
DEFINE thisfile = 'VLKC.SQL'
|
|
DEFINE dbuser = '^VLKC'
|
|
|
|
SET ECHO ON
|
|
SET DEFINE ON
|
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
|
WHENEVER SQLERROR EXIT;
|
|
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
SPOOL &fcltlogfile
|
|
SET DEFINE OFF
|
|
|
|
------ payload begin ------
|
|
|
|
CREATE OR REPLACE VIEW vlkc_v_rap_import_log
|
|
(
|
|
fclt_f_applicatie,
|
|
datum,
|
|
fclt_f_status,
|
|
omschrijving,
|
|
hint
|
|
)
|
|
AS
|
|
SELECT COALESCE (fac_import_app_code, imp_log_applicatie),
|
|
TO_CHAR (imp_log_datum, 'dd-mm-yyyy hh24:mi'),
|
|
imp_log_status,
|
|
imp_log_omschrijving,
|
|
imp_log_hint
|
|
FROM imp_log il1, fac_import fi1, fac_import_app fia1
|
|
WHERE il1.fac_import_key = fi1.fac_import_key(+)
|
|
AND fi1.fac_import_app_key = fia1.fac_import_app_key(+)
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM imp_log il2, fac_import fi2
|
|
WHERE il2.fac_import_key = fi2.fac_import_key
|
|
AND fi2.fac_import_app_key = fi1.fac_import_app_key
|
|
AND il2.fac_import_key > il1.fac_import_key);
|
|
|
|
|
|
/* Formatted on 21-12-2016 16:36:24 (QP5 v5.136.908.31019) */
|
|
CREATE OR REPLACE PROCEDURE vlkc_import_org (p_import_key IN NUMBER)
|
|
AS
|
|
c_delim VARCHAR2 (1) := ';'; -- Field seperator
|
|
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Import line
|
|
v_errormsg VARCHAR2 (1000) := '';
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (1000) := '';
|
|
header_is_valid NUMBER := 0;
|
|
v_count_tot NUMBER (10) := 0;
|
|
v_count_imp NUMBER (10) := 0;
|
|
-- De importvelden
|
|
v_afd_oms VARCHAR2 (255);
|
|
v_afd_naam VARCHAR2 (255);
|
|
v_afd_parent VARCHAR2 (255);
|
|
v_manager VARCHAR2 (255);
|
|
v_kpn_nr VARCHAR2 (255);
|
|
v_kpn_oms VARCHAR2 (255);
|
|
|
|
CURSOR c1
|
|
IS
|
|
SELECT fac_imp_file_line,
|
|
LENGTH (TRIM (REPLACE (fac_imp_file_line, c_delim, '')))
|
|
regellengte
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key
|
|
ORDER BY fac_imp_file_index;
|
|
BEGIN
|
|
DELETE FROM fac_imp_organisatie;
|
|
COMMIT;
|
|
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_newline := rec1.fac_imp_file_line;
|
|
v_errormsg := 'Fout opvragen importregel';
|
|
v_aanduiding := '';
|
|
-- Lees alle veldwaarden
|
|
-- Afdeling;Afd.-nr.;Nr. bovenliggende afd.;Manager;Nr. kostenplaats;Kostenplaats;Bestaat sinds;Tot en met
|
|
fac.imp_getfield (v_newline, c_delim, v_afd_oms);
|
|
fac.imp_getfield (v_newline, c_delim, v_afd_naam);
|
|
fac.imp_getfield (v_newline, c_delim, v_afd_parent);
|
|
fac.imp_getfield (v_newline, c_delim, v_manager); -- Don't care
|
|
fac.imp_getfield (v_newline, c_delim, v_kpn_nr);
|
|
fac.imp_getfield (v_newline, c_delim, v_kpn_oms);
|
|
|
|
v_aanduiding := '[' || '|' || v_afd_naam || '|' || v_afd_parent || v_afd_oms || '] ';
|
|
|
|
-- Ik controleer of ik een geldige header heb, dat is: in de juiste
|
|
-- kolommen de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
|
|
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
IF v_afd_oms = 'Afdeling'
|
|
AND v_afd_naam = 'Afd.-nr.'
|
|
AND v_afd_parent = 'Nr. bovenliggende afd.'
|
|
AND v_manager = 'Manager'
|
|
AND v_kpn_nr = 'Nr. kostenplaats'
|
|
AND v_kpn_oms = 'Kostenplaats'
|
|
THEN
|
|
header_is_valid := 1;
|
|
END IF;
|
|
ELSIF (rec1.regellengte > 0) -- Lege regels overslaan
|
|
THEN
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
|
|
-- Direct wegschrijven; controleer alle veldwaarden maar niet.
|
|
v_errormsg := 'Fout wegschrijven importregel';
|
|
|
|
INSERT INTO fac_imp_organisatie (prs_bedrijf_naam, -- Vullen met kostenplaatsomschrijving!
|
|
prs_afdeling_naam,
|
|
prs_afdeling_naam_parent,
|
|
prs_afdeling_omschrijving,
|
|
prs_kostenplaats_nr)
|
|
VALUES (SUBSTR (TRIM (v_kpn_oms), 1, 60),
|
|
SUBSTR (TRIM (v_afd_naam), 1, 15),
|
|
SUBSTR (TRIM (v_afd_parent), 1, 15),
|
|
SUBSTR (TRIM (v_afd_oms), 1, 60),
|
|
SUBSTR (TRIM (v_kpn_nr), 1, 30));
|
|
|
|
v_count_imp := v_count_imp + 1;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
|
|
END;
|
|
|
|
COMMIT;
|
|
END IF;
|
|
END;
|
|
END LOOP;
|
|
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'E',
|
|
'Ongeldig importbestand', 'Geen header of header niet volgens afspraak!');
|
|
ELSE
|
|
fac.imp_writelog (p_import_key, 'S',
|
|
'Afdelingen/#ingelezen importregels: ' || TO_CHAR (v_count_tot), '');
|
|
fac.imp_writelog (p_import_key, 'S',
|
|
'Afdelingen/#ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_imp), '');
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Inleesproces Afdelingen afgebroken!');
|
|
|
|
-- Maak importtabel leeg om import van foutieve bestanden te voorkomen!
|
|
DELETE FROM fac_imp_organisatie;
|
|
END;
|
|
/
|
|
|
|
/* Formatted on 21-12-2016 19:35:25 (QP5 v5.136.908.31019) */
|
|
CREATE OR REPLACE PROCEDURE vlkc_update_org (p_import_key IN NUMBER)
|
|
AS
|
|
c_prs_bedrijf_key NUMBER := 2241; -- F. Van Lanschot Bankiers N.V.
|
|
v_errormsg VARCHAR2 (1000) := '';
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (1000) := '';
|
|
v_count NUMBER;
|
|
l_impcountafd NUMBER;
|
|
l_oldcountafd NUMBER;
|
|
l_oldcountkpn NUMBER;
|
|
lkostenplaatskey prs_kostenplaats.prs_kostenplaats_key%TYPE;
|
|
lafdelingkey prs_afdeling.prs_afdeling_key%TYPE;
|
|
l_cur_lev NUMBER;
|
|
l_cur_parentkey prs_afdeling.prs_afdeling_parentkey%TYPE;
|
|
l_new_parentkey prs_afdeling.prs_afdeling_parentkey%TYPE;
|
|
l_vervcountafd NUMBER;
|
|
l_vervcountkpn NUMBER;
|
|
l_newcountafd NUMBER;
|
|
l_newcountkpn NUMBER;
|
|
|
|
-- Uitgangspunt is dat afbeelding in FACILITOR stuctureel gelijk blijft aan
|
|
-- structuur zoals geimporteerd uit X(?).
|
|
-- Wel geldt dat er in FACILITOR slechts 5 niveaus zijn (excl. bedrijf)
|
|
-- en in X(?) meer. De "lagere" regionen worden daarom op niveau 5 gehangen
|
|
-- (en onder niveau 4).
|
|
CURSOR cafdelingsboom
|
|
IS
|
|
SELECT LEVEL imp_lev,
|
|
DECODE (LEVEL, 1, 0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 5) fac_lev,
|
|
UPPER (prs_afdeling_naam) prs_afdeling_naam,
|
|
UPPER (prs_afdeling_naam_parent) prs_afdeling_naam_parent,
|
|
prs_afdeling_omschrijving,
|
|
UPPER (prs_kostenplaats_nr) prs_kostenplaats_nr,
|
|
prs_bedrijf_naam prs_kostenplaats_omschrijving
|
|
FROM fac_imp_organisatie
|
|
WHERE prs_afdeling_naam IS NOT NULL -- Geen lege regels
|
|
CONNECT BY PRIOR prs_afdeling_naam = prs_afdeling_naam_parent
|
|
START WITH prs_afdeling_naam_parent IS NULL
|
|
ORDER BY LEVEL;
|
|
BEGIN
|
|
-- How many records are imported?
|
|
SELECT COUNT ( * ) INTO l_impcountafd FROM fac_imp_organisatie;
|
|
|
|
-- How many active afdelingen are now present?
|
|
SELECT COUNT ( * ) -- ALLEEN onder F. van Lanschot!
|
|
INTO l_oldcountafd
|
|
FROM prs_v_aanwezigafdeling a, prs_v_afdeling_boom ab
|
|
WHERE UPPER (COALESCE (a.prs_afdeling_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
|
|
AND a.prs_afdeling_key = ab.prs_afdeling_key
|
|
AND ab.prs_bedrijf_key = c_prs_bedrijf_key;
|
|
|
|
SELECT COUNT ( * )
|
|
INTO l_oldcountkpn
|
|
FROM prs_v_aanwezigkostenplaats
|
|
WHERE prs_kostenplaats_module = 'PRS'
|
|
AND UPPER (COALESCE (prs_kostenplaats_omschrijving, '-')) NOT LIKE 'VERVALLEN:%';
|
|
|
|
-- Check #regels, stop als onvoldoende = minder dan de helft overblijft!
|
|
IF (l_impcountafd < l_oldcountafd / 2)
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'E', 'Verdacht importbestand', 'Te weinig regels; update afgebroken!');
|
|
RETURN;
|
|
END IF;
|
|
|
|
FOR rc IN cafdelingsboom
|
|
LOOP
|
|
v_aanduiding := '[' || rc.prs_afdeling_naam || '|' || rc.prs_afdeling_naam_parent || '|' || rc.prs_kostenplaats_nr || '] ';
|
|
|
|
-- Bestaat de kostenplaats al?
|
|
v_errormsg := 'Fout bepalen kostenplaats.';
|
|
BEGIN
|
|
SELECT prs_kostenplaats_key
|
|
INTO lkostenplaatskey
|
|
FROM prs_v_aanwezigkostenplaats
|
|
WHERE prs_kostenplaats_upper = rc.prs_kostenplaats_nr;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
lkostenplaatskey := -1;
|
|
END;
|
|
|
|
-- Bestaat de afdeling al?
|
|
v_errormsg := 'Fout bepalen afdeling.';
|
|
BEGIN
|
|
SELECT a.prs_afdeling_key, COALESCE (fac.safe_to_number (ab.niveau), -1), a.prs_afdeling_parentkey
|
|
INTO lafdelingkey, l_cur_lev, l_cur_parentkey
|
|
FROM prs_afdeling a, prs_v_afdeling_boom ab -- LET OP: Niet prs_v_aanwezigafdeling (want soms "lager" dan 5)!
|
|
WHERE a.prs_afdeling_verwijder IS NULL
|
|
AND a.prs_afdeling_key = ab.prs_afdeling_key(+) -- LET OP: Kan tijdelijk uit beeld raken ("lager" dan 5)!
|
|
AND a.prs_afdeling_upper = rc.prs_afdeling_naam;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
lafdelingkey := -1;
|
|
l_cur_lev := -1;
|
|
l_cur_parentkey := -1;
|
|
END;
|
|
|
|
l_new_parentkey := -1;
|
|
|
|
v_errormsg := 'Fout toevoegen/bijwerken kostenplaats.';
|
|
|
|
BEGIN
|
|
IF lkostenplaatskey = -1
|
|
THEN
|
|
INSERT INTO prs_kostenplaats (prs_kostenplaats_nr,
|
|
prs_kostenplaats_omschrijving,
|
|
prs_kostenplaats_module,
|
|
prs_kostenplaats_begin,
|
|
prs_kostenplaats_eind)
|
|
VALUES (rc.prs_kostenplaats_nr,
|
|
rc.prs_kostenplaats_omschrijving,
|
|
'PRS',
|
|
SYSDATE,
|
|
NULL)
|
|
RETURNING prs_kostenplaats_key INTO lkostenplaatskey;
|
|
ELSE -- Bijwerken kostenplaats met omschrijving het hoogst in de boom!
|
|
SELECT COUNT ( * )
|
|
INTO v_count
|
|
FROM ( SELECT LEVEL imp_lev,
|
|
DECODE (LEVEL, 1, 0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 5) fac_lev,
|
|
UPPER (prs_afdeling_naam) prs_afdeling_naam,
|
|
UPPER (prs_afdeling_naam_parent) prs_afdeling_naam_parent,
|
|
prs_afdeling_omschrijving,
|
|
UPPER (prs_kostenplaats_nr) prs_kostenplaats_nr,
|
|
prs_bedrijf_naam prs_kostenplaats_omschrijving
|
|
FROM fac_imp_organisatie
|
|
WHERE prs_afdeling_naam IS NOT NULL -- Geen lege regels
|
|
CONNECT BY PRIOR prs_afdeling_naam = prs_afdeling_naam_parent
|
|
START WITH prs_afdeling_naam_parent IS NULL
|
|
ORDER BY LEVEL) x
|
|
WHERE UPPER (x.prs_kostenplaats_nr) = rc.prs_kostenplaats_nr
|
|
AND x.fac_lev < rc.fac_lev;
|
|
|
|
IF (v_count = 0)
|
|
THEN
|
|
UPDATE prs_kostenplaats
|
|
SET prs_kostenplaats_omschrijving = rc.prs_kostenplaats_omschrijving
|
|
WHERE prs_kostenplaats_key = lkostenplaatskey;
|
|
END IF;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
|
|
END;
|
|
|
|
-- Bij de mapping naar afdelingen slaan wel level=1 over en pakken we de
|
|
-- afdelingen vanaf level=2 (= FACILITOR Afdeling-1).
|
|
IF rc.imp_lev >= 2 AND lkostenplaatskey <> -1 -- Elke afdeling heeft kostenplaats!
|
|
THEN
|
|
IF lafdelingkey = -1 -- Nieuwe afdeling -> toevoegen!
|
|
THEN
|
|
BEGIN
|
|
v_errormsg := 'Fout toevoegen afdeling.';
|
|
|
|
IF rc.fac_lev = 1 -- Ingelezen afdeling betreft Afdeling-1!
|
|
THEN
|
|
INSERT INTO prs_afdeling (prs_afdeling_naam,
|
|
prs_afdeling_omschrijving,
|
|
prs_bedrijf_key,
|
|
prs_afdeling_parentkey,
|
|
prs_kostenplaats_key)
|
|
VALUES (rc.prs_afdeling_naam,
|
|
rc.prs_afdeling_omschrijving,
|
|
c_prs_bedrijf_key,
|
|
NULL,
|
|
lkostenplaatskey)
|
|
RETURNING prs_afdeling_key INTO lafdelingkey;
|
|
ELSIF rc.imp_lev <= 6 -- Afdeling-2 t/m Afdeling-5!
|
|
THEN
|
|
-- Bepaal key van parent!
|
|
SELECT prs_afdeling_key
|
|
INTO l_new_parentkey
|
|
FROM prs_afdeling -- LET OP: Niet prs_v_aanwezigafdeling (want soms "lager" dan 5)!
|
|
WHERE prs_afdeling_verwijder IS NULL
|
|
AND prs_afdeling_upper = rc.prs_afdeling_naam_parent;
|
|
|
|
INSERT INTO prs_afdeling (prs_afdeling_naam,
|
|
prs_afdeling_omschrijving,
|
|
prs_bedrijf_key,
|
|
prs_afdeling_parentkey,
|
|
prs_kostenplaats_key)
|
|
VALUES (rc.prs_afdeling_naam,
|
|
rc.prs_afdeling_omschrijving,
|
|
NULL,
|
|
l_new_parentkey,
|
|
lkostenplaatskey)
|
|
RETURNING prs_afdeling_key INTO lafdelingkey;
|
|
ELSE -- Omhoog geschoven afdeling op/naar niveau Afdeling-5!
|
|
-- Bepaal key van parent van (soms zelf verschoven) parent!
|
|
SELECT prs_afdeling_parentkey
|
|
INTO l_new_parentkey
|
|
FROM prs_afdeling -- LET OP: Niet prs_v_aanwezigafdeling (want soms "lager" dan 5)!
|
|
WHERE prs_afdeling_verwijder IS NULL
|
|
AND prs_afdeling_upper = rc.prs_afdeling_naam_parent;
|
|
|
|
-- Doordat cursor van hoog naar laag door organisatie loopt,
|
|
-- komen afdelingen vanaf (imp_)lev>=7 keurig onder gewenste
|
|
-- Afdeling-4 te hangen.
|
|
INSERT INTO prs_afdeling (prs_afdeling_naam,
|
|
prs_afdeling_omschrijving,
|
|
prs_bedrijf_key,
|
|
prs_afdeling_parentkey,
|
|
prs_kostenplaats_key)
|
|
VALUES (rc.prs_afdeling_naam,
|
|
rc.prs_afdeling_omschrijving,
|
|
NULL,
|
|
l_new_parentkey,
|
|
lkostenplaatskey)
|
|
RETURNING prs_afdeling_key INTO lafdelingkey;
|
|
END IF;
|
|
|
|
fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Afdeling toegevoegd.');
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
|
|
END;
|
|
ELSE -- Bestaande afdeling -> bijwerken (misschien)!
|
|
BEGIN
|
|
v_errormsg := 'Fout bijwerken afdeling.';
|
|
|
|
-- Zonodig bijwerken omschrijving (deze kon eerder vervallen
|
|
-- zijn) en/of omhangen naar de juiste plek in de boom.
|
|
IF rc.fac_lev = 1 -- Ingelezen afdeling betreft Afdeling-1!
|
|
THEN
|
|
UPDATE prs_afdeling
|
|
SET prs_afdeling_omschrijving = rc.prs_afdeling_omschrijving,
|
|
prs_bedrijf_key = c_prs_bedrijf_key,
|
|
prs_afdeling_parentkey = NULL,
|
|
prs_kostenplaats_key = lkostenplaatskey
|
|
WHERE prs_afdeling_key = lafdelingkey
|
|
AND (COALESCE (prs_afdeling_omschrijving, '-') <> rc.prs_afdeling_omschrijving -- Oms. gewijzigd?
|
|
OR prs_afdeling_parentkey IS NOT NULL -- Niveau gewijzigd?
|
|
OR prs_kostenplaats_key <> lkostenplaatskey); -- Kostenplaats gewijzigd?
|
|
ELSIF rc.imp_lev <= 6 -- Afdeling-2 t/m Afdeling-5!
|
|
THEN
|
|
-- Bepaal key van parent!
|
|
SELECT prs_afdeling_key
|
|
INTO l_new_parentkey
|
|
FROM prs_afdeling -- LET OP: Niet prs_v_aanwezigafdeling (want soms "lager" dan 5)!
|
|
WHERE prs_afdeling_verwijder IS NULL
|
|
AND prs_afdeling_upper = rc.prs_afdeling_naam_parent;
|
|
|
|
UPDATE prs_afdeling
|
|
SET prs_afdeling_omschrijving = rc.prs_afdeling_omschrijving,
|
|
prs_bedrijf_key = NULL,
|
|
prs_afdeling_parentkey = l_new_parentkey,
|
|
prs_kostenplaats_key = lkostenplaatskey
|
|
WHERE prs_afdeling_key = lafdelingkey
|
|
AND (COALESCE (prs_afdeling_omschrijving, '-') <> rc.prs_afdeling_omschrijving -- Oms. gewijzigd?
|
|
OR COALESCE (prs_afdeling_parentkey, -1) <> l_new_parentkey -- Parent gewijzigd?
|
|
OR prs_kostenplaats_key <> lkostenplaatskey); -- Kostenplaats gewijzigd?
|
|
ELSE -- Omhoog geschoven afdeling op/naar niveau Afdeling-5!
|
|
-- Bepaal key van parent van (soms zelf verschoven) parent!
|
|
SELECT prs_afdeling_parentkey
|
|
INTO l_new_parentkey
|
|
FROM prs_afdeling -- LET OP: Niet prs_v_aanwezigafdeling (want soms "lager" dan 5)!
|
|
WHERE prs_afdeling_verwijder IS NULL
|
|
AND prs_afdeling_upper = rc.prs_afdeling_naam_parent;
|
|
|
|
-- Doordat cursor van hoog naar laag door organisatie loopt,
|
|
-- komen afdelingen vanaf (imp_)lev>=7 keurig onder gewenste
|
|
-- Afdeling-4 te hangen.
|
|
UPDATE prs_afdeling
|
|
SET prs_afdeling_omschrijving = rc.prs_afdeling_omschrijving,
|
|
prs_bedrijf_key = NULL,
|
|
prs_afdeling_parentkey = l_new_parentkey,
|
|
prs_kostenplaats_key = lkostenplaatskey
|
|
WHERE prs_afdeling_key = lafdelingkey
|
|
AND (COALESCE (prs_afdeling_omschrijving, '-') <> rc.prs_afdeling_omschrijving -- Oms. gewijzigd?
|
|
OR COALESCE (prs_afdeling_parentkey, -1) <> l_new_parentkey -- Parent gewijzigd?
|
|
OR prs_kostenplaats_key <> lkostenplaatskey); -- Kostenplaats gewijzigd?
|
|
END IF;
|
|
|
|
IF rc.fac_lev <> l_cur_lev OR l_new_parentkey <> l_cur_parentkey
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Afdeling omgehangen naar level=' || TO_CHAR (rc.fac_lev));
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
|
|
END;
|
|
END IF;
|
|
|
|
COMMIT;
|
|
END IF;
|
|
END LOOP;
|
|
|
|
-- Zet kostenplaatsen op VERVALLEN; de rest handmatig verder maar regelen!
|
|
v_errormsg := 'Fout inactiveren kostenplaatsen.';
|
|
|
|
SELECT COUNT ( * )
|
|
INTO l_vervcountkpn
|
|
FROM prs_v_aanwezigkostenplaats kp
|
|
WHERE kp.prs_kostenplaats_module = 'PRS'
|
|
AND UPPER (COALESCE (kp.prs_kostenplaats_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM fac_imp_organisatie
|
|
WHERE UPPER (prs_kostenplaats_nr) = kp.prs_kostenplaats_upper);
|
|
|
|
UPDATE prs_kostenplaats kp
|
|
SET kp.prs_kostenplaats_omschrijving = SUBSTR ('VERVALLEN:' || COALESCE (prs_kostenplaats_omschrijving, '-'), 1, 60)
|
|
WHERE kp.prs_kostenplaats_verwijder IS NULL
|
|
AND kp.prs_kostenplaats_module = 'PRS'
|
|
AND UPPER (COALESCE (prs_kostenplaats_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM fac_imp_organisatie
|
|
WHERE UPPER (prs_kostenplaats_nr) = kp.prs_kostenplaats_upper);
|
|
|
|
COMMIT;
|
|
|
|
-- Zet afdelingen op VERVALLEN; de rest handmatig verder maar regelen!
|
|
v_errormsg := 'Fout inactiveren afdelingen.';
|
|
|
|
SELECT COUNT ( * ) -- ALLEEN onder F. van Lanschot!
|
|
INTO l_vervcountafd
|
|
FROM prs_v_aanwezigafdeling a, prs_v_afdeling_boom ab
|
|
WHERE UPPER (COALESCE (a.prs_afdeling_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
|
|
AND a.prs_afdeling_key = ab.prs_afdeling_key
|
|
AND ab.prs_bedrijf_key = c_prs_bedrijf_key
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM fac_imp_organisatie
|
|
WHERE UPPER (prs_afdeling_naam) = a.prs_afdeling_upper);
|
|
|
|
UPDATE prs_afdeling a -- ALLEEN onder F. van Lanschot!
|
|
SET a.prs_afdeling_omschrijving = SUBSTR ('VERVALLEN:' || COALESCE (prs_afdeling_omschrijving, '-'), 1, 60)
|
|
WHERE a.prs_afdeling_verwijder IS NULL
|
|
AND UPPER (COALESCE (a.prs_afdeling_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
|
|
AND EXISTS
|
|
(SELECT 1
|
|
FROM prs_v_afdeling_boom
|
|
WHERE prs_afdeling_key = a.prs_afdeling_key
|
|
AND prs_bedrijf_key = c_prs_bedrijf_key)
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM fac_imp_organisatie
|
|
WHERE UPPER (prs_afdeling_naam) = a.prs_afdeling_upper);
|
|
|
|
COMMIT;
|
|
|
|
-- For summary only.
|
|
SELECT COUNT ( * ) -- ALLEEN onder F. van Lanschot!
|
|
INTO l_newcountafd
|
|
FROM prs_v_aanwezigafdeling a, prs_v_afdeling_boom ab
|
|
WHERE UPPER (COALESCE (a.prs_afdeling_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
|
|
AND a.prs_afdeling_key = ab.prs_afdeling_key
|
|
AND ab.prs_bedrijf_key = c_prs_bedrijf_key;
|
|
|
|
SELECT COUNT ( * )
|
|
INTO l_newcountkpn
|
|
FROM prs_v_aanwezigkostenplaats
|
|
WHERE prs_kostenplaats_module = 'PRS'
|
|
AND UPPER (COALESCE (prs_kostenplaats_omschrijving, '-')) NOT LIKE 'VERVALLEN:%';
|
|
|
|
fac.imp_writelog (
|
|
p_import_key, 'S',
|
|
'Aantal afdelingen in importbestand: ' || TO_CHAR (l_impcountafd),
|
|
'');
|
|
fac.imp_writelog (
|
|
p_import_key, 'S',
|
|
'Aantal actieve afdelingen vooraf: '
|
|
|| TO_CHAR (l_oldcountafd)
|
|
|| ' nu: '
|
|
|| TO_CHAR (l_newcountafd),
|
|
'');
|
|
fac.imp_writelog (
|
|
p_import_key, 'S',
|
|
'Aantal afdelingen vervallen: ' || TO_CHAR (l_vervcountafd),
|
|
'');
|
|
fac.imp_writelog (
|
|
p_import_key, 'S',
|
|
'Aantal actieve kostenplaatsen vooraf: '
|
|
|| TO_CHAR (l_oldcountkpn)
|
|
|| ' nu: '
|
|
|| TO_CHAR (l_newcountkpn),
|
|
'');
|
|
fac.imp_writelog (
|
|
p_import_key, 'S',
|
|
'Aantal kostenplaatsen vervallen: ' || TO_CHAR (l_vervcountkpn),
|
|
'');
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Importproces Afdelingen afgebroken!');
|
|
END;
|
|
/
|
|
|
|
|
|
/* Formatted on 17-12-2015 14:48:12 (QP5 v5.136.908.31019) */
|
|
CREATE OR REPLACE PROCEDURE vlkc_import_prs (p_import_key IN NUMBER)
|
|
AS
|
|
v_errormsg VARCHAR2 (1000) := '-';
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
BEGIN
|
|
-- Verwijder spaties en haakjes ('(' en ')') uit Telefoonnr.
|
|
UPDATE fac_imp_file
|
|
SET fac_imp_file_line =
|
|
SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, ';', 1, 9))
|
|
|| REPLACE (
|
|
REPLACE (
|
|
REPLACE (
|
|
SUBSTR (fac_imp_file_line,
|
|
INSTR (fac_imp_file_line, ';', 1, 9) + 1,
|
|
INSTR (fac_imp_file_line, ';', 1, 10) - INSTR (fac_imp_file_line, ';', 1, 9) - 1),
|
|
' ', ''),
|
|
'(', ''),
|
|
')', '')
|
|
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 10))
|
|
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
|
|
|
|
COMMIT;
|
|
|
|
-- Verwijder spaties en haakjes ('(' en ')') uit Mobiel.
|
|
UPDATE fac_imp_file
|
|
SET fac_imp_file_line =
|
|
SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, ';', 1, 10))
|
|
|| REPLACE (
|
|
REPLACE (
|
|
REPLACE (
|
|
SUBSTR (fac_imp_file_line,
|
|
INSTR (fac_imp_file_line, ';', 1, 10) + 1,
|
|
INSTR (fac_imp_file_line, ';', 1, 11) - INSTR (fac_imp_file_line, ';', 1, 10) - 1),
|
|
' ', ''),
|
|
'(', ''),
|
|
')', '')
|
|
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 11))
|
|
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
|
|
|
|
COMMIT;
|
|
|
|
-- Generieke import.
|
|
-- De sequence array staat beschreven in PRS_PAC.SRC bij de import_perslid-PROCEDURE.
|
|
-- Met Stamplaats wordt nog niets gedaan!
|
|
--'%"Personeelsnummer";"Loginnaam";"Achternaam";"Tussenvoegsel";"Voorletters";"Voornaam";"Afdelingscode";"Functie";"Email";"Telefoonnr";"Mobiel";"Stamplaats"%');
|
|
--'%Personeelsnummer;Loginnaam;Achternaam;Tussenvoegsel;Voorletters;Voornaam;Afdelingscode;Functie;Email;Telefoonnr;Mobiel;Stamplaats%');
|
|
prs.import_perslid (
|
|
p_import_key,
|
|
'0;0;0;0;0;0;7;3;4;6;'
|
|
|| '5;0;0;0;0;10;11;9;0;1;'
|
|
|| '8;2;0;0;0;0;12;13;0;0;'
|
|
|| '0;0;0;0;0;0;0;0;0;0;'
|
|
|| '0;0;0;0;0;0',
|
|
'%Personeelsnummer;Login;Achternaam;Tussenvoegsel;Voorletters;Voornaam;Afdelingscode;Functie;Email;Telefoonnr;Mobiel;Stamplaats;Login2%');
|
|
|
|
-- Klantspecifieke aanpassingen.
|
|
-- Als geen Login aangeleverd, dan handmatig toegekende niet wissen.
|
|
UPDATE fac_imp_perslid i
|
|
SET i.prs_perslid_oslogin =
|
|
(SELECT MAX (prs_perslid_oslogin)
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE prs_perslid_nr = i.prs_perslid_nr)
|
|
WHERE i.prs_perslid_oslogin IS NULL -- Aangeleverde Loginnaam wint!
|
|
AND EXISTS
|
|
(SELECT 1
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE prs_perslid_oslogin IS NOT NULL
|
|
AND prs_perslid_nr = i.prs_perslid_nr);
|
|
|
|
COMMIT;
|
|
|
|
-- Als geen Voorletters aangeleverd, dan handmatig toegekende niet wissen.
|
|
UPDATE fac_imp_perslid i
|
|
SET i.prs_perslid_voorletters =
|
|
(SELECT MAX (prs_perslid_voorletters)
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE prs_perslid_nr = i.prs_perslid_nr)
|
|
WHERE i.prs_perslid_voorletters IS NULL -- Aangeleverde Voorletters winnen!
|
|
AND EXISTS
|
|
(SELECT 1
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE prs_perslid_voorletters IS NOT NULL
|
|
AND prs_perslid_nr = i.prs_perslid_nr);
|
|
|
|
COMMIT;
|
|
|
|
-- Als geen Voornaam aangeleverd, dan handmatig toegekende niet wissen.
|
|
UPDATE fac_imp_perslid i
|
|
SET i.prs_perslid_voornaam =
|
|
(SELECT MAX (prs_perslid_voornaam)
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE prs_perslid_nr = i.prs_perslid_nr)
|
|
WHERE i.prs_perslid_voornaam IS NULL -- Aangeleverde Voornaam wint!
|
|
AND EXISTS
|
|
(SELECT 1
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE prs_perslid_voornaam IS NOT NULL
|
|
AND prs_perslid_nr = i.prs_perslid_nr);
|
|
|
|
COMMIT;
|
|
|
|
-- Iedereen de Functie 'Collega'.
|
|
UPDATE fac_imp_perslid
|
|
SET prs_srtperslid_omschrijving = 'Collega';
|
|
|
|
COMMIT;
|
|
|
|
-- Als geen Email aangeleverd, dan handmatig toegekende niet wissen.
|
|
UPDATE fac_imp_perslid i
|
|
SET i.prs_perslid_email =
|
|
(SELECT MAX (prs_perslid_email)
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE prs_perslid_nr = i.prs_perslid_nr)
|
|
WHERE i.prs_perslid_email IS NULL -- Aangeleverde Email wint!
|
|
AND EXISTS
|
|
(SELECT 1
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE prs_perslid_email IS NOT NULL
|
|
AND prs_perslid_nr = i.prs_perslid_nr);
|
|
|
|
COMMIT;
|
|
|
|
-- Als geen Telefoonnr aangeleverd, dan handmatig toegekende niet wissen.
|
|
UPDATE fac_imp_perslid i
|
|
SET i.prs_perslid_telefoonnr =
|
|
(SELECT MAX (prs_perslid_telefoonnr)
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE prs_perslid_nr = i.prs_perslid_nr)
|
|
WHERE i.prs_perslid_telefoonnr IS NULL -- Aangeleverde Telefoonnr wint!
|
|
AND EXISTS
|
|
(SELECT 1
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE prs_perslid_telefoonnr IS NOT NULL
|
|
AND prs_perslid_nr = i.prs_perslid_nr);
|
|
|
|
COMMIT;
|
|
|
|
-- Als geen Mobiel aangeleverd, dan handmatig toegekende niet wissen.
|
|
UPDATE fac_imp_perslid i
|
|
SET i.prs_perslid_mobiel =
|
|
(SELECT MAX (prs_perslid_mobiel)
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE prs_perslid_nr = i.prs_perslid_nr)
|
|
WHERE i.prs_perslid_mobiel IS NULL -- Aangeleverde Mobiel wint!
|
|
AND EXISTS
|
|
(SELECT 1
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE prs_perslid_mobiel IS NOT NULL
|
|
AND prs_perslid_nr = i.prs_perslid_nr);
|
|
|
|
COMMIT;
|
|
|
|
-- Klantspecifieke aanpassingen.
|
|
-- Locatie/Gebouw/Verdieping/Ruimte bepalen via Kenmerk1-kolom -> Eigen tabel (key = 1) ->
|
|
-- Gebouw en daaronder Ruimte '_000' op de verdieping met het laagste volgnummer!
|
|
-- Als persoon al een WP heeft op import-locatie, dan is dat de juiste en blijft deze
|
|
-- (handmatig gecorrigeerde WP) ongewijzigd. In alle andere gevallen verhuist persoon naar
|
|
-- '_000' op de meegegeven locatie.
|
|
-- Eventuele WPs onder andere locaties dan import-locatie blijven ook ongewijzigd!
|
|
UPDATE fac_imp_perslid i
|
|
SET i.alg_locatie_code =
|
|
(SELECT il.alg_locatie_code
|
|
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
|
|
alg_v_aanweziggebouw ig,
|
|
alg_locatie il
|
|
WHERE ud.fac_usrtab_key = -1
|
|
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
|
|
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
|
|
AND ig.alg_locatie_key = il.alg_locatie_key
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM alg_v_aanweziggebouw
|
|
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
|
|
AND alg_locatie_key < il.alg_locatie_key)),
|
|
i.alg_gebouw_code =
|
|
(SELECT ig.alg_gebouw_code
|
|
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
|
|
alg_v_aanweziggebouw ig,
|
|
alg_locatie il
|
|
WHERE ud.fac_usrtab_key = -1
|
|
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
|
|
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
|
|
AND ig.alg_locatie_key = il.alg_locatie_key
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM alg_v_aanweziggebouw
|
|
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
|
|
AND alg_locatie_key < il.alg_locatie_key)),
|
|
i.alg_verdieping_volgnr =
|
|
(SELECT iv.alg_verdieping_volgnr
|
|
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
|
|
alg_v_aanweziggebouw ig,
|
|
alg_locatie il,
|
|
alg_verdieping iv,
|
|
alg_ruimte ir
|
|
WHERE ud.fac_usrtab_key = -1
|
|
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
|
|
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
|
|
AND ig.alg_locatie_key = il.alg_locatie_key
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM alg_v_aanweziggebouw
|
|
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
|
|
AND alg_locatie_key < il.alg_locatie_key)
|
|
AND ig.alg_gebouw_key = iv.alg_gebouw_key
|
|
AND iv.alg_verdieping_key = ir.alg_verdieping_key
|
|
AND ir.alg_ruimte_nr = '_000'
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM alg_v_aanwezigruimte r, alg_verdieping v
|
|
WHERE r.alg_ruimte_nr = '_000'
|
|
AND r.alg_verdieping_key = v.alg_verdieping_key
|
|
AND v.alg_verdieping_volgnr < iv.alg_verdieping_volgnr)),
|
|
i.alg_ruimte_nr =
|
|
(SELECT '_000'
|
|
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
|
|
alg_v_aanweziggebouw ig,
|
|
alg_locatie il
|
|
WHERE ud.fac_usrtab_key = -1
|
|
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
|
|
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
|
|
AND ig.alg_locatie_key = il.alg_locatie_key
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM alg_v_aanweziggebouw
|
|
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
|
|
AND alg_locatie_key < il.alg_locatie_key))
|
|
WHERE NOT EXISTS -- Nog geen werkplek op Locatie!
|
|
(SELECT 1
|
|
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
|
|
alg_v_aanweziggebouw ig,
|
|
alg_locatie il,
|
|
prs_v_aanwezigperslid p,
|
|
prs_perslidwerkplek pw,
|
|
prs_werkplek cw,
|
|
alg_v_aanwezigruimte cr,
|
|
alg_verdieping cv,
|
|
alg_gebouw cg
|
|
WHERE ud.fac_usrtab_key = -1
|
|
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
|
|
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
|
|
AND ig.alg_locatie_key = il.alg_locatie_key
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM alg_v_aanweziggebouw
|
|
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
|
|
AND alg_locatie_key < il.alg_locatie_key)
|
|
AND p.prs_perslid_nr = i.prs_perslid_nr
|
|
AND p.prs_perslid_key = pw.prs_perslid_key
|
|
AND pw.prs_werkplek_key = cw.prs_werkplek_key
|
|
AND cw.prs_alg_ruimte_key = cr.alg_ruimte_key
|
|
AND cr.alg_verdieping_key = cv.alg_verdieping_key
|
|
AND cv.alg_gebouw_key = cg.alg_gebouw_key
|
|
AND cg.alg_locatie_key = il.alg_locatie_key);
|
|
|
|
COMMIT;
|
|
|
|
-- Resulteert in nette foutmelding als ruimte niet kan worden bepaald.
|
|
UPDATE fac_imp_perslid
|
|
SET alg_verdieping_volgnr = 0
|
|
WHERE alg_gebouw_code IS NOT NULL
|
|
AND alg_verdieping_volgnr IS NULL;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Inleesproces personen afgebroken!');
|
|
END vlkc_import_prs;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE vlkc_update_prs (p_import_key IN NUMBER)
|
|
AS
|
|
-- Maximale afname van medewerkers na import tov. huidig aantal met nummer!
|
|
c_max_delta_percentage NUMBER (10) := 25; -- 25%!
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_afd_count NUMBER (10);
|
|
v_afd_digit VARCHAR2 (1);
|
|
v_count_prs_import NUMBER (10); -- #actieve personen na import!
|
|
v_count_prs_actual NUMBER (10); -- #actieve personen voor import!
|
|
|
|
-- Verwijderen personen niet in import (voor afdeling wel in import)!
|
|
/*
|
|
CURSOR c_del (p_afd_digit VARCHAR2)
|
|
IS
|
|
SELECT p.prs_perslid_key, p.prs_perslid_email
|
|
FROM prs_v_aanwezigperslid p
|
|
WHERE p.prs_perslid_email IS NOT NULL -- Personen met e-mail adres
|
|
AND p.prs_srtperslid_key = 3941 -- Personen met functie=Collega
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM fac_imp_perslid
|
|
WHERE prs_perslid_email = p.prs_perslid_email)
|
|
ORDER BY 2, 1;
|
|
*/
|
|
CURSOR c_del (p_afd_digit VARCHAR2)
|
|
IS
|
|
SELECT p.prs_perslid_key, p.prs_perslid_nr
|
|
FROM prs_v_aanwezigperslid p --, prs_afdeling a
|
|
WHERE p.prs_perslid_nr IS NOT NULL -- Personen met nummer
|
|
AND p.prs_srtperslid_key = 3941 -- Personen met functie=Collega
|
|
--AND p.prs_afdeling_key = a.prs_afdeling_key
|
|
--AND SUBSTR (a.prs_afdeling_upper, 1, 1) = UPPER (p_afd_digit)
|
|
--AND EXISTS
|
|
-- (SELECT 1
|
|
-- FROM fac_imp_perslid
|
|
-- WHERE UPPER (SUBSTR (prs_afdeling_naam, 1, 1)) = UPPER (p_afd_digit))
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM fac_imp_perslid
|
|
WHERE prs_perslid_nr = p.prs_perslid_nr)
|
|
ORDER BY 2, 1;
|
|
|
|
-- Toekennen alternatieve login!
|
|
CURSOR c_login2
|
|
IS
|
|
SELECT '[' || p.prs_perslid_nr || '|' || i.prs_kenmerk2 || '] ' aanduiding,
|
|
p.prs_perslid_key,
|
|
i.prs_kenmerk2
|
|
FROM fac_imp_perslid i, prs_v_aanwezigperslid p
|
|
WHERE i.prs_kenmerk2 IS NOT NULL -- Login2
|
|
AND i.prs_perslid_nr = p.prs_perslid_nr
|
|
AND i.prs_kenmerk2 != p.prs_perslid_oslogin;
|
|
BEGIN
|
|
/*
|
|
SELECT COUNT (DISTINCT SUBSTR (prs_afdeling_naam, 1, 1)), MIN (SUBSTR (prs_afdeling_naam, 1, 1))
|
|
INTO v_afd_count, v_afd_digit
|
|
FROM fac_imp_perslid;
|
|
|
|
-- Bepaal aantal personen na import (beginnend met v_afd_digit).
|
|
SELECT COUNT (DISTINCT prs_perslid_nr)
|
|
INTO v_count_prs_import
|
|
FROM fac_imp_perslid
|
|
WHERE SUBSTR (prs_afdeling_naam, 1, 1) = v_afd_digit;
|
|
|
|
-- Bepaal aantal personen voor import (beginnend met v_afd_digit).
|
|
SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
|
|
INTO v_count_prs_actual
|
|
FROM prs_v_aanwezigperslid p, prs_afdeling a
|
|
WHERE p.prs_perslid_nr IS NOT NULL
|
|
AND p.prs_afdeling_key = a.prs_afdeling_key
|
|
AND SUBSTR (a.prs_afdeling_naam, 1, 1) = v_afd_digit;
|
|
|
|
IF (v_afd_count > 1)
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key, 'W',
|
|
'Personen niet onder dezelfde afdeling op het hoogste niveau (VL en KC); zie specificatie!',
|
|
'Geen personen verwijderd');
|
|
ELSIF (TRUNC ( (v_count_prs_import / v_count_prs_actual) * 100) < (100 - c_max_delta_percentage))
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key, 'E',
|
|
'Verschil tussen huidig aantal en te importeren aantal personen te groot; zie specificatie!',
|
|
'- max. verschilpercentage = [' || TO_CHAR (c_max_delta_percentage) || '%]'
|
|
|| CHR (13) || CHR (10)
|
|
|| '- #personen/import = [' || TO_CHAR (v_count_prs_import) || ']'
|
|
|| CHR (13) || CHR (10)
|
|
|| '- #personen/huidig = [' || TO_CHAR (v_count_prs_actual) || ']');
|
|
ELSE
|
|
-- Verwijder personen die niet meer in de import voorkomen.
|
|
FOR rec IN c_del (v_afd_digit)
|
|
LOOP
|
|
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
-- Generieke update (op personeelsnummer).
|
|
prs.update_perslid (p_import_key, 'NR', NULL);
|
|
END IF;
|
|
*/
|
|
-- Bepaal aantal personen na import.
|
|
SELECT COUNT (DISTINCT prs_perslid_nr)
|
|
INTO v_count_prs_import
|
|
FROM fac_imp_perslid
|
|
WHERE prs_perslid_nr IS NOT NULL;
|
|
|
|
-- Bepaal aantal personen voor import.
|
|
SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
|
|
INTO v_count_prs_actual
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE prs_perslid_nr IS NOT NULL;
|
|
|
|
IF (TRUNC ( (v_count_prs_import / v_count_prs_actual) * 100) < (100 - c_max_delta_percentage))
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key, 'E',
|
|
'Verschil tussen huidig aantal en te importeren aantal personen te groot; zie specificatie!',
|
|
'- max. verschilpercentage = [' || TO_CHAR (c_max_delta_percentage) || '%]'
|
|
|| CHR (13) || CHR (10)
|
|
|| '- #personen/import = [' || TO_CHAR (v_count_prs_import) || ']'
|
|
|| CHR (13) || CHR (10)
|
|
|| '- #personen/huidig = [' || TO_CHAR (v_count_prs_actual) || ']');
|
|
ELSE
|
|
-- Verwijder personen die niet meer in de import voorkomen.
|
|
FOR rec IN c_del (v_afd_digit)
|
|
LOOP
|
|
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
-- Generieke update (op personeelsnummer).
|
|
--prs.update_perslid (p_import_key, 'EMAIL', NULL); -- EENMALIG op e-mail!
|
|
prs.update_perslid (p_import_key, 'NR', NULL);
|
|
|
|
-- Toekennen alternatieve login!
|
|
FOR rec IN c_login2
|
|
LOOP
|
|
BEGIN
|
|
UPDATE prs_perslid
|
|
SET prs_perslid_oslogin2 = rec.prs_kenmerk2
|
|
WHERE prs_perslid_key = rec.prs_perslid_key;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key, 'E', rec.aanduiding || v_errormsg, 'Toekennen login2');
|
|
END;
|
|
END LOOP;
|
|
END IF;
|
|
END vlkc_update_prs;
|
|
/
|
|
|
|
-- Import vanuit Strukton
|
|
/* Formatted on 19-12-2016 15:15:45 (QP5 v5.136.908.31019) */
|
|
CREATE OR REPLACE PROCEDURE vlkc_import_opdrstat_strukton (p_import_key IN NUMBER)
|
|
AS
|
|
c_delim VARCHAR2 (1) := ';';
|
|
v_newline VARCHAR2 (4000); -- Input line
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (1000) := '';
|
|
header_is_valid NUMBER := 0;
|
|
v_count_tot NUMBER (10) := 0;
|
|
v_count_imp NUMBER (10) := 0;
|
|
v_ongeldig NUMBER (1) := 0;
|
|
-- De importvelden
|
|
v_mld_opdr_key_tekst VARCHAR2 (100);
|
|
v_mld_opdr_key NUMBER (10);
|
|
v_mld_opdr_opmerking VARCHAR2 (4000);
|
|
v_extern_nummer VARCHAR2 (100);
|
|
v_status_code VARCHAR2 (100);
|
|
v_status NUMBER (10);
|
|
v_datumtijd_tekst VARCHAR2 (100);
|
|
v_datumtijd DATE;
|
|
v_status_tekst VARCHAR2 (100);
|
|
v_opmerking VARCHAR2 (4000);
|
|
v_totaal NUMBER (8,2);
|
|
v_totaal_str VARCHAR2 (100);
|
|
|
|
-- Overige velden:
|
|
CURSOR c1
|
|
IS
|
|
SELECT *
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key
|
|
ORDER BY fac_imp_file_index;
|
|
BEGIN
|
|
-- Eerst opruiming
|
|
DELETE FROM vlkc_imp_opdrstat_strukton;
|
|
|
|
COMMIT;
|
|
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_newline := rec1.fac_imp_file_line;
|
|
v_errormsg := 'Fout opvragen importregel';
|
|
v_aanduiding := '';
|
|
v_ongeldig := 0;
|
|
|
|
-- Lees alle veldwaarden
|
|
fac.imp_getfield (v_newline, c_delim, v_mld_opdr_key_tekst);
|
|
fac.imp_getfield (v_newline, c_delim, v_extern_nummer);
|
|
fac.imp_getfield (v_newline, c_delim, v_status_code); -- typeID
|
|
fac.imp_getfield (v_newline, c_delim, v_datumtijd_tekst);
|
|
fac.imp_getfield (v_newline, c_delim, v_status_tekst);
|
|
fac.imp_getfield (v_newline, c_delim, v_opmerking);
|
|
fac.imp_getfield (v_newline, c_delim, v_totaal_str);
|
|
v_opmerking := SUBSTR (v_opmerking, 1, 1000);
|
|
-- Verwijder de markering voor cr/lf die in stylesheet is toegevoegd.
|
|
v_opmerking := REPLACE (v_opmerking, '@@', CHR (13) || CHR (10));
|
|
v_totaal := fac.safe_to_number (v_totaal_str);
|
|
fac.imp_writelog (p_import_key, 'I',
|
|
'v_totaal_str:' || v_totaal_str || ' / v_totaal:' || TO_CHAR (v_totaal), '');
|
|
v_aanduiding :=
|
|
'['
|
|
|| v_mld_opdr_key_tekst
|
|
|| '|'
|
|
|| v_extern_nummer
|
|
|| '|'
|
|
|| v_status_code
|
|
|| '|'
|
|
|| v_datumtijd_tekst
|
|
|| '|'
|
|
|| v_status_tekst
|
|
|| '] ';
|
|
|
|
-- Ik controleer of ik een geldige header heb, dat is: in de juiste
|
|
-- kolommen de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
|
|
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
|
IF header_is_valid = 0
|
|
THEN
|
|
IF UPPER (TRIM (v_mld_opdr_key_tekst)) = 'REFERENCEID'
|
|
AND UPPER (TRIM (v_extern_nummer)) = 'SERVICEREQUESTID'
|
|
AND UPPER (TRIM (v_status_code)) = 'TYPEID'
|
|
AND UPPER (TRIM (v_datumtijd_tekst)) = 'DATETIME'
|
|
AND UPPER (TRIM (v_opmerking)) = 'REMARKS'
|
|
AND UPPER (TRIM (v_totaal_str)) = 'TOTAL'
|
|
THEN
|
|
header_is_valid := 1;
|
|
END IF;
|
|
ELSE
|
|
v_count_tot := v_count_tot + 1;
|
|
-- Controleer alle veldwaarden
|
|
v_errormsg := 'Fout bepalen opdracht';
|
|
v_mld_opdr_key := TRIM (v_mld_opdr_key);
|
|
|
|
BEGIN
|
|
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
|
|
INTO v_mld_opdr_key, v_mld_opdr_opmerking
|
|
FROM mld_opdr o, mld_melding m, mld_stdmelding sm, ins_tab_discipline td, ins_srtdiscipline sd
|
|
WHERE o.mld_melding_key = m.mld_melding_key
|
|
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND sm.mld_ins_discipline_key = td.ins_discipline_key
|
|
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
|
AND sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr = v_mld_opdr_key_tekst;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
v_ongeldig := 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
|
|
END;
|
|
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
v_errormsg := 'Fout bepalen status';
|
|
|
|
CASE
|
|
WHEN v_status_code = '5'
|
|
THEN
|
|
v_status := 5; -- uitgegeven
|
|
WHEN v_status_code = '10'
|
|
THEN
|
|
v_status := 8; -- geaccepteerd
|
|
WHEN v_status_code = '20' -- monteur gereed
|
|
THEN
|
|
v_status := 6; -- afgemeld
|
|
WHEN v_status_code = '25' -- specialist gereed
|
|
THEN
|
|
v_status := 6; -- afgemeld
|
|
WHEN v_status_code = '30' -- technisch gereed
|
|
THEN
|
|
v_status := 6; -- afgemeld
|
|
-- For future use
|
|
--WHEN v_status_code = '40' -- uitgeprijst
|
|
--THEN
|
|
-- v_status := 9; -- afgerond
|
|
WHEN v_status_code = '70'
|
|
THEN
|
|
v_status := 1; -- geannuleerd
|
|
WHEN v_status_code = '80'
|
|
THEN
|
|
v_status := 1; -- afgewezen
|
|
ELSE
|
|
v_status := NULL;
|
|
v_ongeldig := 1; -- nog te bezien
|
|
END CASE;
|
|
END IF;
|
|
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
v_errormsg := 'Fout converteren datumtijd';
|
|
|
|
IF INSTR (v_datumtijd_tekst, '.') > 0
|
|
THEN
|
|
v_datumtijd := fac.safe_to_date (REPLACE (SUBSTR (v_datumtijd_tekst, 1, INSTR (v_datumtijd_tekst, '.') - 1), 'T', ' '), 'yyyy-mm-dd hh24:mi:ss');
|
|
ELSE
|
|
v_datumtijd := fac.safe_to_date (v_datumtijd_tekst, 'yyyy-mm-dd hh24:mi:ss');
|
|
END IF;
|
|
END IF;
|
|
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
v_errormsg := 'Fout aanvullen opmerking';
|
|
|
|
-- Controleer of de opmerking is gevuld en deze opmerking niet
|
|
-- al bij een eerdere statusovergang is gemeld.
|
|
IF v_opmerking IS NOT NULL AND INSTR (v_mld_opdr_opmerking, v_opmerking) = 0
|
|
THEN
|
|
v_opmerking := '[' || v_datumtijd_tekst || '] - ' || v_status_tekst || CHR (13) || CHR (10) || v_opmerking;
|
|
ELSE
|
|
v_opmerking := '[' || v_datumtijd_tekst || '] - ' || v_status_tekst;
|
|
END IF;
|
|
END IF;
|
|
|
|
-- Insert geformatteerde import record
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
BEGIN
|
|
v_errormsg := 'Fout wegschrijven statusbericht';
|
|
|
|
INSERT INTO vlkc_imp_opdrstat_strukton (mld_opdr_key, extern_nummer, status, datumtijd, opmerking, totaal)
|
|
VALUES (v_mld_opdr_key, v_extern_nummer, v_status, v_datumtijd, v_opmerking, v_totaal);
|
|
|
|
v_count_imp := v_count_imp + 1;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, '');
|
|
END;
|
|
ELSE
|
|
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, '');
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
END LOOP;
|
|
|
|
IF header_is_valid = 0
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'E',
|
|
'Ongeldig importbestand', 'Geen header of header niet volgens specificatie!');
|
|
ELSE
|
|
fac.imp_writelog (p_import_key, 'S',
|
|
'Inleesproces/#ingelezen statusberichten: ' || TO_CHAR (v_count_tot), '');
|
|
fac.imp_writelog (p_import_key, 'S',
|
|
'Inleesproces/#ongeldige niet ingelezen statusberichten: ' || TO_CHAR (v_count_tot - v_count_imp), '');
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Inleesproces statusberichten afgebroken!');
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE vlkc_update_opdrstat_strukton (p_import_key IN NUMBER)
|
|
AS
|
|
-- Cursor loopt - in volgorde! - over alle ingelezen statusberichten.
|
|
CURSOR c1
|
|
IS
|
|
SELECT mld_opdr_key, extern_nummer, datumtijd, status, opmerking, totaal
|
|
FROM vlkc_imp_opdrstat_strukton
|
|
ORDER BY 1, 3;
|
|
|
|
c_user_key NUMBER (10) := 5; -- _STRUKTON-user
|
|
c_refnr_srtkkey NUMBER (10) := 42; -- Refnr. Leverancier
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (200);
|
|
v_count_tot NUMBER (10) := 0;
|
|
v_count NUMBER (10) := 0;
|
|
v_mld_key NUMBER (10) := 0;
|
|
v_opdr_key NUMBER (10) := 0;
|
|
v_opdr_status NUMBER (10) := 0;
|
|
v_mld_typeopdr_key mld_typeopdr.mld_typeopdr_key%TYPE;
|
|
v_mld_kenmerk_key mld_kenmerk.mld_kenmerk_key%TYPE;
|
|
v_mld_kenmerkopdr_key mld_kenmerkopdr.mld_kenmerkopdr_key%TYPE;
|
|
BEGIN
|
|
-- Loop over alle ingelezen Strukton-statusberichten.
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_aanduiding :=
|
|
'['
|
|
|| rec.mld_opdr_key
|
|
|| '|'
|
|
|| SUBSTR (rec.opmerking, 1, 100)
|
|
|| '] ';
|
|
v_count_tot := v_count_tot + 1;
|
|
|
|
-- Key van melding/opdracht bepalen en Refnr. bij opdracht opslaan.
|
|
IF rec.mld_opdr_key IS NOT NULL
|
|
THEN
|
|
v_errormsg := 'Fout bepalen opdracht.';
|
|
|
|
SELECT mld_melding_key, mld_opdr_key, mld_statusopdr_key, mld_typeopdr_key
|
|
INTO v_mld_key, v_opdr_key, v_opdr_status, v_mld_typeopdr_key
|
|
FROM mld_opdr
|
|
WHERE mld_opdr_key = rec.mld_opdr_key;
|
|
|
|
v_errormsg := 'Fout bepalen Refnr-kenmerk.';
|
|
|
|
SELECT k.mld_kenmerk_key
|
|
INTO v_mld_kenmerk_key
|
|
FROM mld_kenmerk k
|
|
WHERE k.mld_srtkenmerk_key = c_refnr_srtkkey
|
|
AND k.mld_typeopdr_key = v_mld_typeopdr_key;
|
|
|
|
v_errormsg := 'Fout bepalen Refnr-kenmerkopdracht.';
|
|
|
|
SELECT MAX (ko.mld_kenmerkopdr_key)
|
|
INTO v_mld_kenmerkopdr_key
|
|
FROM mld_kenmerkopdr ko
|
|
WHERE ko.mld_opdr_key = v_opdr_key
|
|
AND v_mld_kenmerk_key = ko.mld_kenmerk_key;
|
|
|
|
IF v_mld_kenmerkopdr_key IS NULL
|
|
THEN
|
|
-- Kenmerk toevoegen
|
|
v_errormsg := 'Fout toevoegen Refnr-kenmerkopdracht.';
|
|
|
|
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key,
|
|
mld_opdr_key,
|
|
mld_kenmerkopdr_waarde)
|
|
VALUES (v_mld_kenmerk_key, v_opdr_key, rec.extern_nummer);
|
|
ELSE
|
|
-- Kenmerk bijwerken
|
|
v_errormsg := 'Fout bijwerken Refnr-kenmerkopdracht.';
|
|
|
|
UPDATE mld_kenmerkopdr
|
|
SET mld_kenmerkopdr_waarde = rec.extern_nummer
|
|
WHERE mld_kenmerkopdr_key = v_mld_kenmerkopdr_key;
|
|
END IF;
|
|
|
|
v_errormsg := 'Fout bijwerken Opmerking (opdracht).';
|
|
|
|
v_count := LENGTH (rec.opmerking) + 5; -- Beetje speling qua lengte!
|
|
|
|
UPDATE mld_opdr
|
|
SET mld_opdr_opmerking =
|
|
DECODE (
|
|
mld_opdr_opmerking,
|
|
NULL,
|
|
rec.opmerking,
|
|
rec.opmerking
|
|
|| CHR (13)
|
|
|| CHR (10)
|
|
|| SUBSTR (mld_opdr_opmerking, 1, (4000 - v_count)))
|
|
WHERE mld_opdr_key = v_opdr_key;
|
|
|
|
v_errormsg := 'Fout bijwerken Status.';
|
|
|
|
IF v_opdr_status <> rec.status
|
|
THEN
|
|
IF rec.status = 8 AND v_opdr_status = 5
|
|
THEN
|
|
-- Accepteer opdracht als de opdracht uitgegeven was
|
|
MLD.setopdrachtstatus (v_opdr_key, 8, c_user_key); -- Strukton
|
|
ELSIF rec.status = 6 AND v_opdr_status = 5
|
|
THEN
|
|
-- Meld de opdracht af als deze uitgegeven was
|
|
MLD.setopdrachtstatus (v_opdr_key, 8, c_user_key); -- Strukton, eerst accepteren
|
|
MLD.setopdrachtstatus (v_opdr_key, 6, c_user_key); -- Strukton
|
|
ELSIF rec.status = 6 AND v_opdr_status = 8
|
|
THEN
|
|
-- Meld de opdracht af als deze geaccepteerd was
|
|
MLD.setopdrachtstatus (v_opdr_key, 6, c_user_key); -- Strukton
|
|
ELSIF rec.status = 1 AND v_opdr_status IN (5, 8)
|
|
THEN
|
|
-- Wijs de opdracht af als deze niet/wel geaccepteerd was
|
|
MLD.setopdrachtstatus (v_opdr_key, 1, c_user_key); -- Strukton
|
|
MLD.updatemeldingstatusAV (v_mld_key, 0, c_user_key, 0);
|
|
ELSIF rec.status = 9 AND v_opdr_status = 6 -- DODE TAK; er geldt nooit rec.status = 9!
|
|
THEN
|
|
-- Rond de opdracht af als deze afgemeld was
|
|
mld.setopdrachtstatus (v_opdr_key, 9, c_user_key); -- Strukton
|
|
END IF;
|
|
|
|
IF rec.status = 6 AND v_opdr_status <> 6
|
|
THEN
|
|
-- Niet meer melding bijwerken (en afmelden was ook al niet meer)!
|
|
/*
|
|
v_errormsg := 'Fout bijwerken Opmerking (melding).';
|
|
|
|
UPDATE mld_melding m
|
|
SET mld_melding_opmerking =
|
|
DECODE (
|
|
mld_melding_opmerking,
|
|
NULL,
|
|
rec.opmerking,
|
|
rec.opmerking || CHR (13) || CHR (10)
|
|
|| SUBSTR (mld_melding_opmerking,
|
|
1,
|
|
(4000 - v_count)))
|
|
WHERE mld_melding_key = v_mld_key
|
|
AND mld_melding_status IN (4, 7)
|
|
AND NOT EXISTS
|
|
( -- Afhandeling in melding niet aanpassen voor projecten
|
|
SELECT sm.mld_stdmelding_key
|
|
FROM mld_stdmelding sm,
|
|
ins_tab_discipline td,
|
|
ins_srtdiscipline sd
|
|
WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key
|
|
AND sm.mld_ins_discipline_key = td.ins_discipline_key
|
|
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
|
AND sd.ins_srtdiscipline_prefix = 'QQQ');
|
|
*/
|
|
-- Sinds AADO#30922 wordt de melding niet meer automatisch afgemeld.
|
|
MLD.updatemeldingstatusAV (v_mld_key, 0, c_user_key, 0);
|
|
END IF;
|
|
END IF;
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Statusbericht-loop');
|
|
END;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Importproces statusberichten afgebroken!');
|
|
END;
|
|
/
|
|
|
|
|
|
-- VLKC#40719: Klantspecifieke FACTUUR-import/update die vereist dat bij VLKC
|
|
-- bestelopdrachten met een 'b' (of 'B') beginnen.
|
|
CREATE OR REPLACE PROCEDURE vlkc_import_factuur (p_import_key IN NUMBER)
|
|
AS
|
|
v_seq_of_columns VARCHAR(255);
|
|
BEGIN
|
|
v_seq_of_columns := '1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28';
|
|
fac_import_factuur_body(p_import_key, v_seq_of_columns);
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE vlkc_update_factuur (p_import_key IN NUMBER)
|
|
AS
|
|
BEGIN
|
|
UPDATE fac_imp_factuur SET ordernr = '?' || ordernr WHERE SUBSTR (ordernr, 1, 1) BETWEEN '0' AND '9';
|
|
UPDATE fac_imp_factuur SET ordernr = SUBSTR (ordernr, 2) WHERE UPPER (SUBSTR (ordernr, 1, 1)) = 'B' AND SUBSTR (ordernr, 2, 1) BETWEEN '0' AND '9';
|
|
fac_update_factuur (p_import_key);
|
|
END;
|
|
/
|
|
|
|
|
|
|
|
/* VLKC#57175 Rapportage Bloemen besteld voor medewerkers VLKC */
|
|
CREATE OR REPLACE VIEW VLKC_V_RAP_BES_BLOEMEN
|
|
(
|
|
OPDR_KEY,
|
|
OPDR_NR,
|
|
OPDR_DATUM,
|
|
NAAM_BESTELLER,
|
|
KOSTENPLAATS_KEY,
|
|
KOSTENPLAATS_NR,
|
|
KOSTENPLAATS_OMSCHR,
|
|
ARTIKEL_PRIJS_INC,
|
|
ARTIKEL_SOORT_KEY,
|
|
ARTIKEL_SOORT_OMSCHRIJVING,
|
|
VOOR_MEDEWERKER_VLKC
|
|
)
|
|
AS
|
|
SELECT beso.BES_BESTELOPDR_KEY,
|
|
beso.BES_BESTELOPDR_ID,
|
|
beso.BES_BESTELOPDR_DATUM,
|
|
pers.PRS_PERSLID_VOORNAAM || ' ' || pers.PRS_PERSLID_NAAM,
|
|
best.PRS_KOSTENPLAATS_KEY,
|
|
kpn.PRS_KOSTENPLAATS_NR,
|
|
kpn.PRS_KOSTENPLAATS_OMSCHRIJVING,
|
|
besi.BES_BESTELLING_ITEM_PRIJS,
|
|
besd.BES_SRTDEEL_NR,
|
|
besd.bes_srtdeel_omschrijving,
|
|
(SELECT fac_usrdata_omschr
|
|
FROM bes_kenmerkbestell kb, fac_usrdata
|
|
WHERE bes_kenmerk_key = 101
|
|
AND fac_usrtab_key = 61
|
|
AND bes_kenmerkbestell_waarde = TO_CHAR (fac_usrdata_key)
|
|
AND kb.BES_BESTELLING_KEY = besi.BES_BESTELLING_KEY)
|
|
voor_mdw_vl
|
|
FROM bes_bestelopdr beso,
|
|
bes_bestelopdr_item besoi,
|
|
bes_bestelling_item besi,
|
|
bes_srtdeel besd,
|
|
bes_srtgroep besg,
|
|
prs_perslid pers,
|
|
bes_bestelling best,
|
|
prs_kostenplaats kpn
|
|
WHERE beso.BES_BESTELOPDR_KEY = besoi.BES_BESTELOPDR_KEY
|
|
AND besi.BES_BESTELOPDR_ITEM_KEY = besoi.BES_BESTELOPDR_ITEM_KEY
|
|
AND besd.BES_SRTDEEL_KEY = besi.BES_SRTDEEL_KEY
|
|
AND besg.BES_SRTGROEP_KEY = besd.BES_SRTGROEP_KEY
|
|
AND besg.INS_DISCIPLINE_KEY = 661
|
|
AND pers.prs_perslid_key = beso.PRS_PERSLID_KEY
|
|
AND best.BES_BESTELLING_KEY = besi.BES_BESTELLING_KEY
|
|
AND best.PRS_KOSTENPLAATS_KEY = kpn.PRS_KOSTENPLAATS_KEY;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Formatted on 17-12-2015 15:32:28 (QP5 v5.136.908.31019) */
|
|
CREATE OR REPLACE VIEW vlkc_v_rap_res_maand
|
|
(
|
|
fclt_f_maand,
|
|
kostenplaats,
|
|
aantal,
|
|
totaalprijs
|
|
)
|
|
AS
|
|
SELECT TO_CHAR (res_rsv_artikel_levering, 'yyyy-mm'),
|
|
prs_kostenplaats_nr,
|
|
COUNT (DISTINCT res_id),
|
|
SUM (verw_prijs)
|
|
FROM (SELECT x.res_rsv_artikel_levering,
|
|
kp.prs_kostenplaats_nr,
|
|
kp.prs_kostenplaats_omschrijving,
|
|
x.res_id,
|
|
x.res_discipline_key,
|
|
x.res_rsv_artikel_key,
|
|
x.res_voorziening,
|
|
x.aantal,
|
|
x.stuksprijs,
|
|
x.verw_prijs,
|
|
x.prijs
|
|
FROM (SELECT rra.res_rsv_artikel_levering,
|
|
rrr.res_rsv_ruimte_host_key,
|
|
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
|
|
res_id,
|
|
ra.res_discipline_key,
|
|
rra.res_rsv_artikel_key,
|
|
LTRIM (ra.res_artikel_omschrijving)
|
|
|| ' ('
|
|
|| COALESCE (ra.res_artikel_eenheid, '')
|
|
|| ')'
|
|
res_voorziening,
|
|
rra.res_rsv_artikel_aantal aantal,
|
|
ra.res_artikel_prijs stuksprijs,
|
|
rra.res_rsv_artikel_prijs verw_prijs,
|
|
rra.res_rsv_artikel_aantal * ra.res_artikel_prijs
|
|
prijs
|
|
FROM res_rsv_ruimte rrr,
|
|
res_v_aanwezigrsv_artikel rra,
|
|
res_artikel ra
|
|
WHERE rrr.alg_ruimte_key IS NULL
|
|
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
|
|
AND rra.res_status_bo_key = 5
|
|
AND rra.res_artikel_key = ra.res_artikel_key
|
|
UNION ALL
|
|
SELECT rra.res_rsv_artikel_levering,
|
|
rrr.res_rsv_ruimte_host_key,
|
|
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
|
|
resid,
|
|
ra.res_discipline_key,
|
|
rra.res_rsv_artikel_key,
|
|
LTRIM (ra.res_artikel_omschrijving)
|
|
|| ' ('
|
|
|| COALESCE (ra.res_artikel_eenheid, '')
|
|
|| ')'
|
|
res_voorziening,
|
|
rra.res_rsv_artikel_aantal aantal,
|
|
ra.res_artikel_prijs stuksprijs,
|
|
rra.res_rsv_artikel_prijs verw_prijs,
|
|
rra.res_rsv_artikel_aantal * ra.res_artikel_prijs
|
|
prijs
|
|
FROM res_rsv_ruimte rrr,
|
|
res_v_aanwezigrsv_artikel rra,
|
|
res_artikel ra
|
|
WHERE rrr.res_ruimte_opstel_key IS NULL
|
|
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
|
|
AND rra.res_status_bo_key = 5
|
|
AND rra.res_artikel_key = ra.res_artikel_key) x,
|
|
prs_perslid p,
|
|
prs_afdeling a,
|
|
prs_kostenplaats kp
|
|
WHERE x.res_rsv_ruimte_host_key = p.prs_perslid_key
|
|
AND p.prs_afdeling_key = a.prs_afdeling_key
|
|
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key)
|
|
GROUP BY TO_CHAR (res_rsv_artikel_levering, 'yyyy-mm'), prs_kostenplaats_nr;
|
|
|
|
-- VLKC#35251/VLKC#39680/VLKC#39756: Kostenplaats volgens reservering (anders
|
|
-- gastheer) en beperken voor alleen locatie
|
|
-- AMS-BEET!
|
|
/* Formatted on 20-3-2017 12:26:42 (QP5 v5.136.908.31019) */
|
|
CREATE OR REPLACE VIEW vlkc_v_rap_cat_doorbelasting
|
|
(
|
|
fclt_f_jaar,
|
|
kostenplaatscode,
|
|
kostenplaats_oms,
|
|
jan,
|
|
feb,
|
|
mrt,
|
|
apr,
|
|
mei,
|
|
jun,
|
|
jul,
|
|
aug,
|
|
sep,
|
|
okt,
|
|
nov,
|
|
dec,
|
|
tot
|
|
)
|
|
AS
|
|
SELECT TO_CHAR (x.res_rsv_artikel_levering, 'yyyy') jaar,
|
|
COALESCE (x.prs_kostenplaats_nr, kp.prs_kostenplaats_nr),
|
|
DECODE (x.prs_kostenplaats_nr, NULL, kp.prs_kostenplaats_omschrijving, x.prs_kostenplaats_omschrijving),
|
|
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '01', verw_prijs, 0)) jan,
|
|
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '02', verw_prijs, 0)) feb,
|
|
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '03', verw_prijs, 0)) mrt,
|
|
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '04', verw_prijs, 0)) apr,
|
|
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '05', verw_prijs, 0)) mei,
|
|
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '06', verw_prijs, 0)) jun,
|
|
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '07', verw_prijs, 0)) jul,
|
|
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '08', verw_prijs, 0)) aug,
|
|
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '09', verw_prijs, 0)) sep,
|
|
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '10', verw_prijs, 0)) okt,
|
|
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '11', verw_prijs, 0)) nov,
|
|
SUM(DECODE (TO_CHAR (x.res_rsv_artikel_levering, 'mm'), '12', verw_prijs, 0)) dec,
|
|
SUM (verw_prijs) tot
|
|
FROM (SELECT rra.res_rsv_artikel_levering,
|
|
rrr.res_rsv_ruimte_host_key,
|
|
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr res_id,
|
|
ra.res_discipline_key,
|
|
rra.res_rsv_artikel_key,
|
|
LTRIM (ra.res_artikel_omschrijving) || ' (' || COALESCE (ra.res_artikel_eenheid, '') || ')' res_voorziening,
|
|
rra.res_rsv_artikel_aantal aantal,
|
|
ra.res_artikel_prijs stuksprijs,
|
|
rra.res_rsv_artikel_prijs verw_prijs,
|
|
rra.res_rsv_artikel_aantal * ra.res_artikel_prijs prijs,
|
|
l.alg_locatie_key,
|
|
kp.prs_kostenplaats_nr,
|
|
kp.prs_kostenplaats_omschrijving
|
|
FROM res_rsv_ruimte rrr,
|
|
res_v_aanwezigrsv_artikel rra,
|
|
res_artikel ra,
|
|
res_ruimte_opstelling rro,
|
|
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
|
|
FROM res_v_aanwezigalg_ruimte
|
|
GROUP BY res_ruimte_key) rar,
|
|
alg_v_onrgoed_boom aob,
|
|
alg_locatie l,
|
|
prs_kostenplaats kp
|
|
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
|
|
AND rra.res_status_bo_key = 5
|
|
AND rra.res_artikel_key = ra.res_artikel_key
|
|
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)
|
|
AND rro.res_ruimte_key = rar.res_ruimte_key(+)
|
|
AND COALESCE (rrr.alg_ruimte_key, rar.alg_ruimte_key) = aob.alg_ruimte_key
|
|
AND aob.alg_locatie_key = l.alg_locatie_key
|
|
AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)) x,
|
|
prs_perslid p,
|
|
prs_afdeling a,
|
|
prs_kostenplaats kp
|
|
WHERE x.res_rsv_artikel_levering > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
|
|
AND x.res_rsv_ruimte_host_key = p.prs_perslid_key
|
|
AND p.prs_afdeling_key = a.prs_afdeling_key
|
|
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
|
AND x.alg_locatie_key = 1 -- AMS-BEET (Kempen & Co)
|
|
GROUP BY TO_CHAR (x.res_rsv_artikel_levering, 'yyyy'),
|
|
COALESCE (x.prs_kostenplaats_nr, kp.prs_kostenplaats_nr),
|
|
DECODE (x.prs_kostenplaats_nr, NULL, kp.prs_kostenplaats_omschrijving, x.prs_kostenplaats_omschrijving);
|
|
|
|
-- VLKC#39680: Nieuwe variant voor alle locaties van Van Lanschot (en Kempen)!
|
|
CREATE OR REPLACE VIEW vlkc_v_rap_cat_doorbelasting2
|
|
(
|
|
fclt_f_maand,
|
|
kostenplaatscode,
|
|
kostenplaats_oms,
|
|
fclt_f_locatie,
|
|
tot
|
|
)
|
|
AS
|
|
SELECT TO_CHAR (x.res_rsv_artikel_levering, 'yyyy-mm') maand,
|
|
COALESCE (x.prs_kostenplaats_nr, kp.prs_kostenplaats_nr),
|
|
DECODE (x.prs_kostenplaats_nr, NULL, kp.prs_kostenplaats_omschrijving, x.prs_kostenplaats_omschrijving),
|
|
x.alg_locatie_omschrijving,
|
|
SUM (verw_prijs) tot
|
|
FROM (SELECT rra.res_rsv_artikel_levering,
|
|
rrr.res_rsv_ruimte_host_key,
|
|
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr res_id,
|
|
ra.res_discipline_key,
|
|
rra.res_rsv_artikel_key,
|
|
LTRIM (ra.res_artikel_omschrijving) || ' (' || COALESCE (ra.res_artikel_eenheid, '') || ')' res_voorziening,
|
|
rra.res_rsv_artikel_aantal aantal,
|
|
ra.res_artikel_prijs stuksprijs,
|
|
rra.res_rsv_artikel_prijs verw_prijs,
|
|
rra.res_rsv_artikel_aantal * ra.res_artikel_prijs prijs,
|
|
l.alg_locatie_key,
|
|
l.alg_locatie_omschrijving,
|
|
kp.prs_kostenplaats_nr,
|
|
kp.prs_kostenplaats_omschrijving
|
|
FROM res_rsv_ruimte rrr,
|
|
res_v_aanwezigrsv_artikel rra,
|
|
res_artikel ra,
|
|
res_ruimte_opstelling rro,
|
|
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
|
|
FROM res_v_aanwezigalg_ruimte
|
|
GROUP BY res_ruimte_key) rar,
|
|
alg_v_onrgoed_boom aob,
|
|
alg_locatie l,
|
|
prs_kostenplaats kp
|
|
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
|
|
AND rra.res_status_bo_key = 5
|
|
AND rra.res_artikel_key = ra.res_artikel_key
|
|
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)
|
|
AND rro.res_ruimte_key = rar.res_ruimte_key(+)
|
|
AND COALESCE (rrr.alg_ruimte_key, rar.alg_ruimte_key) = aob.alg_ruimte_key
|
|
AND aob.alg_locatie_key = l.alg_locatie_key
|
|
AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)) x,
|
|
prs_perslid p,
|
|
prs_afdeling a,
|
|
prs_kostenplaats kp
|
|
WHERE x.res_rsv_artikel_levering > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
|
|
AND x.res_rsv_ruimte_host_key = p.prs_perslid_key
|
|
AND p.prs_afdeling_key = a.prs_afdeling_key
|
|
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
|
GROUP BY TO_CHAR (x.res_rsv_artikel_levering, 'yyyy-mm'),
|
|
COALESCE (x.prs_kostenplaats_nr, kp.prs_kostenplaats_nr),
|
|
DECODE (x.prs_kostenplaats_nr, NULL, kp.prs_kostenplaats_omschrijving, x.prs_kostenplaats_omschrijving),
|
|
x.alg_locatie_omschrijving;
|
|
|
|
-- VLKC#35252
|
|
CREATE OR REPLACE VIEW vlkc_v_rap_bez_aanmelding
|
|
(
|
|
afspraakdatum,
|
|
afspraaknr,
|
|
fclt_f_contactpersoon,
|
|
fclt_f_gastheer,
|
|
bezoeker,
|
|
opmerking,
|
|
fclt_f_door,
|
|
locatie
|
|
)
|
|
AS
|
|
SELECT x.bez_afspraak_datum,
|
|
TO_CHAR (x.bez_afspraak_key),
|
|
x.contactpersoon,
|
|
x.gastheer,
|
|
x.bez_afspraak_naam,
|
|
x.bez_afspraak_opmerking,
|
|
DECODE (gg.prs_perslid_key, NULL, 'Eindgebruiker', 'Receptie'),
|
|
l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')'
|
|
FROM (SELECT a.bez_afspraak_datum,
|
|
a.bez_afspraak_key,
|
|
a.bez_afspraak_opmerking,
|
|
b.bez_afspraak_naam,
|
|
pc.prs_perslid_naam_full contactpersoon,
|
|
ph.prs_perslid_naam_full gastheer,
|
|
t.prs_perslid_key,
|
|
a.alg_locatie_key
|
|
FROM bez_afspraak a,
|
|
bez_bezoekers b,
|
|
prs_v_perslid_fullnames_all pc,
|
|
prs_v_perslid_fullnames_all ph,
|
|
fac_tracking t
|
|
WHERE a.bez_afspraak_key = b.bez_afspraak_key
|
|
AND a.bez_afspraak_contact_key = pc.prs_perslid_key
|
|
AND a.bez_afspraak_host_key = ph.prs_perslid_key
|
|
AND a.bez_afspraak_key = t.fac_tracking_refkey
|
|
AND t.fac_srtnotificatie_key = 26) x -- BEZMUT
|
|
LEFT JOIN ( SELECT bez_afspraak_key, COUNT ( * ) aantal
|
|
FROM bez_bezoekers
|
|
GROUP BY bez_afspraak_key) b
|
|
ON x.bez_afspraak_key = b.bez_afspraak_key
|
|
LEFT JOIN fac_gebruikersgroep gg -- 43=Receptie
|
|
ON x.prs_perslid_key = gg.prs_perslid_key
|
|
AND gg.fac_groep_key = 43
|
|
LEFT JOIN alg_locatie l
|
|
ON x.alg_locatie_key = l.alg_locatie_key;
|
|
|
|
-- VLKC#35749
|
|
/* Formatted on 18-7-2016 18:35:25 (QP5 v5.136.908.31019) */
|
|
CREATE OR REPLACE VIEW vlkc_v_rap_res_cateringrest
|
|
(
|
|
hide_f_volgorde,
|
|
fclt_x_lijst,
|
|
ruimte,
|
|
datum,
|
|
van,
|
|
tot,
|
|
resnr,
|
|
pers,
|
|
voorzieningen_opstelling,
|
|
opmerking_catering,
|
|
omschrijving,
|
|
aanvrager,
|
|
gastheer,
|
|
res_rsv_ruimte_key
|
|
)
|
|
AS
|
|
SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yymmddhh24miss')
|
|
|| TO_CHAR (rrr.res_rsv_ruimte_tot, 'yymmddhh24miss')
|
|
|| TO_CHAR (rrr.res_rsv_ruimte_key)
|
|
|| x.res_type,
|
|
'Cateringlijst L17 + Café',
|
|
COALESCE (alg_ruimte_geg.alg_ruimte_aanduiding, res_ruimte_geg.res_ruimte_nr),
|
|
x.res_reservering_van,
|
|
x.res_reservering_van,
|
|
x.res_reservering_tot,
|
|
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
|
|
TO_CHAR (rrr.res_rsv_ruimte_bezoekers),
|
|
COALESCE (x.res_voorziening, res_ruimte_geg.res_opstelling_omschrijving),
|
|
kr.res_kenmerkreservering_waarde,
|
|
rrr.res_rsv_ruimte_omschrijving,
|
|
pa.prs_perslid_naam_full,
|
|
pg.prs_perslid_naam_full,
|
|
rrr.res_rsv_ruimte_key
|
|
FROM (SELECT '1R' res_type,
|
|
rrr.res_rsv_ruimte_key,
|
|
rrr.res_rsv_ruimte_van res_reservering_van,
|
|
rrr.res_rsv_ruimte_tot res_reservering_tot,
|
|
--TO_NUMBER (NULL) aantal,
|
|
NULL res_voorziening,
|
|
NULL res_discipline_key,
|
|
rrr.res_status_bo_key
|
|
FROM res_v_aanwezigrsv_ruimte rrr
|
|
WHERE rrr.alg_ruimte_key IS NULL
|
|
AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)
|
|
--AND EXISTS
|
|
-- (SELECT 1
|
|
-- FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
|
|
-- WHERE rra.res_artikel_key = ra.res_artikel_key
|
|
-- AND ra.res_discipline_key IN (41, 44, 45)
|
|
-- AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
|
|
UNION ALL
|
|
SELECT '3C' res_type,
|
|
rra.res_rsv_ruimte_key,
|
|
rra.res_rsv_artikel_levering res_reservering_van,
|
|
NULL res_reservering_tot,
|
|
--rra.res_rsv_artikel_aantal aantal aantal,
|
|
TO_CHAR (rra.res_rsv_artikel_aantal)
|
|
|| ' * '
|
|
|| LTRIM (ra.res_artikel_omschrijving)
|
|
|| ' ('
|
|
|| COALESCE (ra.res_artikel_eenheid, '')
|
|
|| ')'
|
|
res_voorziening,
|
|
ra.res_discipline_key,
|
|
rra.res_status_bo_key
|
|
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
|
|
WHERE rra.res_artikel_key = ra.res_artikel_key
|
|
AND ra.res_discipline_key IN (41, 44, 45)
|
|
AND rra.res_rsv_artikel_levering BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)) x,
|
|
res_v_aanwezigrsv_ruimte rrr,
|
|
prs_v_perslid_fullnames_all pa,
|
|
prs_v_perslid_fullnames_all pg,
|
|
alg_v_ruimte_gegevens_all alg_ruimte_geg,
|
|
(SELECT rro.res_ruimte_opstel_key,
|
|
rro.res_ruimte_opstel_default,
|
|
rr.res_discipline_key,
|
|
rr.res_ruimte_nr,
|
|
ro.res_opstelling_omschrijving
|
|
FROM res_ruimte_opstelling rro, res_ruimte rr, res_opstelling ro
|
|
WHERE rro.res_ruimte_key = rr.res_ruimte_key
|
|
AND rro.res_opstelling_key = ro.res_opstelling_key)
|
|
res_ruimte_geg,
|
|
(SELECT *
|
|
FROM res_v_aanwezigkenmerkwaarde kr, res_kenmerk k
|
|
WHERE kr.res_kenmerk_key = k.res_kenmerk_key
|
|
AND k.res_srtkenmerk_key = 1) kr -- Opmerking Catering
|
|
WHERE x.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
|
AND rrr.res_rsv_ruimte_contact_key = pa.prs_perslid_key
|
|
AND rrr.res_rsv_ruimte_host_key = pg.prs_perslid_key
|
|
AND rrr.alg_ruimte_key = alg_ruimte_geg.alg_ruimte_key(+)
|
|
AND rrr.res_ruimte_opstel_key = res_ruimte_geg.res_ruimte_opstel_key(+)
|
|
AND rrr.res_rsv_ruimte_key = kr.res_rsv_ruimte_key(+)
|
|
AND res_ruimte_geg.res_discipline_key IN (21, 22, 23, 24)
|
|
UNION ALL
|
|
SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yymmddhh24miss')
|
|
|| TO_CHAR (rrr.res_rsv_ruimte_tot, 'yymmddhh24miss')
|
|
|| TO_CHAR (rrr.res_rsv_ruimte_key)
|
|
|| x.res_type,
|
|
'Cateringlijst L4 + L15',
|
|
COALESCE (alg_ruimte_geg.alg_ruimte_aanduiding, res_ruimte_geg.res_ruimte_nr),
|
|
x.res_reservering_van,
|
|
x.res_reservering_van,
|
|
x.res_reservering_tot,
|
|
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
|
|
TO_CHAR (rrr.res_rsv_ruimte_bezoekers),
|
|
COALESCE (x.res_voorziening, res_ruimte_geg.res_opstelling_omschrijving),
|
|
kr.res_kenmerkreservering_waarde,
|
|
rrr.res_rsv_ruimte_omschrijving,
|
|
pa.prs_perslid_naam_full,
|
|
pg.prs_perslid_naam_full,
|
|
rrr.res_rsv_ruimte_key
|
|
FROM (SELECT '1R' res_type,
|
|
rrr.res_rsv_ruimte_key,
|
|
rrr.res_rsv_ruimte_van res_reservering_van,
|
|
rrr.res_rsv_ruimte_tot res_reservering_tot,
|
|
--TO_NUMBER (NULL) aantal,
|
|
NULL res_voorziening,
|
|
NULL res_discipline_key,
|
|
rrr.res_status_bo_key
|
|
FROM res_v_aanwezigrsv_ruimte rrr
|
|
WHERE rrr.alg_ruimte_key IS NULL
|
|
AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)
|
|
--AND EXISTS
|
|
-- (SELECT 1
|
|
-- FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
|
|
-- WHERE rra.res_artikel_key = ra.res_artikel_key
|
|
-- AND ra.res_discipline_key IN (42, 45)
|
|
-- AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
|
|
UNION ALL
|
|
SELECT '3C' res_type,
|
|
rra.res_rsv_ruimte_key,
|
|
rra.res_rsv_artikel_levering res_reservering_van,
|
|
NULL res_reservering_tot,
|
|
--rra.res_rsv_artikel_aantal aantal,
|
|
TO_CHAR (rra.res_rsv_artikel_aantal)
|
|
|| ' * '
|
|
|| LTRIM (ra.res_artikel_omschrijving)
|
|
|| ' ('
|
|
|| COALESCE (ra.res_artikel_eenheid, '')
|
|
|| ')'
|
|
res_voorziening,
|
|
ra.res_discipline_key,
|
|
rra.res_status_bo_key
|
|
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
|
|
WHERE rra.res_artikel_key = ra.res_artikel_key
|
|
AND ra.res_discipline_key IN (42, 45)
|
|
AND rra.res_rsv_artikel_levering BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)) x,
|
|
res_v_aanwezigrsv_ruimte rrr,
|
|
prs_v_perslid_fullnames_all pa,
|
|
prs_v_perslid_fullnames_all pg,
|
|
alg_v_ruimte_gegevens_all alg_ruimte_geg,
|
|
(SELECT rro.res_ruimte_opstel_key,
|
|
rro.res_ruimte_opstel_default,
|
|
rr.res_discipline_key,
|
|
rr.res_ruimte_nr,
|
|
ro.res_opstelling_omschrijving
|
|
FROM res_ruimte_opstelling rro, res_ruimte rr, res_opstelling ro
|
|
WHERE rro.res_ruimte_key = rr.res_ruimte_key
|
|
AND rro.res_opstelling_key = ro.res_opstelling_key)
|
|
res_ruimte_geg,
|
|
(SELECT *
|
|
FROM res_v_aanwezigkenmerkwaarde kr, res_kenmerk k
|
|
WHERE kr.res_kenmerk_key = k.res_kenmerk_key
|
|
AND k.res_srtkenmerk_key = 1) kr -- Opmerking Catering
|
|
WHERE x.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
|
AND rrr.res_rsv_ruimte_contact_key = pa.prs_perslid_key
|
|
AND rrr.res_rsv_ruimte_host_key = pg.prs_perslid_key
|
|
AND rrr.alg_ruimte_key = alg_ruimte_geg.alg_ruimte_key(+)
|
|
AND rrr.res_ruimte_opstel_key = res_ruimte_geg.res_ruimte_opstel_key(+)
|
|
AND rrr.res_rsv_ruimte_key = kr.res_rsv_ruimte_key(+)
|
|
AND res_ruimte_geg.res_discipline_key IN (22, 26, 27, 121)
|
|
UNION ALL
|
|
SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yymmddhh24miss')
|
|
|| TO_CHAR (rrr.res_rsv_ruimte_tot, 'yymmddhh24miss')
|
|
|| TO_CHAR (rrr.res_rsv_ruimte_key)
|
|
|| x.res_type,
|
|
'Restaurantlijst',
|
|
COALESCE (alg_ruimte_geg.alg_ruimte_aanduiding, res_ruimte_geg.res_ruimte_nr),
|
|
x.res_reservering_van,
|
|
x.res_reservering_van,
|
|
x.res_reservering_tot,
|
|
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
|
|
TO_CHAR (rrr.res_rsv_ruimte_bezoekers),
|
|
COALESCE (x.res_voorziening, res_ruimte_geg.res_opstelling_omschrijving),
|
|
kr.res_kenmerkreservering_waarde,
|
|
rrr.res_rsv_ruimte_omschrijving,
|
|
pa.prs_perslid_naam_full,
|
|
pg.prs_perslid_naam_full,
|
|
rrr.res_rsv_ruimte_key
|
|
FROM (SELECT '1R' res_type,
|
|
rrr.res_rsv_ruimte_key,
|
|
rrr.res_rsv_ruimte_van res_reservering_van,
|
|
rrr.res_rsv_ruimte_tot res_reservering_tot,
|
|
--TO_NUMBER (NULL) aantal,
|
|
NULL res_voorziening,
|
|
NULL res_discipline_key,
|
|
rrr.res_status_bo_key
|
|
FROM res_v_aanwezigrsv_ruimte rrr
|
|
WHERE rrr.alg_ruimte_key IS NULL
|
|
AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)
|
|
AND EXISTS
|
|
(SELECT 1
|
|
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
|
|
WHERE rra.res_artikel_key = ra.res_artikel_key
|
|
AND ra.res_artikel_key IN
|
|
(1,
|
|
2,
|
|
3,
|
|
4,
|
|
6,
|
|
12,
|
|
13,
|
|
14,
|
|
15,
|
|
16,
|
|
24,
|
|
28,
|
|
29,
|
|
30,
|
|
31,
|
|
32,
|
|
44,
|
|
61,
|
|
123,
|
|
142,
|
|
244,
|
|
261,
|
|
263,
|
|
264,
|
|
265,
|
|
268,
|
|
269,
|
|
281,
|
|
282,
|
|
284)
|
|
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
|
|
UNION ALL
|
|
SELECT '3C' res_type,
|
|
rra.res_rsv_ruimte_key,
|
|
rra.res_rsv_artikel_levering res_reservering_van,
|
|
NULL res_reservering_tot,
|
|
--rra.res_rsv_artikel_aantal aantal,
|
|
TO_CHAR (rra.res_rsv_artikel_aantal)
|
|
|| ' * '
|
|
|| LTRIM (ra.res_artikel_omschrijving)
|
|
|| ' ('
|
|
|| COALESCE (ra.res_artikel_eenheid, '')
|
|
|| ')'
|
|
res_voorziening,
|
|
ra.res_discipline_key,
|
|
rra.res_status_bo_key
|
|
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
|
|
WHERE rra.res_artikel_key = ra.res_artikel_key
|
|
AND ra.res_artikel_key IN
|
|
(1,
|
|
2,
|
|
3,
|
|
4,
|
|
6,
|
|
12,
|
|
13,
|
|
14,
|
|
15,
|
|
16,
|
|
24,
|
|
28,
|
|
29,
|
|
30,
|
|
31,
|
|
32,
|
|
44,
|
|
61,
|
|
123,
|
|
142,
|
|
244,
|
|
261,
|
|
263,
|
|
264,
|
|
265,
|
|
268,
|
|
269,
|
|
281,
|
|
282,
|
|
284)
|
|
AND rra.res_rsv_artikel_levering BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 15)) x,
|
|
res_v_aanwezigrsv_ruimte rrr,
|
|
prs_v_perslid_fullnames_all pa,
|
|
prs_v_perslid_fullnames_all pg,
|
|
alg_v_ruimte_gegevens_all alg_ruimte_geg,
|
|
(SELECT rro.res_ruimte_opstel_key,
|
|
rro.res_ruimte_opstel_default,
|
|
rr.res_discipline_key,
|
|
rr.res_ruimte_nr,
|
|
ro.res_opstelling_omschrijving
|
|
FROM res_ruimte_opstelling rro, res_ruimte rr, res_opstelling ro
|
|
WHERE rro.res_ruimte_key = rr.res_ruimte_key
|
|
AND rro.res_opstelling_key = ro.res_opstelling_key)
|
|
res_ruimte_geg,
|
|
(SELECT *
|
|
FROM res_v_aanwezigkenmerkwaarde kr, res_kenmerk K
|
|
WHERE kr.res_kenmerk_key = k.res_kenmerk_key
|
|
AND k.res_srtkenmerk_key = 1) kr -- Opmerking Catering
|
|
WHERE x.res_status_bo_key = 2 -- Geregistreerd
|
|
AND x.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
|
AND rrr.res_rsv_ruimte_contact_key = pa.prs_perslid_key
|
|
AND rrr.res_rsv_ruimte_host_key = pg.prs_perslid_key
|
|
AND rrr.alg_ruimte_key = alg_ruimte_geg.alg_ruimte_key(+)
|
|
AND rrr.res_ruimte_opstel_key = res_ruimte_geg.res_ruimte_opstel_key(+)
|
|
AND rrr.res_rsv_ruimte_key = kr.res_rsv_ruimte_key(+);
|
|
|
|
--VLKC#52091 per februari 2018: locatie toegevoegd, per april 2018: uitbreiding reserveringstypen/catalogi
|
|
/* Formatted on 21-4-2016 15:48:12 (QP5 v5.136.908.31019) */
|
|
CREATE OR REPLACE VIEW vlkc_v_rap_res_huismeesters
|
|
(
|
|
hide_f_volgorde,
|
|
ruimte,
|
|
locatie,
|
|
datum,
|
|
van,
|
|
tot,
|
|
resnr,
|
|
pers,
|
|
voorzieningen_opstelling,
|
|
opmerking_huismeester,
|
|
omschrijving,
|
|
aanvrager,
|
|
gastheer,
|
|
res_rsv_ruimte_key
|
|
)
|
|
AS
|
|
SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yymmddhh24miss')
|
|
|| TO_CHAR (rrr.res_rsv_ruimte_tot, 'yymmddhh24miss')
|
|
|| TO_CHAR (rrr.res_rsv_ruimte_key)
|
|
|| x.res_type,
|
|
COALESCE (alg_ruimte_geg.alg_ruimte_aanduiding,
|
|
res_ruimte_geg.res_ruimte_nr),
|
|
(SELECT MIN (ALG_LOCATIE.ALG_LOCATIE_CODE)
|
|
FROM ALG_LOCATIE,
|
|
ALG_GEBOUW,
|
|
ALG_VERDIEPING,
|
|
ALG_RUIMTE,
|
|
RES_ALG_RUIMTE,
|
|
RES_RUIMTE_OPSTELLING,
|
|
RES_RSV_RUIMTE
|
|
WHERE ALG_LOCATIE.ALG_LOCATIE_KEY = ALG_GEBOUW.ALG_LOCATIE_KEY
|
|
AND ALG_GEBOUW.ALG_GEBOUW_KEY =
|
|
ALG_VERDIEPING.ALG_GEBOUW_KEY
|
|
AND ALG_VERDIEPING.ALG_VERDIEPING_KEY =
|
|
ALG_RUIMTE.ALG_VERDIEPING_KEY
|
|
AND ALG_RUIMTE.ALG_RUIMTE_KEY =
|
|
RES_ALG_RUIMTE.ALG_RUIMTE_KEY
|
|
AND RES_ALG_RUIMTE.RES_RUIMTE_KEY =
|
|
RES_RUIMTE_OPSTELLING.RES_RUIMTE_KEY
|
|
AND RES_RUIMTE_OPSTELLING.RES_RUIMTE_OPSTEL_KEY =
|
|
RES_RSV_RUIMTE.RES_RUIMTE_OPSTEL_KEY
|
|
AND RES_RSV_RUIMTE.RES_RSV_RUIMTE_KEY =
|
|
X.RES_RSV_RUIMTE_Key)
|
|
LOCATIE,
|
|
x.res_reservering_van,
|
|
x.res_reservering_van,
|
|
x.res_reservering_tot,
|
|
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
|
|
TO_CHAR (rrr.res_rsv_ruimte_bezoekers),
|
|
COALESCE (x.res_voorziening,
|
|
res_ruimte_geg.res_opstelling_omschrijving),
|
|
kr.res_kenmerkreservering_waarde,
|
|
rrr.res_rsv_ruimte_omschrijving,
|
|
pa.prs_perslid_naam_full,
|
|
pg.prs_perslid_naam_full,
|
|
rrr.res_rsv_ruimte_key
|
|
FROM (SELECT '1R' res_type,
|
|
rrr.res_rsv_ruimte_key,
|
|
rrr.res_rsv_ruimte_van res_reservering_van,
|
|
rrr.res_rsv_ruimte_tot res_reservering_tot,
|
|
TO_NUMBER (NULL) aantal,
|
|
NULL res_voorziening,
|
|
NULL res_discipline_key,
|
|
rrr.res_status_bo_key
|
|
FROM res_v_aanwezigrsv_ruimte rrr
|
|
WHERE rrr.alg_ruimte_key IS NULL
|
|
AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (SYSDATE)
|
|
AND TRUNC (SYSDATE + 15)
|
|
AND (EXISTS
|
|
(SELECT 1
|
|
FROM res_v_aanwezigkenmerkwaarde kr,
|
|
res_kenmerk k
|
|
WHERE kr.res_kenmerk_key = k.res_kenmerk_key
|
|
AND k.res_srtkenmerk_key = 2 -- Opmerking Huismeester
|
|
AND kr.res_rsv_ruimte_key =
|
|
rrr.res_rsv_ruimte_key)
|
|
OR EXISTS
|
|
(SELECT 1
|
|
FROM res_v_aanwezigrsv_deel rrd, res_deel rd
|
|
WHERE rrd.res_deel_key = rd.res_deel_key
|
|
AND rd.res_discipline_key IN (49, 50, 51, 212, 361, 362)
|
|
AND rrd.res_rsv_ruimte_key =
|
|
rrr.res_rsv_ruimte_key)
|
|
OR EXISTS
|
|
(SELECT 1
|
|
FROM res_v_aanwezigrsv_artikel rra,
|
|
res_artikel ra
|
|
WHERE rra.res_artikel_key = ra.res_artikel_key
|
|
AND ra.res_discipline_key IN (46, 81)
|
|
AND rra.res_rsv_ruimte_key =
|
|
rrr.res_rsv_ruimte_key)
|
|
OR EXISTS
|
|
(SELECT 1
|
|
FROM res_ruimte_opstelling rro, res_ruimte rru
|
|
WHERE rro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key
|
|
AND rru.res_ruimte_key = rro.res_ruimte_key
|
|
AND rru.res_discipline_key IN (121)))
|
|
UNION ALL
|
|
SELECT '2V' res_type,
|
|
rrd.res_rsv_ruimte_key,
|
|
rrd.res_rsv_deel_van res_reservering_van,
|
|
rrd.res_rsv_deel_tot res_reservering_tot,
|
|
TO_NUMBER (NULL) aantal,
|
|
d.ins_deel_omschrijving
|
|
|| ' ('
|
|
|| COALESCE (rd.res_deel_eenheid, '')
|
|
|| ')'
|
|
res_voorziening,
|
|
rd.res_discipline_key,
|
|
rrd.res_status_bo_key
|
|
FROM res_v_aanwezigrsv_deel rrd, res_deel rd, ins_deel d
|
|
WHERE rrd.res_deel_key = rd.res_deel_key
|
|
AND rd.res_ins_deel_key = d.ins_deel_key
|
|
AND rd.res_discipline_key IN (49, 50, 51, 212, 361, 362)
|
|
AND rrd.res_rsv_deel_tot BETWEEN TRUNC (SYSDATE)
|
|
AND TRUNC (SYSDATE + 15)
|
|
UNION ALL
|
|
SELECT '3C' res_type,
|
|
rra.res_rsv_ruimte_key,
|
|
rra.res_rsv_artikel_levering res_reservering_van,
|
|
NULL res_reservering_tot,
|
|
rra.res_rsv_artikel_aantal aantal,
|
|
LTRIM (ra.res_artikel_omschrijving)
|
|
|| ' ('
|
|
|| COALESCE (ra.res_artikel_eenheid, '')
|
|
|| ')'
|
|
res_voorziening,
|
|
ra.res_discipline_key,
|
|
rra.res_status_bo_key
|
|
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra
|
|
WHERE rra.res_artikel_key = ra.res_artikel_key
|
|
AND ra.res_discipline_key IN (46, 81)
|
|
AND rra.res_rsv_artikel_levering BETWEEN TRUNC (SYSDATE)
|
|
AND TRUNC (
|
|
SYSDATE + 15))
|
|
x,
|
|
res_v_aanwezigrsv_ruimte rrr,
|
|
prs_v_perslid_fullnames_all pa,
|
|
prs_v_perslid_fullnames_all pg,
|
|
alg_v_ruimte_gegevens_all alg_ruimte_geg,
|
|
(SELECT rro.res_ruimte_opstel_key,
|
|
rro.res_ruimte_opstel_default,
|
|
rr.res_discipline_key,
|
|
rr.res_ruimte_nr,
|
|
ro.res_opstelling_omschrijving
|
|
FROM res_ruimte_opstelling rro, res_ruimte rr, res_opstelling ro
|
|
WHERE rro.res_ruimte_key = rr.res_ruimte_key
|
|
AND rro.res_opstelling_key = ro.res_opstelling_key)
|
|
res_ruimte_geg,
|
|
(SELECT *
|
|
FROM res_v_aanwezigkenmerkwaarde kr, res_kenmerk k
|
|
WHERE kr.res_kenmerk_key = k.res_kenmerk_key
|
|
AND k.res_srtkenmerk_key = 2) kr -- Opmerking Huismeester
|
|
WHERE x.res_status_bo_key = 2 -- Geregistreerd
|
|
AND x.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
|
AND rrr.res_rsv_ruimte_contact_key = pa.prs_perslid_key
|
|
AND rrr.res_rsv_ruimte_host_key = pg.prs_perslid_key
|
|
AND rrr.alg_ruimte_key = alg_ruimte_geg.alg_ruimte_key(+)
|
|
AND rrr.res_ruimte_opstel_key =
|
|
res_ruimte_geg.res_ruimte_opstel_key(+)
|
|
AND rrr.res_rsv_ruimte_key = kr.res_rsv_ruimte_key(+);
|
|
|
|
|
|
-- Zonder R van BROC (in de R geeft 'vlkc_v_rap_cat_doorbelasting' inzicht)!
|
|
-- VLKC#41246: Per 2018 facturen op variabele contracten (= CV) verwerken.
|
|
-- VLKC#55659: Om contracten te kunnen sluiten, voortaan Akkoord-facturen op
|
|
-- alle contracten (CV+CF) verwerken.
|
|
-- NB. Via een eenmalig script is dat voor alle Akkoord-facturen
|
|
-- t/m 2018 gedaan (én bewust zonder tracking)!
|
|
/* Formatted on 20-1-2017 10:15:45 (QP5 v5.136.908.31019) */
|
|
CREATE OR REPLACE VIEW vlkc_v_coda_actual
|
|
(
|
|
bedrijf_key,
|
|
factuur_key,
|
|
bes_opdr_key,
|
|
mld_opdr_key,
|
|
cnt_key,
|
|
kostensoort, -- Van groep!
|
|
doorbelasten,
|
|
kostenplaats, -- Kostenplaats bij verplichting
|
|
kosten
|
|
)
|
|
AS -- Op basis van B-facturen!
|
|
SELECT bo.prs_bedrijf_key bedrijf_key,
|
|
f.fin_factuur_key factuur_key,
|
|
f.bes_bestelopdr_key bes_opdr_key,
|
|
NULL mld_opdr_key,
|
|
NULL cnt_key,
|
|
x.prs_kostensoortgrp_altcode kostensoort,
|
|
COALESCE (x.prs_kostensoort_doorbelasten, 0) doorbelasten,
|
|
x.prs_kostenplaats_nr,
|
|
SUM(DECODE (x.prs_kostensoort_btw,
|
|
1, f.fin_factuur_totaal + f.fin_factuur_totaal_btw,
|
|
f.fin_factuur_totaal))
|
|
kosten
|
|
FROM fin_factuur f,
|
|
bes_bestelopdr bo,
|
|
(SELECT DISTINCT boi.bes_bestelopdr_key,
|
|
ksg.prs_kostensoortgrp_altcode,
|
|
ks.prs_kostensoort_doorbelasten,
|
|
ks.prs_kostensoort_btw,
|
|
kp.prs_kostenplaats_nr
|
|
FROM bes_bestelopdr_item boi,
|
|
bes_bestelling_item bi,
|
|
bes_srtdeel sd,
|
|
bes_srtgroep sg,
|
|
ins_tab_discipline td,
|
|
prs_kostensoort ks,
|
|
prs_kostensoortgrp ksg,
|
|
bes_bestelling b,
|
|
prs_kostenplaats kp
|
|
WHERE boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
|
|
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
|
|
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
|
AND sg.ins_discipline_key = td.ins_discipline_key
|
|
AND td.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
|
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+)
|
|
AND bi.bes_bestelling_key = b.bes_bestelling_key
|
|
AND b.prs_kostenplaats_key = kp.prs_kostenplaats_key) x
|
|
WHERE f.fin_factuur_verwijder IS NULL AND f.fin_factuur_statuses_key = 6 -- Akkoord
|
|
AND fac.gettrackingdate ('FINFOK', f.fin_factuur_key) < TRUNC (SYSDATE)
|
|
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
|
AND bo.bes_bestelopdr_key = x.bes_bestelopdr_key
|
|
GROUP BY bo.prs_bedrijf_key,
|
|
f.fin_factuur_key,
|
|
f.bes_bestelopdr_key,
|
|
NULL,
|
|
NULL,
|
|
x.prs_kostensoortgrp_altcode,
|
|
COALESCE (x.prs_kostensoort_doorbelasten, 0),
|
|
x.prs_kostenplaats_nr
|
|
UNION ALL -- Op basis van O-facturen!
|
|
SELECT b.prs_bedrijf_key bedrijf_key,
|
|
f.fin_factuur_key factuur_key,
|
|
NULL bes_opdr_key,
|
|
f.mld_opdr_key mld_opdr_key,
|
|
NULL cnt_key,
|
|
COALESCE (ksgm.prs_kostensoortgrp_altcode, ksgv.prs_kostensoortgrp_altcode, NULL)
|
|
kostensoort,
|
|
COALESCE (ksm.prs_kostensoort_doorbelasten, ksv.prs_kostensoort_doorbelasten, 0)
|
|
doorbelasten,
|
|
kp.prs_kostenplaats_nr,
|
|
SUM(DECODE (
|
|
ksm.prs_kostensoort_doorbelasten,
|
|
1,
|
|
DECODE (ksm.prs_kostensoort_btw,
|
|
1, f.fin_factuur_totaal + f.fin_factuur_totaal_btw,
|
|
f.fin_factuur_totaal),
|
|
DECODE (ksv.prs_kostensoort_btw,
|
|
1, f.fin_factuur_totaal + f.fin_factuur_totaal_btw,
|
|
f.fin_factuur_totaal)))
|
|
kosten
|
|
FROM fin_factuur f,
|
|
mld_opdr o,
|
|
mld_melding m,
|
|
mld_stdmelding sm,
|
|
ins_tab_discipline td,
|
|
prs_kostensoort ksm,
|
|
prs_kostensoortgrp ksgm,
|
|
prs_kostensoort ksv,
|
|
prs_kostensoortgrp ksgv,
|
|
prs_kostenplaats kp,
|
|
prs_bedrijf b
|
|
WHERE f.fin_factuur_verwijder IS NULL
|
|
AND f.fin_factuur_statuses_key = 6 -- Akkoord
|
|
AND fac.gettrackingdate ('FINFOK', f.fin_factuur_key) < TRUNC (SYSDATE)
|
|
AND f.mld_opdr_key = o.mld_opdr_key
|
|
AND o.mld_melding_key = m.mld_melding_key
|
|
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
|
|
AND ksm.prs_kostensoortgrp_key = ksgm.prs_kostensoortgrp_key(+)
|
|
AND sm.mld_ins_discipline_key = td.ins_discipline_key
|
|
AND td.prs_kostensoort_key = ksv.prs_kostensoort_key(+)
|
|
AND ksv.prs_kostensoortgrp_key = ksgv.prs_kostensoortgrp_key(+)
|
|
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
|
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
|
|
GROUP BY b.prs_bedrijf_key,
|
|
f.fin_factuur_key,
|
|
NULL,
|
|
f.mld_opdr_key,
|
|
NULL,
|
|
COALESCE (ksgm.prs_kostensoortgrp_altcode, ksgv.prs_kostensoortgrp_altcode, NULL),
|
|
COALESCE (ksm.prs_kostensoort_doorbelasten, ksv.prs_kostensoort_doorbelasten, 0),
|
|
kp.prs_kostenplaats_nr
|
|
UNION ALL -- Op basis van C-facturen op alle contracten (CV+CF)!
|
|
SELECT c.cnt_prs_bedrijf_key bedrijf_key,
|
|
f.fin_factuur_key factuur_key,
|
|
NULL bes_opdr_key,
|
|
NULL mld_opdr_key,
|
|
f.cnt_contract_key cnt_key,
|
|
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL)
|
|
kostensoort,
|
|
COALESCE (ksc.prs_kostensoort_doorbelasten, ksd.prs_kostensoort_doorbelasten, 0)
|
|
doorbelasten,
|
|
kp.prs_kostenplaats_nr,
|
|
SUM(DECODE (
|
|
ksc.prs_kostensoort_doorbelasten,
|
|
1,
|
|
DECODE (ksc.prs_kostensoort_btw,
|
|
1, f.fin_factuur_totaal + f.fin_factuur_totaal_btw,
|
|
f.fin_factuur_totaal),
|
|
DECODE (ksd.prs_kostensoort_btw,
|
|
1, f.fin_factuur_totaal + f.fin_factuur_totaal_btw,
|
|
f.fin_factuur_totaal)))
|
|
kosten
|
|
FROM fin_factuur f,
|
|
cnt_v_aanwezigcontract c,
|
|
prs_kostensoort ksc,
|
|
prs_kostensoortgrp ksgc,
|
|
ins_tab_discipline td,
|
|
prs_kostensoort ksd,
|
|
prs_kostensoortgrp ksgd,
|
|
prs_kostenplaats kp
|
|
WHERE f.fin_factuur_verwijder IS NULL
|
|
AND f.fin_factuur_statuses_key = 6 -- Akkoord
|
|
AND fac.gettrackingdate ('FINFOK', f.fin_factuur_key) > TO_DATE ('01012018', 'ddmmyyyy')
|
|
AND f.cnt_contract_key = c.cnt_contract_key
|
|
AND c.prs_kostensoort_key = ksc.prs_kostensoort_key(+)
|
|
AND ksc.prs_kostensoortgrp_key = ksgc.prs_kostensoortgrp_key(+)
|
|
AND c.ins_discipline_key = td.ins_discipline_key
|
|
AND (td.ins_discipline_omschrijving LIKE 'CV%' OR td.ins_discipline_omschrijving LIKE 'CF%')
|
|
AND td.prs_kostensoort_key = ksd.prs_kostensoort_key(+)
|
|
AND ksd.prs_kostensoortgrp_key = ksgd.prs_kostensoortgrp_key(+)
|
|
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
|
GROUP BY c.cnt_prs_bedrijf_key,
|
|
f.fin_factuur_key,
|
|
NULL,
|
|
NULL,
|
|
f.cnt_contract_key,
|
|
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL),
|
|
COALESCE (ksc.prs_kostensoort_doorbelasten, ksd.prs_kostensoort_doorbelasten, 0),
|
|
kp.prs_kostenplaats_nr
|
|
UNION ALL -- Op basis van C-termijnen op vaste contracten (= CF)!
|
|
SELECT c.cnt_prs_bedrijf_key bedrijf_key,
|
|
NULL factuur_key,
|
|
NULL bes_opdr_key,
|
|
NULL mld_opdr_key,
|
|
c.cnt_contract_key cnt_key,
|
|
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL)
|
|
kostensoort,
|
|
COALESCE (ksc.prs_kostensoort_doorbelasten, ksd.prs_kostensoort_doorbelasten, 0)
|
|
doorbelasten,
|
|
kp.prs_kostenplaats_nr,
|
|
c.cnt_contract_termijnkosten kosten
|
|
FROM cnt_v_aanwezigcontract c,
|
|
prs_kostensoort ksc,
|
|
prs_kostensoortgrp ksgc,
|
|
ins_tab_discipline td,
|
|
prs_kostensoort ksd,
|
|
prs_kostensoortgrp ksgd,
|
|
prs_kostenplaats kp
|
|
WHERE TRUNC (c.cnt_contract_looptijd_van) < TRUNC (SYSDATE, 'mm') - 1
|
|
AND c.cnt_contract_looptijd_tot >= TRUNC (SYSDATE, 'mm') - 1
|
|
--AND c.cnt_contract_status = 0 -- NIET Gesloten
|
|
AND c.cnt_contract_kosten > 0
|
|
AND c.prs_kostensoort_key = ksc.prs_kostensoort_key(+)
|
|
AND ksc.prs_kostensoortgrp_key = ksgc.prs_kostensoortgrp_key(+)
|
|
AND c.ins_discipline_key = td.ins_discipline_key
|
|
AND td.ins_discipline_omschrijving LIKE 'CF%'
|
|
AND td.prs_kostensoort_key = ksd.prs_kostensoort_key(+)
|
|
AND ksd.prs_kostensoortgrp_key = ksgd.prs_kostensoortgrp_key(+)
|
|
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key;
|
|
|
|
/* Formatted on 20-1-2017 12:42:24 (QP5 v5.136.908.31019) */
|
|
CREATE OR REPLACE PROCEDURE vlkc_select_coda (p_applname IN VARCHAR2,
|
|
p_applrun IN VARCHAR2)
|
|
AS
|
|
-- 1. Alle goedgekeurde facturen AV-en.
|
|
-- 2. Termijn/maandbedrag van lopende vaste contracten (= CF) bevriezen in
|
|
-- Eigen tabel met key=81.
|
|
--[3. Achterliggende opdrachten AV-en.]
|
|
-- Cursor loopt over een tijdelijke tabel met daarin opgebouwd alle regels
|
|
-- van de (te bevriezen) verantwoording van kosten gebaseerd op B-facturen,
|
|
-- O-facturen, C-facturen (CV+CF) en C-termijnen.
|
|
CURSOR c1
|
|
IS
|
|
SELECT '[' || TO_CHAR (v.bedrijf_key) || '|' || TO_CHAR (v.factuur_key) || '|' || TO_CHAR (COALESCE (v.bes_opdr_key, v.mld_opdr_key, v.cnt_key)) || '] '
|
|
aanduiding,
|
|
v.factuur_key,
|
|
v.bes_opdr_key,
|
|
v.mld_opdr_key,
|
|
v.cnt_key,
|
|
c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)) cnt_nr,
|
|
cp.plaats,
|
|
v.kosten
|
|
FROM vlkc_v_coda_actual v,
|
|
cnt_contract c,
|
|
( SELECT cnt_contract_key, COUNT ( * ) aant, MIN (pa.alg_plaatsaanduiding) plaats
|
|
FROM cnt_contract_plaats cp, alg_v_plaatsaanduiding_all pa
|
|
WHERE cp.cnt_alg_plaats_key = pa.alg_onroerendgoed_keys
|
|
AND cp.cnt_alg_plaats_code = pa.alg_onroerendgoed_type
|
|
GROUP BY cnt_contract_key) cp
|
|
WHERE v.cnt_key = c.cnt_contract_key(+)
|
|
AND c.cnt_contract_key = cp.cnt_contract_key(+)
|
|
ORDER BY 2, 4;
|
|
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (200) := '';
|
|
v_holiday NUMBER;
|
|
v_line_count NUMBER;
|
|
v_amount_sum NUMBER (10, 2);
|
|
BEGIN
|
|
v_line_count := 0;
|
|
v_amount_sum := 0;
|
|
|
|
SELECT COUNT ( * )
|
|
INTO v_holiday
|
|
FROM mld_vrije_dagen
|
|
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1);
|
|
|
|
-- LET OP: CODA-export draait dagelijks na middernacht (begin van dag) en
|
|
-- de bedragen t/m *NU* worden maandelijks alleen in de nacht na 2e werkdag
|
|
-- van de maand doorgezet (= bevroren tbv. rapporten).
|
|
-- IF nacht na 2e werkdag van de maand (én geen weekend én geen vrije dag)!
|
|
-- count_work_days (d1,d2) bepaalt het #werkdagen van d1 tot d2 (als d1=d2,
|
|
-- dan return 0); daarom bepalen tov. laatste dag van vorige maand!
|
|
IF FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 2
|
|
AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
|
|
AND v_holiday = 0
|
|
THEN
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_aanduiding := rec.aanduiding;
|
|
|
|
IF rec.bes_opdr_key IS NOT NULL -- B-facturen
|
|
THEN
|
|
v_errormsg := 'Fout verwerken B-factuur';
|
|
|
|
UPDATE fin_factuur f
|
|
SET fin_factuur_statuses_key = 7 -- AV
|
|
WHERE f.fin_factuur_key = rec.factuur_key;
|
|
|
|
fac.trackaction ('FINVER',
|
|
rec.factuur_key,
|
|
NULL, -- Dus _FACILITOR!
|
|
NULL,
|
|
NULL);
|
|
ELSIF rec.mld_opdr_key IS NOT NULL -- O-facturen
|
|
THEN
|
|
v_errormsg := 'Fout verwerken O-factuur';
|
|
|
|
UPDATE fin_factuur f
|
|
SET fin_factuur_statuses_key = 7 -- AV
|
|
WHERE f.fin_factuur_key = rec.factuur_key;
|
|
|
|
fac.trackaction ('FINVER',
|
|
rec.factuur_key,
|
|
NULL, -- Dus _FACILITOR!
|
|
NULL,
|
|
NULL);
|
|
ELSE -- C-facturen (CV+CF) óf C-termijnen (CF)!
|
|
IF rec.factuur_key IS NOT NULL -- C-factuur
|
|
THEN
|
|
v_errormsg := 'Fout verwerken C-factuur';
|
|
|
|
UPDATE fin_factuur f
|
|
SET fin_factuur_statuses_key = 7 -- AV
|
|
WHERE f.fin_factuur_key = rec.factuur_key;
|
|
|
|
fac.trackaction ('FINVER',
|
|
rec.factuur_key,
|
|
NULL, -- Dus _FACILITOR!
|
|
NULL,
|
|
NULL);
|
|
ELSE -- C-termijn
|
|
v_errormsg := 'Fout verwerken C-termijn';
|
|
|
|
INSERT INTO fac_usrdata (fac_usrtab_key,
|
|
fac_usrdata_code,
|
|
fac_usrdata_omschr,
|
|
fac_usrdata_aanmaak,
|
|
fac_usrdata_vervaldatum,
|
|
fac_usrdata_prijs)
|
|
VALUES (81, -- VasteKostenMnd
|
|
TO_CHAR (ADD_MONTHS (SYSDATE, -1), 'yyyy-mm') || '/' || TO_CHAR (rec.cnt_key),
|
|
TO_CHAR (rec.cnt_nr) || '/' || TO_CHAR (rec.plaats),
|
|
SYSDATE,
|
|
NULL,
|
|
rec.kosten);
|
|
END IF;
|
|
END IF;
|
|
|
|
COMMIT;
|
|
|
|
v_line_count := v_line_count + 1;
|
|
v_amount_sum := v_amount_sum + rec.kosten;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.writelog (p_applname, 'S', 'CODA-export/#regels: ' || TO_CHAR (v_line_count), TO_CHAR (v_amount_sum));
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.writelog (p_applname, 'E', v_aanduiding || v_errormsg, 'Proces CODA-export afgebroken!');
|
|
COMMIT;
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE VIEW vlkc_v_rap_coda_ordexp
|
|
(
|
|
fclt_f_periode,
|
|
kostensoort, -- 5 cijfers
|
|
kostenplaats, -- 4 cijfers
|
|
valuta, -- element3
|
|
bron, -- element4
|
|
bedrag_debet, -- incl. BTW en niet samen met bedrag_credit op één regel
|
|
bedrag_credit, -- incl. BTW en niet samen met bedrag_debet op één regel
|
|
omschrijving, -- max. 29 posities
|
|
verplichtingnummer,
|
|
leverancier,
|
|
leveranciersnummer,
|
|
factuurnummer,
|
|
fclt_f_vlkc,
|
|
fclt_f_opdrachttype,
|
|
fclt_f_investering,
|
|
melder, -- of besteller
|
|
melder_pnr, -- of besteller
|
|
melder_kpn, -- of besteller
|
|
locatie
|
|
)
|
|
AS
|
|
WITH lopendeperiode AS (SELECT COALESCE (MAX (TO_CHAR (ADD_MONTHS (fac.safe_to_date (SUBSTR (fac_usrdata_code, 1, 7), 'yyyy-mm'), 1), 'yyyy-mm')), '2017-01') maand
|
|
FROM fac_usrdata
|
|
WHERE fac_usrtab_key = 81)
|
|
SELECT DECODE (f.fin_factuur_statuses_key,
|
|
7, TO_CHAR (fac.gettrackingdate ('FINVER', f.fin_factuur_key) - 10, 'yyyy-mm'),
|
|
lp.maand || '*')
|
|
periode,
|
|
x.prs_kostensoortgrp_altcode kostensoort,
|
|
x.prs_kostenplaats_nr kostenplaats,
|
|
'EUR' element3,
|
|
DECODE (x.prs_kostenplaats_nr, '2216', 'Variabel', 'Eindgebruiker') element4,
|
|
DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
|
|
-1, TO_NUMBER (NULL),
|
|
(f.fin_factuur_totaal + f.fin_factuur_totaal_btw))
|
|
bedrag_debet,
|
|
DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
|
|
-1, -1 * (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
|
|
TO_NUMBER (NULL))
|
|
bedrag_credit,
|
|
'B-' || x.ins_discipline_omschrijving omschrijving,
|
|
'B' || x.bes_bestelopdr_id verplichtingnummer,
|
|
x.prs_bedrijf_naam leverancier,
|
|
x.prs_leverancier_nr leveranciersnummer,
|
|
f.fin_factuur_nr factuurnummer,
|
|
DECODE (SUBSTR (x.prs_kostenplaats_nr, 1, 1), '1', 'KC', 'VL') vlkc,
|
|
'Bestelopdracht' opdrachttype, -- Altijd 'Bestelopdracht'?
|
|
DECODE (x.bes_kenmerkbestell_waarde, '1', 'Ja', 'Nee') investering,
|
|
x.besteller,
|
|
x.besteller_pnr,
|
|
x.besteller_kpn,
|
|
x.alg_locatie_code locatie -- Soms dummy (bv. Fleurop)?
|
|
FROM lopendeperiode lp,
|
|
fin_factuur f,
|
|
(SELECT DISTINCT bo.bes_bestelopdr_key,
|
|
bo.bes_bestelopdr_id,
|
|
ksg.prs_kostensoortgrp_altcode,
|
|
kp.prs_kostenplaats_nr,
|
|
td.ins_discipline_omschrijving,
|
|
lev.prs_bedrijf_naam,
|
|
lev.prs_leverancier_nr,
|
|
bo.bes_bestelopdr_leverdatum,
|
|
inv.bes_kenmerkbestell_waarde,
|
|
bpf.prs_perslid_naam_full besteller,
|
|
bp.prs_perslid_nr besteller_pnr,
|
|
bkp.prs_kostenplaats_nr besteller_kpn,
|
|
l.alg_locatie_code
|
|
FROM bes_bestelopdr bo,
|
|
bes_bestelopdr_item boi,
|
|
bes_bestelling_item bi,
|
|
bes_srtdeel sd,
|
|
bes_srtgroep sg,
|
|
ins_tab_discipline td,
|
|
prs_kostensoort ks,
|
|
prs_kostensoortgrp ksg,
|
|
bes_bestelling b,
|
|
prs_kostenplaats kp,
|
|
prs_bedrijf lev,
|
|
(SELECT *
|
|
FROM bes_kenmerkbestell kb
|
|
WHERE EXISTS
|
|
(SELECT 1
|
|
FROM bes_kenmerk
|
|
WHERE bes_kenmerk_key = kb.bes_kenmerk_key
|
|
AND bes_srtkenmerk_key = 21)) inv, -- Investeringsopdracht
|
|
prs_perslid bp,
|
|
prs_v_perslid_fullnames_all bpf,
|
|
prs_afdeling ba,
|
|
prs_kostenplaats bkp,
|
|
mld_adres a,
|
|
alg_locatie l
|
|
WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
|
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
|
|
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
|
|
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
|
AND sg.ins_discipline_key = td.ins_discipline_key
|
|
AND td.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
|
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+)
|
|
AND bi.bes_bestelling_key = b.bes_bestelling_key
|
|
AND b.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
|
AND bo.prs_bedrijf_key = lev.prs_bedrijf_key
|
|
AND b.bes_bestelling_key = inv.bes_bestelling_key(+)
|
|
AND b.prs_perslid_key = bp.prs_perslid_key
|
|
AND bp.prs_perslid_key = bpf.prs_perslid_key
|
|
AND bp.prs_afdeling_key = ba.prs_afdeling_key
|
|
AND ba.prs_kostenplaats_key = bkp.prs_kostenplaats_key(+)
|
|
AND bo.mld_adres_key_lev = a.mld_adres_key
|
|
AND a.alg_locatie_key = l.alg_locatie_key(+)) x
|
|
WHERE f.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
|
|
AND f.bes_bestelopdr_key = x.bes_bestelopdr_key
|
|
UNION ALL -- Werk/Offerteopdrachten
|
|
SELECT DECODE (f.fin_factuur_statuses_key,
|
|
7, TO_CHAR (fac.gettrackingdate ('FINVER', f.fin_factuur_key) - 10, 'yyyy-mm'),
|
|
lp.maand || '*')
|
|
periode,
|
|
COALESCE (ksgo.prs_kostensoortgrp_altcode, ksgm.prs_kostensoortgrp_altcode, ksgv.prs_kostensoortgrp_altcode, NULL) kostensoort,
|
|
kp.prs_kostenplaats_nr kostenplaats,
|
|
'EUR' element3,
|
|
DECODE (kp.prs_kostenplaats_nr, '2216', 'Variabel', 'Eindgebruiker') element4,
|
|
DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
|
|
-1, TO_NUMBER (NULL),
|
|
(f.fin_factuur_totaal + f.fin_factuur_totaal_btw))
|
|
bedrag_debet,
|
|
DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
|
|
-1, -1 * (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
|
|
TO_NUMBER (NULL))
|
|
bedrag_credit,
|
|
--COALESCE (ksgm.prs_kostensoortgrp_oms, ksgv.prs_kostensoortgrp_oms, 'ONGEDEFINEERD')
|
|
sd.ins_srtdiscipline_prefix || '-' || sm.mld_stdmelding_omschrijving omschrijving,
|
|
sd.ins_srtdiscipline_prefix || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) verplichtingnummer,
|
|
lev.prs_bedrijf_naam leverancier,
|
|
lev.prs_leverancier_nr leveranciersnummer,
|
|
f.fin_factuur_nr factuurnummer,
|
|
DECODE (vlkc.mld_kenmerkopdr_waarde, '41', 'VL', '42', 'KC', NULL) vlkc,
|
|
DECODE (o.mld_typeopdr_key, 5, 'Werkopdracht', 'Offerteopdracht') opdrachttype,
|
|
DECODE (inv.mld_kenmerkopdr_waarde, '1', 'Ja', 'Nee') investering,
|
|
mpf.prs_perslid_naam_full melder,
|
|
mp.prs_perslid_nr melder_pnr,
|
|
mkp.prs_kostenplaats_nr melder_kpn,
|
|
l.alg_locatie_code locatie
|
|
FROM lopendeperiode lp,
|
|
fin_factuur f,
|
|
mld_opdr o,
|
|
mld_melding m,
|
|
mld_stdmelding sm,
|
|
prs_kostensoort ksm,
|
|
prs_kostensoortgrp ksgm,
|
|
prs_kostensoort kso,
|
|
prs_kostensoortgrp ksgo,
|
|
ins_tab_discipline td,
|
|
prs_kostensoort ksv,
|
|
prs_kostensoortgrp ksgv,
|
|
ins_srtdiscipline sd,
|
|
prs_kostenplaats kp,
|
|
prs_bedrijf lev,
|
|
(SELECT *
|
|
FROM mld_v_aanwezigkenmerkopdr ko
|
|
WHERE EXISTS
|
|
(SELECT 1
|
|
FROM mld_kenmerk
|
|
WHERE mld_kenmerk_key = ko.mld_kenmerk_key
|
|
AND mld_srtkenmerk_key = 81)) vlkc, -- Factuur/offerte naar
|
|
(SELECT *
|
|
FROM mld_v_aanwezigkenmerkopdr ko
|
|
WHERE EXISTS
|
|
(SELECT 1
|
|
FROM mld_kenmerk
|
|
WHERE mld_kenmerk_key = ko.mld_kenmerk_key
|
|
AND mld_srtkenmerk_key = 181)) inv, -- Investeringsopdracht
|
|
prs_perslid mp,
|
|
prs_v_perslid_fullnames_all mpf,
|
|
prs_afdeling ma,
|
|
prs_kostenplaats mkp,
|
|
alg_locatie l
|
|
WHERE f.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
|
|
AND f.mld_opdr_key = o.mld_opdr_key
|
|
AND o.mld_typeopdr_key IN (5, 283) -- Werkopdracht/Offerteopdracht
|
|
AND o.mld_melding_key = m.mld_melding_key
|
|
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
|
|
AND ksm.prs_kostensoortgrp_key = ksgm.prs_kostensoortgrp_key(+)
|
|
AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+)
|
|
AND kso.prs_kostensoortgrp_key = ksgo.prs_kostensoortgrp_key(+)
|
|
AND sm.mld_ins_discipline_key = td.ins_discipline_key
|
|
AND td.prs_kostensoort_key = ksv.prs_kostensoort_key(+)
|
|
AND ksv.prs_kostensoortgrp_key = ksgv.prs_kostensoortgrp_key(+)
|
|
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
|
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
|
|
AND o.mld_uitvoerende_keys = lev.prs_bedrijf_key
|
|
AND o.mld_opdr_key = vlkc.mld_opdr_key(+)
|
|
AND o.mld_opdr_key = inv.mld_opdr_key(+)
|
|
AND m.prs_perslid_key = mp.prs_perslid_key
|
|
AND mp.prs_perslid_key = mpf.prs_perslid_key
|
|
AND mp.prs_afdeling_key = ma.prs_afdeling_key
|
|
AND ma.prs_kostenplaats_key = mkp.prs_kostenplaats_key(+)
|
|
AND m.mld_alg_locatie_key = l.alg_locatie_key(+);
|
|
|
|
CREATE OR REPLACE VIEW vlkc_v_rap_coda_cntexp
|
|
(
|
|
fclt_f_periode,
|
|
kostensoort, -- 5 cijfers
|
|
kostenplaats, -- 4 cijfers
|
|
valuta, -- element3
|
|
bron, -- element4
|
|
bedrag_debet, -- incl. BTW en niet samen met bedrag_credit op één regel
|
|
bedrag_credit, -- incl. BTW en niet samen met bedrag_debet op één regel
|
|
omschrijving, -- max. 29 posities
|
|
verplichtingnummer,
|
|
leverancier,
|
|
leveranciersnummer,
|
|
factuurnummer,
|
|
fclt_f_vlkc,
|
|
locatie
|
|
)
|
|
AS
|
|
WITH lopendeperiode AS (SELECT COALESCE (MAX (TO_CHAR (ADD_MONTHS (fac.safe_to_date (SUBSTR (fac_usrdata_code, 1, 7), 'yyyy-mm'), 1), 'yyyy-mm')), '2017-01') maand
|
|
FROM fac_usrdata
|
|
WHERE fac_usrtab_key = 81)
|
|
SELECT SUBSTR (ud.fac_usrdata_code, 1, 7) periode, -- yyyy-mm
|
|
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL) kostensoort,
|
|
kp.prs_kostenplaats_nr kostenplaats,
|
|
'EUR' valuta,
|
|
'Vast' element4,
|
|
ud.fac_usrdata_prijs bedrag_debet,
|
|
TO_NUMBER (NULL) bedrag_credit,
|
|
td.ins_discipline_omschrijving omschrijving,
|
|
'C' || SUBSTR (ud.fac_usrdata_omschr, 1, INSTR (ud.fac_usrdata_omschr, '/') - 1) verplichtingnummer,
|
|
lev.prs_bedrijf_naam leverancier,
|
|
lev.prs_leverancier_nr leveranciersnummer,
|
|
'N.v.t.' factuurnummer,
|
|
DECODE (ab.prs_afdeling_key1, 82, 'VL', 81, 'KC', NULL) vlkc,
|
|
LISTAGG (cp.alg_locatie_code, ',') WITHIN GROUP (ORDER BY cp.alg_locatie_code) locatie
|
|
FROM fac_usrdata ud,
|
|
cnt_contract c, -- Alles, want fac_usrdata "rules"!
|
|
prs_kostensoort ksc,
|
|
prs_kostensoortgrp ksgc,
|
|
ins_tab_discipline td,
|
|
prs_kostensoort ksd,
|
|
prs_kostensoortgrp ksgd,
|
|
prs_kostenplaats kp,
|
|
prs_bedrijf lev,
|
|
prs_v_afdeling_boom ab,
|
|
(SELECT cp.cnt_contract_key, l.alg_locatie_code
|
|
FROM cnt_v_aanwezigcontract_plaats cp, alg_gebouw g, alg_locatie l
|
|
WHERE cp.cnt_alg_plaats_code = 'G'
|
|
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
|
|
AND g.alg_locatie_key = l.alg_locatie_key
|
|
UNION
|
|
SELECT cp.cnt_contract_key, l.alg_locatie_code
|
|
FROM cnt_v_aanwezigcontract_plaats cp, alg_locatie l
|
|
WHERE cp.cnt_alg_plaats_code = 'L'
|
|
AND cp.cnt_alg_plaats_key = l.alg_locatie_key) cp
|
|
WHERE ud.fac_usrtab_key = 81 -- VasteKostenMnd
|
|
AND SUBSTR (ud.fac_usrdata_code, INSTR (ud.fac_usrdata_code, '/') + 1) = TO_CHAR (c.cnt_contract_key)
|
|
AND c.prs_kostensoort_key = ksc.prs_kostensoort_key(+)
|
|
AND ksc.prs_kostensoortgrp_key = ksgc.prs_kostensoortgrp_key(+)
|
|
AND c.ins_discipline_key = td.ins_discipline_key
|
|
AND td.prs_kostensoort_key = ksd.prs_kostensoort_key(+)
|
|
AND ksd.prs_kostensoortgrp_key = ksgd.prs_kostensoortgrp_key(+)
|
|
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
|
|
AND c.cnt_prs_bedrijf_key = lev.prs_bedrijf_key
|
|
AND c.prs_afdeling_key_eig = ab.prs_afdeling_key(+)
|
|
AND c.cnt_contract_key = cp.cnt_contract_key(+)
|
|
GROUP BY SUBSTR (ud.fac_usrdata_code, 1, 7), -- yyyy-mm
|
|
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL),
|
|
kp.prs_kostenplaats_nr,
|
|
'EUR',
|
|
'Vast',
|
|
ud.fac_usrdata_prijs,
|
|
TO_NUMBER (NULL),
|
|
td.ins_discipline_omschrijving,
|
|
'C' || SUBSTR (ud.fac_usrdata_omschr, 1, INSTR (ud.fac_usrdata_omschr, '/') - 1),
|
|
lev.prs_bedrijf_naam,
|
|
lev.prs_leverancier_nr,
|
|
'N.v.t.',
|
|
DECODE (ab.prs_afdeling_key1, 82, 'VL', 81, 'KC', NULL)
|
|
UNION ALL
|
|
SELECT lp.maand || '*' periode,
|
|
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL) kostensoort,
|
|
kp.prs_kostenplaats_nr kostenplaats,
|
|
'EUR' valuta,
|
|
'Vast' element4,
|
|
c.cnt_contract_termijnkosten bedrag_debet,
|
|
TO_NUMBER (NULL) bedrag_credit,
|
|
td.ins_discipline_omschrijving omschrijving,
|
|
'C' || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)) verplichtingnummer,
|
|
lev.prs_bedrijf_naam leverancier,
|
|
lev.prs_leverancier_nr leveranciersnummer,
|
|
'N.v.t.' factuurnummer,
|
|
DECODE (ab.prs_afdeling_key1, 82, 'VL', 81, 'KC', NULL) vlkc,
|
|
LISTAGG (cp.alg_locatie_code, ',') WITHIN GROUP (ORDER BY cp.alg_locatie_code) locatie
|
|
FROM lopendeperiode lp,
|
|
cnt_v_aanwezigcontract c, -- Alleen aanwezige vaste contracten (= CF)!
|
|
prs_kostensoort ksc,
|
|
prs_kostensoortgrp ksgc,
|
|
ins_tab_discipline td,
|
|
prs_kostensoort ksd,
|
|
prs_kostensoortgrp ksgd,
|
|
prs_kostenplaats kp,
|
|
prs_bedrijf lev,
|
|
prs_v_afdeling_boom ab,
|
|
(SELECT cp.cnt_contract_key, l.alg_locatie_code
|
|
FROM cnt_v_aanwezigcontract_plaats cp, alg_gebouw g, alg_locatie l
|
|
WHERE cp.cnt_alg_plaats_code = 'G'
|
|
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
|
|
AND g.alg_locatie_key = l.alg_locatie_key
|
|
UNION
|
|
SELECT cp.cnt_contract_key, l.alg_locatie_code
|
|
FROM cnt_v_aanwezigcontract_plaats cp, alg_locatie l
|
|
WHERE cp.cnt_alg_plaats_code = 'L'
|
|
AND cp.cnt_alg_plaats_key = l.alg_locatie_key) cp
|
|
WHERE TRUNC (c.cnt_contract_looptijd_van) < LAST_DAY (TO_DATE (lp.maand || '-01', 'yyyy-mm-dd'))
|
|
AND c.cnt_contract_looptijd_tot >= LAST_DAY (TO_DATE (lp.maand || '-01', 'yyyy-mm-dd'))
|
|
AND c.prs_kostensoort_key = ksc.prs_kostensoort_key(+)
|
|
AND ksc.prs_kostensoortgrp_key = ksgc.prs_kostensoortgrp_key(+)
|
|
AND c.ins_discipline_key = td.ins_discipline_key
|
|
AND td.ins_discipline_omschrijving LIKE 'CF%' -- TODO: Of ook CV?
|
|
AND td.prs_kostensoort_key = ksd.prs_kostensoort_key(+)
|
|
AND ksd.prs_kostensoortgrp_key = ksgd.prs_kostensoortgrp_key(+)
|
|
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
|
|
AND c.cnt_prs_bedrijf_key = lev.prs_bedrijf_key
|
|
AND c.prs_afdeling_key_eig = ab.prs_afdeling_key(+)
|
|
AND c.cnt_contract_key = cp.cnt_contract_key(+)
|
|
GROUP BY lp.maand || '*',
|
|
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL),
|
|
kp.prs_kostenplaats_nr,
|
|
'EUR',
|
|
'Vast',
|
|
c.cnt_contract_termijnkosten,
|
|
TO_NUMBER (NULL),
|
|
td.ins_discipline_omschrijving,
|
|
'C' || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)),
|
|
lev.prs_leverancier_nr,
|
|
lev.prs_bedrijf_naam,
|
|
'N.v.t.',
|
|
DECODE (ab.prs_afdeling_key1, 82, 'VL', 81, 'KC', NULL)
|
|
UNION ALL
|
|
SELECT DECODE (f.fin_factuur_statuses_key,
|
|
7, TO_CHAR (fac.gettrackingdate ('FINVER', f.fin_factuur_key) - 10, 'yyyy-mm'),
|
|
lp.maand || '*')
|
|
periode,
|
|
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL) kostensoort,
|
|
kp.prs_kostenplaats_nr kostenplaats,
|
|
'EUR' valuta,
|
|
'Vast' element4,
|
|
DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
|
|
-1, TO_NUMBER (NULL),
|
|
(f.fin_factuur_totaal + f.fin_factuur_totaal_btw))
|
|
bedrag_debet,
|
|
DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
|
|
-1, -1 * (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
|
|
TO_NUMBER (NULL))
|
|
bedrag_credit,
|
|
td.ins_discipline_omschrijving omschrijving,
|
|
'C' || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)) verplichtingnummer,
|
|
lev.prs_bedrijf_naam leverancier,
|
|
lev.prs_leverancier_nr leveranciersnummer,
|
|
f.fin_factuur_nr factuurnummer,
|
|
DECODE (ab.prs_afdeling_key1, 82, 'VL', 81, 'KC', NULL) vlkc,
|
|
LISTAGG (cp.alg_locatie_code, ',') WITHIN GROUP (ORDER BY cp.alg_locatie_code) locatie
|
|
FROM lopendeperiode lp,
|
|
fin_factuur f,
|
|
cnt_v_aanwezigcontract c, -- Alleen aanwezige (CV-)contracten!
|
|
prs_kostensoort ksc,
|
|
prs_kostensoortgrp ksgc,
|
|
ins_tab_discipline td,
|
|
prs_kostensoort ksd,
|
|
prs_kostensoortgrp ksgd,
|
|
prs_kostenplaats kp,
|
|
prs_bedrijf lev,
|
|
prs_v_afdeling_boom ab,
|
|
(SELECT cp.cnt_contract_key, l.alg_locatie_code
|
|
FROM cnt_v_aanwezigcontract_plaats cp, alg_gebouw g, alg_locatie l
|
|
WHERE cp.cnt_alg_plaats_code = 'G'
|
|
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
|
|
AND g.alg_locatie_key = l.alg_locatie_key
|
|
UNION
|
|
SELECT cp.cnt_contract_key, l.alg_locatie_code
|
|
FROM cnt_v_aanwezigcontract_plaats cp, alg_locatie l
|
|
WHERE cp.cnt_alg_plaats_code = 'L'
|
|
AND cp.cnt_alg_plaats_key = l.alg_locatie_key) cp
|
|
WHERE f.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
|
|
AND fac.gettrackingdate ('FINFOK', f.fin_factuur_key) > TO_DATE ('01012018', 'ddmmyyyy')
|
|
AND f.cnt_contract_key = c.cnt_contract_key
|
|
AND c.prs_kostensoort_key = ksc.prs_kostensoort_key(+)
|
|
AND ksc.prs_kostensoortgrp_key = ksgc.prs_kostensoortgrp_key(+)
|
|
AND c.ins_discipline_key = td.ins_discipline_key
|
|
AND td.ins_discipline_omschrijving LIKE 'CV%' -- Zou zo moeten zijn (nu nog tenminste)!
|
|
AND td.prs_kostensoort_key = ksd.prs_kostensoort_key(+)
|
|
AND ksd.prs_kostensoortgrp_key = ksgd.prs_kostensoortgrp_key(+)
|
|
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
|
|
AND c.cnt_prs_bedrijf_key = lev.prs_bedrijf_key
|
|
AND c.prs_afdeling_key_eig = ab.prs_afdeling_key(+)
|
|
AND c.cnt_contract_key = cp.cnt_contract_key(+)
|
|
GROUP BY DECODE (f.fin_factuur_statuses_key,
|
|
7, TO_CHAR (fac.gettrackingdate ('FINVER', f.fin_factuur_key) - 10, 'yyyy-mm'),
|
|
lp.maand || '*'),
|
|
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL),
|
|
kp.prs_kostenplaats_nr,
|
|
'EUR',
|
|
'Vast',
|
|
DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
|
|
-1, TO_NUMBER (NULL),
|
|
(f.fin_factuur_totaal + f.fin_factuur_totaal_btw)),
|
|
DECODE (SIGN (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
|
|
-1, -1 * (f.fin_factuur_totaal + f.fin_factuur_totaal_btw),
|
|
TO_NUMBER (NULL)),
|
|
td.ins_discipline_omschrijving,
|
|
'C' || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)),
|
|
lev.prs_leverancier_nr,
|
|
lev.prs_bedrijf_naam,
|
|
f.fin_factuur_nr,
|
|
DECODE (ab.prs_afdeling_key1, 82, 'VL', 81, 'KC', NULL);
|
|
|
|
CREATE OR REPLACE VIEW vlkc_v_rap_coda_ordrun
|
|
(
|
|
fclt_f_periode,
|
|
kostensoort, -- 5 cijfers
|
|
kostenplaats, -- 4 cijfers
|
|
valuta, -- element3
|
|
bron, -- element4
|
|
bedrag_debet, -- incl. BTW en niet samen met bedrag_credit op één regel
|
|
bedrag_credit, -- incl. BTW en niet samen met bedrag_debet op één regel
|
|
omschrijving, -- max. 29 posities
|
|
verplichtingnummer,
|
|
leverancier,
|
|
leveranciersnummer,
|
|
factuurnummer,
|
|
fclt_f_vlkc,
|
|
fclt_f_opdrachttype,
|
|
fclt_f_investering,
|
|
einddatum,
|
|
locatie
|
|
)
|
|
AS -- Bestelopdrachten
|
|
SELECT NULL periode,
|
|
x.prs_kostensoortgrp_altcode kostensoort,
|
|
x.prs_kostenplaats_nr kostenplaats,
|
|
'EUR' element3,
|
|
DECODE (x.prs_kostenplaats_nr, '2216', 'Variabel', 'Eindgebruiker') element4,
|
|
DECODE (
|
|
f_run.fin_factuur_key,
|
|
NULL, -- Geen ingevoerde facturen
|
|
DECODE (SIGN (COALESCE (x.kosten, 0)),
|
|
-1, TO_NUMBER (NULL),
|
|
COALESCE (x.kosten, 0)),
|
|
DECODE (
|
|
SIGN (f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw),
|
|
-1, TO_NUMBER (NULL),
|
|
(f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw)))
|
|
bedrag_debet,
|
|
DECODE (
|
|
f_run.fin_factuur_key,
|
|
NULL, -- Geen ingevoerde facturen
|
|
DECODE (SIGN (COALESCE (x.kosten, 0)),
|
|
-1, -1 * COALESCE (x.kosten, 0),
|
|
TO_NUMBER (NULL)),
|
|
DECODE (
|
|
SIGN (f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw),
|
|
-1, -1 * (f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw),
|
|
TO_NUMBER (NULL)))
|
|
bedrag_credit,
|
|
'B-' || x.ins_discipline_omschrijving omschrijving,
|
|
'B' || x.bes_bestelopdr_id verplichtingnummer,
|
|
x.prs_bedrijf_naam leverancier,
|
|
x.prs_leverancier_nr leveranciersnummer,
|
|
f_run.fin_factuur_nr factuurnummer,
|
|
DECODE (SUBSTR (x.prs_kostenplaats_nr, 1, 1), '1', 'KC', 'VL') vlkc,
|
|
'Bestelopdracht' opdrachttype, -- Altijd 'Bestelopdracht'?
|
|
DECODE (x.bes_kenmerkbestell_waarde, '1', 'Ja', 'Nee') investering,
|
|
x.bes_bestelopdr_datum einddatum, -- VLKC#57171: Opdrachtdatum!
|
|
x.alg_locatie_code locatie -- Soms dummy (bv. Fleurop)?
|
|
FROM ( SELECT bo.bes_bestelopdr_key,
|
|
bo.bes_bestelopdr_id,
|
|
ksg.prs_kostensoortgrp_altcode,
|
|
kp.prs_kostenplaats_nr,
|
|
td.ins_discipline_omschrijving,
|
|
lev.prs_bedrijf_naam,
|
|
lev.prs_leverancier_nr,
|
|
inv.bes_kenmerkbestell_waarde,
|
|
bo.bes_bestelopdr_datum,
|
|
l.alg_locatie_code,
|
|
SUM ((boi.bes_bestelopdr_item_aantal * boi.bes_bestelopdr_item_brutoprijs))
|
|
kosten
|
|
FROM bes_bestelopdr bo,
|
|
bes_bestelopdr_item boi,
|
|
bes_bestelling_item bi,
|
|
bes_srtdeel sd,
|
|
bes_srtgroep sg,
|
|
ins_tab_discipline td,
|
|
prs_kostensoort ks,
|
|
prs_kostensoortgrp ksg,
|
|
bes_bestelling b,
|
|
prs_kostenplaats kp,
|
|
prs_bedrijf lev,
|
|
(SELECT *
|
|
FROM bes_kenmerkbestell kb
|
|
WHERE EXISTS
|
|
(SELECT 1
|
|
FROM bes_kenmerk
|
|
WHERE bes_kenmerk_key = kb.bes_kenmerk_key
|
|
AND bes_srtkenmerk_key = 21)) inv, -- Investeringsopdracht
|
|
mld_adres a,
|
|
alg_locatie l
|
|
WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
|
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
|
|
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
|
|
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
|
AND sg.ins_discipline_key = td.ins_discipline_key
|
|
AND td.ins_discipline_key != 721 -- VLKC#53739: Anders dan Relatiegeschenken!
|
|
AND td.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
|
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+)
|
|
AND bi.bes_bestelling_key = b.bes_bestelling_key
|
|
AND b.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
|
AND bo.prs_bedrijf_key = lev.prs_bedrijf_key
|
|
AND b.bes_bestelling_key = inv.bes_bestelling_key(+)
|
|
AND bo.mld_adres_key_lev = a.mld_adres_key
|
|
AND a.alg_locatie_key = l.alg_locatie_key(+)
|
|
AND NOT EXISTS -- Geen Bestelopdrachten met een Reden "0-order" (bij de Bestelling)!
|
|
(SELECT 1
|
|
FROM bes_kenmerkbestell kb, bes_kenmerk k
|
|
WHERE kb.bes_kenmerkbestell_verwijder IS NULL
|
|
AND kb.bes_kenmerk_key = k.bes_kenmerk_key
|
|
AND k.bes_srtkenmerk_key = 141 -- Reden "0-order"
|
|
AND kb.bes_bestelling_key = b.bes_bestelling_key)
|
|
GROUP BY bo.bes_bestelopdr_key,
|
|
bo.bes_bestelopdr_id,
|
|
ksg.prs_kostensoortgrp_altcode,
|
|
kp.prs_kostenplaats_nr,
|
|
td.ins_discipline_omschrijving,
|
|
lev.prs_bedrijf_naam,
|
|
lev.prs_leverancier_nr,
|
|
inv.bes_kenmerkbestell_waarde,
|
|
bo.bes_bestelopdr_datum,
|
|
l.alg_locatie_code) x
|
|
LEFT JOIN ( SELECT bes_bestelopdr_key, COUNT ( * ) aantal
|
|
FROM fin_factuur
|
|
WHERE bes_bestelopdr_key IS NOT NULL AND fin_factuur_verwijder IS NULL
|
|
GROUP BY bes_bestelopdr_key) f_cnt
|
|
ON x.bes_bestelopdr_key = f_cnt.bes_bestelopdr_key
|
|
LEFT JOIN fin_factuur f_run
|
|
ON x.bes_bestelopdr_key = f_run.bes_bestelopdr_key AND f_run.fin_factuur_verwijder IS NULL
|
|
WHERE f_cnt.bes_bestelopdr_key IS NULL
|
|
OR COALESCE (f_run.fin_factuur_statuses_key, 2) = 2 -- Ingevoerd
|
|
UNION ALL -- Werkopdrachten
|
|
SELECT NULL periode,
|
|
x.kostensoort,
|
|
x.kostenplaats,
|
|
'EUR' element3,
|
|
DECODE (x.kostenplaats, '2216', 'Variabel', 'Eindgebruiker') element4,
|
|
DECODE (
|
|
f_run.fin_factuur_key,
|
|
NULL, -- Geen ingevoerde facturen
|
|
DECODE (SIGN (COALESCE (x.mld_opdr_kosten, 0)),
|
|
-1, TO_NUMBER (NULL),
|
|
COALESCE (x.mld_opdr_kosten, 0)),
|
|
DECODE (
|
|
SIGN (f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw),
|
|
-1, TO_NUMBER (NULL),
|
|
(f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw)))
|
|
bedrag_debet,
|
|
DECODE (
|
|
f_run.fin_factuur_key,
|
|
NULL, -- Geen ingevoerde facturen
|
|
DECODE (SIGN (COALESCE (x.mld_opdr_kosten, 0)),
|
|
-1, -1 * COALESCE (x.mld_opdr_kosten, 0),
|
|
TO_NUMBER (NULL)),
|
|
DECODE (
|
|
SIGN (f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw),
|
|
-1, -1 * (f_run.fin_factuur_totaal + f_run.fin_factuur_totaal_btw),
|
|
TO_NUMBER (NULL)))
|
|
bedrag_credit,
|
|
x.ins_srtdiscipline_prefix || '-' || x.mld_stdmelding_omschrijving omschrijving,
|
|
x.ins_srtdiscipline_prefix || TO_CHAR (x.mld_melding_key) || '/' || TO_CHAR (x.mld_opdr_bedrijfopdr_volgnr) verplichtingnummer,
|
|
x.prs_bedrijf_naam leverancier,
|
|
x.prs_leverancier_nr leveranciersnummer,
|
|
f_run.fin_factuur_nr factuurnummer,
|
|
DECODE (x.vlkc, '41', 'VL', '42', 'KC', NULL) vlkc,
|
|
DECODE (x.mld_typeopdr_key, 5, 'Werkopdracht', 'Offerteopdracht') opdrachttype,
|
|
DECODE (x.inv, '1', 'Ja', 'Nee') investering,
|
|
x.mld_opdr_einddatum,
|
|
x.alg_locatie_code locatie
|
|
FROM (SELECT o.mld_opdr_key,
|
|
o.mld_melding_key,
|
|
o.mld_opdr_bedrijfopdr_volgnr,
|
|
COALESCE (ksgo.prs_kostensoortgrp_altcode, ksgm.prs_kostensoortgrp_altcode, ksgv.prs_kostensoortgrp_altcode, NULL) kostensoort,
|
|
kp.prs_kostenplaats_nr kostenplaats,
|
|
o.mld_opdr_kosten,
|
|
sd.ins_srtdiscipline_prefix,
|
|
sm.mld_stdmelding_omschrijving,
|
|
lev.prs_bedrijf_naam,
|
|
lev.prs_leverancier_nr,
|
|
vlkc.mld_kenmerkopdr_waarde vlkc,
|
|
o.mld_typeopdr_key,
|
|
inv.mld_kenmerkopdr_waarde inv,
|
|
o.mld_opdr_einddatum,
|
|
l.alg_locatie_code
|
|
FROM mld_opdr o,
|
|
mld_melding m,
|
|
mld_stdmelding sm,
|
|
prs_kostensoort ksm,
|
|
prs_kostensoortgrp ksgm,
|
|
prs_kostensoort kso,
|
|
prs_kostensoortgrp ksgo,
|
|
ins_tab_discipline td,
|
|
prs_kostensoort ksv,
|
|
prs_kostensoortgrp ksgv,
|
|
ins_srtdiscipline sd,
|
|
prs_kostenplaats kp,
|
|
prs_bedrijf lev,
|
|
(SELECT *
|
|
FROM mld_v_aanwezigkenmerkopdr ko
|
|
WHERE EXISTS
|
|
(SELECT 1
|
|
FROM mld_kenmerk
|
|
WHERE mld_kenmerk_key = ko.mld_kenmerk_key
|
|
AND mld_srtkenmerk_key = 81)) vlkc, -- Factuur/offerte naar
|
|
(SELECT *
|
|
FROM mld_v_aanwezigkenmerkopdr ko
|
|
WHERE EXISTS
|
|
(SELECT 1
|
|
FROM mld_kenmerk
|
|
WHERE mld_kenmerk_key = ko.mld_kenmerk_key
|
|
AND mld_srtkenmerk_key = 181)) inv, -- Investeringsopdracht
|
|
alg_locatie l
|
|
WHERE o.mld_typeopdr_key = 5 -- Werkopdracht
|
|
AND o.mld_statusopdr_key NOT IN (1, 2) -- Afgewezen/Niet akkoord
|
|
AND o.mld_melding_key = m.mld_melding_key
|
|
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
|
|
AND ksm.prs_kostensoortgrp_key = ksgm.prs_kostensoortgrp_key(+)
|
|
AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+)
|
|
AND kso.prs_kostensoortgrp_key = ksgo.prs_kostensoortgrp_key(+)
|
|
AND sm.mld_ins_discipline_key = td.ins_discipline_key
|
|
AND td.prs_kostensoort_key = ksv.prs_kostensoort_key(+)
|
|
AND ksv.prs_kostensoortgrp_key = ksgv.prs_kostensoortgrp_key(+)
|
|
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
|
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
|
|
AND o.mld_uitvoerende_keys = lev.prs_bedrijf_key
|
|
AND o.mld_opdr_key = vlkc.mld_opdr_key(+)
|
|
AND o.mld_opdr_key = inv.mld_opdr_key(+)
|
|
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
|
|
AND NOT EXISTS -- Geen Werkopdrachten met Reden "0-order"!
|
|
(SELECT 1
|
|
FROM mld_v_aanwezigkenmerkopdr
|
|
WHERE mld_kenmerk_key = 201 -- Reden "0-order"
|
|
AND mld_opdr_key = o.mld_opdr_key)) x
|
|
LEFT JOIN ( SELECT mld_opdr_key, COUNT ( * ) aantal
|
|
FROM fin_factuur
|
|
WHERE mld_opdr_key IS NOT NULL AND fin_factuur_verwijder IS NULL
|
|
GROUP BY mld_opdr_key) f_cnt
|
|
ON x.mld_opdr_key = f_cnt.mld_opdr_key
|
|
LEFT JOIN fin_factuur f_run
|
|
ON x.mld_opdr_key = f_run.mld_opdr_key AND f_run.fin_factuur_verwijder IS NULL
|
|
WHERE f_cnt.mld_opdr_key IS NULL
|
|
OR COALESCE (f_run.fin_factuur_statuses_key, 2) = 2 -- Ingevoerd
|
|
UNION ALL -- Offerteopdrachten
|
|
SELECT NULL periode,
|
|
x.kostensoort,
|
|
x.kostenplaats,
|
|
'EUR' element3,
|
|
DECODE (x.kostenplaats, '2216', 'Variabel', 'Eindgebruiker') element4,
|
|
DECODE (
|
|
COALESCE (f.aantal, 0),
|
|
0, -- Nog geen factuur ontvangen
|
|
DECODE (SIGN (COALESCE (x.mld_opdr_kosten, 0)),
|
|
-1, TO_NUMBER (NULL),
|
|
COALESCE (x.mld_opdr_kosten, 0)),
|
|
DECODE (
|
|
SIGN(COALESCE (x.mld_opdr_kosten, 0) - COALESCE (debet.tot_incl_btw, 0) - COALESCE (credit.tot_incl_btw, 0)),
|
|
-1, TO_NUMBER (NULL),
|
|
COALESCE (x.mld_opdr_kosten, 0) - COALESCE (debet.tot_incl_btw, 0) - COALESCE (credit.tot_incl_btw, 0)))
|
|
bedrag_debet,
|
|
DECODE (
|
|
COALESCE (f.aantal, 0),
|
|
0, -- Nog geen factuur ontvangen
|
|
DECODE (SIGN (COALESCE (x.mld_opdr_kosten, 0)),
|
|
-1, -1 * COALESCE (x.mld_opdr_kosten, 0),
|
|
TO_NUMBER (NULL)),
|
|
DECODE (
|
|
SIGN(COALESCE (x.mld_opdr_kosten, 0) - COALESCE (debet.tot_incl_btw, 0) - COALESCE (credit.tot_incl_btw, 0)),
|
|
-1, -1 * (COALESCE (x.mld_opdr_kosten, 0) - COALESCE (debet.tot_incl_btw, 0) - COALESCE (credit.tot_incl_btw, 0)),
|
|
TO_NUMBER (NULL)))
|
|
bedrag_credit,
|
|
--COALESCE (ksgm.prs_kostensoortgrp_oms, ksgv.prs_kostensoortgrp_oms, 'ONGEDEFINEERD')
|
|
x.ins_srtdiscipline_prefix || '-' || x.mld_stdmelding_omschrijving omschrijving,
|
|
x.ins_srtdiscipline_prefix || TO_CHAR (x.mld_melding_key) || '/' || TO_CHAR (x.mld_opdr_bedrijfopdr_volgnr) verplichtingnummer,
|
|
x.prs_bedrijf_naam leverancier,
|
|
x.prs_leverancier_nr leveranciersnummer,
|
|
GREATEST (debet.fin_factuur_nr, credit.fin_factuur_nr) factuurnummer,
|
|
DECODE (x.vlkc, '41', 'VL', '42', 'KC', NULL) vlkc,
|
|
DECODE (x.mld_typeopdr_key, 5, 'Werkopdracht', 'Offerteopdracht') opdrachttype,
|
|
DECODE (x.inv, '1', 'Ja', 'Nee') investering,
|
|
x.mld_opdr_einddatum,
|
|
x.alg_locatie_code locatie
|
|
FROM (SELECT o.mld_opdr_key,
|
|
o.mld_melding_key,
|
|
o.mld_opdr_bedrijfopdr_volgnr,
|
|
COALESCE (ksgo.prs_kostensoortgrp_altcode, ksgm.prs_kostensoortgrp_altcode, ksgv.prs_kostensoortgrp_altcode, NULL) kostensoort,
|
|
kp.prs_kostenplaats_nr kostenplaats,
|
|
o.mld_opdr_kosten,
|
|
sd.ins_srtdiscipline_prefix,
|
|
sm.mld_stdmelding_omschrijving,
|
|
lev.prs_bedrijf_naam,
|
|
lev.prs_leverancier_nr,
|
|
vlkc.mld_kenmerkopdr_waarde vlkc,
|
|
o.mld_typeopdr_key,
|
|
inv.mld_kenmerkopdr_waarde inv,
|
|
o.mld_opdr_einddatum,
|
|
l.alg_locatie_code
|
|
FROM mld_opdr o,
|
|
mld_melding m,
|
|
mld_stdmelding sm,
|
|
prs_kostensoort ksm,
|
|
prs_kostensoortgrp ksgm,
|
|
prs_kostensoort kso,
|
|
prs_kostensoortgrp ksgo,
|
|
ins_tab_discipline td,
|
|
prs_kostensoort ksv,
|
|
prs_kostensoortgrp ksgv,
|
|
ins_srtdiscipline sd,
|
|
prs_kostenplaats kp,
|
|
prs_bedrijf lev,
|
|
(SELECT *
|
|
FROM mld_v_aanwezigkenmerkopdr ko
|
|
WHERE EXISTS
|
|
(SELECT 1
|
|
FROM mld_kenmerk
|
|
WHERE mld_kenmerk_key = ko.mld_kenmerk_key
|
|
AND mld_srtkenmerk_key = 81)) vlkc, -- Factuur/offerte naar
|
|
(SELECT *
|
|
FROM mld_v_aanwezigkenmerkopdr ko
|
|
WHERE EXISTS
|
|
(SELECT 1
|
|
FROM mld_kenmerk
|
|
WHERE mld_kenmerk_key = ko.mld_kenmerk_key
|
|
AND mld_srtkenmerk_key = 181)) inv, -- Investeringsopdracht
|
|
alg_locatie l
|
|
WHERE o.mld_typeopdr_key = 283 -- Offerteopdracht
|
|
AND o.mld_statusopdr_key NOT IN (1, 2) -- Afgewezen/Niet akkoord
|
|
AND o.mld_melding_key = m.mld_melding_key
|
|
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
|
|
AND ksm.prs_kostensoortgrp_key = ksgm.prs_kostensoortgrp_key(+)
|
|
AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+)
|
|
AND kso.prs_kostensoortgrp_key = ksgo.prs_kostensoortgrp_key(+)
|
|
AND sm.mld_ins_discipline_key = td.ins_discipline_key
|
|
AND td.prs_kostensoort_key = ksv.prs_kostensoort_key(+)
|
|
AND ksv.prs_kostensoortgrp_key = ksgv.prs_kostensoortgrp_key(+)
|
|
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
|
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
|
|
AND o.mld_uitvoerende_keys = lev.prs_bedrijf_key
|
|
AND o.mld_opdr_key = vlkc.mld_opdr_key(+)
|
|
AND o.mld_opdr_key = inv.mld_opdr_key(+)
|
|
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
|
|
AND NOT EXISTS -- Geen Offerteopdrachten met Reden "0-order"!
|
|
(SELECT 1
|
|
FROM mld_v_aanwezigkenmerkopdr
|
|
WHERE mld_kenmerk_key = 1101 -- Reden "0-order"
|
|
AND mld_opdr_key = o.mld_opdr_key)) x
|
|
LEFT JOIN ( SELECT mld_opdr_key, COUNT ( * ) aantal
|
|
FROM fin_factuur
|
|
WHERE mld_opdr_key IS NOT NULL AND fin_factuur_verwijder IS NULL
|
|
GROUP BY mld_opdr_key) f
|
|
ON x.mld_opdr_key = f.mld_opdr_key
|
|
LEFT JOIN ( SELECT mld_opdr_key, COUNT ( * ) aantal, MAX (fin_factuur_nr) fin_factuur_nr,
|
|
SUM (fin_factuur_totaal + fin_factuur_totaal_btw) tot_incl_btw
|
|
FROM fin_factuur
|
|
WHERE mld_opdr_key IS NOT NULL
|
|
AND fin_factuur_statuses_key IN (6, 7)
|
|
AND (fin_factuur_totaal + fin_factuur_totaal_btw) >= 0
|
|
GROUP BY mld_opdr_key) debet
|
|
ON x.mld_opdr_key = debet.mld_opdr_key
|
|
LEFT JOIN ( SELECT mld_opdr_key, COUNT ( * ) aantal, MAX (fin_factuur_nr) fin_factuur_nr,
|
|
SUM (fin_factuur_totaal + fin_factuur_totaal_btw) tot_incl_btw
|
|
FROM fin_factuur
|
|
WHERE mld_opdr_key IS NOT NULL
|
|
AND fin_factuur_statuses_key IN (6, 7)
|
|
AND (fin_factuur_totaal + fin_factuur_totaal_btw) < 0
|
|
GROUP BY mld_opdr_key) credit
|
|
ON x.mld_opdr_key = credit.mld_opdr_key
|
|
WHERE ROUND ((COALESCE (x.mld_opdr_kosten, 0) - COALESCE (debet.tot_incl_btw, 0) - COALESCE (credit.tot_incl_btw, 0)), 2) != 0;
|
|
|
|
-- VLKC#40188: Hernoemen Jaarbedrag naar Contractbedrag/toevoegen Einddatum en Jaarbedrag=12xTermijnbedrag.
|
|
-- VLKC#40188: Verantwoording per jaar/hernoemen Jaarbedrag naar Jaarbedrag_heel/toevoegen Jaarbedrag_deel.
|
|
-- VLKC#56902: Uitbreiding met extra CF/CV-kolom. Tevens in de bestaande Contractnummer-kolom de variabele
|
|
-- contracten de prefix CV gegeven (en de prefix voor vaste contracten ongewijzigd C gebleven).
|
|
CREATE OR REPLACE VIEW vlkc_v_rap_cnt_verantw
|
|
(
|
|
fclt_f_jaar,
|
|
contractnummer,
|
|
cf_of_cv,
|
|
leverancier,
|
|
leveranciersnummer,
|
|
contractbedrag,
|
|
reeds_gefactureerd,
|
|
reeds_verantwoord,
|
|
kostensoort, -- 5 cijfers
|
|
kostenplaats, -- 4 cijfers
|
|
fclt_x_vlkc,
|
|
einddatum_contract,
|
|
jaarbedrag_heel,
|
|
jaarbedrag_deel,
|
|
locatie
|
|
)
|
|
AS
|
|
SELECT TO_CHAR (c.jaar, 'yyyy') jaar,
|
|
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', 'CV', 'C') || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)) contractnummer,
|
|
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', 'CV', 'C') cf_of_cv,
|
|
lev.prs_bedrijf_naam leverancier,
|
|
lev.prs_leverancier_nr leveranciersnummer,
|
|
c.cnt_contract_kosten contractbedrag,
|
|
verantw.reeds_gefactureerd,
|
|
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', verantw.reeds_verwerkt, verantw.reeds_verantwoord) reeds_verantwoord,
|
|
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL) kostensoort,
|
|
kp.prs_kostenplaats_nr kostenplaats,
|
|
DECODE (ab.prs_afdeling_key1, 82, 'VL', 81, 'KC', NULL) vlkc,
|
|
c.cnt_contract_looptijd_tot einddatum_contract,
|
|
12 * c.cnt_contract_termijnkosten jaar_heel, -- Termijnbedrag=Maandbedrag (ongeacht Factuurtermijn)!
|
|
ROUND (MONTHS_BETWEEN (LEAST (TRUNC (c.cnt_contract_looptijd_tot), ADD_MONTHS (c.jaar, 12) - 1), GREATEST (TRUNC (c.cnt_contract_looptijd_van), c.jaar)), 0) * c.cnt_contract_termijnkosten jaar_deel,
|
|
LISTAGG (cp.alg_locatie_code, ',') WITHIN GROUP (ORDER BY cp.alg_locatie_code) locatie
|
|
FROM (SELECT TO_CHAR (p.jaar, 'yyyy') || '/' || TO_CHAR (c.cnt_contract_key) jaarkey, p.jaar, c.*
|
|
FROM ( SELECT ADD_MONTHS (TO_DATE ('01012017', 'ddmmyyyy'), (LEVEL - 1) * 12) jaar
|
|
FROM DUAL
|
|
CONNECT BY LEVEL <= MONTHS_BETWEEN (SYSDATE, TO_DATE ('01012017', 'ddmmyyyy')) / 12 + 1) p,
|
|
cnt_contract c -- Alle contracten/versies (incl. verwijderde?)
|
|
WHERE p.jaar BETWEEN TRUNC (c.cnt_contract_looptijd_van, 'yyyy') AND c.cnt_contract_looptijd_tot) c,
|
|
( SELECT jaarkey, SUM (reeds_gefactureerd) reeds_gefactureerd, SUM (reeds_verwerkt) reeds_verwerkt, SUM (reeds_verantwoord) reeds_verantwoord
|
|
FROM (SELECT TO_CHAR (DECODE (t.fac_srtnotificatie_key, 122, t.fac_tracking_datum, t.fac_tracking_datum - 10), 'yyyy') || '/' || TO_CHAR (f.cnt_contract_key) jaarkey, -- Oude bepaling boekmaand!
|
|
COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0) reeds_gefactureerd,
|
|
DECODE (f.fin_factuur_statuses_key, 6, 0, COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0)) reeds_verwerkt,
|
|
0 reeds_verantwoord
|
|
FROM fin_factuur f,
|
|
( SELECT fac_tracking_refkey, MAX (fac_srtnotificatie_key) fac_srtnotificatie_key, MAX (fac_tracking_datum) fac_tracking_datum
|
|
FROM fac_tracking
|
|
WHERE fac_srtnotificatie_key IN (122, 128) -- FINFOK/FINVER
|
|
GROUP BY fac_tracking_refkey) t
|
|
WHERE f.cnt_contract_key IS NOT NULL
|
|
AND f.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
|
|
AND f.fin_factuur_key = t.fac_tracking_refkey
|
|
AND t.fac_tracking_datum < TO_DATE ('04042018 05:05', 'ddmmyyyy hh24:mi')
|
|
UNION ALL
|
|
SELECT SUBSTR (f.fin_factuur_boekmaand, 1, 4) || '/' || TO_CHAR (f.cnt_contract_key) jaarkey, -- Nieuwe bepaling boekmaand!
|
|
COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0) reeds_gefactureerd,
|
|
DECODE (f.fin_factuur_statuses_key, 6, 0, COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0)) reeds_verwerkt,
|
|
0 reeds_verantwoord
|
|
FROM fin_factuur f,
|
|
( SELECT fac_tracking_refkey, MAX (fac_srtnotificatie_key) fac_srtnotificatie_key, MAX (fac_tracking_datum) fac_tracking_datum
|
|
FROM fac_tracking
|
|
WHERE fac_srtnotificatie_key IN (122, 128) -- FINFOK/FINVER
|
|
GROUP BY fac_tracking_refkey) t
|
|
WHERE f.cnt_contract_key IS NOT NULL
|
|
AND f.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
|
|
AND f.fin_factuur_key = t.fac_tracking_refkey
|
|
AND t.fac_tracking_datum > TO_DATE ('04042018 05:05', 'ddmmyyyy hh24:mi')
|
|
UNION ALL
|
|
SELECT SUBSTR (fac_usrdata_code, 1, 4) || SUBSTR (fac_usrdata_code, INSTR (fac_usrdata_code, '/')) jaarkey,
|
|
0 reeds_gefactureerd,
|
|
0 reeds_verwerkt,
|
|
COALESCE (fac_usrdata_prijs, 0) reeds_verantwoord
|
|
FROM fac_v_aanwezigusrdata
|
|
WHERE fac_usrtab_key = 81) -- VasteKostenMnd
|
|
GROUP BY jaarkey) verantw,
|
|
prs_kostensoort ksc,
|
|
prs_kostensoortgrp ksgc,
|
|
ins_tab_discipline td,
|
|
prs_kostensoort ksd,
|
|
prs_kostensoortgrp ksgd,
|
|
prs_kostenplaats kp,
|
|
prs_bedrijf lev,
|
|
prs_v_afdeling_boom ab,
|
|
(SELECT cp.cnt_contract_key, l.alg_locatie_code
|
|
FROM cnt_v_aanwezigcontract_plaats cp, alg_gebouw g, alg_locatie l
|
|
WHERE cp.cnt_alg_plaats_code = 'G'
|
|
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
|
|
AND g.alg_locatie_key = l.alg_locatie_key
|
|
UNION
|
|
SELECT cp.cnt_contract_key, l.alg_locatie_code
|
|
FROM cnt_v_aanwezigcontract_plaats cp, alg_locatie l
|
|
WHERE cp.cnt_alg_plaats_code = 'L'
|
|
AND cp.cnt_alg_plaats_key = l.alg_locatie_key) cp
|
|
WHERE c.jaarkey = verantw.jaarkey(+)
|
|
AND c.prs_kostensoort_key = ksc.prs_kostensoort_key(+)
|
|
AND ksc.prs_kostensoortgrp_key = ksgc.prs_kostensoortgrp_key(+)
|
|
AND c.ins_discipline_key = td.ins_discipline_key
|
|
AND td.prs_kostensoort_key = ksd.prs_kostensoort_key(+)
|
|
AND ksd.prs_kostensoortgrp_key = ksgd.prs_kostensoortgrp_key(+)
|
|
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
|
|
AND c.cnt_prs_bedrijf_key = lev.prs_bedrijf_key
|
|
AND c.prs_afdeling_key_eig = ab.prs_afdeling_key(+)
|
|
AND (c.cnt_contract_verwijder IS NULL OR COALESCE (verantw.reeds_gefactureerd, 0) <> 0 OR COALESCE (verantw.reeds_verantwoord, 0) <> 0)
|
|
AND c.cnt_contract_key = cp.cnt_contract_key(+)
|
|
GROUP BY TO_CHAR (c.jaar, 'yyyy'),
|
|
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', 'CV', 'C') || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)),
|
|
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', 'CV', 'C'),
|
|
lev.prs_bedrijf_naam,
|
|
lev.prs_leverancier_nr,
|
|
c.cnt_contract_kosten,
|
|
verantw.reeds_gefactureerd,
|
|
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', verantw.reeds_verwerkt, verantw.reeds_verantwoord),
|
|
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL),
|
|
kp.prs_kostenplaats_nr,
|
|
DECODE (ab.prs_afdeling_key1, 82, 'VL', 81, 'KC', NULL),
|
|
c.cnt_contract_looptijd_tot,
|
|
12 * c.cnt_contract_termijnkosten,
|
|
ROUND (MONTHS_BETWEEN (LEAST (TRUNC (c.cnt_contract_looptijd_tot), ADD_MONTHS (c.jaar, 12) - 1), GREATEST (TRUNC (c.cnt_contract_looptijd_van), c.jaar)), 0) * c.cnt_contract_termijnkosten
|
|
UNION ALL -- Facturatie/verantwoording op verlopen contracten (in jaren né cnt_contract_looptijd_tot)!
|
|
SELECT SUBSTR (verantw.jaarkey, 1, 4) jaar,
|
|
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', 'CV', 'C') || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)) contractnummer,
|
|
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', 'CV', 'C') cf_of_cv,
|
|
lev.prs_bedrijf_naam leverancier,
|
|
lev.prs_leverancier_nr leveranciersnummer,
|
|
c.cnt_contract_kosten contractbedrag,
|
|
verantw.reeds_gefactureerd,
|
|
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', verantw.reeds_verwerkt, verantw.reeds_verantwoord) reeds_verantwoord,
|
|
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL) kostensoort,
|
|
kp.prs_kostenplaats_nr kostenplaats,
|
|
DECODE (ab.prs_afdeling_key1, 82, 'VL', 81, 'KC', NULL) vlkc,
|
|
c.cnt_contract_looptijd_tot einddatum_contract,
|
|
0 jaar_heel, -- Contract verlopen!
|
|
0 jaar_deel, -- Contract verlopen!
|
|
LISTAGG (cp.alg_locatie_code, ',') WITHIN GROUP (ORDER BY cp.alg_locatie_code) locatie
|
|
FROM cnt_contract c, -- Alle contracten/versies (incl. verwijderde?)
|
|
( SELECT jaarkey, SUM (reeds_gefactureerd) reeds_gefactureerd, SUM (reeds_verwerkt) reeds_verwerkt, SUM (reeds_verantwoord) reeds_verantwoord
|
|
FROM (SELECT TO_CHAR (DECODE (t.fac_srtnotificatie_key, 122, t.fac_tracking_datum, t.fac_tracking_datum - 10), 'yyyy') || '/' || TO_CHAR (f.cnt_contract_key) jaarkey, -- Oude bepaling boekmaand!
|
|
COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0) reeds_gefactureerd,
|
|
DECODE (f.fin_factuur_statuses_key, 6, 0, COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0)) reeds_verwerkt,
|
|
0 reeds_verantwoord
|
|
FROM fin_factuur f,
|
|
( SELECT fac_tracking_refkey, MAX (fac_srtnotificatie_key) fac_srtnotificatie_key, MAX (fac_tracking_datum) fac_tracking_datum
|
|
FROM fac_tracking
|
|
WHERE fac_srtnotificatie_key IN (122, 128) -- FINFOK/FINVER
|
|
GROUP BY fac_tracking_refkey) t
|
|
WHERE f.cnt_contract_key IS NOT NULL
|
|
AND f.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
|
|
AND f.fin_factuur_key = t.fac_tracking_refkey
|
|
AND t.fac_tracking_datum < TO_DATE ('04042018 05:05', 'ddmmyyyy hh24:mi')
|
|
UNION ALL
|
|
SELECT SUBSTR (f.fin_factuur_boekmaand, 1, 4) || '/' || TO_CHAR (f.cnt_contract_key) jaarkey, -- Nieuwe bepaling boekmaand!
|
|
COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0) reeds_gefactureerd,
|
|
DECODE (f.fin_factuur_statuses_key, 6, 0, COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0)) reeds_verwerkt,
|
|
0 reeds_verantwoord
|
|
FROM fin_factuur f,
|
|
( SELECT fac_tracking_refkey, MAX (fac_srtnotificatie_key) fac_srtnotificatie_key, MAX (fac_tracking_datum) fac_tracking_datum
|
|
FROM fac_tracking
|
|
WHERE fac_srtnotificatie_key IN (122, 128) -- FINFOK/FINVER
|
|
GROUP BY fac_tracking_refkey) t
|
|
WHERE f.cnt_contract_key IS NOT NULL
|
|
AND f.fin_factuur_statuses_key IN (6, 7) -- Akkoord/Verwerkt
|
|
AND f.fin_factuur_key = t.fac_tracking_refkey
|
|
AND t.fac_tracking_datum > TO_DATE ('04042018 05:05', 'ddmmyyyy hh24:mi')
|
|
UNION ALL
|
|
SELECT SUBSTR (fac_usrdata_code, 1, 4) || SUBSTR (fac_usrdata_code, INSTR (fac_usrdata_code, '/')) jaarkey,
|
|
0 reeds_gefactureerd,
|
|
0 reeds_verwerkt,
|
|
COALESCE (fac_usrdata_prijs, 0) reeds_verantwoord
|
|
FROM fac_v_aanwezigusrdata
|
|
WHERE fac_usrtab_key = 81) -- VasteKostenMnd
|
|
GROUP BY jaarkey) verantw,
|
|
prs_kostensoort ksc,
|
|
prs_kostensoortgrp ksgc,
|
|
ins_tab_discipline td,
|
|
prs_kostensoort ksd,
|
|
prs_kostensoortgrp ksgd,
|
|
prs_kostenplaats kp,
|
|
prs_bedrijf lev,
|
|
prs_v_afdeling_boom ab,
|
|
(SELECT cp.cnt_contract_key, l.alg_locatie_code
|
|
FROM cnt_v_aanwezigcontract_plaats cp, alg_gebouw g, alg_locatie l
|
|
WHERE cp.cnt_alg_plaats_code = 'G'
|
|
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
|
|
AND g.alg_locatie_key = l.alg_locatie_key
|
|
UNION
|
|
SELECT cp.cnt_contract_key, l.alg_locatie_code
|
|
FROM cnt_v_aanwezigcontract_plaats cp, alg_locatie l
|
|
WHERE cp.cnt_alg_plaats_code = 'L'
|
|
AND cp.cnt_alg_plaats_key = l.alg_locatie_key) cp
|
|
WHERE TO_CHAR (c.cnt_contract_key) = SUBSTR (verantw.jaarkey, INSTR (verantw.jaarkey, '/') + 1)
|
|
AND TO_CHAR (c.cnt_contract_looptijd_tot, 'yyyy') < SUBSTR (verantw.jaarkey, 1, 4)
|
|
AND c.prs_kostensoort_key = ksc.prs_kostensoort_key(+)
|
|
AND ksc.prs_kostensoortgrp_key = ksgc.prs_kostensoortgrp_key(+)
|
|
AND c.ins_discipline_key = td.ins_discipline_key
|
|
AND td.prs_kostensoort_key = ksd.prs_kostensoort_key(+)
|
|
AND ksd.prs_kostensoortgrp_key = ksgd.prs_kostensoortgrp_key(+)
|
|
AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
|
|
AND c.cnt_prs_bedrijf_key = lev.prs_bedrijf_key
|
|
AND c.prs_afdeling_key_eig = ab.prs_afdeling_key(+)
|
|
AND c.cnt_contract_key = cp.cnt_contract_key(+)
|
|
GROUP BY SUBSTR (verantw.jaarkey, 1, 4),
|
|
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', 'CV', 'C') || c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || TO_CHAR (c.cnt_contract_versie)),
|
|
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', 'CV', 'C'),
|
|
lev.prs_bedrijf_naam,
|
|
lev.prs_leverancier_nr,
|
|
c.cnt_contract_kosten,
|
|
verantw.reeds_gefactureerd,
|
|
DECODE (SUBSTR (td.ins_discipline_omschrijving, 1, 2), 'CV', verantw.reeds_verwerkt, verantw.reeds_verantwoord),
|
|
COALESCE (ksgc.prs_kostensoortgrp_altcode, ksgd.prs_kostensoortgrp_altcode, NULL),
|
|
kp.prs_kostenplaats_nr,
|
|
DECODE (ab.prs_afdeling_key1, 82, 'VL', 81, 'KC', NULL),
|
|
c.cnt_contract_looptijd_tot,
|
|
0,
|
|
0;
|
|
|
|
-- VLKC#40302: Export van import-bestand met de kolommen:
|
|
-- '%Personeelsnummer;Loginnaam;Achternaam;Tussenvoegsel;Voorletters;Voornaam;Afdelingscode;Functie;Email;Telefoonnr;Mobiel;Stamplaats%');
|
|
/* Formatted on 31-5-2017 11:35:05 (QP5 v5.136.908.31019) */
|
|
CREATE OR REPLACE VIEW vlkc_v_rap_import_prs
|
|
(
|
|
personeelsnummer,
|
|
loginnaam,
|
|
achternaam,
|
|
tussenvoegsel,
|
|
voorletters,
|
|
voornaam,
|
|
afdelingscode,
|
|
functie,
|
|
email,
|
|
telefoonnr,
|
|
mobiel,
|
|
stamplaats
|
|
)
|
|
AS
|
|
SELECT p.prs_perslid_nr,
|
|
p.prs_perslid_oslogin,
|
|
p.prs_perslid_naam,
|
|
p.prs_perslid_tussenvoegsel,
|
|
p.prs_perslid_voorletters,
|
|
p.prs_perslid_voornaam,
|
|
a.prs_afdeling_naam,
|
|
sp.prs_srtperslid_omschrijving,
|
|
p.prs_perslid_email,
|
|
p.prs_perslid_telefoonnr,
|
|
p.prs_perslid_mobiel,
|
|
NULL standplaats
|
|
FROM prs_v_aanwezigperslid p,
|
|
prs_v_afdeling_boom ab,
|
|
prs_afdeling a,
|
|
prs_kostenplaats kp,
|
|
prs_srtperslid sp
|
|
WHERE p.prs_perslid_nr IS NOT NULL
|
|
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
|
AND ab.prs_afdeling_key = a.prs_afdeling_key
|
|
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
|
AND p.prs_srtperslid_key = sp.prs_srtperslid_key;
|
|
|
|
|
|
-- Dummy export NACHTWERK!
|
|
CREATE OR REPLACE PROCEDURE vlkc_select_nachtwerk (p_applname IN VARCHAR2,
|
|
p_applrun IN VARCHAR2)
|
|
AS
|
|
-- Cursor loopt over alle bestelopdracht-items met status 'In bestelling';
|
|
-- deze worden verondersteld te zijn geleverd na 'leverdagen'+'notidagen'!
|
|
CURSOR cboi
|
|
IS
|
|
SELECT DISTINCT bo.bes_bestelopdr_key
|
|
FROM bes_bestelopdr bo,
|
|
bes_bestelopdr_item boi,
|
|
bes_bestelling_item bi,
|
|
bes_bestelling b,
|
|
bes_srtdeel sd,
|
|
bes_srtgroep sg,
|
|
bes_disc_params bdp
|
|
WHERE bo.bes_bestelopdr_status = 4 -- In bestelling
|
|
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
|
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
|
|
AND bi.bes_bestelling_key = b.bes_bestelling_key
|
|
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
|
|
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
|
--AND sg.ins_discipline_key = -1
|
|
AND sg.ins_discipline_key = bdp.bes_ins_discipline_key
|
|
AND bdp.bes_disc_params_noti_dagen IS NOT NULL
|
|
AND (b.bes_bestelling_datum IS NULL OR fac.datumtijdplusuitvoertijd (b.bes_bestelling_leverdatum, bdp.bes_disc_params_noti_dagen, 'DAGEN') < SYSDATE);
|
|
|
|
-- Cursor loopt over alle bestelling-items met status 'Besteld' waarvan
|
|
-- de bijbehorende bestelopdracht-items zijn geleverd; deze worden dan ook
|
|
-- gesloten!
|
|
CURSOR cbi
|
|
IS
|
|
SELECT DISTINCT b.bes_bestelling_key
|
|
FROM bes_bestelling b,
|
|
bes_bestelling_item bi,
|
|
bes_bestelopdr_item boi
|
|
WHERE b.bes_bestelling_status = 5 -- Besteld
|
|
AND b.bes_bestelling_key = bi.bes_bestelling_key
|
|
--AND bi.bes_bestelling_item_aantal != COALESCE (bi.bes_bestelling_item_aantalontv, 0)
|
|
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
|
AND boi.bes_bestelopdr_item_aantal = boi.bes_bestelopdr_item_aantalontv;
|
|
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
BEGIN
|
|
v_errormsg := 'Fout leveren bestelopdracht';
|
|
|
|
FOR rec IN cboi
|
|
LOOP
|
|
-- Zeg dat alles geleverd is wat besteld is.
|
|
UPDATE bes_bestelopdr_item
|
|
SET bes_bestelopdr_item_aantalontv = bes_bestelopdr_item_aantal
|
|
WHERE bes_bestelopdr_key = rec.bes_bestelopdr_key;
|
|
|
|
bes.updatebestelopdrstatus (rec.bes_bestelopdr_key, NULL);
|
|
END LOOP;
|
|
|
|
v_errormsg := 'Fout sluiten bestelaanvraag';
|
|
|
|
FOR rec IN cbi
|
|
LOOP
|
|
-- Sluit alle aanvraagregels af die nu geheel geleverd zijn.
|
|
UPDATE bes_bestelling_item
|
|
SET bes_bestelling_item_aantalontv = bes_bestelling_item_aantal
|
|
WHERE bes_bestelling_key = rec.bes_bestelling_key;
|
|
|
|
bes.updatebestellingstatus (rec.bes_bestelling_key, NULL);
|
|
END LOOP;
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.writelog (p_applname, 'E', 'Proces NACHTWERK afgebroken!', v_errormsg);
|
|
END vlkc_select_nachtwerk;
|
|
/
|
|
|
|
|
|
-- view tbv kenmerkdomein
|
|
CREATE OR REPLACE VIEW vlkc_v_alg_gebouw
|
|
(
|
|
alg_gebouw_key,
|
|
alg_gebouw_omschrijving,
|
|
alg_gebouw_verw
|
|
)
|
|
AS
|
|
SELECT alg_gebouw_key,
|
|
alg_gebouw_omschrijving,
|
|
COALESCE (alg_gebouw_verwijder, alg_gebouw_vervaldatum)
|
|
alg_gebouw_verw
|
|
FROM alg_gebouw;
|
|
|
|
-- view tbv kenmerkdomein
|
|
CREATE OR REPLACE VIEW vlkc_v_prs_dienst
|
|
(
|
|
prs_dienst_key,
|
|
prs_dienst_omschrijving
|
|
)
|
|
AS
|
|
SELECT prs_dienst_key, prs_dienst_omschrijving FROM prs_dienst;
|
|
|
|
CREATE OR REPLACE VIEW vlkc_v_rap_keyvsfe
|
|
(
|
|
soort_gebruiker,
|
|
naam,
|
|
loginnaam,
|
|
laatste_login
|
|
)
|
|
AS
|
|
SELECT DECODE (key_user, 1, 'KEY', 'FE'),
|
|
pf.prs_perslid_naam_full,
|
|
oslogin,
|
|
prs_perslid_login
|
|
FROM (SELECT *
|
|
FROM (SELECT p.prs_perslid_key prs_key,
|
|
COALESCE (p.prs_perslid_oslogin,
|
|
p.prs_perslid_oslogin2)
|
|
oslogin,
|
|
1 login, -- 1=user heeft login + groep + rechten
|
|
DECODE (
|
|
SIGN(TRUNC(COALESCE (p.prs_perslid_login + 92,
|
|
SYSDATE - 1))
|
|
- TRUNC (SYSDATE)),
|
|
-1,
|
|
0,
|
|
1) -- 1=user heeft laatste 92 dagen ingelogd
|
|
recent_login
|
|
FROM prs_v_aanwezigperslid p
|
|
WHERE EXISTS -- op basis van login + groep + rechten
|
|
(SELECT 1
|
|
FROM fac_v_webgebruiker gg
|
|
WHERE gg.prs_perslid_key = p.prs_perslid_key)
|
|
AND NOT EXISTS -- FSN#36597: WEB_FACFAC-users niet meetellen!
|
|
(SELECT 1
|
|
FROM fac_v_webgebruiker gg, fac_functie f
|
|
WHERE gg.prs_perslid_key =
|
|
p.prs_perslid_key
|
|
AND gg.fac_functie_key =
|
|
f.fac_functie_key
|
|
AND fac_functie_code = 'WEB_FACFAC')
|
|
UNION ALL -- FSN#24029: Soms ook personen zonder login meetellen!
|
|
SELECT p.prs_perslid_key,
|
|
NULL oslogin,
|
|
1 login, -- 1=user telt mee, want allow_for_others!
|
|
0 recent_login -- geen login, dus nooit recent ingelogd
|
|
FROM prs_v_aanwezigperslid p
|
|
WHERE COALESCE (p.prs_perslid_oslogin,
|
|
p.prs_perslid_oslogin2) IS NULL
|
|
AND (fac.getsetting ('mld_allow_for_others') = 1
|
|
OR EXISTS
|
|
(SELECT 1
|
|
FROM bes_disc_params dp
|
|
WHERE dp.bes_disc_params_for_others = 1))
|
|
UNION ALL -- FSN#27315: En ook eventuele "sensorusers" meetellen!
|
|
SELECT NULL prs_perslid_key,
|
|
NULL oslogin,
|
|
COUNT ( * ) login, -- elke sensoruser telt mee als FE!
|
|
1 recent_login -- recent actief dus tellen als recent
|
|
FROM ins_v_aanwezigdeel d
|
|
WHERE ins_deel_statedate > TRUNC (SYSDATE - 30)) x
|
|
LEFT JOIN -- 1=user heeft rechten op key-codes=notFE-codes
|
|
(SELECT DISTINCT fclt_f_login, 1 key_user
|
|
FROM fac_v_rap_groeprechten gr, fac_functie f
|
|
WHERE gr.fclt_f_funcode = f.fac_functie_code
|
|
AND f.fac_functie_groep IN (1, 2)) a
|
|
ON x.oslogin = a.fclt_f_login
|
|
LEFT JOIN -- FSN#30404: 1=user is cross-domain (xd) user
|
|
(SELECT p.prs_perslid_key, 1 xd_user
|
|
FROM prs_v_aanwezigperslid p,
|
|
prs_v_afdeling_boom ab
|
|
WHERE p.prs_afdeling_key = ab.prs_afdeling_key
|
|
AND p.prs_perslid_apikey IS NOT NULL
|
|
AND ab.prs_bedrijf_key =
|
|
fac.safe_to_number(fac.getsetting('xd_primary_bedrijfkey')))
|
|
b
|
|
ON x.prs_key = b.prs_perslid_key) st,
|
|
prs_perslid p,
|
|
prs_v_perslid_fullnames pf
|
|
WHERE login = 1
|
|
AND p.prs_perslid_key = st.prs_key
|
|
AND pf.prs_perslid_key = p.prs_perslid_key;
|
|
|
|
CREATE OR REPLACE VIEW vlkc_v_rap_cnttrack
|
|
(
|
|
wijzig_datum,
|
|
wijziging,
|
|
gewijzigd_door,
|
|
cnt_contract_key,
|
|
contract_nummer,
|
|
contract_nummer_extern,
|
|
contract_versie,
|
|
contractsoort,
|
|
omschrijving,
|
|
ingangsdatum,
|
|
einddatum,
|
|
contractbedrag,
|
|
termijnkosten,
|
|
beheerder,
|
|
status,
|
|
bedrijf,
|
|
leveranciernr,
|
|
kostensoort
|
|
)
|
|
AS
|
|
SELECT fac_tracking_datum,
|
|
REPLACE (fac_tracking_oms, 'Contract gewijzigd' || CHR (10), '')
|
|
wijziging,
|
|
pf2.prs_perslid_naam_full gewijzigd_door,
|
|
cnt_contract_key,
|
|
COALESCE (cnt_contract_nummer_intern, TO_CHAR (cnt_contract_key))
|
|
contract_nummer,
|
|
cnt_contract_nummer,
|
|
cnt_contract_versie,
|
|
cd.ins_discipline_omschrijving,
|
|
cnt_contract_omschrijving,
|
|
cnt_contract_looptijd_van,
|
|
cnt_contract_looptijd_tot,
|
|
cnt_contract_kosten,
|
|
cnt_contract_termijnkosten,
|
|
pf.prs_perslid_naam_full beheerder,
|
|
cnt_contract_status,
|
|
b.prs_bedrijf_naam,
|
|
b.prs_leverancier_nr,
|
|
COALESCE (cks.prs_kostensoort_omschr, sks.prs_kostensoort_omschr)
|
|
kostensoort
|
|
FROM cnt_contract c,
|
|
fac_tracking ft,
|
|
fac_srtnotificatie sn,
|
|
prs_v_perslid_fullnames pf,
|
|
prs_v_perslid_fullnames pf2,
|
|
cnt_discipline cd,
|
|
prs_bedrijf b,
|
|
(SELECT prs_kostensoort_key,
|
|
prs_kostensoort_oms || '-' || prs_kostensoort_opmerking
|
|
prs_kostensoort_omschr
|
|
FROM prs_kostensoort) sks,
|
|
(SELECT prs_kostensoort_key,
|
|
prs_kostensoort_oms || '-' || prs_kostensoort_opmerking
|
|
prs_kostensoort_omschr
|
|
FROM prs_kostensoort) cks
|
|
WHERE cnt_contract_verwijder IS NULL
|
|
AND c.cnt_contract_key = ft.fac_tracking_refkey
|
|
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
|
AND fac_srtnotificatie_xmlnode = 'contract'
|
|
AND ( UPPER (fac_tracking_oms) LIKE '%TERMIJNBEDRAG%'
|
|
OR UPPER (fac_tracking_oms) LIKE '%INGANGSDATUM%'
|
|
OR UPPER (fac_tracking_oms) LIKE '%EINDDATUM%')
|
|
AND pf.prs_perslid_key = prs_perslid_key_beh
|
|
AND ft.prs_perslid_key = pf2.prs_perslid_key(+)
|
|
AND cd.ins_discipline_key = c.ins_discipline_key
|
|
AND b.prs_bedrijf_key(+) = cnt_prs_bedrijf_key
|
|
AND cd.prs_kostensoort_key = sks.prs_kostensoort_key(+)
|
|
AND c.prs_kostensoort_key = cks.prs_kostensoort_key(+);
|
|
|
|
-- VLKC#54894: Rapportage tbv. doorbelasting parkeerpassen!
|
|
CREATE OR REPLACE VIEW vlkc_v_rap_bez_parkeerpas
|
|
(
|
|
afspraakmaand,
|
|
afspraakdatum,
|
|
afspraakdatum_van,
|
|
afspraakdatum_tot,
|
|
afspraaknr, -- Niet gevraagd
|
|
parkeerpasnummer, -- 23-cijferig
|
|
contactpersoon, -- Niet gevraagd
|
|
gastheer, -- Niet gevraagd
|
|
bezoeker,
|
|
opmerking, -- Niet gevraagd
|
|
kostenplaats,
|
|
kostenplaats_bezoeker,
|
|
kostenplaats_gastheer,
|
|
locatie,
|
|
bez_afspraak_key
|
|
)
|
|
AS
|
|
SELECT TO_CHAR (x.bez_afspraak_datum, 'yyyy-mm') maand,
|
|
x.bez_afspraak_datum,
|
|
x.bez_afspraak_datum van,
|
|
x.bez_afspraak_eind tot,
|
|
TO_CHAR (x.bez_afspraak_key) afspraaknr,
|
|
pp.bez_kenmerkwaarde_waarde parkeerpasnummer,
|
|
x.contactpersoon,
|
|
x.gastheer,
|
|
x.bez_afspraak_naam,
|
|
x.bez_afspraak_opmerking,
|
|
COALESCE (kpb.prs_kostenplaats_nr, kph.prs_kostenplaats_nr) kp,
|
|
kpb.prs_kostenplaats_nr kp_bezoeker,
|
|
DECODE (pb.prs_perslid_key, NULL, kph.prs_kostenplaats_nr, NULL) kp_gastheer,
|
|
l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')',
|
|
x.bez_afspraak_key
|
|
FROM (SELECT a.bez_afspraak_key,
|
|
a.bez_afspraak_datum,
|
|
a.bez_afspraak_eind,
|
|
a.bez_afspraak_opmerking,
|
|
a.bez_afspraak_host_key,
|
|
a.alg_locatie_key,
|
|
b.bez_bezoekers_key,
|
|
b.bez_afspraak_naam,
|
|
b.prs_perslid_key,
|
|
pc.prs_perslid_naam_full contactpersoon,
|
|
ph.prs_perslid_naam_full gastheer
|
|
FROM bez_afspraak a,
|
|
bez_bezoekers b,
|
|
prs_v_perslid_fullnames_all pc,
|
|
prs_v_perslid_fullnames_all ph
|
|
WHERE a.bez_afspraak_key = b.bez_afspraak_key
|
|
AND a.bez_afspraak_contact_key = pc.prs_perslid_key
|
|
AND a.bez_afspraak_host_key = ph.prs_perslid_key) x
|
|
LEFT JOIN prs_perslid pb
|
|
ON x.prs_perslid_key = pb.prs_perslid_key
|
|
LEFT JOIN prs_afdeling ab
|
|
ON pb.prs_afdeling_key = ab.prs_afdeling_key
|
|
LEFT JOIN prs_kostenplaats kpb
|
|
ON ab.prs_kostenplaats_key = kpb.prs_kostenplaats_key
|
|
LEFT JOIN prs_perslid ph
|
|
ON x.bez_afspraak_host_key = ph.prs_perslid_key
|
|
LEFT JOIN prs_afdeling ah
|
|
ON ph.prs_afdeling_key = ah.prs_afdeling_key
|
|
LEFT JOIN prs_kostenplaats kph
|
|
ON ah.prs_kostenplaats_key = kph.prs_kostenplaats_key
|
|
LEFT JOIN bez_kenmerkwaarde pp
|
|
ON x.bez_bezoekers_key = pp.bez_bezoekers_key
|
|
AND pp.bez_kenmerkwaarde_verwijder IS NULL
|
|
AND pp.bez_kenmerk_key = 1040 -- Parkeerpas
|
|
LEFT JOIN alg_locatie l
|
|
ON x.alg_locatie_key = l.alg_locatie_key
|
|
WHERE x.bez_afspraak_datum > TO_DATE ('01-01-2019', 'dd-mm-yyyy')
|
|
AND x.bez_afspraak_datum > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
|
|
AND pp.bez_kenmerkwaarde_waarde IS NOT NULL;
|
|
|
|
CREATE OR REPLACE VIEW vlkc_v_rap_groepleden_plus
|
|
(
|
|
prs_perslid_key,
|
|
login,
|
|
naam,
|
|
bedrijf_naam,
|
|
locatie_omschrijving,
|
|
locatie_code,
|
|
gebouw_omschrijving,
|
|
gebouw_code,
|
|
ruimte_aanduiding,
|
|
groep,
|
|
aantal_rechten
|
|
)
|
|
AS
|
|
SELECT autr.prs_perslid_key,
|
|
prs_perslid_oslogin,
|
|
prs_perslid_naam,
|
|
prs_bedrijf_naam,
|
|
alg_locatie_omschrijving,
|
|
alg_locatie_code,
|
|
alg_gebouw_omschrijving,
|
|
alg_gebouw_code,
|
|
alg_ruimte_aanduiding,
|
|
fac_groep_omschrijving,
|
|
aantal_rechten
|
|
FROM ( SELECT p.prs_perslid_key,
|
|
p.prs_perslid_naam,
|
|
p.prs_perslid_oslogin,
|
|
gr.fac_groep_omschrijving,
|
|
fac.safe_to_number (COUNT ( * )) aantal_rechten
|
|
FROM fac_gebruikersgroep gg,
|
|
prs_v_aanwezigperslid p,
|
|
fac_groep gr,
|
|
fac_groeprechten grr
|
|
WHERE p.prs_perslid_key = gg.prs_perslid_key
|
|
AND gg.fac_groep_key = gr.fac_groep_key
|
|
AND gr.fac_groep_key = grr.fac_groep_key
|
|
GROUP BY p.prs_perslid_key,
|
|
p.prs_perslid_naam,
|
|
p.prs_perslid_oslogin,
|
|
gr.fac_groep_omschrijving) autr,
|
|
(SELECT prs_perslid_key, prs_bedrijf_naam
|
|
FROM prs_contactpersoon pcp, prs_bedrijf b
|
|
WHERE prs_contactpersoon_verwijder IS NULL
|
|
AND pcp.prs_bedrijf_key = b.prs_bedrijf_key
|
|
AND prs_perslid_key IS NOT NULL
|
|
AND b.prs_bedrijf_verwijder IS NULL) cp,
|
|
(SELECT pwp.prs_perslid_key,
|
|
l.alg_locatie_omschrijving,
|
|
l.alg_locatie_code,
|
|
pw.alg_gebouw_code,
|
|
pw.alg_gebouw_omschrijving,
|
|
pw.alg_ruimte_aanduiding
|
|
FROM prs_perslidwerkplek pwp,
|
|
prs_v_werkplek_gegevens pw,
|
|
alg_locatie l
|
|
WHERE pwp.prs_werkplek_key = pw.prs_werkplek_key
|
|
AND pw.alg_locatie_key = l.alg_locatie_key
|
|
AND alg_locatie_verwijder IS NULL) wp
|
|
WHERE cp.prs_perslid_key(+) = autr.prs_perslid_key
|
|
AND wp.prs_perslid_key(+) = autr.prs_perslid_key;
|
|
|
|
-- VLKC#56903: Rapportage factuurgoedkeuring
|
|
CREATE OR REPLACE VIEW vlkc_v_rap_factuurgoedkeuring
|
|
(
|
|
factuurdatum,
|
|
fin_factuur_key,
|
|
factuurnummer,
|
|
uitvoerende,
|
|
opdrachtnummer,
|
|
bedrag_excl_btw,
|
|
bedrag_incl_btw,
|
|
status,
|
|
verdeelperiode,
|
|
kostensoort_code,
|
|
kostensoort_oms,
|
|
goedgekeurd,
|
|
verwerkt
|
|
)
|
|
AS
|
|
SELECT f.fin_factuur_datum,
|
|
f.fin_factuur_key,
|
|
f.fin_factuur_nr,
|
|
(SELECT prs_bedrijf_naam
|
|
FROM prs_bedrijf
|
|
WHERE prs_bedrijf_key = COALESCE (o.mld_uitvoerende_keys, c.cnt_prs_bedrijf_key, bo.prs_bedrijf_key))
|
|
uitvoerende,
|
|
COALESCE (
|
|
NVL2 (f.mld_opdr_key, sd.ins_srtdiscipline_prefix || TO_CHAR (o.mld_melding_key) || '/' || o.mld_opdr_bedrijfopdr_volgnr, NULL),
|
|
NVL2 (f.cnt_contract_key, 'C' || c.cnt_contract_nummer_intern || NVL2 (c.cnt_contract_versie, '.' || c.cnt_contract_versie, ''), NULL),
|
|
NVL2 (f.bes_bestelopdr_key, bo.bes_bestelopdr_id, NULL),
|
|
NULL)
|
|
opdrachtnr,
|
|
f.fin_factuur_totaal bedrag_excl_btw,
|
|
f.fin_factuur_totaal + f.fin_factuur_totaal_btw bedrag_incl_btw,
|
|
fs.fin_factuur_statuses_omschr,
|
|
f.fin_factuur_boekmaand,
|
|
ks.prs_kostensoort_oms,
|
|
ks.prs_kostensoort_opmerking,
|
|
fac.gettrackingdate ('FINFOK', f.fin_factuur_key) goedgekeurd,
|
|
fac.gettrackingdate ('FINVER', f.fin_factuur_key) verwerkt
|
|
FROM fin_factuur f,
|
|
mld_opdr o,
|
|
mld_melding m,
|
|
mld_discipline d,
|
|
mld_stdmelding sm,
|
|
ins_srtdiscipline sd,
|
|
cnt_contract c,
|
|
cnt_discipline cd,
|
|
bes_bestelopdr bo,
|
|
fin_factuur_statuses fs,
|
|
prs_kostensoort ks
|
|
WHERE f.fin_factuur_datum > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
|
|
AND f.mld_opdr_key = o.mld_opdr_key(+)
|
|
AND o.mld_melding_key = m.mld_melding_key(+)
|
|
AND m.mld_stdmelding_key = sm.mld_stdmelding_key(+)
|
|
AND sm.mld_ins_discipline_key = d.ins_discipline_key(+)
|
|
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)
|
|
AND f.cnt_contract_key = c.cnt_contract_key(+)
|
|
AND c.ins_discipline_key = cd.ins_discipline_key(+)
|
|
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
|
|
AND f.fin_factuur_statuses_key = fs.fin_factuur_statuses_key(+)
|
|
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+);
|
|
|
|
------ payload end ------
|
|
|
|
SET DEFINE OFF
|
|
BEGIN adm.systrackscriptId ('$Id$', 0); END;
|
|
/
|
|
|
|
COMMIT;
|
|
SET ECHO OFF
|
|
SPOOL OFF
|
|
SET DEFINE ON
|
|
PROMPT Logfile of this upgrade is: &fcltlogfile
|