Files
Customer/DENB/denb.sql
Maarten van der Heide 5b40be5f87 Script header/footer formaat
svn path=/Customer/trunk/; revision=57200
2022-09-08 13:14:31 +00:00

2999 lines
134 KiB
SQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific db-configuration for DENB.
DEFINE thisfile = 'DENB.SQL'
DEFINE dbuser = '^DENB'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
WHENEVER SQLERROR CONTINUE;
---------------------------------------
PROMPT &fcltcusttxt
---------------------------------------
SET DEFINE OFF
------ payload begin ------
/* Formatted on 26-3-2010 12:45:12 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW denb_v_import_log
AS
SELECT imp_log_status fclt_f_status,
imp_log_omschrijving omschrijving,
imp_log_hint opmerking
FROM imp_log l
WHERE l.fac_import_key = (SELECT MAX (fac_import_key)
FROM fac_import
WHERE fac_import_app_key = 21);
/* Formatted on 27-1-2010 16:35:45 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE denb_import_prs (
p_import_key IN NUMBER
)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
-- LET OP: moet idem zijn als declaratie bij denb_update_prs
v_newline VARCHAR2 (1000); -- Input line
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER := 0;
v_ongeldig NUMBER (1);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_count NUMBER;
-- De importvelden:
v_prs_perslid_nr VARCHAR2 (256);
v_prs_perslid_naam VARCHAR2 (256);
v_prs_perslid_tussenvoegsel VARCHAR2 (256);
v_prs_perslid_voorletters VARCHAR2 (256);
v_prs_perslid_voornaam VARCHAR2 (256);
v_prs_afdeling_naam VARCHAR2 (256);
v_prs_srtperslid_omschrijving VARCHAR2 (256);
v_prs_perslid_ingangsdatum VARCHAR2 (256);
v_prs_perslid_einddatum VARCHAR2 (256);
v_dienstverbandcode VARCHAR2 (256); -- N2
v_alg_gebouw_code VARCHAR2 (256); -- A10
v_afdelingsdomein VARCHAR2 (256); -- A2
v_prs_perslid_telefoonnr VARCHAR2 (256);
v_prs_perslid_email VARCHAR2 (256);
v_prs_perslid_oslogin VARCHAR2 (256);
-- Overig:
v_prs_perslid_ingangs_date DATE;
v_prs_perslid_eind_date DATE;
v_dienstverbandcode_n NUMBER (2); -- N2
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM denb_imp_prs;
COMMIT;
v_count_tot := 0;
v_count_import := 0;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_aanduiding := '';
v_errorhint := 'Fout bij opvragen te importeren rij';
v_ongeldig := 0;
-- Lees alle veldwaarden
-- 01
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr);
-- 02
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam);
-- 03
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_tussenvoegsel
);
-- 04
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_voorletters
);
-- 05
fac.imp_getfield (v_newline, c_fielddelimitor,
v_prs_perslid_voornaam);
-- 06
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_naam);
-- 07
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_srtperslid_omschrijving
);
-- 08
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_ingangsdatum
);
-- 09
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_einddatum
);
-- 10
fac.imp_getfield (v_newline, c_fielddelimitor, v_dienstverbandcode);
-- 11
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_gebouw_code);
-- 12
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdelingsdomein);
-- 13
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_telefoonnr
);
-- 14
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
-- 15
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_oslogin);
--
v_aanduiding :=
'['
|| v_prs_perslid_nr
|| '|'
|| v_prs_perslid_naam
|| '|'
|| v_prs_perslid_tussenvoegsel
|| '|'
|| v_prs_perslid_voornaam
|| '] ';
-- 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 (v_prs_perslid_nr) = 'PERSONEELSNUMMER'
AND UPPER (v_prs_perslid_naam) = 'NAAM'
AND UPPER (v_prs_perslid_tussenvoegsel) = 'TUSSENVOEGSEL'
AND UPPER (v_prs_perslid_voorletters) = 'VOORLETTERS'
AND UPPER (v_prs_perslid_voornaam) = 'VOORNAAM'
AND UPPER (v_prs_afdeling_naam) = 'AFDELINGSCODE'
AND UPPER (v_prs_srtperslid_omschrijving) = 'FUNCTIE'
AND UPPER (v_prs_perslid_ingangsdatum) = 'INDIENSTDATUM'
AND UPPER (v_prs_perslid_einddatum) = 'UITDIENSTDATUM'
AND UPPER (v_dienstverbandcode) = 'DIENSTVERBANDCODE'
AND UPPER (v_alg_gebouw_code) = 'DIENSTVERBANDGEBOUW'
AND UPPER (v_afdelingsdomein) = 'AFDELINGSDOMEIN'
AND UPPER (v_prs_perslid_telefoonnr) = 'TELEFOON'
AND UPPER (v_prs_perslid_email) = 'EMAIL'
AND UPPER (v_prs_perslid_oslogin) = 'LOGINNAAM'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errorhint := 'Ongeldig personeelsnummer';
v_prs_perslid_nr := TRIM (v_prs_perslid_nr);
IF LENGTH (v_prs_perslid_nr) > 16
THEN
v_prs_perslid_nr := SUBSTR (v_prs_perslid_nr, 1, 16);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Personeelsnummer te lang',
'Personeelsnummer wordt afgebroken tot ['
|| v_prs_perslid_nr
|| ']'
);
ELSE
IF (v_prs_perslid_nr IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog
(p_import_key,
'E',
v_aanduiding || 'Personeelsnummer onbekend',
'Personeelsnummer is verplicht; regel wordt overgeslagen!'
);
END IF;
END IF;
COMMIT;
--
v_errorhint := 'Ongeldige naam';
v_prs_perslid_naam := TRIM (v_prs_perslid_naam);
IF LENGTH (v_prs_perslid_naam) > 30
THEN
v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 30);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Naam te lang',
'Naam wordt afgebroken tot ['
|| v_prs_perslid_naam
|| ']'
);
ELSE
IF (v_prs_perslid_naam IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog
(p_import_key,
'E',
v_aanduiding || 'Naam onbekend',
'Naam is verplicht; regel wordt overgeslagen!'
);
END IF;
END IF;
COMMIT;
--
v_errorhint := 'Ongeldig tussenvoegsel';
v_prs_perslid_tussenvoegsel := TRIM (v_prs_perslid_tussenvoegsel);
IF LENGTH (v_prs_perslid_tussenvoegsel) > 10
THEN
v_prs_perslid_tussenvoegsel :=
SUBSTR (v_prs_perslid_tussenvoegsel, 1, 10);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Tussenvoegsel te lang',
'Tussenvoegsel wordt afgebroken tot ['
|| v_prs_perslid_tussenvoegsel
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige voorletters';
v_prs_perslid_voorletters := TRIM (v_prs_perslid_voorletters);
IF LENGTH (v_prs_perslid_voorletters) > 10
THEN
v_prs_perslid_voorletters :=
SUBSTR (v_prs_perslid_voorletters, 1, 10);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Voorletters te lang',
'Voorletters worden afgebroken tot ['
|| v_prs_perslid_voorletters
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige voornaam';
v_prs_perslid_voornaam := TRIM (v_prs_perslid_voornaam);
IF LENGTH (v_prs_perslid_voornaam) > 30
THEN
v_prs_perslid_voornaam :=
SUBSTR (v_prs_perslid_voornaam, 1, 30);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Voornaam is te lang',
'Voornaam wordt afgebroken tot ['
|| v_prs_perslid_voornaam
|| ']'
);
ELSE
IF (v_prs_perslid_voornaam IS NULL)
THEN
v_prs_perslid_voornaam := '-';
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Voornaam onbekend',
'Voornaam wordt gezet op [-]'
);
END IF;
END IF;
COMMIT;
--
v_errorhint := 'Ongeldige afdelingscode';
v_prs_afdeling_naam := TRIM (v_prs_afdeling_naam);
IF LENGTH (v_prs_afdeling_naam) > 10
THEN
v_prs_afdeling_naam := SUBSTR (v_prs_afdeling_naam, 1, 10);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Afdelingscode te lang',
'Afdelingscode wordt afgebroken tot ['
|| v_prs_afdeling_naam
|| ']'
);
ELSE
IF (v_prs_afdeling_naam IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog
(p_import_key,
'E',
v_aanduiding || 'Afdelingscode onbekend',
'Afdelingscode is verplicht; regel wordt overgeslagen!'
);
END IF;
END IF;
COMMIT;
--
v_errorhint := 'Ongeldige functie';
v_prs_srtperslid_omschrijving :=
TRIM (v_prs_srtperslid_omschrijving);
IF LENGTH (v_prs_srtperslid_omschrijving) > 30
THEN
v_prs_srtperslid_omschrijving :=
SUBSTR (v_prs_srtperslid_omschrijving, 1, 30);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Functie te lang',
'Functie wordt afgebroken tot ['
|| v_prs_srtperslid_omschrijving
|| ']'
);
ELSE
IF (v_prs_srtperslid_omschrijving IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog
(p_import_key,
'E',
v_aanduiding || 'Functie onbekend',
'Functie is verplicht; regel wordt overgeslagen!'
);
END IF;
END IF;
COMMIT;
--
v_errorhint := 'Ongeldige datum in dienst';
v_prs_perslid_ingangsdatum := TRIM (v_prs_perslid_ingangsdatum);
IF v_prs_perslid_ingangsdatum IS NOT NULL
THEN
BEGIN
v_prs_perslid_ingangs_date :=
TO_DATE (v_prs_perslid_ingangsdatum, 'dd-mm-yyyy');
EXCEPTION
WHEN OTHERS
THEN
v_ongeldig := 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!'
);
COMMIT;
END;
ELSE
v_prs_perslid_ingangs_date := NULL;
END IF;
--
v_errorhint := 'Ongeldige datum uit dienst';
v_prs_perslid_einddatum := TRIM (v_prs_perslid_einddatum);
IF v_prs_perslid_einddatum IS NOT NULL
THEN
BEGIN
v_prs_perslid_eind_date :=
TO_DATE (v_prs_perslid_einddatum, 'dd-mm-yyyy');
EXCEPTION
WHEN OTHERS
THEN
v_ongeldig := 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!'
);
COMMIT;
END;
ELSE
v_prs_perslid_eind_date := NULL;
END IF;
--
v_errorhint := 'Ongeldige dienstverbandcode';
v_dienstverbandcode := TRIM (v_dienstverbandcode);
IF v_dienstverbandcode IS NOT NULL
THEN
BEGIN
v_dienstverbandcode_n :=
fac.safe_to_number (v_dienstverbandcode);
IF v_dienstverbandcode_n NOT BETWEEN 0 AND 99
THEN
v_dienstverbandcode_n := NULL;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errorhint,
'Dienstverbandcode niet ingelezen'
);
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_ongeldig := 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!'
);
COMMIT;
END;
END IF;
--
v_errorhint := 'Ongeldig dienstverbandgebouw';
v_alg_gebouw_code := TRIM (v_alg_gebouw_code);
IF LENGTH (v_alg_gebouw_code) > 10
THEN
v_alg_gebouw_code := SUBSTR (v_alg_gebouw_code, 1, 10);
fac.imp_writelog
(p_import_key,
'W',
v_aanduiding || 'Dienstverbandgebouw te lang',
'Dienstverbandgebouw wordt afgebroken tot ['
|| v_alg_gebouw_code
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldig afdelingsdomein';
v_afdelingsdomein := UPPER (TRIM (v_afdelingsdomein));
BEGIN
IF v_afdelingsdomein IS NOT NULL
AND ( LENGTH (v_afdelingsdomein) <> 2
OR SUBSTR (v_afdelingsdomein || '--', 1, 1) NOT
BETWEEN 'A'
AND 'Z'
OR SUBSTR (v_afdelingsdomein || '--', 2, 1) NOT
BETWEEN '0'
AND '9'
)
THEN
v_afdelingsdomein := NULL;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errorhint,
'Afdelingsdomein niet ingelezen'
);
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_ongeldig := 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!'
);
COMMIT;
END;
--
v_errorhint := 'Ongeldig telefoonnummer';
v_prs_perslid_telefoonnr := TRIM (v_prs_perslid_telefoonnr);
IF LENGTH (v_prs_perslid_telefoonnr) > 15
THEN
v_prs_perslid_telefoonnr :=
SUBSTR (v_prs_perslid_telefoonnr, 1, 15);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Telefoonnummer te lang',
'Telefoonnummer wordt afgebroken tot ['
|| v_prs_perslid_telefoonnr
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldig e-mailadres';
v_prs_perslid_email := TRIM (v_prs_perslid_email);
IF LENGTH (v_prs_perslid_email) > 50
THEN
v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 50);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'E-mailadres te lang',
'E-mailadres wordt afgebroken tot ['
|| v_prs_perslid_email
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige loginnaam';
v_prs_perslid_oslogin := TRIM (v_prs_perslid_oslogin);
IF LENGTH (v_prs_perslid_oslogin) > 30
THEN
v_prs_perslid_oslogin := SUBSTR (v_prs_perslid_oslogin, 1, 30);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Loginnaam te lang',
'Loginnaam wordt afgebroken tot ['
|| v_prs_perslid_oslogin
|| ']'
);
COMMIT;
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errorhint :=
'Fout bij toevoegen regel aan importtabel DENB_IMP_PRS';
INSERT INTO denb_imp_prs
(prs_perslid_nr, prs_perslid_naam,
prs_perslid_tussenvoegsel,
prs_perslid_voorletters,
prs_perslid_voornaam, prs_afdeling_naam,
prs_srtperslid_omschrijving,
prs_perslid_ingangsdatum,
prs_perslid_einddatum, dienstverbandcode,
alg_gebouw_code, afdelingsdomein,
prs_perslid_telefoonnr,
prs_perslid_email, prs_perslid_oslogin
)
VALUES (v_prs_perslid_nr, v_prs_perslid_naam,
v_prs_perslid_tussenvoegsel,
v_prs_perslid_voorletters,
v_prs_perslid_voornaam, v_prs_afdeling_naam,
v_prs_srtperslid_omschrijving,
v_prs_perslid_ingangs_date,
v_prs_perslid_eind_date, v_dienstverbandcode,
v_alg_gebouw_code, v_afdelingsdomein,
v_prs_perslid_telefoonnr,
v_prs_perslid_email, v_prs_perslid_oslogin
);
COMMIT;
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog
(p_import_key,
'E',
v_aanduiding || v_errormsg,
'Ingelezen regel kan niet worden weggeschreven!'
);
COMMIT;
END;
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',
'Persoon: aantal ingelezen regels: '
|| TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (p_import_key,
'S',
'Persoon: aantal ongeldige importregels: '
|| TO_CHAR (v_count_tot - v_count_import),
''
);
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint
);
COMMIT;
END denb_import_prs;
/
/* Formatted on 24-5-2016 10:50:10 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE denb_update_prs (p_import_key IN NUMBER)
IS
-- LET OP: moet idem zijn als declaratie bij denb_import_prs
c_persoon_inactief VARCHAR2 (30) := 'INACTIEF: ';
-- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een nummer
c_max_delta_percentage NUMBER (10) := 20;
-- District waar personen in geplaatst worden (met locaties/gebouwen zichtbaar voor FEs)
c_district_key_zfe NUMBER (10) := 1; -- ZichtbaarFE
-- Gebouw waar personen in geplaatst worden (indien gebouw volgens beaufort onzichtbaar)
c_gebouw_key_anders NUMBER (10) := 2601;
-- Ruimte waar personen in geplaatst worden (indien nog niet geplaatst in andere ruimte)
c_ruimte_nr VARCHAR2 (10) := '000';
-- Groep waar personen in geplaatst worden (indien nog geen groep)
c_groep_upper VARCHAR2 (30) := '_DEFAULT';
c_profiel_omschrijving VARCHAR2 (30) := 'DEFAULT';
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_prs_import NUMBER (10); -- #actieve personen na import!
v_count_prs_actual NUMBER (10); -- #actieve personen voor import!
v_count_tot NUMBER (10);
v_count_error NUMBER (10);
v_count NUMBER (10);
--
v_profiel_key NUMBER (10);
v_srtperslid_key NUMBER (10);
v_afdeling_key NUMBER (10);
v_perslid_key NUMBER (10);
v_kenmerklink_key NUMBER (10);
v_district_key NUMBER (10);
v_gebouw_key NUMBER (10);
v_verdieping_key NUMBER (10);
v_ruimte_key NUMBER (10);
v_ruimte_nr VARCHAR2 (10);
v_groep_key NUMBER (10);
-- Let op! Personen die niet meer in dienst zijn -> niet in denb_imp_prs!
-- Dubbele nummers? Dan wordt iemand mogelijk niet verwijderd/INACTIEF!
CURSOR cdelprs
IS
SELECT p.prs_perslid_key,
p.prs_perslid_nr,
p.prs_perslid_naam,
p.prs_perslid_voornaam
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_nr IS NOT NULL
AND NOT EXISTS
(SELECT 1
FROM denb_imp_prs ip
WHERE UPPER (ip.prs_perslid_nr) = UPPER (p.prs_perslid_nr));
-- Let op! Personen die niet meer in dienst zijn -> niet in denb_imp_prs!
CURSOR csrtperslid
IS
SELECT MIN (prs_perslid_nr) prs_perslid_nr,
MIN (prs_perslid_naam) prs_perslid_naam,
MIN (prs_perslid_voornaam) prs_perslid_voornaam,
MIN (prs_srtperslid_omschrijving) prs_srtperslid_omschrijving
FROM denb_imp_prs
GROUP BY UPPER (prs_srtperslid_omschrijving);
-- Let op! Personen die niet meer in dienst zijn -> niet in denb_imp_prs!
-- Dubbele nummers? Dan wordt slechts 1 set persoongegevens toegevoegd!
-- Nieuwe <20>n bestaande WXL-ers worden/blijven geplaatst in 'Default WXL'-
-- groep en all<6C><6C>n nieuwe WXL-ers wordt '_Default'-groep afgenomen!
CURSOR cperslid
IS
SELECT ip.*, DECODE (a.prs_afdeling_naam, NULL, 0, 1) wxl
FROM denb_imp_prs ip,
(SELECT a.prs_afdeling_naam
FROM prs_afdeling a, prs_v_afdeling_boom ab
WHERE prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = 721) a -- WXL
WHERE ip.prs_afdeling_naam = a.prs_afdeling_naam(+);
-- Let op! Personen die niet meer in dienst zijn -> niet in denb_imp_prs!
-- Dubbele nummers? Dan krijgt iemand mogelijk de verkeerde plaats!
CURSOR cwp
IS
SELECT p.*,
ip.alg_gebouw_code,
SUBSTR (ip.afdelingsdomein, 2, 1) || SUBSTR (ip.afdelingsdomein, 1, 1)
afdelingsdomein
FROM denb_imp_prs ip, prs_v_aanwezigperslid p
WHERE UPPER (ip.prs_perslid_nr) = UPPER (p.prs_perslid_nr);
-- Alle actieve personen met personeelsnummer (ie. de import-doelgroep) zonder een werkplek
CURSOR cnowp
IS
SELECT p.prs_perslid_key,
p.prs_perslid_nr,
p.prs_perslid_naam,
p.prs_perslid_voornaam
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_nr IS NOT NULL
AND p.prs_perslid_naam NOT LIKE c_persoon_inactief || '%'
AND NOT EXISTS (SELECT 1
FROM prs_perslidwerkplek pw
WHERE pw.prs_perslid_key = p.prs_perslid_key);
-- Alle aanwezige personen met personeelsnummer (ie. de import-doelgroep) niet in een groep
CURSOR cnogroup
IS
SELECT p.prs_perslid_key,
p.prs_perslid_nr,
p.prs_perslid_naam,
p.prs_perslid_voornaam
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_nr IS NOT NULL
AND NOT EXISTS (SELECT 1
FROM fac_gebruikersgroep g
WHERE g.prs_perslid_key = p.prs_perslid_key);
BEGIN
SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
INTO v_count_prs_import
FROM prs_v_aanwezigperslid p, denb_imp_prs ip
WHERE p.prs_perslid_nr IS NOT NULL
AND UPPER (p.prs_perslid_nr) = UPPER (ip.prs_perslid_nr);
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
-- Geldig importbestand wat betreft aantal personen
v_errorhint := 'Fout bij bepalen profiel';
SELECT MAX (fac_profiel_key), COUNT ( * )
INTO v_profiel_key, v_count
FROM fac_profiel
WHERE UPPER (TRIM (fac_profiel_omschrijving)) = c_profiel_omschrijving;
IF (v_count = 0)
THEN
fac.imp_writelog (
p_import_key,
'I',
'Standaard profiel ['
|| c_profiel_omschrijving
|| '] niet gevonden.',
'Personen zonder profiel kunnen niet worden gekoppeld aan een profiel.');
COMMIT;
END IF;
FOR recdelprs IN cdelprs
LOOP
BEGIN
v_aanduiding :=
'['
|| recdelprs.prs_perslid_nr
|| '|'
|| recdelprs.prs_perslid_naam
|| '|'
|| recdelprs.prs_perslid_voornaam
|| '] ';
v_errorhint := 'Fout bij bepalen verplichtingen';
-- Heeft persoon actuele/toekomstige verplichtingen?
SELECT COUNT ( * )
INTO v_count
FROM prs_perslid p, prs_v_verplichting_keys r
WHERE p.prs_perslid_key = r.prs_perslid_key
AND p.prs_perslid_key = recdelprs.prs_perslid_key;
IF v_count = 0
THEN
v_errorhint := 'Fout bij verwijderen persoon';
UPDATE prs_perslid
SET prs_perslid_verwijder = SYSDATE
WHERE prs_perslid_key = recdelprs.prs_perslid_key;
fac.imp_writelog (
p_import_key,
'I',
'Persoon met nummer ['
|| recdelprs.prs_perslid_nr
|| '] en naam ['
|| recdelprs.prs_perslid_naam
|| ', '
|| recdelprs.prs_perslid_voornaam
|| '] is verwijderd',
'Persoon is verwijderd');
COMMIT;
ELSE
-- Staat persoon INACTIEF?
SELECT COUNT ( * )
INTO v_count
FROM prs_perslid p
WHERE p.prs_perslid_naam LIKE c_persoon_inactief || '%'
AND p.prs_perslid_key = recdelprs.prs_perslid_key;
IF v_count = 0
THEN
v_errorhint := 'Fout bij INACTIEF maken persoon';
-- Persoon INACTIEF maken (update naam + reset oslogin)
UPDATE prs_perslid
SET prs_perslid_naam =
SUBSTR (c_persoon_inactief || prs_perslid_naam,
1,
30),
prs_perslid_oslogin = NULL
WHERE prs_perslid_key = recdelprs.prs_perslid_key;
fac.imp_writelog (
p_import_key,
'I',
'Persoon met nummer ['
|| recdelprs.prs_perslid_nr
|| '] en naam ['
|| recdelprs.prs_perslid_naam
|| ', '
|| recdelprs.prs_perslid_voornaam
|| '] is INACTIEF gemaakt',
'Persoon is INACTIEF gemaakt');
ELSE
v_errorhint := 'Fout bij INACTIEF houden persoon';
-- Persoon INACTIEF houden (reset oslogin; indien handmatig INACTIEF gemaakt)
UPDATE prs_perslid
SET prs_perslid_oslogin = NULL
WHERE prs_perslid_naam LIKE c_persoon_inactief || '%'
AND prs_perslid_oslogin IS NOT NULL;
fac.imp_writelog (
p_import_key,
'I',
'Persoon met nummer ['
|| recdelprs.prs_perslid_nr
|| '] en naam ['
|| recdelprs.prs_perslid_naam
|| ', '
|| recdelprs.prs_perslid_voornaam
|| '] is INACTIEF',
'Persoon is INACTIEF');
END IF;
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint);
COMMIT;
END;
END LOOP;
v_count_tot := 0;
v_count_error := 0;
FOR recsrtperslid IN csrtperslid
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
'['
|| recsrtperslid.prs_perslid_nr
|| '|'
|| recsrtperslid.prs_perslid_naam
|| '|'
|| recsrtperslid.prs_perslid_voornaam
|| '|'
|| recsrtperslid.prs_srtperslid_omschrijving
|| '] ';
v_errorhint := 'Fout bij bepalen functie';
SELECT COUNT ( * )
INTO v_count
FROM prs_v_aanwezigsrtperslid
WHERE UPPER (prs_srtperslid_omschrijving) =
UPPER (recsrtperslid.prs_srtperslid_omschrijving);
IF v_count = 0
THEN
v_errorhint := 'Fout bij toevoegen functie';
INSERT INTO prs_srtperslid (prs_srtperslid_omschrijving)
VALUES (recsrtperslid.prs_srtperslid_omschrijving);
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint);
COMMIT;
END;
END LOOP;
fac.imp_writelog (
p_import_key,
'S',
'Functie: verwerkte regels zonder foutmelding: '
|| TO_CHAR (v_count_tot - v_count_error),
'');
fac.imp_writelog (
p_import_key,
'S',
'Functie: verwerkte regels met foutmelding: '
|| TO_CHAR (v_count_error),
'');
COMMIT;
v_count_tot := 0;
v_count_error := 0;
FOR recperslid IN cperslid
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
'['
|| recperslid.prs_perslid_nr
|| '|'
|| recperslid.prs_perslid_naam
|| '|'
|| recperslid.prs_perslid_voornaam
|| '] ';
v_errorhint :=
'Fout bij bepalen functie ['
|| recperslid.prs_srtperslid_omschrijving
|| ']';
SELECT prs_srtperslid_key
INTO v_srtperslid_key
FROM prs_v_aanwezigsrtperslid
WHERE UPPER (prs_srtperslid_omschrijving) = UPPER (recperslid.prs_srtperslid_omschrijving);
v_errorhint :=
'Fout bij bepalen afdeling ['
|| recperslid.prs_afdeling_naam
|| ']';
SELECT prs_afdeling_key
INTO v_afdeling_key
FROM prs_afdeling
WHERE prs_afdeling_upper = UPPER (recperslid.prs_afdeling_naam)
AND prs_afdeling_verwijder IS NULL;
v_errorhint := 'Fout bij bepalen persoon';
SELECT COUNT ( * ), MAX (prs_perslid_key)
INTO v_count, v_perslid_key
FROM prs_v_aanwezigperslid
WHERE UPPER (prs_perslid_nr) = UPPER (recperslid.prs_perslid_nr);
IF v_count > 1
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || 'Kan persoon niet 1-duidig bepalen',
v_errorhint);
COMMIT;
ELSE
IF v_count = 0
THEN
v_errorhint := 'Fout bij toevoegen persoon';
INSERT INTO prs_perslid (prs_perslid_module,
prs_srtperslid_key,
prs_afdeling_key,
prs_perslid_nr,
prs_perslid_naam,
prs_perslid_voorletters,
prs_perslid_tussenvoegsel,
prs_perslid_voornaam,
prs_perslid_telefoonnr,
prs_perslid_email,
prs_perslid_oslogin,
prs_perslid_ingangsdatum,
prs_perslid_einddatum,
fac_profiel_key)
VALUES ('PRS',
v_srtperslid_key,
v_afdeling_key,
recperslid.prs_perslid_nr,
recperslid.prs_perslid_naam,
recperslid.prs_perslid_voorletters,
recperslid.prs_perslid_tussenvoegsel,
recperslid.prs_perslid_voornaam,
recperslid.prs_perslid_telefoonnr,
recperslid.prs_perslid_email,
recperslid.prs_perslid_oslogin,
recperslid.prs_perslid_ingangsdatum,
recperslid.prs_perslid_einddatum,
v_profiel_key)
RETURNING prs_perslid_key
INTO v_perslid_key;
COMMIT;
-- Nieuwe WXL-ers de '_Default'-groep afnemen en plaatsen in
-- de 'Default WXL'-groep!
IF recperslid.wxl = 1
THEN
v_errorhint := 'Fout bij afnemen _Default';
DELETE FROM fac_gebruikersgroep
WHERE fac_groep_key = 1 AND prs_perslid_key = v_perslid_key;
v_errorhint := 'Fout bij toekennen Default WXL';
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
VALUES (481, v_perslid_key);
END IF;
ELSE
v_errorhint := 'Fout bij wijzigen persoon';
UPDATE prs_perslid
SET prs_srtperslid_key = v_srtperslid_key,
prs_afdeling_key = v_afdeling_key,
prs_perslid_nr = recperslid.prs_perslid_nr,
prs_perslid_naam = recperslid.prs_perslid_naam,
prs_perslid_voorletters = recperslid.prs_perslid_voorletters,
prs_perslid_tussenvoegsel = recperslid.prs_perslid_tussenvoegsel,
prs_perslid_voornaam = recperslid.prs_perslid_voornaam,
prs_perslid_telefoonnr =
COALESCE (recperslid.prs_perslid_telefoonnr, prs_perslid_telefoonnr),
prs_perslid_email =
COALESCE (recperslid.prs_perslid_email, prs_perslid_email),
prs_perslid_oslogin = recperslid.prs_perslid_oslogin,
prs_perslid_ingangsdatum = recperslid.prs_perslid_ingangsdatum,
prs_perslid_einddatum = recperslid.prs_perslid_einddatum,
fac_profiel_key =
COALESCE (fac_profiel_key, v_profiel_key)
WHERE prs_perslid_key = v_perslid_key;
COMMIT;
-- Bestaande WXL-ers behouden in de 'Default WXL'-groep!
IF recperslid.wxl = 1
THEN
v_errorhint := 'Fout bij behouden Default WXL';
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
SELECT 481, v_perslid_key
FROM DUAL
WHERE NOT EXISTS
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key = 481 AND prs_perslid_key = v_perslid_key);
END IF;
END IF;
COMMIT;
IF recperslid.dienstverbandcode IS NOT NULL
THEN
v_errorhint := 'Fout bij bepalen dienstverbandcode';
SELECT COUNT ( * ), MAX (prs_kenmerklink_key)
INTO v_count, v_kenmerklink_key
FROM prs_v_aanwezigkenmerklink
WHERE prs_link_key = v_perslid_key
AND prs_kenmerklink_niveau = 'P'
AND prs_kenmerk_key = 1001; -- Dienstverbandcode
IF v_count = 0
THEN
v_errorhint := 'Fout bij toevoegen dienstverbandcode';
INSERT INTO prs_kenmerklink (prs_link_key,
prs_kenmerklink_niveau,
prs_kenmerk_key,
prs_kenmerklink_waarde)
VALUES (v_perslid_key,
'P',
1001,
recperslid.dienstverbandcode);
ELSE -- v_count = 1
v_errorhint := 'Fout bij wijzigen dienstverbandcode';
UPDATE prs_kenmerklink
SET prs_kenmerklink_waarde = recperslid.dienstverbandcode
WHERE prs_kenmerklink_key = v_kenmerklink_key;
END IF;
COMMIT;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint);
COMMIT;
END;
END LOOP;
fac.imp_writelog (
p_import_key,
'S',
'Persoon: verwerkte regels zonder foutmelding: '
|| TO_CHAR (v_count_tot - v_count_error),
'');
fac.imp_writelog (
p_import_key,
'S',
'Persoon: verwerkte regels met foutmelding: '
|| TO_CHAR (v_count_error),
'');
COMMIT;
v_count_tot := 0;
v_count_error := 0;
FOR recwp IN cwp
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
'['
|| recwp.prs_perslid_nr
|| '|'
|| recwp.prs_perslid_naam
|| '|'
|| recwp.prs_perslid_voornaam
|| '|'
|| recwp.alg_gebouw_code
|| '|'
|| recwp.afdelingsdomein
|| '] ';
v_errorhint := 'Fout bij bepalen persoon';
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_v_aanwezigperslid
WHERE UPPER (prs_perslid_nr) = UPPER (recwp.prs_perslid_nr);
--v_district_key := NULL;
--v_gebouw_key := NULL;
v_errorhint := 'Fout bij bepalen gebouw';
SELECT COUNT ( * ), MAX (l.alg_district_key), MAX (g.alg_gebouw_key)
INTO v_count, v_district_key, v_gebouw_key
FROM alg_v_aanweziggebouw g, alg_locatie l
WHERE UPPER (g.alg_gebouw_code) = UPPER (recwp.alg_gebouw_code)
AND g.alg_locatie_key = l.alg_locatie_key;
IF COALESCE (v_district_key, -1) != c_district_key_zfe
THEN
IF v_count = 0
THEN
fac.imp_writelog (
p_import_key,
'I',
v_aanduiding || 'Gebouw volgens import niet in FACILITOR',
v_errorhint);
COMMIT;
END IF;
v_gebouw_key := c_gebouw_key_anders;
END IF;
v_verdieping_key := NULL;
v_ruimte_key := NULL;
v_errorhint := 'Fout bij bepalen verdieping';
IF recwp.afdelingsdomein IS NOT NULL
THEN
v_ruimte_nr := recwp.afdelingsdomein;
SELECT COUNT ( * ), MAX (alg_verdieping_key)
INTO v_count, v_verdieping_key
FROM alg_v_aanwezigverdieping
WHERE alg_gebouw_key = v_gebouw_key
AND alg_verdieping_volgnr = fac.safe_to_number (SUBSTR (v_ruimte_nr, 1, 1));
ELSE
v_ruimte_nr := c_ruimte_nr;
SELECT COUNT ( * ), MAX (alg_verdieping_key)
INTO v_count, v_verdieping_key
FROM alg_v_aanwezigverdieping
WHERE alg_gebouw_key = v_gebouw_key
AND alg_verdieping_volgnr =
(SELECT MIN (v.alg_verdieping_volgnr)
FROM alg_v_aanwezigverdieping v
WHERE v.alg_gebouw_key = v_gebouw_key
AND v.alg_verdieping_volgnr >= 0);
END IF;
IF v_count = 0 -- ELSE v_count = 1
THEN
v_errorhint := 'Fout bij toevoegen verdieping';
INSERT INTO alg_verdieping (alg_gebouw_key, alg_verdieping_volgnr, alg_verdieping_code, alg_verdieping_omschrijving)
VALUES (v_gebouw_key, 0, '0', 'Verdieping 0')
RETURNING alg_verdieping_key
INTO v_verdieping_key;
COMMIT;
END IF;
v_errorhint := 'Fout bij bepalen ruimte';
SELECT COUNT ( * ), MAX (alg_ruimte_key)
INTO v_count, v_ruimte_key
FROM alg_v_aanwezigruimte
WHERE alg_verdieping_key = v_verdieping_key
AND alg_ruimte_nr = v_ruimte_nr;
IF v_count = 0
THEN
v_errorhint := 'Fout bij toevoegen ruimte';
INSERT INTO alg_ruimte (alg_verdieping_key, alg_srtruimte_key, alg_ruimte_nr)
VALUES (v_verdieping_key, 101, v_ruimte_nr) -- Domein/Fictief
RETURNING alg_ruimte_key
INTO v_ruimte_key;
COMMIT;
END IF;
v_errorhint := 'Fout bij bepalen of persoon in gebouw een werkplek heeft';
SELECT COUNT ( * )
INTO v_count
FROM prs_perslidwerkplek pw, prs_werkplek w, alg_ruimte r, alg_verdieping v
WHERE pw.prs_perslid_key = v_perslid_key
AND pw.prs_werkplek_key = w.prs_werkplek_key
AND w.prs_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = v_gebouw_key;
-- Als persoon in gebouw reeds een werkplek heeft en de nieuwe zou
-- in de default ruimte zijn (want ongedefinieerd bij import!), dan
-- wordt onderstaande overgeslagen.
IF (v_count = 0 OR v_ruimte_nr != c_ruimte_nr)
THEN
v_errorhint := 'Fout bij verhuizen naar nieuwe werkplek';
PRS.movetoruimte (v_perslid_key, v_ruimte_key, 'G');
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint);
COMMIT;
END;
END LOOP;
fac.imp_writelog (
p_import_key,
'S',
'Werkplek: verwerkte regels zonder foutmelding: '
|| TO_CHAR (v_count_tot - v_count_error),
'');
fac.imp_writelog (
p_import_key,
'S',
'Werkplek: verwerkte regels met foutmelding: '
|| TO_CHAR (v_count_error),
'');
COMMIT;
FOR recnowp IN cnowp
LOOP
BEGIN
fac.imp_writelog (
p_import_key,
'I',
'Persoon met nummer ['
|| recnowp.prs_perslid_nr
|| '] en naam ['
|| recnowp.prs_perslid_naam
|| ', '
|| recnowp.prs_perslid_voornaam
|| '] heeft geen werkplek',
'Geen werkplek');
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint);
COMMIT;
END;
END LOOP;
FOR recnogroup IN cnogroup
LOOP
BEGIN
v_aanduiding :=
'['
|| recnogroup.prs_perslid_nr
|| '|'
|| recnogroup.prs_perslid_naam
|| '|'
|| recnogroup.prs_perslid_voornaam
|| '] ';
v_errorhint := 'Fout bij bepalen groep [' || c_groep_upper || ']';
SELECT fac_groep_key
INTO v_groep_key
FROM fac_groep
WHERE fac_groep_upper = c_groep_upper;
v_errorhint := 'Fout bij koppelen persoon aan groep [' || c_groep_upper || ']';
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
VALUES (v_groep_key, recnogroup.prs_perslid_key);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint);
COMMIT;
END;
END LOOP;
-- Verwijder ongebruikte functies; deze import bepaalt de functies!
DELETE FROM prs_srtperslid sp
WHERE NOT EXISTS
(SELECT 1
FROM prs_perslid p
WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key);
COMMIT;
ELSE
fac.imp_writelog (
p_import_key,
'E',
'Verschil tussen het actuele aantal en het te importeren aantal personen te groot; zie specificatie!',
'- max. verschilpercentage = ['
|| TO_CHAR (c_max_delta_percentage)
|| '%] <br> '
|| '- #personen importbestand = ['
|| TO_CHAR (v_count_prs_import)
|| '] <br> '
|| '- #personen Facilitor = ['
|| TO_CHAR (v_count_prs_actual)
|| ']');
COMMIT;
END IF; -- Geldig importbestand wat betreft aantal inserts
END denb_update_prs;
/
/* Formatted on 7-6-2010 18:58:58 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW DENB_V_RAP_RES_MAANDTOTALEN
(
FCLT_F_MAAND,
ORGANISATIE,
HIDE_F_TIMESTAMP,
DAG,
VAN,
TOT,
RUIMTE,
OMSCHRIJVING,
AANVRAGER,
GASTHEER,
RESNR,
GEBOEKT_OP,
AFGEMELD_OP,
KOSTENPLAATS,
PERS,
PRIJS_PP,
PRIJS_TOT
)
AS
SELECT DECODE (b.afgemeld, 0, TO_CHAR (a.van, 'yyyy-mm'), 'Open') maand,
a.organisatie,
a.van hide_ts,
TO_CHAR (a.van, 'dd-mm-yyyy') dag,
TO_CHAR (a.van, 'hh24:mi') van,
TO_CHAR (a.tot, 'hh24:mi') tot,
a.ruimte,
a.omschrijving,
a.aanvrager,
a.gastheer,
a.resnr,
a.geboekt_op,
a.afgemeld_op,
a.kostenplaats,
TO_CHAR (a.personen),
REPLACE (
TO_CHAR (ROUND (b.tot / COALESCE (a.personen, 1), 2),
'999999990D99'),
'.',
','
)
prijs_pp,
ROUND (b.tot, 2) prijs_tot
FROM (SELECT rr.res_rsv_ruimte_key,
a.prs_afdeling_omschrijving organisatie,
rr.res_rsv_ruimte_van van,
rr.res_rsv_ruimte_tot tot,
r.res_ruimte_nr ruimte,
rr.res_rsv_ruimte_omschrijving omschrijving,
pa.prs_perslid_naam_full aanvrager,
pg.prs_perslid_naam_full gastheer,
rr.res_reservering_key
|| '/'
|| rr.res_rsv_ruimte_volgnr
resnr,
TO_CHAR (rr.res_rsv_ruimte_aanmaak, 'dd-mm-yyyy')
geboekt_op,
TO_CHAR (
fac.gettrackingdate ('RESAFM',
rr.res_rsv_ruimte_key),
'dd-mm-yyyy'
)
afgemeld_op,
k.prs_kostenplaats_nr kostenplaats,
rr.res_rsv_ruimte_bezoekers personen
FROM res_v_aanwezigrsv_ruimte rr,
res_ruimte_opstelling ro,
res_ruimte r,
prs_v_perslid_fullnames_all pa,
prs_perslid p,
prs_v_perslid_fullnames_all pg,
prs_afdeling a,
prs_kostenplaats k
WHERE rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = r.res_ruimte_key
AND rr.res_rsv_ruimte_contact_key =
pa.prs_perslid_key
AND rr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_perslid_key = pg.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_kostenplaats_key =
k.prs_kostenplaats_key(+)) a
LEFT JOIN
( SELECT ra.res_rsv_ruimte_key,
SUM (DECODE (ra.res_status_bo_key, 2, 1, 0))
afgemeld,
SUM (res.getartikelprijs (ra.res_rsv_artikel_key))
tot
FROM res_v_aanwezigrsv_artikel ra
GROUP BY ra.res_rsv_ruimte_key) b
ON a.res_rsv_ruimte_key = b.res_rsv_ruimte_key
WHERE COALESCE (b.tot, 0) > 0
UNION ALL
SELECT DECODE (b.afgemeld, 0, TO_CHAR (a.van, 'yyyy-mm'), 'Open') maand,
a.organisatie,
a.van hide_ts,
TO_CHAR (a.van, 'dd-mm-yyyy') dag,
TO_CHAR (a.van, 'hh24:mi') van,
TO_CHAR (a.tot, 'hh24:mi') tot,
a.ruimte,
a.omschrijving,
a.aanvrager,
a.gastheer,
a.resnr,
a.geboekt_op,
a.afgemeld_op,
a.kostenplaats,
TO_CHAR (a.personen),
REPLACE (
TO_CHAR (ROUND (b.tot / COALESCE (a.personen, 1), 2),
'999999990D99'),
'.',
','
)
prijs_pp,
ROUND (b.tot, 2) prijs_tot
FROM (SELECT rr.res_rsv_ruimte_key,
a.prs_afdeling_omschrijving organisatie,
rr.res_rsv_ruimte_van van,
rr.res_rsv_ruimte_tot tot,
r.alg_ruimte_nr
|| ' - '
|| r.alg_ruimte_omschrijving
ruimte,
rr.res_rsv_ruimte_omschrijving omschrijving,
pa.prs_perslid_naam_full aanvrager,
pg.prs_perslid_naam_full gastheer,
rr.res_reservering_key
|| '/'
|| rr.res_rsv_ruimte_volgnr
resnr,
TO_CHAR (rr.res_rsv_ruimte_aanmaak, 'dd-mm-yyyy')
geboekt_op,
TO_CHAR (
fac.gettrackingdate ('RESAFM',
rr.res_rsv_ruimte_key),
'dd-mm-yyyy'
)
afgemeld_op,
k.prs_kostenplaats_nr kostenplaats,
rr.res_rsv_ruimte_bezoekers personen
FROM res_v_aanwezigrsv_ruimte rr,
alg_ruimte r,
prs_v_perslid_fullnames_all pa,
prs_perslid p,
prs_v_perslid_fullnames_all pg,
prs_afdeling a,
prs_kostenplaats k
WHERE rr.alg_ruimte_key = r.alg_ruimte_key
AND rr.res_rsv_ruimte_contact_key =
pa.prs_perslid_key
AND rr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_perslid_key = pg.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_kostenplaats_key =
k.prs_kostenplaats_key(+)) a
LEFT JOIN
( SELECT ra.res_rsv_ruimte_key,
SUM (DECODE (ra.res_status_bo_key, 2, 1, 0))
afgemeld,
SUM (res.getartikelprijs (ra.res_rsv_artikel_key))
tot
FROM res_v_aanwezigrsv_artikel ra
GROUP BY ra.res_rsv_ruimte_key) b
ON a.res_rsv_ruimte_key = b.res_rsv_ruimte_key
WHERE COALESCE (b.tot, 0) > 0;
/* Formatted on 7-6-2010 19:06:46 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW DENB_V_RAP_BES_MAANDTOTALEN
(
FCLT_F_MAAND,
FCLT_F_CATALOGUS,
FCLT_F_SECTOR,
ORGANISATIE,
FCLT_F_KOSTENPLAATS,
AANVRAGER,
BESTELNR,
BESTELD_OP,
AFGEMELD_OP,
ARTIKEL,
AANTAL,
PRIJS,
PRIJS_TOT,
STATUS
)
AS
SELECT DECODE (
b.bes_bestelling_status,
6,
TO_CHAR (
COALESCE (
fac.gettrackingdate ('BESOTV', b.bes_bestelling_key),
bo.bes_bestelopdr_leverdatum
),
'yyyy-mm'
),
'Lopend'
)
maand,
d.ins_discipline_omschrijving catalogus,
a1.prs_afdeling_omschrijving sector,
a2.prs_afdeling_omschrijving organisatie,
k.prs_kostenplaats_nr kostenplaats,
pf.prs_perslid_naam_full aanvrager,
TO_CHAR (b.bes_bestelling_key) bestelnr,
TO_CHAR (b.bes_bestelling_datum, 'dd-mm-yyyy') besteld_op,
TO_CHAR (
COALESCE (
fac.gettrackingdate ('BESOTV', b.bes_bestelling_key),
bo.bes_bestelopdr_leverdatum
),
'dd-mm-yyyy'
)
afgemeld_op,
sd.bes_srtdeel_omschrijving artikel,
TO_CHAR (bi.bes_bestelling_item_aantal) aantal,
REPLACE (TO_CHAR (bi.bes_bestelling_item_prijs), '.', ',') prijs,
(bi.bes_bestelling_item_aantal * bi.bes_bestelling_item_prijs)
prijs_tot,
s.bes_bestellingstatuses_omschr status
FROM bes_bestelling b,
bes_bestellingstatuses s,
bes_bestelling_item bi,
bes_bestelopdr_item boi,
bes_bestelopdr bo,
bes_srtdeel sd,
bes_srtgroep sg,
ins_tab_discipline d,
prs_perslid p,
prs_v_perslid_fullnames_all pf,
prs_v_afdeling_boom ab,
prs_v_afdeling a1,
prs_v_afdeling a2,
prs_kostenplaats k
WHERE b.bes_bestelling_status = s.bes_bestellingstatuses_key
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key(+)
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = d.ins_discipline_key
AND b.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = a1.prs_afdeling_key
AND ab.prs_afdeling_key = a2.prs_afdeling_key
AND a2.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND b.bes_bestelling_status <> 1;
/* Formatted on 1-2-2010 22:52:52 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW DENB_V_RAP_LOCKERGEGEVENS
(
FCLT_F_LOCKER_SOORT,
FCLT_F_LOCKER_NR,
LOCATIE,
GEBOUW,
VERDIEPING,
FCLT_F_RUIMTE,
FCLT_F_SLEUTEL_NR,
FCLT_F_GEBRUIKER,
AFDELING,
TELEFOON_NR
)
AS
SELECT a.locker_soort,
a.locker_nr,
a.locatie,
a.gebouw,
a.verdieping,
a.ruimte_nr,
b.sleutel_nr,
c.gebruiker,
c.afdeling,
c.telefoon_nr
FROM (SELECT d.ins_deel_key,
sd.ins_srtdeel_omschrijving locker_soort,
d.ins_deel_omschrijving locker_nr,
l.alg_locatie_code locatie,
g.alg_gebouw_code gebouw,
v.alg_verdieping_code verdieping,
r.alg_ruimte_nr ruimte_nr
FROM ins_v_aanwezigdeel d,
ins_srtdeel sd,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l
WHERE d.ins_srtdeel_key IN (261, 262, 263, 264, 265)
AND d.ins_alg_ruimte_type = 'R'
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND d.ins_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key) a
LEFT JOIN
(SELECT kd.ins_deel_key,
kd.ins_kenmerkdeel_waarde sleutel_nr
FROM ins_v_aanwezigkenmerkdeel kd
WHERE kd.ins_kenmerk_key = 1) b
ON a.ins_deel_key = b.ins_deel_key
LEFT JOIN
(SELECT kd.ins_deel_key,
fn.prs_perslid_naam_full gebruiker,
a.prs_afdeling_omschrijving afdeling,
p.prs_perslid_telefoonnr telefoon_nr
FROM ins_v_aanwezigkenmerk k,
ins_v_aanwezigkenmerkdeel kd,
prs_perslid p,
prs_v_perslid_fullnames_all fn,
prs_afdeling a
WHERE k.ins_srtkenmerk_key = 2
AND k.ins_kenmerk_key = kd.ins_kenmerk_key
AND kd.ins_kenmerkdeel_waarde = p.prs_perslid_key
AND p.prs_perslid_key = fn.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key) c
ON a.ins_deel_key = c.ins_deel_key;
/* Formatted on 18-10-2011 15:10:05 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW denb_v_rap_voorraad
(
hide_f_extern_diskey,
fclt_f_catalogus,
artikel_nr,
artikel_omschrijving,
artikel_prijs,
min_voorraad,
max_voorraad,
inkoop_geleverd, -- IN: daadwerkelijk geleverd
intern_besteld, -- UIT: in bestelling + besteld + geleverd
voorraad,
hide_f_voorraad_gisteren,
inkoop_besteld, -- IN: in bestelling + besteld
inkoop_gewenst -- IN: tot maximum als onder minimum
)
AS
SELECT extern.dkey,
COALESCE (intern.ins_discipline_omschrijving,
extern.ins_discipline_omschrijving),
extern.bes_srtdeel_nr,
COALESCE (intern.bes_srtdeel_omschrijving,
extern.bes_srtdeel_omschrijving),
COALESCE (intern.srtdeel_prijs, extern.srtdeel_prijs),
extern.vmin,
extern.vmax,
extern.geleverd,
intern.besteld,
extern.geleverd - COALESCE (intern.besteld, 0) voorraad,
extern.geleverd_gisteren - COALESCE (intern.besteld_gisteren, 0)
voorraad_gisteren,
extern.besteld,
CASE
WHEN ( (COALESCE (extern.besteld, 0)
+ COALESCE (extern.geleverd, 0))
- COALESCE (intern.besteld, 0)) < extern.vmin
THEN
extern.vmax
- ( (COALESCE (extern.besteld, 0)
+ COALESCE (extern.geleverd, 0))
- COALESCE (intern.besteld, 0))
ELSE
NULL
END
extern_gewenst
FROM (SELECT bd.ins_discipline_key dkey, -- INKOOP-key
sd.bes_srtdeel_nr, -- ext. artikelnr
sd.bes_srtdeel_omschrijving,
bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL)
srtdeel_prijs,
bd.ins_discipline_omschrijving, -- ext. catalogusnaam
sd.bes_srtdeel_voorraadmin vmin, -- ext. voorraadmin
sd.bes_srtdeel_voorraadmax vmax, -- ext. voorraadmax
(SELECT SUM (bi.bes_bestelling_item_aantal)
FROM bes_bestelling b, bes_bestelling_item bi
WHERE b.bes_bestelling_status IN (2, 3, 4, 5)
AND b.bes_bestelling_key =
bi.bes_bestelling_key
AND bi.bes_srtdeel_key =
sd.bes_srtdeel_key)
besteld,
(SELECT SUM (bi.bes_bestelling_item_aantal)
FROM bes_bestelling b, bes_bestelling_item bi
WHERE b.bes_bestelling_status > 5
AND b.bes_bestelling_key =
bi.bes_bestelling_key
AND bi.bes_srtdeel_key =
sd.bes_srtdeel_key)
geleverd,
(SELECT SUM (bi.bes_bestelling_item_aantal)
FROM bes_bestelling b, bes_bestelling_item bi
WHERE b.bes_bestelling_datum < TRUNC (SYSDATE)
AND b.bes_bestelling_status > 5
AND b.bes_bestelling_key =
bi.bes_bestelling_key
AND bi.bes_srtdeel_key =
sd.bes_srtdeel_key)
geleverd_gisteren
FROM bes_srtdeel sd,
bes_srtgroep g,
bes_discipline bd,
bes_disc_params dp
WHERE sd.bes_srtdeel_verwijder IS NULL
AND sd.bes_srtgroep_key = g.bes_srtgroep_key
AND g.ins_discipline_key = bd.ins_discipline_key
AND bd.ins_discipline_key =
dp.bes_ins_discipline_key
AND dp.bes_ins_discipline_key_inkoop IS NULL
AND bd.ins_discipline_key IN
(SELECT bes_ins_discipline_key_inkoop
FROM bes_disc_params
WHERE bes_ins_discipline_key_inkoop IS NOT NULL))
extern -- Inkoop artikelen uit externe catalogus!
FULL JOIN
(SELECT dp.bes_ins_discipline_key_inkoop dkey, -- INKOOP-key
sd.bes_srtdeel_nr, -- int. artikelnr
sd.bes_srtdeel_omschrijving,
bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL)
srtdeel_prijs,
bd.ins_discipline_omschrijving, -- int. catalogusnaam
(SELECT SUM (bi.bes_bestelling_item_aantal)
FROM bes_bestelling b, bes_bestelling_item bi
WHERE b.bes_bestelling_key =
bi.bes_bestelling_key
AND bi.bes_srtdeel_key =
sd.bes_srtdeel_key)
besteld,
(SELECT SUM (bi.bes_bestelling_item_aantal)
FROM bes_bestelling b, bes_bestelling_item bi
WHERE b.bes_bestelling_datum < TRUNC (SYSDATE)
AND b.bes_bestelling_key =
bi.bes_bestelling_key
AND bi.bes_srtdeel_key =
sd.bes_srtdeel_key)
besteld_gisteren
FROM bes_srtdeel sd,
bes_srtgroep g,
bes_discipline bd,
bes_disc_params dp
WHERE sd.bes_srtdeel_verwijder IS NULL
AND sd.bes_srtgroep_key = g.bes_srtgroep_key
AND g.ins_discipline_key = bd.ins_discipline_key
AND bd.ins_discipline_key =
dp.bes_ins_discipline_key
AND dp.bes_ins_discipline_key_inkoop IS NOT NULL)
intern -- Verkoop artikelen uit interne catalogus!
ON extern.dkey = intern.dkey
AND extern.bes_srtdeel_nr = intern.bes_srtdeel_nr;
-- Bevat CUST01/02-notificaties (eind van de dag) naar COMM-medewerkers dat
-- 1 of meer producten onder de minimale voorraad zitten!
/* Formatted on 10-12-2010 16:34:34 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW denb_v_noti_voorraadreminder
(
code,
sender,
receiver,
text,
KEY,
par1,
par2,
xkey
)
AS
SELECT DISTINCT sn.fac_srtnotificatie_code,
NULL,
gg.prs_perslid_key,
sn.fac_srtnotificatie_oms,
(SELECT fac_usrrap_key
FROM fac_usrrap
WHERE fac_usrrap_view_name = 'denb_v_rap_voorraad'),
NULL,
NULL,
NULL
FROM denb_v_rap_voorraad v,
fac_gebruikersgroep gg,
fac_srtnotificatie sn
WHERE v.voorraad < v.min_voorraad
AND v.hide_f_voorraad_gisteren >= v.min_voorraad
AND v.hide_f_extern_diskey = 561 -- Representatiegeschenken-cat.
AND gg.fac_groep_key = 61 -- COMM/Representatiegeschenken
AND sn.fac_srtnotificatie_code = 'CUST01'
UNION ALL
SELECT DISTINCT sn.fac_srtnotificatie_code,
NULL,
gg.prs_perslid_key,
sn.fac_srtnotificatie_oms,
(SELECT fac_usrrap_key
FROM fac_usrrap
WHERE fac_usrrap_view_name = 'denb_v_rap_voorraad'),
NULL,
NULL,
NULL
FROM denb_v_rap_voorraad v,
fac_gebruikersgroep gg,
fac_srtnotificatie sn
WHERE v.voorraad < v.min_voorraad
AND v.hide_f_voorraad_gisteren >= v.min_voorraad
AND v.hide_f_extern_diskey = 562 -- Bestuursgeschenken-cat.
AND gg.fac_groep_key = 121 -- COMM/Bestuursgeschenken
AND sn.fac_srtnotificatie_code = 'CUST02';
CREATE OR REPLACE VIEW DENB_V_THEMA_RUIMTE_RSV
(
ALG_RUIMTE_KEY,
WAARDE
)
AS
SELECT rar.alg_ruimte_key, MIN (DECODE (bezet.res_ruimte_opstel_key, NULL, 'Vrij', 'Bezet')) waarde
FROM res_ruimte_opstelling rro,
res_ruimte rr,
res_alg_ruimte rar,
(SELECT res_ruimte_opstel_key
FROM res_v_aanwezigrsv_ruimte
WHERE SYSDATE BETWEEN res_rsv_ruimte_van AND res_rsv_ruimte_tot)
bezet
WHERE rro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_ruimte_key = rar.res_ruimte_key
AND rar.res_alg_ruimte_verwijder IS NULL
AND rro.res_ruimte_opstel_key = bezet.res_ruimte_opstel_key(+)
GROUP BY rar.alg_ruimte_key;
CREATE OR REPLACE VIEW denb_v_res_deel_late
(
res_rsv_ruimte_key,
fclt_3d_discipline_key,
res_nr,
res_object,
res_object_opmerking,
van,
tot,
res_omschrijving,
contactpersoon,
gastheer,
activiteit
)
AS
SELECT rrr.res_rsv_ruimte_key,
dsc.ins_discipline_key,
res_reservering_key || '/' || res_rsv_ruimte_volgnr,
rd.res_deel_omschrijving,
rd.res_deel_opmerking,
res_rsv_deel_van,
rrd.res_rsv_deel_tot,
res_rsv_ruimte_omschrijving,
pf1.prs_perslid_naam_full contactpersoon,
pf2.prs_perslid_naam_full gastheer,
ra.res_activiteit_omschrijving
FROM res_rsv_deel rrd,
res_rsv_ruimte rrr,
res_deel rd,
ins_deel d,
( SELECT rd.res_deel_key, MAX (res_rsv_deel_tot) res_rsv_deel_tot
FROM res_rsv_deel rrd, res_deel rd, ins_deel d
WHERE res_rsv_deel_verwijder IS NULL
AND res_rsv_deel_afgemeld IS NULL
AND res_rsv_deel_tot < SYSDATE
AND rd.res_deel_key = rrd.res_deel_key
AND rd.res_deel_verwijder IS NULL
AND (rd.res_deel_vervaldatum IS NULL
OR rd.res_deel_vervaldatum > SYSDATE)
AND rd.res_ins_deel_key = d.ins_deel_key
AND ins_deel_verwijder IS NULL
AND rd.res_discipline_key != 701
AND res_rsv_deel_dirtlevel = 0
AND rd.res_deel_key NOT IN
( SELECT rd.res_deel_key
FROM res_rsv_deel rrd, res_deel rd, ins_deel d
WHERE res_rsv_deel_verwijder IS NULL
AND res_rsv_deel_afgemeld IS NULL
AND res_rsv_deel_tot >= SYSDATE
AND res_rsv_deel_van <= SYSDATE
AND rd.res_deel_key = rrd.res_deel_key
AND rd.res_deel_verwijder IS NULL
GROUP BY rd.res_deel_key)
GROUP BY rd.res_deel_key) laatste_res,
prs_v_perslid_fullnames_all pf1,
prs_v_perslid_fullnames_all pf2,
res_activiteit ra,
res_discipline dsc
WHERE res_rsv_deel_verwijder IS NULL
AND res_rsv_deel_afgemeld IS NULL
AND rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key
AND rd.res_deel_key = rrd.res_deel_key
AND rd.res_deel_verwijder IS NULL
AND (rd.res_deel_vervaldatum IS NULL
OR rd.res_deel_vervaldatum > SYSDATE)
AND rd.res_ins_deel_key = d.ins_deel_key
AND ins_deel_verwijder IS NULL
AND rd.res_discipline_key != 701
AND dsc.ins_discipline_key = rd.res_discipline_key
AND dsc.ins_discipline_verwijder IS NULL
AND res_rsv_deel_dirtlevel = 0
AND laatste_res.res_deel_key = rd.res_deel_key
AND laatste_res.res_rsv_deel_tot = rrd.res_rsv_deel_tot
AND pf1.prs_perslid_key = rrr.res_rsv_ruimte_contact_key
AND pf2.prs_perslid_key = rrr.res_rsv_ruimte_host_key
AND ra.res_activiteit_key = rrr.res_activiteit_key;
-- DENB#51465: Domein tbv. BBS met alle huurders (debiteuren).
CREATE OR REPLACE VIEW denb_v_bbs_huurders
(
prs_bedrijf_key,
prs_bedrijf_naam,
prs_bedrijf_verwijder
)
AS
SELECT prs_bedrijf_key, prs_bedrijf_naam || ' [' || deb.prs_kenmerklink_waarde || ']', prs_bedrijf_verwijder
FROM (SELECT *
FROM prs_bedrijf
WHERE prs_bedrijf_huurder = 1) x
LEFT JOIN
prs_v_aanwezigkenmerklink deb
ON x.prs_bedrijf_key = deb.prs_link_key
AND deb.prs_kenmerk_key = 1020 -- Deb.nr. K2F
;
-- Bronview met alle BBS-reserveringen tot *nu*!
-- DENB#55783: Toevoegen 'Referentie aanvrager'!
-- DENB#56634: Niet factureren nul-bedragen!
CREATE OR REPLACE VIEW denb_v_bbs_res_all
(
sortering,
res_rsv_ruimte_key,
res_rsv_artikel_key,
res_rsv_deel_key,
res_reservering_key,
res_rsv_ruimte_volgnr,
reslev,
resver,
res_status_bo_key,
res_rsv_ruimte_ordernr,
bedrag, -- Nettobedrag (excl. BTW)
btw_kode, -- 6, 21 of - bij misconfiguratie - leeg
ecl_lang, -- 83362 (Ruimte incl. annulering/schoonmaak)/83402 (Verbruik)/82980 (Overig)
regel_omschrijving, -- Ruimte/Verbruik/Overig(/Uitleen)
regel_aanvulling, -- Ruimtenaam/Korting/Artikel/Deel
debiteurennummer, -- Geregistreerd bij huurder in kenmerk 1020
interne_huurder, -- NULL of '1'/Geregistreerd bij huurder in kenmerk 1021
notagebonden_tekst, -- Geregistreerd bij huurder in kenmerk 1040
ref_aanvrager, -- Geregistreerd bij reservering in kenmerk 183/202
alg_locatie_key,
alg_locatie_code,
alg_locatie_omschrijving,
fcl_lang -- Grootboek per BBS-locatie (64807xx)
)
AS
SELECT x.sortering,
x.res_rsv_ruimte_key, x.res_rsv_artikel_key, x.res_rsv_deel_key,
x.res_reservering_key, x.res_rsv_ruimte_volgnr,
x.reslev,
fac.gettrackingdate ('RESVER', x.res_rsv_ruimte_key) resver,
x.res_status_bo_key,
x.res_rsv_ruimte_ordernr,
COALESCE (x.verw_prijs, x.prijs) bedrag,
--DECODE (idb.prs_kenmerklink_waarde,
-- NULL, x.btw, -- Externe huurder!
-- TO_NUMBER (NULL)) -- Interne huurder!
-- btw_kode,
x.btw btw_kode, -- Alleen verbruiksartikelen historisch bewaard!
x.ecl_lang,
x.regel_omschrijving,
x.regel_aanvulling, -- R0/1-regels igv. Uitleen uitgesloten!
deb.prs_kenmerklink_waarde debiteurennummer,
idb.prs_kenmerklink_waarde interne_huurder, -- Interne huurder='1'
ngt.prs_kenmerklink_waarde notagebonden_tekst,
ref.res_kenmerkreservering_waarde ref_aanvr,
l.alg_locatie_key,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
fcl.alg_onrgoedkenmerk_waarde fcl_lang
FROM (SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyymmdd') || SUBSTR ('000' || TO_CHAR (res_reservering_key), -9) || 'R' sortering,
rrr.res_rsv_ruimte_key, NULL res_rsv_artikel_key, NULL res_rsv_deel_key,
rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_van reslev, rrr.res_status_bo_key, rrr.res_rsv_ruimte_ordernr,
DECODE (vht.res_kenmerkreservering_waarde, -- 841=Sociaal/842=Commercieel
'841', rrr.res_rsv_ruimte_prijs,
(24 * (rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * rr.res_ruimte_prijs_dag)) - COALESCE (rrr.res_rsv_ruimte_korting, 0)
verw_prijs,
DECODE (vht.res_kenmerkreservering_waarde, -- 841=Sociaal/842=Commercieel
'841', res.getruimteprijs (rrr.res_rsv_ruimte_key),
(24 * (rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * rr.res_ruimte_prijs_dag)) - COALESCE (rrr.res_rsv_ruimte_korting, 0)
prijs,
fac.safe_to_number (rr.res_ruimte_groep) btw,
'83362' ecl_lang,
'Ruimte' regel_omschrijving,
rr.res_ruimte_nr regel_aanvulling,
rel.res_kenmerkreservering_waarde rel,
COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key) alg_ruimte_key
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_key) rar1,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NOT NULL
GROUP BY res_ruimte_key) rar2,
res_ruimte rr,
(SELECT kw.res_rsv_ruimte_key, kw.res_kenmerkreservering_waarde
FROM res_v_aanwezigkenmerkwaarde kw, res_kenmerk k
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 181) vht, -- Verhuur tarief
(SELECT kw.res_rsv_ruimte_key, kw.res_kenmerkreservering_waarde
FROM res_v_aanwezigkenmerkwaarde kw, res_kenmerk k
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 182) rel -- Relatie
WHERE rrr.res_activiteit_key IN (302) -- BBS Extern (g<><67>n 322=BBS Uitleen Extern)!
AND rrr.res_rsv_ruimte_tot < SYSDATE -- Niet in toekomst!
AND rrr.res_rsv_ruimte_dirtlevel = 0 -- Niet dirty!
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key -- Alleen Ruimte-reserveringen!
AND rro.res_ruimte_key = rar1.res_ruimte_key(+)
AND rro.res_ruimte_key = rar2.res_ruimte_key(+)
AND COALESCE (rar1.res_ruimte_key, rar2.res_ruimte_key) = rr.res_ruimte_key
AND rrr.res_rsv_ruimte_key = vht.res_rsv_ruimte_key(+)
AND rrr.res_rsv_ruimte_key = rel.res_rsv_ruimte_key(+)
--UNION ALL -- Korting
--SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyymmdd') || SUBSTR ('000' || TO_CHAR (res_reservering_key), -9) || 'R1' sortering,
-- rrr.res_rsv_ruimte_key, NULL res_rsv_artikel_key, NULL res_rsv_deel_key,
-- rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr,
-- rrr.res_rsv_ruimte_van reslev, rrr.res_status_bo_key, rrr.res_rsv_ruimte_ordernr,
-- -1 * rrr.res_rsv_ruimte_korting verw_prijs,
-- -1 * rrr.res_rsv_ruimte_korting prijs,
-- fac.safe_to_number (rr.res_ruimte_groep) btw,
-- '83362' ecl_lang,
-- 'Ruimte' regel_omschrijving,
-- 'Korting' regel_aanvulling,
-- rel.res_kenmerkreservering_waarde rel,
-- COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key) alg_ruimte_key
-- FROM res_v_aanwezigrsv_ruimte rrr,
-- res_ruimte_opstelling rro,
-- ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
-- FROM res_alg_ruimte
-- WHERE res_alg_ruimte_verwijder IS NULL
-- GROUP BY res_ruimte_key) rar1,
-- ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
-- FROM res_alg_ruimte
-- WHERE res_alg_ruimte_verwijder IS NOT NULL
-- GROUP BY res_ruimte_key) rar2,
-- res_ruimte rr,
-- (SELECT kw.res_rsv_ruimte_key, kw.res_kenmerkreservering_waarde
-- FROM res_v_aanwezigkenmerkwaarde kw, res_kenmerk k
-- WHERE kw.res_kenmerk_key = k.res_kenmerk_key
-- AND k.res_srtkenmerk_key = 182) rel -- Relatie
-- WHERE rrr.res_activiteit_key IN (302) -- BBS Extern (g<><67>n 322=BBS Uitleen Extern)!
-- AND rrr.res_rsv_ruimte_tot < SYSDATE -- Niet in toekomst!
-- AND rrr.res_rsv_ruimte_dirtlevel = 0 -- Niet dirty!
-- AND COALESCE (rrr.res_rsv_ruimte_korting, 0) != 0
-- AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key -- Alleen Ruimte-reserveringen!
-- AND rro.res_ruimte_key = rar1.res_ruimte_key(+)
-- AND rro.res_ruimte_key = rar2.res_ruimte_key(+)
-- AND COALESCE (rar1.res_ruimte_key, rar2.res_ruimte_key) = rr.res_ruimte_key
-- AND rrr.res_rsv_ruimte_key = rel.res_rsv_ruimte_key(+)
UNION ALL -- Verbruik=Verbruiksartikelen
SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyymmdd') || SUBSTR ('000' || TO_CHAR (res_reservering_key), -9) || 'V' || TO_CHAR (ra.res_discipline_key) || SUBSTR ('000' || TO_CHAR (COALESCE (ra.res_artikel_volgnummer, 0)), -3) sortering,
rrr.res_rsv_ruimte_key, rra.res_rsv_artikel_key, NULL res_rsv_deel_key,
rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr,
rra.res_rsv_artikel_levering reslev, rra.res_status_bo_key, rrr.res_rsv_ruimte_ordernr,
rra.res_rsv_artikel_prijs verw_prijs,
rra.res_rsv_artikel_aantal * ra.res_artikel_prijs prijs,
--COALESCE (rra.res_rsv_artikel_btw, ra.res_artikel_btw) btw,
DECODE (rra.res_status_bo_key, 2, COALESCE (rra.res_rsv_artikel_btw, ra.res_artikel_btw), rra.res_rsv_artikel_btw) btw,
DECODE (ra.res_artikel_key,
943, '83362', -- Schoonmaakkosten
944, '83362', -- Annuleringskosten
'83402')
ecl_lang,
DECODE (ra.res_artikel_key,
943, 'Ruimte', -- Schoonmaakkosten
944, 'Ruimte', -- Annuleringskosten
'Verbruik')
regel_omschrijving,
ra.res_artikel_omschrijving regel_aanvulling,
rel.res_kenmerkreservering_waarde rel,
COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) alg_ruimte_key
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_key) rar1,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NOT NULL
GROUP BY res_ruimte_key) rar2,
res_ruimte rr,
(SELECT kw.res_rsv_ruimte_key, kw.res_kenmerkreservering_waarde
FROM res_v_aanwezigkenmerkwaarde kw, res_kenmerk k
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 181) vht, -- Verhuur tarief
(SELECT kw.res_rsv_ruimte_key, kw.res_kenmerkreservering_waarde
FROM res_v_aanwezigkenmerkwaarde kw, res_kenmerk k
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 182) rel, -- Relatie
res_v_aanwezigrsv_artikel rra,
res_artikel ra
WHERE rrr.res_activiteit_key IN (302, 322) -- BBS Extern/BBS Uitleen Extern!
AND rrr.res_rsv_ruimte_tot < SYSDATE -- Niet in toekomst!
AND rrr.res_rsv_ruimte_dirtlevel = 0 -- Niet dirty!
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+) -- Ruimte- <20>n Uitleen-reserveringen!
AND rro.res_ruimte_key = rar1.res_ruimte_key(+)
AND rro.res_ruimte_key = rar2.res_ruimte_key(+)
AND COALESCE (rar1.res_ruimte_key, rar2.res_ruimte_key) = rr.res_ruimte_key(+)
AND rrr.res_rsv_ruimte_key = vht.res_rsv_ruimte_key(+)
AND rrr.res_rsv_ruimte_key = rel.res_rsv_ruimte_key(+)
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_rsv_artikel_levering < SYSDATE -- Niet in toekomst!
AND rra.res_rsv_artikel_dirtlevel = 0 -- Niet dirty!
AND rra.res_artikel_key = ra.res_artikel_key
UNION ALL -- Overig=Voorzieningen
SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyymmdd') || SUBSTR ('000' || TO_CHAR (res_reservering_key), -9) || 'X' || TO_CHAR (rd.res_discipline_key) || SUBSTR (rd.res_deel_omschrijving, 1, 3) sortering,
rrr.res_rsv_ruimte_key, NULL res_rsv_artikel_key, rrd.res_rsv_deel_key,
rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr,
rrd.res_rsv_deel_van reslev, rrd.res_status_bo_key, rrr.res_rsv_ruimte_ordernr,
rrd.res_rsv_deel_prijs verw_prijs,
24 * (rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * rd.res_deel_prijs prijs,
21 btw, -- Hard 21%
'82980' ecl_lang,
'Overig' || DECODE (rrr.res_activiteit_key, 302, '', '/Uitleen') regel_omschrijving,
rd.res_deel_omschrijving regel_aanvulling,
rel.res_kenmerkreservering_waarde rel,
COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) alg_ruimte_key
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_key) rar1,
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NOT NULL
GROUP BY res_ruimte_key) rar2,
res_ruimte rr,
(SELECT kw.res_rsv_ruimte_key, kw.res_kenmerkreservering_waarde
FROM res_v_aanwezigkenmerkwaarde kw, res_kenmerk k
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 181) vht, -- Verhuur tarief
(SELECT kw.res_rsv_ruimte_key, kw.res_kenmerkreservering_waarde
FROM res_v_aanwezigkenmerkwaarde kw, res_kenmerk k
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 182) rel, -- Relatie
res_v_aanwezigrsv_deel rrd,
res_deel rd
WHERE rrr.res_activiteit_key IN (302, 322) -- BBS Extern/BBS Uitleen Extern!
AND rrr.res_rsv_ruimte_tot < SYSDATE -- Niet in toekomst!
AND rrr.res_rsv_ruimte_dirtlevel = 0 -- Niet dirty!
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+) -- Ruimte- <20>n Uitleen-reserveringen!
AND rro.res_ruimte_key = rar1.res_ruimte_key(+)
AND rro.res_ruimte_key = rar2.res_ruimte_key(+)
AND COALESCE (rar1.res_ruimte_key, rar2.res_ruimte_key) = rr.res_ruimte_key(+)
AND rrr.res_rsv_ruimte_key = vht.res_rsv_ruimte_key(+)
AND rrr.res_rsv_ruimte_key = rel.res_rsv_ruimte_key(+)
AND rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key
AND rrd.res_rsv_deel_tot < SYSDATE -- Niet in toekomst!
AND rrd.res_rsv_deel_dirtlevel = 0 -- Niet dirty!
AND rrd.res_deel_key = rd.res_deel_key) x
LEFT JOIN res_v_aanwezigkenmerkwaarde rel
ON x.res_rsv_ruimte_key = rel.res_rsv_ruimte_key
AND rel.res_kenmerk_key IN (182, 201) -- Relatie
LEFT JOIN prs_v_aanwezigkenmerklink deb
ON rel.res_kenmerkreservering_waarde = TO_CHAR (deb.prs_link_key)
AND deb.prs_kenmerk_key = 1020 -- Deb.nr. K2F
LEFT JOIN prs_v_aanwezigkenmerklink idb
ON rel.res_kenmerkreservering_waarde = TO_CHAR (idb.prs_link_key)
AND idb.prs_kenmerk_key = 1021 -- Interne debiteur=Gemeentelijke afdeling
LEFT JOIN prs_v_aanwezigkenmerklink ngt
ON rel.res_kenmerkreservering_waarde = TO_CHAR (ngt.prs_link_key)
AND ngt.prs_kenmerk_key = 1040 -- Notagebonden tekst
LEFT JOIN res_v_aanwezigkenmerkwaarde ref
ON x.res_rsv_ruimte_key = ref.res_rsv_ruimte_key
AND ref.res_kenmerk_key IN (183, 202) -- Ref. aanvrager
LEFT JOIN alg_v_allonroerendgoed aog
ON x.alg_ruimte_key = aog.alg_ruimte_key
LEFT JOIN alg_locatie l
ON aog.alg_locatie_key = l.alg_locatie_key
LEFT JOIN alg_v_aanwezigonrgoedkenmerk fcl
ON l.alg_locatie_key = fcl.alg_onrgoed_key
AND fcl.alg_kenmerk_key = 1020 -- FCL
WHERE l.alg_locatie_key IN (49, 56, 70, 71, 441, 442, 443, 444) -- BBS-locaties
;
-- Actueel: BBS-reserveringen lopende maand!
CREATE OR REPLACE VIEW denb_v_rap_actual_bbs_res
(
hide_f_sortering,
res_rsv_ruimte_key,
res_rsv_artikel_key,
res_rsv_deel_key,
volgnummer, -- [max. 8] Sequence
debiteurennummer, -- [max. 7] Geregistreerd bij huurder in kenmerk 1020
omschrijving_nota, -- [max. 50] Gebruik + Locatie
notagebonden_tekst, -- [max. 100] Geregistreerd bij huurder in kenmerk 1040
omschrijving_boekingsregel, -- [max. 32] Res.nr. + Datum + Ruimte/Verbruik/Overig per BTW/ECL
bedrag, -- [max. 13] Nettobedrag (excl. BTW)
btw_kode, -- [max. 2] 9 of 21; leeg voor interne huurders (vinkje bij huurder in kenmerk 1021)
fcl_lang, -- [7 van max. 12] Grootboek per BBS-locatie (64807xx)
ecl_lang, -- [5 van max. 8] 83362 (Ruimte incl. annulering/schoonmaak)/83402 (Verbruik)/82980 (Overig)
fclt_3d_locatie_key
)
AS
SELECT sortering,
res_rsv_ruimte_key,
MIN (res_rsv_artikel_key),
MIN (res_rsv_deel_key),
NULL volgnummer,
SUBSTR (debiteurennummer, 1, 7) debiteurennummer,
SUBSTR ('Gebruik ' || alg_locatie_omschrijving, 1, 50) omschrijving_nota,
SUBSTR (REPLACE (notagebonden_tekst, '"', ''), 1, 100) notagebonden_tekst,
--SUBSTR (TO_CHAR (res_reservering_key) || '/' || TO_CHAR (res_rsv_ruimte_volgnr) || ' ' || TO_CHAR (reslev, 'dd-mm-yyyy') || ' ' || regel_omschrijving || ' [' || regel_aanvulling || ']', 1, 50)
SUBSTR (TO_CHAR (res_reservering_key) || '/' || TO_CHAR (res_rsv_ruimte_volgnr) || ' ' || ref_aanvrager || ' ' || TO_CHAR (reslev, 'dd-mm-yyyy') || ' [' || regel_aanvulling || ']', 1, 100)
omschrijving_boekingsregel,
SUM (bedrag),
DECODE (interne_huurder, '1', 0, btw_kode) btw_kode,
SUBSTR (fcl_lang, 1, 12) fcl_lang,
SUBSTR (ecl_lang, 1, 8) ecl_lang,
alg_locatie_key
FROM denb_v_bbs_res_all
WHERE reslev > TRUNC (SYSDATE, 'mm')
AND res_status_bo_key != 6 -- Niet AV!
AND COALESCE (bedrag, 0) != 0
GROUP BY sortering,
res_rsv_ruimte_key,
NULL,
SUBSTR (debiteurennummer, 1, 7),
SUBSTR ('Gebruik ' || alg_locatie_omschrijving, 1, 50),
SUBSTR (REPLACE (notagebonden_tekst, '"', ''), 1, 100),
SUBSTR (TO_CHAR (res_reservering_key) || '/' || TO_CHAR (res_rsv_ruimte_volgnr) || ' ' || ref_aanvrager || ' ' || TO_CHAR (reslev, 'dd-mm-yyyy') || ' [' || regel_aanvulling || ']', 1, 100),
DECODE (interne_huurder, '1', 0, btw_kode),
SUBSTR (regel_aanvulling, 1, 18),
SUBSTR (fcl_lang, 1, 12),
SUBSTR (ecl_lang, 1, 8),
alg_locatie_key;
-- Concept: BBS-reserveringen voorgaande maand!
CREATE OR REPLACE VIEW denb_v_rap_dryrun_bbs_k2f
(
hide_f_sortering,
res_rsv_ruimte_key,
res_rsv_artikel_key,
res_rsv_deel_key,
volgnummer, -- [max. 8] Sequence
debiteurennummer, -- [max. 7] Geregistreerd bij huurder in kenmerk 1020
omschrijving_nota, -- [max. 50] Gebruik + Locatie
notagebonden_tekst, -- [max. 100] Geregistreerd bij huurder in kenmerk 1040
omschrijving_boekingsregel, -- [max. 32] Res.nr. + Datum + Ruimte/Verbruik/Overig per BTW/ECL
bedrag, -- [max. 13] Nettobedrag (excl. BTW)
btw_kode, -- [max. 2] 9 of 21; leeg voor interne huurders (vinkje bij huurder in kenmerk 1021)
fcl_lang, -- [7 van max. 12] Grootboek per BBS-locatie (64807xx)
ecl_lang, -- [5 van max. 8] 83362 (Ruimte incl. annulering/schoonmaak)/83402 (Verbruik)/82980 (Overig)
fclt_3d_locatie_key
)
AS
SELECT sortering,
res_rsv_ruimte_key,
MIN (res_rsv_artikel_key),
MIN (res_rsv_deel_key),
NULL volgnummer,
SUBSTR (debiteurennummer, 1, 7) debiteurennummer,
SUBSTR ('Gebruik ' || alg_locatie_omschrijving, 1, 50) omschrijving_nota,
SUBSTR (REPLACE (notagebonden_tekst, '"', ''), 1, 100) notagebonden_tekst,
--SUBSTR (TO_CHAR (res_reservering_key) || '/' || TO_CHAR (res_rsv_ruimte_volgnr) || ' ' || TO_CHAR (reslev, 'dd-mm-yyyy') || ' ' || regel_omschrijving || ' [' || regel_aanvulling || ']', 1, 50)
SUBSTR (TO_CHAR (res_reservering_key) || '/' || TO_CHAR (res_rsv_ruimte_volgnr) || ' ' || ref_aanvrager || ' ' || TO_CHAR (reslev, 'dd-mm-yyyy') || ' [' || regel_aanvulling || ']', 1, 100)
omschrijving_boekingsregel,
SUM (bedrag),
DECODE (interne_huurder, '1', 0, btw_kode) btw_kode,
SUBSTR (fcl_lang, 1, 12) fcl_lang,
SUBSTR (ecl_lang, 1, 8) ecl_lang,
alg_locatie_key
FROM denb_v_bbs_res_all
WHERE reslev > TO_DATE ('01-07-2018' , 'dd-mm-yyyy')
AND reslev < TRUNC (SYSDATE, 'mm')
AND res_status_bo_key != 6 -- Niet AV!
AND COALESCE (bedrag, 0) != 0
GROUP BY sortering,
res_rsv_ruimte_key,
NULL,
SUBSTR (debiteurennummer, 1, 7),
SUBSTR ('Gebruik ' || alg_locatie_omschrijving, 1, 50),
SUBSTR (REPLACE (notagebonden_tekst, '"', ''), 1, 100),
SUBSTR (TO_CHAR (res_reservering_key) || '/' || TO_CHAR (res_rsv_ruimte_volgnr) || ' ' || ref_aanvrager || ' ' || TO_CHAR (reslev, 'dd-mm-yyyy') || ' [' || regel_aanvulling || ']', 1, 100),
DECODE (interne_huurder, '1', 0, btw_kode),
SUBSTR (regel_aanvulling, 1, 18),
SUBSTR (fcl_lang, 1, 12),
SUBSTR (ecl_lang, 1, 8),
alg_locatie_key;
-- Definitief: BBS-reserveringen voorgaande maanden!
-- TODO: Beter historisch opslaan in fin_verkoopfactuur-tabel?
CREATE OR REPLACE VIEW denb_v_rap_frozen_bbs_k2f
(
hide_f_sortering,
fclt_x_maand,
res_rsv_ruimte_key,
volgnummer, -- [max. 8] Sequence
debiteurennummer, -- [max. 7] Geregistreerd bij huurder in kenmerk 1020
omschrijving_nota, -- [max. 50] Gebruik + Locatie
notagebonden_tekst, -- [max. 100] Geregistreerd bij huurder in kenmerk 1040
omschrijving_boekingsregel, -- [max. 32] Res.nr. + Datum + Ruimte/Verbruik/Overig per BTW/ECL
bedrag, -- [max. 13] Nettobedrag (excl. BTW)
btw_kode, -- [max. 2] 9 of 21; leeg voor interne huurders (vinkje bij huurder in kenmerk 1021)
fcl_lang, -- [7 van max. 12] Grootboek per BBS-locatie (64807xx)
ecl_lang, -- [5 van max. 8] 83362 (Ruimte incl. annulering/schoonmaak)/83402 (Verbruik)/82980 (Overig)
fclt_3d_locatie_key
)
AS
SELECT TO_CHAR (TRUNC (resver, 'mm') - 1, 'yyyy-mm') || TO_CHAR (SUBSTR (res_rsv_ruimte_ordernr, 1, INSTR (res_rsv_ruimte_ordernr, '|') - 1), 'FM00000009') || sortering sortering,
TO_CHAR (TRUNC (resver, 'mm') - 1, 'yyyy-mm') maand,
res_rsv_ruimte_key,
SUBSTR (SUBSTR (res_rsv_ruimte_ordernr, 1, INSTR (res_rsv_ruimte_ordernr, '|') - 1), 1, 8)
volgnummer, -- Historisch opgeslagen in ordernr
SUBSTR (SUBSTR (res_rsv_ruimte_ordernr, INSTR (res_rsv_ruimte_ordernr, '|') + 1, INSTR (res_rsv_ruimte_ordernr, '#', -1) - INSTR (res_rsv_ruimte_ordernr, '|') - 1), 1, 7)
debiteurennummer, -- Historisch opgeslagen in ordernr
SUBSTR ('Gebruik ' || alg_locatie_omschrijving, 1, 50)
omschrijving_nota, -- NIET historisch opgeslagen!
SUBSTR (REPLACE (notagebonden_tekst, '"', ''), 1, 100)
notagebonden_tekst, -- NIET historisch opgeslagen!
--SUBSTR (TO_CHAR (res_reservering_key) || '/' || TO_CHAR (res_rsv_ruimte_volgnr) || ' ' || TO_CHAR (reslev, 'dd-mm-yyyy') || ' ' || regel_omschrijving || ' [' || regel_aanvulling || ']', 1, 50)
SUBSTR (TO_CHAR (res_reservering_key) || '/' || TO_CHAR (res_rsv_ruimte_volgnr) || ' ' || ref_aanvrager || ' ' || TO_CHAR (reslev, 'dd-mm-yyyy') || ' [' || regel_aanvulling || ']', 1, 100)
omschrijving_boekingsregel,
SUM (bedrag),
--fac.safe_to_number (SUBSTR (res_rsv_ruimte_ordernr, INSTR (res_rsv_ruimte_ordernr, '|', -1) + 1))
DECODE (SUBSTR (res_rsv_ruimte_ordernr, INSTR (res_rsv_ruimte_ordernr, '#', -1) + 1, 1),
'J', TO_NUMBER (NULL),
DECODE (SUBSTR (sortering, -1), --regel_omschrijving,
'R', fac.safe_to_number (SUBSTR (res_rsv_ruimte_ordernr, INSTR (res_rsv_ruimte_ordernr, '|', -1) + 1)),
btw_kode)) -- Alleen verbruiksartikelen historisch bewaard!
btw_kode,
SUBSTR (fcl_lang, 1, 12) fcl_lang, -- NIET historisch opgeslagen!
SUBSTR (ecl_lang, 1, 8) ecl_lang, -- NIET historisch opgeslagen!
alg_locatie_key
FROM denb_v_bbs_res_all
WHERE resver > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy') -- Huidige jaar en 2 voorgaande jaren!
AND res_status_bo_key = 6 -- AV!
AND COALESCE (bedrag, 0) != 0
GROUP BY TO_CHAR (TRUNC (resver, 'mm') - 1, 'yyyy-mm') || TO_CHAR (SUBSTR (res_rsv_ruimte_ordernr, 1, INSTR (res_rsv_ruimte_ordernr, '|') - 1), 'FM00000009') || sortering,
TO_CHAR (TRUNC (resver, 'mm') - 1, 'yyyy-mm'),
res_rsv_ruimte_key,
SUBSTR (SUBSTR (res_rsv_ruimte_ordernr, 1, INSTR (res_rsv_ruimte_ordernr, '|') - 1), 1, 8),
SUBSTR (SUBSTR (res_rsv_ruimte_ordernr, INSTR (res_rsv_ruimte_ordernr, '|') + 1, INSTR (res_rsv_ruimte_ordernr, '#', -1) - INSTR (res_rsv_ruimte_ordernr, '|') - 1), 1, 7),
SUBSTR ('Gebruik ' || alg_locatie_omschrijving, 1, 50),
SUBSTR (REPLACE (notagebonden_tekst, '"', ''), 1, 100),
SUBSTR (TO_CHAR (res_reservering_key) || '/' || TO_CHAR (res_rsv_ruimte_volgnr) || ' ' || ref_aanvrager || ' ' || TO_CHAR (reslev, 'dd-mm-yyyy') || ' [' || regel_aanvulling || ']', 1, 100),
--fac.safe_to_number (SUBSTR (res_rsv_ruimte_ordernr, INSTR (res_rsv_ruimte_ordernr, '|', -1) + 1)),
DECODE (SUBSTR (res_rsv_ruimte_ordernr, INSTR (res_rsv_ruimte_ordernr, '#', -1) + 1, 1),
'J', TO_NUMBER (NULL),
DECODE (SUBSTR (sortering, -1), --regel_omschrijving,
'R', fac.safe_to_number (SUBSTR (res_rsv_ruimte_ordernr, INSTR (res_rsv_ruimte_ordernr, '|', -1) + 1)),
btw_kode)),
SUBSTR (regel_aanvulling, 1, 18),
SUBSTR (fcl_lang, 1, 12),
SUBSTR (ecl_lang, 1, 8),
alg_locatie_key;
CREATE OR REPLACE VIEW denb_v_export_bbs_k2f
(
result,
result_order
)
AS -- View bevat alleen inhoud op de dag na de 15e werkdag van de maand!
-- SELECT 'volgnummer'
-- || ';debiteurennummer'
-- || ';omschrijving_nota'
-- || ';notagebonden_tekst'
-- || ';omschrijving_boekingsregel'
-- || ';bedrag'
-- || ';btw_kode'
-- || ';fcl_lang'
-- || ';ecl_lang',
-- 0
-- FROM DUAL
-- WHERE FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 15
-- AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
-- AND NOT EXISTS
-- (SELECT 1
-- FROM mld_vrije_dagen
-- WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1))
-- UNION ALL
SELECT volgnummer
|| ';'
|| debiteurennummer
|| ';'
|| omschrijving_nota
|| ';"'
|| notagebonden_tekst
|| '";'
|| omschrijving_boekingsregel
|| ';'
|| REPLACE (TO_CHAR (bedrag), '.', ',')
|| ';'
|| REPLACE (TO_CHAR (btw_kode), '.', ',') -- Als BTW niet een geheel percentage, dan >2 posities!
|| ';'
|| fcl_lang
|| ';'
|| ecl_lang,
ROWNUM
FROM ( SELECT volgnummer,
debiteurennummer,
omschrijving_nota,
notagebonden_tekst,
omschrijving_boekingsregel,
bedrag,
btw_kode,
fcl_lang,
ecl_lang
FROM denb_v_rap_frozen_bbs_k2f
WHERE fclt_x_maand = TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm')
ORDER BY volgnummer,
hide_f_sortering)
WHERE FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 15
AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
AND NOT EXISTS
(SELECT 1
FROM mld_vrije_dagen
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1));
CREATE OR REPLACE PROCEDURE denb_select_bbs_k2f (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
-- Verwerken te exporteren regels!
CURSOR c1
IS
SELECT '[' || v.debiteurennummer || '] ' aanduiding,
v.sortering,
v.res_rsv_ruimte_key,
v.res_rsv_artikel_key,
v.res_rsv_deel_key,
v.res_status_bo_key,
v.debiteurennummer,
DECODE (v.interne_huurder, '1', 'J', 'N') interne_huurder,
v.alg_locatie_omschrijving,
v.bedrag + COALESCE (rrr.res_rsv_ruimte_korting, 0) bedrag,
v.btw_kode
FROM denb_v_bbs_res_all v, res_rsv_ruimte rrr
WHERE v.reslev > TO_DATE ('01-07-2018', 'dd-mm-yyyy')
AND v.reslev < TRUNC (SYSDATE, 'mm')
AND v.res_status_bo_key != 6 -- Niet AV!
AND v.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
--AND sortering NOT LIKE '%R1' -- Skip Korting-regels!
UNION ALL -- Extra R-regel voor losse voorzieningen!
SELECT DISTINCT '[' || v.debiteurennummer || '] ' aanduiding,
SUBSTR (v.sortering, 1, 17) || 'R' sortering,
v.res_rsv_ruimte_key,
TO_NUMBER (NULL) res_rsv_artikel_key,
TO_NUMBER (NULL) res_rsv_deel_key,
-1 res_status_bo_key,
v.debiteurennummer,
DECODE (v.interne_huurder, '1', 'J', 'N') interne_huurder,
v.alg_locatie_omschrijving,
TO_NUMBER (NULL) bedrag,
TO_NUMBER (NULL) btw_kode
FROM denb_v_bbs_res_all v, res_rsv_ruimte rrr
WHERE v.reslev > TO_DATE ('01-07-2018', 'dd-mm-yyyy')
AND v.reslev < TRUNC (SYSDATE, 'mm')
AND v.res_status_bo_key != 6 -- Niet AV!
AND v.res_rsv_deel_key IS NOT NULL
AND v.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_ruimte_opstel_key IS NULL -- Losse voorzieningen!
ORDER BY debiteurennummer, alg_locatie_omschrijving, sortering DESC;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_holiday NUMBER;
v_factuur_nr NUMBER;
v_amount_tot NUMBER (10, 2);
v_prev_deb VARCHAR2 (255);
v_prev_loc VARCHAR2 (255);
v_prijs NUMBER (9, 2);
BEGIN
SELECT COUNT ( * )
INTO v_holiday
FROM mld_vrije_dagen
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1);
-- LET OP: K2F-export draait dagelijks na middernacht (begin van dag) en de
-- verkoop wordt maandelijks alleen in de nacht na 15e werkdag van de maand
-- doorgezet.
-- IF nacht na 1e werkdag van de maand (<28>n geen weekend <20>n geen vrije dag)!
-- count_work_days (d1,d2) bepaalt het #werkdagen van d1 tot d2 (als d1=d2,
-- dan return 0); daarom bepalen tov. laatste dag van vorige maand!
IF FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 15
AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
AND v_holiday = 0
THEN
v_factuur_nr := 0;
v_amount_tot := 0;
v_prev_deb := 'Quqelequ';
v_prev_loc := 'Quqelequ';
FOR rec IN c1
LOOP
BEGIN
-- Per debiteur/locatie <20><>n (verzamel)factuur=hetzelfde volgnummer!
IF rec.debiteurennummer != v_prev_deb OR rec.alg_locatie_omschrijving != v_prev_loc
THEN
v_prev_deb := rec.debiteurennummer;
v_prev_loc := rec.alg_locatie_omschrijving;
v_factuur_nr := v_factuur_nr + 1;
END IF;
IF rec.res_rsv_artikel_key IS NOT NULL
THEN -- Verbruiksartikel-regel
IF rec.res_status_bo_key = 2
THEN
v_errormsg := 'Fout bepalen res_rsv_artikel_prijs';
SELECT res.getartikelprijs (rec.res_rsv_artikel_key)
INTO v_prijs
FROM DUAL;
v_errormsg := 'Fout afmelden res_rsv_artikel';
UPDATE res_rsv_artikel
SET res_status_bo_key = 5,
res_rsv_artikel_prijs = v_prijs,
res_rsv_artikel_btw = rec.btw_kode
WHERE res_rsv_artikel_key = rec.res_rsv_artikel_key;
v_errormsg := 'Fout tracken afmelding';
fac.trackaction ('RESAFM', rec.res_rsv_ruimte_key, NULL, NULL, 'Verbruik afgemeld');
END IF;
v_errormsg := 'Fout verwerken res_rsv_artikel';
UPDATE res_rsv_artikel
SET res_status_bo_key = 6 -- AV (en zet ook Verwerkt-date)
WHERE res_rsv_artikel_key = rec.res_rsv_artikel_key;
v_errormsg := 'Fout tracken verwerking';
fac.trackaction ('RESVER', rec.res_rsv_ruimte_key, NULL, NULL, 'Verbruik verwerkt');
ELSIF rec.res_rsv_deel_key IS NOT NULL
THEN -- Voorziening-regel
IF rec.res_status_bo_key = 2
THEN
v_errormsg := 'Fout bepalen res_rsv_artikel_prijs';
SELECT res.getdeelprijs (rec.res_rsv_deel_key)
INTO v_prijs
FROM DUAL;
v_errormsg := 'Fout afmelden res_rsv_deel';
UPDATE res_rsv_deel
SET res_status_bo_key = 5,
res_rsv_deel_prijs = v_prijs
WHERE res_rsv_deel_key = rec.res_rsv_deel_key;
v_errormsg := 'Fout tracken afmelding';
fac.trackaction ('RESAFM', rec.res_rsv_ruimte_key, NULL, NULL, 'Overig afgemeld');
END IF;
v_errormsg := 'Fout verwerken res_rsv_deel';
UPDATE res_rsv_deel
SET res_status_bo_key = 6 -- AV (en zet ook Verwerkt-date)
WHERE res_rsv_deel_key = rec.res_rsv_deel_key;
v_errormsg := 'Fout tracken verwerking';
fac.trackaction ('RESVER', rec.res_rsv_ruimte_key, NULL, NULL, 'Overig verwerkt');
ELSE -- Ruimte-regel
IF rec.res_status_bo_key = 2
THEN
v_errormsg := 'Fout afmelden res_rsv_ruimte';
UPDATE res_rsv_ruimte
SET res_status_bo_key = 5,
res_rsv_ruimte_prijs = rec.bedrag,
res_rsv_ruimte_ordernr = TO_CHAR (v_factuur_nr) || '|' || rec.debiteurennummer || '#' || rec.interne_huurder || '|' || TO_CHAR (rec.btw_kode) -- Historisch bewaren: volgnummer + debiteurennummer#interne_huurder (= J/N) + btw_kode
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
v_errormsg := 'Fout tracken afmelding';
fac.trackaction ('RESAFM', rec.res_rsv_ruimte_key, NULL, NULL, NULL);
v_errormsg := 'Fout verwerken res_rsv_ruimte';
UPDATE res_rsv_ruimte
SET res_status_bo_key = 6 -- AV
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
v_errormsg := 'Fout tracken verwerking';
fac.trackaction ('RESVER', rec.res_rsv_ruimte_key, NULL, NULL, NULL);
v_amount_tot := v_amount_tot + rec.bedrag;
ELSIF rec.res_status_bo_key = 5
THEN
v_errormsg := 'Fout bijwerken res_rsv_ruimte';
UPDATE res_rsv_ruimte
SET res_rsv_ruimte_prijs = rec.bedrag,
res_rsv_ruimte_ordernr = TO_CHAR (v_factuur_nr) || '|' || rec.debiteurennummer || '#' || rec.interne_huurder || '|' || TO_CHAR (rec.btw_kode) -- Historisch bewaren: volgnummer + debiteurennummer#interne_huurder (= J/N) + btw_kode
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
v_errormsg := 'Fout verwerken res_rsv_ruimte';
UPDATE res_rsv_ruimte
SET res_status_bo_key = 6 -- AV
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
v_errormsg := 'Fout tracken verwerking';
fac.trackaction ('RESVER', rec.res_rsv_ruimte_key, NULL, NULL, NULL);
v_amount_tot := v_amount_tot + rec.bedrag;
ELSE -- Extra R-regel voor losse voorzieningen!
v_errormsg := 'Fout bijwerken res_rsv_ruimte';
UPDATE res_rsv_ruimte
SET res_rsv_ruimte_ordernr = TO_CHAR (v_factuur_nr) || '|' || rec.debiteurennummer || '#' || rec.interne_huurder || '|' || TO_CHAR (rec.btw_kode) -- Historisch bewaren: volgnummer + debiteurennummer#interne_huurder (= J/N) + btw_kode
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
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.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, 'BBS_K2F-regels');
COMMIT;
END;
END LOOP;
fac.writelog (p_applname, 'S', 'K2F export/#facturen: ' || TO_CHAR (v_factuur_nr), TO_CHAR (v_amount_tot));
END IF;
END;
/
-- DENB#52794: Openstaande facilitaire meldingen per (aanmaak)maand.
CREATE OR REPLACE VIEW denb_v_graph_newmnd_all12m_fac
(
FCLT_XAS_,
FCLT_YAS_,
VOLGORDE
)
AS
SELECT DECODE (TO_CHAR (mld_melding_datum, 'mm'),
'01', 'Januari',
'02', 'Februari',
'03', 'Maart',
'04', 'April',
'05', 'Mei',
'06', 'Juni',
'07', 'Juli',
'08', 'Augustus',
'09', 'September',
'10', 'Oktober',
'11', 'November',
'December'),
COUNT ( * ),
TO_CHAR (mld_melding_datum, 'yyyymm')
FROM mld_melding m, mld_stdmelding sm, mld_discipline md
WHERE m.mld_melding_datum BETWEEN ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -11) AND SYSDATE
AND m.mld_melding_status IN (2, 3, 4, 7, 0, 99) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending, 99-Niet opgelost
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = 21 -- Melding
GROUP BY TO_CHAR (mld_melding_datum, 'mm'),
TO_CHAR (mld_melding_datum, 'yyyymm');
-- DENB#53711: Rapportage splitsing artikelen per kostenplaats.
CREATE OR REPLACE VIEW denb_v_rap_bes_per_maand
(
geleverd,
maand,
catalogus,
bestemd_voor,
reden,
sector,
organisatie,
kostenplaats,
ecl,
aanvrager,
bestelnr,
besteld_op,
afgemeld_op,
artikel,
aantal,
prijs,
prijs_tot,
status,
ontv_naam,
ontv_org,
ontv_functie,
gelegenheid
)
AS
SELECT DECODE (x.bes_bestelling_status, 6, x.afgemeld_op, TRUNC (ADD_MONTHS (SYSDATE, 1), 'mm'))
geleverd,
DECODE (x.bes_bestelling_status, 6, TO_CHAR (x.afgemeld_op, 'yyyy-mm'), 'Lopend')
maand,
x.ins_discipline_omschrijving catalogus,
bvoor.fac_usrdata_omschr bestemd_voor,
reden.fac_usrdata_omschr reden,
x.sector,
x.organisatie,
x.prs_kostenplaats_nr kostenplaats,
DECODE (bvoor.fac_usrdata_key,
1041, DECODE (reden.fac_usrdata_key, -- Collega
1043, DECODE (SIGN (x.prijs_tot - 25), -1, '40164', '40159'), -- Persoonlijke aard
'40159'),
1042, '40157', -- Derde
NULL)
ecl,
x.prs_perslid_naam_full aanvrager,
TO_CHAR (x.bes_bestelling_key) bestelnr,
x.besteld_op,
x.afgemeld_op,
DECODE (x.aantal_bestelregels, 1, x.artikel, 'Diverse artikelen') artikel,
DECODE (x.aantal_bestelregels, 1, TO_CHAR (x.aantal), 'Diverse aantallen') aantal,
DECODE (x.aantal_bestelregels, 1, REPLACE (TO_CHAR (x.prijs), '.', ','), 'Diverse prijzen') prijs,
x.prijs_tot,
x.bes_bestellingstatuses_omschr status,
COALESCE (ontv_naam.bes_kenmerkbestell_waarde, ontv.bes_kenmerkbestell_waarde) ontv_naam,
ontv_org.bes_kenmerkbestell_waarde ontv_org,
ontv_functie.bes_kenmerkbestell_waarde ontv_functie,
tgv.bes_kenmerkbestell_waarde tgv
FROM ( SELECT b.bes_bestelling_key,
b.bes_bestelling_status,
s.bes_bestellingstatuses_omschr,
d.ins_discipline_omschrijving,
a1.prs_afdeling_omschrijving sector,
a2.prs_afdeling_omschrijving organisatie,
k.prs_kostenplaats_nr,
pf.prs_perslid_naam_full,
b.bes_bestelling_datum besteld_op,
COALESCE (fac.gettrackingdate ('BESOTV', b.bes_bestelling_key), bo.bes_bestelopdr_leverdatum) afgemeld_op,
MIN (sd.bes_srtdeel_omschrijving) artikel,
MIN (bi.bes_bestelling_item_aantal) aantal,
MIN (bi.bes_bestelling_item_prijs) prijs,
SUM(bi.bes_bestelling_item_aantal * bi.bes_bestelling_item_prijs) prijs_tot,
COUNT ( * ) aantal_bestelregels
FROM bes_bestelling b,
bes_bestellingstatuses s,
bes_bestelling_item bi,
bes_bestelopdr_item boi,
bes_bestelopdr bo,
bes_srtdeel sd,
bes_srtgroep sg,
ins_tab_discipline d,
prs_perslid p,
prs_v_perslid_fullnames_all pf,
prs_v_afdeling_boom ab,
prs_v_afdeling a1,
prs_v_afdeling a2,
prs_kostenplaats k
WHERE b.bes_bestelling_status <> 1
AND b.bes_bestelling_status = s.bes_bestellingstatuses_key
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key(+)
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = d.ins_discipline_key
AND d.ins_discipline_key IN (221, 1521, 1522) -- Gebak STK/Cadeaukaarten STK/Bloemen STK
AND b.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = a1.prs_afdeling_key
AND ab.prs_afdeling_key = a2.prs_afdeling_key
AND a2.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
GROUP BY b.bes_bestelling_key,
b.bes_bestelling_status,
s.bes_bestellingstatuses_omschr,
d.ins_discipline_omschrijving,
a1.prs_afdeling_omschrijving,
a2.prs_afdeling_omschrijving,
k.prs_kostenplaats_nr,
pf.prs_perslid_naam_full,
b.bes_bestelling_datum,
COALESCE (fac.gettrackingdate ('BESOTV', b.bes_bestelling_key), bo.bes_bestelopdr_leverdatum),
sd.bes_srtdeel_omschrijving) x
LEFT JOIN (SELECT kb.bes_bestelling_key, ud.fac_usrdata_key, ud.fac_usrdata_omschr
FROM bes_kenmerkbestell kb, bes_kenmerk k, fac_usrdata ud
WHERE kb.bes_kenmerkbestell_verwijder IS NULL
AND kb.bes_kenmerk_key = k.bes_kenmerk_key
AND k.bes_srtkenmerk_key = 221 -- Bestemd voor
AND kb.bes_kenmerkbestell_waarde = TO_CHAR (ud.fac_usrdata_key)) bvoor
ON x.bes_bestelling_key = bvoor.bes_bestelling_key
LEFT JOIN (SELECT kb.bes_bestelling_key, ud.fac_usrdata_key, ud.fac_usrdata_omschr
FROM bes_kenmerkbestell kb, bes_kenmerk k, fac_usrdata ud
WHERE kb.bes_kenmerkbestell_verwijder IS NULL
AND kb.bes_kenmerk_key = k.bes_kenmerk_key
AND k.bes_srtkenmerk_key = 222 -- Reden
AND kb.bes_kenmerkbestell_waarde = TO_CHAR (ud.fac_usrdata_key)) reden
ON x.bes_bestelling_key = reden.bes_bestelling_key
LEFT JOIN (SELECT kb.bes_bestelling_key, kb.bes_kenmerkbestell_waarde
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 = 103) ontv -- Wie krijgt het (naam+organisatie)
ON x.bes_bestelling_key = ontv.bes_bestelling_key
LEFT JOIN (SELECT kb.bes_bestelling_key, kb.bes_kenmerkbestell_waarde
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 = 261) ontv_naam -- Naam ontvanger
ON x.bes_bestelling_key = ontv_naam.bes_bestelling_key
LEFT JOIN (SELECT kb.bes_bestelling_key, kb.bes_kenmerkbestell_waarde
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 = 281) ontv_org -- Organisatie ontvanger
ON x.bes_bestelling_key = ontv_org.bes_bestelling_key
LEFT JOIN (SELECT kb.bes_bestelling_key, kb.bes_kenmerkbestell_waarde
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 = 262) ontv_functie -- Functie ontvanger
ON x.bes_bestelling_key = ontv_functie.bes_bestelling_key
LEFT JOIN (SELECT kb.bes_bestelling_key, kb.bes_kenmerkbestell_waarde
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 = 101) tgv -- Ter gelegenheid van
ON x.bes_bestelling_key = tgv.bes_bestelling_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