Files
Customer/RENK/renk.sql
Jos Groot Lipman 59285c0171 Merge DB19 patches
svn path=/Customer/trunk/; revision=19730
2013-11-05 16:02:50 +00:00

3086 lines
130 KiB
SQL

-- Script containing customer specific db-configuration for RENK.
-- (c) 2011 SG|facilitor bv
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800700
set echo on
spool xrenk.lst
/* Formatted on 4-4-2012 16:44:36 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW renk_v_rap_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 = 41);
/* Formatted on 24-2-2012 11:44:55 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE renk_import_prs (p_import_key IN NUMBER)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
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_oslogin VARCHAR2 (256);
v_prs_perslid_titel 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_afdeling_omschrijving VARCHAR2 (256);
v_prs_srtperslid_omschrijving VARCHAR2 (256);
--v_alg_locatie_code VARCHAR2 (256);
v_alg_gebouw_code VARCHAR2 (256);
--v_alg_verdieping_code VARCHAR2 (256);
v_alg_ruimte_nr VARCHAR2 (256);
v_prs_perslid_telefoonnr VARCHAR2 (256);
v_prs_perslid_mobiel VARCHAR2 (256);
v_prs_perslid_email VARCHAR2 (256);
v_prs_perslid_nr VARCHAR2 (256);
v_prs_perslid_ingangsdatum VARCHAR2 (256);
v_prs_perslid_einddatum VARCHAR2 (256);
-- Overig:
v_prs_perslid_ingangs_date DATE;
v_prs_perslid_eind_date DATE;
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 renk_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_oslogin);
-- 02
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_titel);
-- 03
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam);
-- 04
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_tussenvoegsel);
-- 05
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_voorletters);
-- 06
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_voornaam);
-- 07
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_naam);
-- 08
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_afdeling_omschrijving);
-- 09
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_srtperslid_omschrijving);
-- xx
--fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_locatie_code);
-- 10
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_gebouw_code);
-- xx
--fac.imp_getfield (v_newline,
-- c_fielddelimitor,
-- v_alg_verdieping_code);
-- 11
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_ruimte_nr);
-- 12
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_telefoonnr);
-- 13
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_mobiel);
-- 14
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
-- 15
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr);
-- 16
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_ingangsdatum);
-- 17
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_einddatum);
--
v_aanduiding :=
'['
|| v_prs_perslid_oslogin
|| '|'
|| 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_oslogin) = 'LOGINNAAM'
AND UPPER (v_prs_perslid_titel) = 'TITEL'
AND UPPER (v_prs_perslid_naam) = 'PERSOONACHTERNAAM'
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_afdeling_omschrijving) =
'AFDELINGSOMSCHRIJVING'
AND UPPER (v_prs_srtperslid_omschrijving) = 'FUNCTIE'
--AND UPPER (v_alg_locatie_code) = 'LOCATIECODE'
AND UPPER (v_alg_gebouw_code) = 'GEBOUWCODE'
--AND UPPER (v_alg_verdieping_code) = 'BOUWLAAGVOLGNUMMER'
AND UPPER (v_alg_ruimte_nr) = 'RUIMTENUMMER'
AND UPPER (v_prs_perslid_telefoonnr) = 'TELEFOONNUMMER'
AND UPPER (v_prs_perslid_mobiel) = 'MOBIEL'
AND UPPER (v_prs_perslid_email) = 'EMAIL'
AND UPPER (v_prs_perslid_nr) = 'PERSONEELSNUMMER'
AND UPPER (v_prs_perslid_ingangsdatum) = 'INDIENSTDATUM'
AND UPPER (v_prs_perslid_einddatum) = 'UITDIENSTDATUM'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errorhint := 'Ongeldige loginnaam';
v_prs_perslid_oslogin := TRIM (v_prs_perslid_oslogin);
IF (v_prs_perslid_oslogin IS NULL
OR LENGTH (v_prs_perslid_oslogin) > 30)
THEN
v_ongeldig := 1;
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || 'Loginnaam onbekend of te lang',
'Loginnaam is verplicht; regel wordt overgeslagen!'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige titel';
v_prs_perslid_titel := TRIM (v_prs_perslid_titel);
IF LENGTH (v_prs_perslid_titel) > 15
THEN
v_prs_perslid_titel := SUBSTR (v_prs_perslid_titel, 1, 15);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Titel te lang',
'Titel wordt afgebroken tot ['
|| v_prs_perslid_titel
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige achternaam';
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 || 'Achternaam te lang',
'Achternaam wordt afgebroken tot ['
|| v_prs_perslid_naam
|| ']'
);
COMMIT;
ELSE
IF (v_prs_perslid_naam IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || 'Achternaam onbekend',
'Achternaam is verplicht; regel wordt overgeslagen!'
);
COMMIT;
END IF;
END IF;
--
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
|| ']'
);
COMMIT;
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 [-]');
COMMIT;
END IF;
END IF;
--
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
|| ']'
);
COMMIT;
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!'
);
COMMIT;
END IF;
END IF;
--
v_errorhint := 'Ongeldige afdelingsomschrijving';
v_prs_afdeling_omschrijving := TRIM (v_prs_afdeling_omschrijving);
IF LENGTH (v_prs_afdeling_omschrijving) > 60
THEN
v_prs_afdeling_omschrijving :=
SUBSTR (v_prs_afdeling_omschrijving, 1, 60);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Afdelingsomschrijving te lang',
'Afdelingsomschrijving wordt afgebroken tot ['
|| v_prs_afdeling_omschrijving
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige functie';
v_prs_srtperslid_omschrijving :=
TRIM (v_prs_srtperslid_omschrijving);
IF LENGTH (v_prs_srtperslid_omschrijving) > 60
THEN
v_prs_srtperslid_omschrijving :=
SUBSTR (v_prs_srtperslid_omschrijving, 1, 60);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Functie te lang',
'Functie wordt afgebroken tot ['
|| v_prs_srtperslid_omschrijving
|| ']'
);
COMMIT;
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!'
);
COMMIT;
END IF;
END IF;
/*
--
v_errorhint := 'Ongeldige locatiecode';
v_alg_locatie_code := TRIM (v_alg_locatie_code);
IF LENGTH (v_alg_locatie_code) > 10
THEN
v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Locatiecode te lang',
'Locatiecode wordt afgebroken tot ['
|| v_alg_locatie_code
|| ']'
);
COMMIT;
END IF;
*/
--
v_errorhint := 'Ongeldige gebouwcode';
v_alg_gebouw_code := TRIM (v_alg_gebouw_code);
IF LENGTH (v_alg_gebouw_code) > 12
THEN
v_alg_gebouw_code := SUBSTR (v_alg_gebouw_code, 1, 12);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Gebouwcode te lang',
'Gebouwcode wordt afgebroken tot ['
|| v_alg_gebouw_code
|| ']'
);
COMMIT;
END IF;
/*
--
v_errorhint := 'Ongeldige verdiepingcode';
v_alg_verdieping_code := TRIM (v_alg_verdieping_code);
IF LENGTH (v_alg_verdieping_code) > 10
THEN
v_alg_verdieping_code := SUBSTR (v_alg_verdieping_code, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Verdiepingcode te lang',
'Verdiepingcode wordt afgebroken tot ['
|| v_alg_verdieping_code
|| ']'
);
COMMIT;
END IF;
*/
--
v_errorhint := 'Ongeldig ruimtenummer';
v_alg_ruimte_nr := TRIM (v_alg_ruimte_nr);
IF LENGTH (v_alg_ruimte_nr) > 10
THEN
v_alg_ruimte_nr := SUBSTR (v_alg_ruimte_nr, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Ruimtenummer te lang',
'Ruimtenummer wordt afgebroken tot ['
|| v_alg_ruimte_nr
|| ']'
);
COMMIT;
END IF;
--
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 mobielnummer';
v_prs_perslid_mobiel := TRIM (v_prs_perslid_mobiel);
IF LENGTH (v_prs_perslid_mobiel) > 15
THEN
v_prs_perslid_mobiel := SUBSTR (v_prs_perslid_mobiel, 1, 15);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Mobielnummer te lang',
'Mobielnummer wordt afgebroken tot ['
|| v_prs_perslid_mobiel
|| ']'
);
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;
-- LET OP: Personeelsnummer - nog - niet gebruikt!
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
|| ']'
);
COMMIT;
END IF;
--
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;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errorhint :=
'Fout bij toevoegen regel aan importtabel RENK_IMP_PRS';
INSERT INTO renk_imp_prs (imp_datum,
prs_perslid_oslogin,
prs_perslid_titel,
prs_perslid_naam,
prs_perslid_tussenvoegsel,
prs_perslid_voorletters,
prs_perslid_voornaam,
prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_srtperslid_omschrijving,
--alg_locatie_code,
alg_gebouw_code,
--alg_verdieping_code,
alg_ruimte_nr,
prs_perslid_telefoonnr,
prs_perslid_mobiel,
prs_perslid_email,
prs_perslid_nr,
prs_perslid_ingangsdatum,
prs_perslid_einddatum)
VALUES (SYSDATE,
v_prs_perslid_oslogin,
v_prs_perslid_titel,
v_prs_perslid_naam,
v_prs_perslid_tussenvoegsel,
v_prs_perslid_voorletters,
v_prs_perslid_voornaam,
v_prs_afdeling_naam,
v_prs_afdeling_omschrijving,
v_prs_srtperslid_omschrijving,
--v_alg_locatie_code,
v_alg_gebouw_code,
--v_alg_verdieping_code,
v_alg_ruimte_nr,
v_prs_perslid_telefoonnr,
v_prs_perslid_mobiel,
v_prs_perslid_email,
v_prs_perslid_nr,
v_prs_perslid_ingangs_date,
v_prs_perslid_eind_date);
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 renk_import_prs;
/
/* Formatted on 24-2-2012 11:44:55 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE renk_update_prs (p_import_key IN NUMBER)
IS
c_persoon_inactief VARCHAR2 (30) := 'INACTIEF: ';
-- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een e-mail
c_max_delta_percentage NUMBER (10) := 20;
-- Ruimte waar personen in geplaatst worden (indien nog geen ruimte in opgegeven gebouw)
c_ruimte_nr VARCHAR2 (10) := '0.00';
-- 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_perslid_key NUMBER (10);
v_afdeling_key NUMBER (10);
v_srtperslid_key NUMBER (10);
--v_locatie_key NUMBER (10);
v_gebouw_key NUMBER (10);
v_gebouw_code VARCHAR2 (10);
--v_verdieping_key NUMBER (10);
v_ruimte_key NUMBER (10);
v_ruimte_nr VARCHAR2 (10);
v_wp_volgnr NUMBER (3);
v_wp_oms VARCHAR2 (30);
v_wp_key NUMBER (10);
v_groep_key NUMBER (10);
v_profiel_key NUMBER (10);
-- Let op! Personen die niet meer in dienst zijn -> niet in renk_imp_prs!
-- Dubbele oslogins? Dan wordt iemand mogelijk niet verwijderd/INACTIEF!
CURSOR cdelprs
IS
SELECT p.prs_perslid_key,
p.prs_perslid_oslogin,
p.prs_perslid_naam,
p.prs_perslid_voornaam
FROM prs_v_aanwezigperslid p
WHERE (p.prs_perslid_oslogin IS NULL
OR p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\')
AND p.prs_perslid_oslogin2 IS NULL
AND NOT EXISTS
(SELECT 1
FROM renk_imp_prs ip
WHERE UPPER (ip.prs_perslid_oslogin) =
UPPER (p.prs_perslid_oslogin));
-- Let op! Personen die niet meer in dienst zijn -> niet in renk_imp_prs!
CURSOR csrtperslid
IS
SELECT MIN (prs_perslid_oslogin) prs_perslid_oslogin,
MIN (prs_perslid_naam) prs_perslid_naam,
MIN (prs_perslid_voornaam) prs_perslid_voornaam,
MIN (prs_srtperslid_omschrijving) prs_srtperslid_omschrijving
FROM renk_imp_prs
GROUP BY UPPER (prs_srtperslid_omschrijving);
-- Let op! Personen die niet meer in dienst zijn -> niet in renk_imp_prs!
-- Dubbele oslogins? Dan wordt slechts 1 set persoongegevens toegevoegd!
-- Ook wordt in deze loop de afdelingsomschrijving eventueel bijgewerkt!
CURSOR cperslid
IS
SELECT * FROM renk_imp_prs;
-- Let op! Personen die niet meer in dienst zijn -> niet in renk_imp_prs!
-- Dubbele oslogins? Dan krijgt iemand mogelijk de verkeerde plaats!
CURSOR cwp
IS
SELECT p.*, ip.alg_gebouw_code, ip.alg_ruimte_nr
FROM renk_imp_prs ip, prs_v_aanwezigperslid p
WHERE ip.alg_gebouw_code IS NOT NULL
AND UPPER (ip.prs_perslid_oslogin) =
UPPER (p.prs_perslid_oslogin);
-- Alle actieve personen met oslogin (ie. de import-doelgroep) zonder een werkplek
CURSOR cnowp
IS
SELECT p.prs_perslid_key,
p.prs_perslid_oslogin,
p.prs_perslid_naam,
p.prs_perslid_voornaam
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_oslogin 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 oslogin (ie. de import-doelgroep) niet in een groep
CURSOR cnogroup
IS
SELECT p.prs_perslid_key,
p.prs_perslid_oslogin,
p.prs_perslid_naam,
p.prs_perslid_voornaam
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_oslogin IS NOT NULL
AND NOT EXISTS
(SELECT 1
FROM fac_gebruikersgroep g
WHERE g.prs_perslid_key = p.prs_perslid_key);
BEGIN
-- Bepaal oslogin-match tussen Facilitor en RECENT importbestand ofwel het aantal
-- actieve personen na import.
-- RECENT betekent niet meer dan een kwartiertje oud (14,4 minuten); dit voorkomt
-- dat - als er geen nieuw importbestand is aangeleverd - telkens dezelfde fouten
-- worden gerapporteerd (nl. op basis van een oud importbestand in RENK_IMP_PRS).
SELECT COUNT ( * )
INTO v_count_prs_import
FROM prs_v_aanwezigperslid p, renk_imp_prs ip
WHERE p.prs_perslid_oslogin IS NOT NULL
AND UPPER (p.prs_perslid_oslogin) =
UPPER (ip.prs_perslid_oslogin)
AND (ip.imp_datum + 0.01) > SYSDATE;
-- Bepaal huidig aantal actieve personen in Facilitor.
SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
INTO v_count_prs_actual
FROM prs_v_aanwezigperslid
WHERE prs_perslid_oslogin 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_oslogin
|| '|'
|| 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 loginnaam ['
|| recdelprs.prs_perslid_oslogin
|| '] en naam ['
|| recdelprs.prs_perslid_naam
|| ', '
|| recdelprs.prs_perslid_voornaam
|| '] is verwijderd',
'Persoon is verwijderd'
);
COMMIT;
ELSE
-- Staat persoon INACTIEF?
v_errorhint := 'Fout bij bepalen 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 loginnaam ['
|| recdelprs.prs_perslid_oslogin
|| '] 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 loginnaam ['
|| recdelprs.prs_perslid_oslogin
|| '] 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_oslogin
|| '|'
|| 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_oslogin
|| '|'
|| 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_v_aanwezigafdeling
WHERE prs_afdeling_upper =
UPPER (recperslid.prs_afdeling_naam);
v_errorhint :=
'Fout bij wijzigen afdelingsomschrijving ['
|| recperslid.prs_afdeling_naam
|| '|'
|| recperslid.prs_afdeling_omschrijving
|| ']';
UPDATE prs_afdeling
SET prs_afdeling_omschrijving =
COALESCE (recperslid.prs_afdeling_omschrijving,
prs_afdeling_omschrijving)
WHERE prs_afdeling_key = v_afdeling_key;
COMMIT;
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_oslogin) =
UPPER (recperslid.prs_perslid_oslogin);
IF v_count > 1
THEN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errorhint,
'Kan persoon niet 1-duidig bepalen!');
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_oslogin,
prs_perslid_naam,
prs_perslid_tussenvoegsel,
prs_perslid_voorletters,
prs_perslid_voornaam,
prs_perslid_titel,
prs_perslid_telefoonnr,
prs_perslid_mobiel,
prs_perslid_email,
prs_perslid_nr,
prs_perslid_ingangsdatum,
prs_perslid_einddatum,
fac_profiel_key
)
VALUES (
'PRS',
v_srtperslid_key,
v_afdeling_key,
recperslid.prs_perslid_oslogin,
recperslid.prs_perslid_naam,
recperslid.prs_perslid_tussenvoegsel,
recperslid.prs_perslid_voorletters,
recperslid.prs_perslid_voornaam,
recperslid.prs_perslid_titel,
recperslid.prs_perslid_telefoonnr,
recperslid.prs_perslid_mobiel,
recperslid.prs_perslid_email,
recperslid.prs_perslid_nr,
COALESCE (
recperslid.prs_perslid_ingangsdatum,
SYSDATE
),
recperslid.prs_perslid_einddatum,
v_profiel_key
)
RETURNING prs_perslid_key INTO v_perslid_key;
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_naam = recperslid.prs_perslid_naam,
prs_perslid_tussenvoegsel =
recperslid.prs_perslid_tussenvoegsel,
prs_perslid_voorletters =
recperslid.prs_perslid_voorletters,
prs_perslid_voornaam =
recperslid.prs_perslid_voornaam,
prs_perslid_titel = recperslid.prs_perslid_titel,
prs_perslid_telefoonnr =
recperslid.prs_perslid_telefoonnr,
prs_perslid_mobiel = recperslid.prs_perslid_mobiel,
prs_perslid_email = recperslid.prs_perslid_email,
prs_perslid_nr = recperslid.prs_perslid_nr,
prs_perslid_ingangsdatum =
COALESCE (recperslid.prs_perslid_ingangsdatum,
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;
END IF;
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',
'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_oslogin
|| '|'
|| recwp.prs_perslid_naam
|| '|'
|| recwp.prs_perslid_voornaam
|| '|'
|| recwp.alg_gebouw_code
|| '|'
|| recwp.alg_ruimte_nr
|| ' - ';
v_errorhint := 'Fout bij bepalen persoon';
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_v_aanwezigperslid
WHERE UPPER (prs_perslid_oslogin) =
UPPER (recwp.prs_perslid_oslogin);
v_errorhint := 'Fout bij bepalen gebouw';
SELECT alg_gebouw_key
INTO v_gebouw_key
FROM alg_v_aanweziggebouw
WHERE UPPER (alg_gebouw_code) = UPPER (recwp.alg_gebouw_code);
v_errorhint := 'Fout bij bepalen beoogde ruimte in gebouw';
SELECT COUNT ( * )
INTO v_count
FROM alg_v_aanwezigruimte r, alg_verdieping v
WHERE r.alg_ruimte_upper_nr = UPPER (recwp.alg_ruimte_nr)
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = v_gebouw_key;
IF v_count <> 1
THEN
v_errorhint := 'Fout bij bepalen default ruimte in gebouw';
SELECT r.alg_ruimte_key
INTO v_ruimte_key
FROM alg_v_aanwezigruimte r, alg_verdieping v
WHERE r.alg_ruimte_upper_nr = c_ruimte_nr
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = v_gebouw_key;
ELSE
SELECT r.alg_ruimte_key
INTO v_ruimte_key
FROM alg_v_aanwezigruimte r, alg_verdieping v
WHERE r.alg_ruimte_upper_nr = UPPER (recwp.alg_ruimte_nr)
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = v_gebouw_key;
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 recwp.alg_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_oslogin
|| '] 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_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
FOR recnogroup IN cnogroup
LOOP
BEGIN
v_aanduiding :=
recnogroup.prs_perslid_oslogin
|| '|'
|| 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_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
IF (v_count_prs_import = 0)
THEN
fac.imp_writelog (
p_import_key,
'S',
'Geen nieuw/recent bestand met te importeren personen aangetroffen!',
''
);
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)
|| ']'
);
END IF;
COMMIT;
END IF;
COMMIT;
END renk_update_prs;
/
/* Formatted on 19-9-2013 14:58:52 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW renk_v_kostensoorten
AS
SELECT prs_kostensoort_key,
prs_kostensoort_oms || '-' || prs_kostensoort_opmerking
prs_kostensoort_oms
FROM prs_kostensoort;
/* Formatted on 8-7-2013 12:16:32 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW renk_v_res_huurders
AS
SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam
FROM prs_bedrijf b, prs_kenmerklink kl
WHERE prs_bedrijf_huurder = 1
AND b.prs_bedrijf_key = kl.prs_link_key
AND kl.prs_kenmerk_key = 1021 -- Regelmatige relatie/Naam
AND COALESCE (kl.prs_kenmerklink_verwijder, TRUNC (SYSDATE + 1)) =
(SELECT MAX(COALESCE (prs_kenmerklink_verwijder,
TRUNC (SYSDATE + 1)))
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1021 -- Regelmatige relatie/Naam
AND prs_link_key = kl.prs_link_key)
MINUS
SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam
FROM prs_bedrijf b, prs_kenmerklink kl
WHERE prs_bedrijf_huurder = 1
AND b.prs_bedrijf_key = kl.prs_link_key
AND kl.prs_kenmerk_key = 1021 -- Regelmatige relatie/Naam
AND kl.prs_kenmerklink_verwijder IS NOT NULL
AND NOT EXISTS
(SELECT 1
FROM res_v_aanwezigkenmerkwaarde
WHERE res_kenmerk_key = 9 -- Relatie
AND fac.safe_to_number (
res_kenmerkreservering_waarde
) = kl.prs_link_key);
/* Formatted on 11-6-2013 17:04:56 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW renk_v_rap_mldinsres_qrc
(
fclt_f_soortmelding,
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_verdieping,
plaats,
ruimte_key,
ruimtefunctie,
fclt_f_objectdiscipline,
fclt_f_objectgroep,
objectsoort_key,
fclt_f_objectsoort,
objectsoort_code,
deel_key,
deel_omschrijving,
deel_upper,
hide_f_bookmark_id,
variabele
)
AS
SELECT md.ins_discipline_omschrijving
|| '-'
|| msd.mld_stdmelding_omschrijving,
l.alg_locatie_omschrijving,
o.alg_gebouw_omschrijving,
o.alg_verdieping_omschrijving,
o.alg_plaatsaanduiding plaats,
d.ins_alg_ruimte_key ruimte_key,
sr.alg_srtruimte_omschrijving,
disc.ins_discipline_omschrijving,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_key,
sd.ins_srtdeel_omschrijving,
sd.ins_srtdeel_code,
d.ins_deel_key,
d.ins_deel_omschrijving,
d.ins_deel_upper,
b.fac_bookmark_id,
'INS_KEY'
FROM (SELECT DECODE (
INSTR (
SUBSTR (
UPPER (fac_bookmark_query),
INSTR (UPPER (fac_bookmark_query),
'STDM_KEY=')
),
'&'
),
0,
SUBSTR (
SUBSTR (
UPPER (fac_bookmark_query),
INSTR (UPPER (fac_bookmark_query),
'STDM_KEY=')
),
10
),
SUBSTR (
SUBSTR (
UPPER (fac_bookmark_query),
INSTR (UPPER (fac_bookmark_query),
'STDM_KEY=')
),
10,
INSTR (
SUBSTR (
UPPER (fac_bookmark_query),
INSTR (UPPER (fac_bookmark_query),
'STDM_KEY=')
),
'&'
)
- 10
)
)
stdm_key,
fac_bookmark_id
FROM fac_bookmark
WHERE TRUNC (fac_bookmark_aanmaak) >=
TO_DATE ('10062013', 'ddmmyyyy')
AND UPPER (fac_bookmark_path) = 'APPL/PDA/MELDING.ASP'
AND INSTR (UPPER (fac_bookmark_query), 'STDM_KEY') > 0)
b, -- stdm_key-bookmarks
(SELECT sm.mld_ins_discipline_key,
sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
sm.ins_srtinst_key ins_srtdeel_key
FROM mld_stdmelding sm
WHERE sm.mld_stdmelding_verwijder IS NULL
AND sm.ins_srtinst_niveau = 'S'
UNION ALL
SELECT sm.mld_ins_discipline_key,
sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
sd.ins_srtdeel_key
FROM mld_stdmelding sm, ins_srtdeel sd
WHERE sm.mld_stdmelding_verwijder IS NULL
AND sm.ins_srtinst_niveau = 'G'
AND sm.ins_srtinst_key = sd.ins_srtgroep_key
UNION ALL
SELECT sm.mld_ins_discipline_key,
sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
sd.ins_srtdeel_key
FROM mld_stdmelding sm, ins_srtgroep sg, ins_srtdeel sd
WHERE sm.mld_stdmelding_verwijder IS NULL
AND sm.ins_srtinst_niveau = 'D'
AND sm.ins_srtinst_key = sg.ins_discipline_key
AND sg.ins_srtgroep_key = sd.ins_srtgroep_key) msd, -- object-meldingen
mld_discipline md,
ins_v_aanwezigdeel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_discipline disc,
ins_v_alg_overzicht o,
alg_locatie l,
alg_ruimte r,
alg_srtruimte sr
WHERE fac.safe_to_number (b.stdm_key) = msd.mld_stdmelding_key
AND msd.mld_ins_discipline_key = md.ins_discipline_key
AND msd.ins_srtdeel_key = d.ins_srtdeel_key
AND d.ins_alg_ruimte_type IN ('T', 'R', 'W')
AND d.ins_deel_parent_key IS NULL
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = disc.ins_discipline_key
AND d.ins_alg_ruimte_key = o.alg_onroerendgoed_keys
AND d.ins_alg_ruimte_type = o.alg_onroerendgoed_type
AND d.ins_alg_locatie_key = o.alg_locatie_key -- redundant?
AND o.alg_locatie_key = l.alg_locatie_key
AND d.ins_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
UNION ALL
SELECT 'Melding op object',
l.alg_locatie_omschrijving,
o.alg_gebouw_omschrijving,
o.alg_verdieping_omschrijving,
o.alg_plaatsaanduiding plaats,
NULL ruimte_key,
sr.alg_srtruimte_omschrijving,
disc.ins_discipline_omschrijving,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_key,
sd.ins_srtdeel_omschrijving,
sd.ins_srtdeel_code,
d.ins_deel_key,
d.ins_deel_omschrijving,
d.ins_deel_upper,
b.fac_bookmark_id,
'INS_KEY'
FROM fac_bookmark b,
ins_v_aanwezigdeel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_discipline disc,
ins_v_alg_overzicht o,
alg_locatie l,
alg_ruimte r,
alg_srtruimte sr
WHERE TRUNC (b.fac_bookmark_aanmaak) = TO_DATE ('10062013', 'ddmmyyyy')
AND UPPER (b.fac_bookmark_path) = 'APPL/PDA/INS_DEEL.ASP'
--AND UPPER (b.fac_bookmark_naam) LIKE '%(GENERIEK)%'
--AND INSTR (UPPER (b.fac_bookmark_query), 'INS_KEY=') > 0
AND d.ins_alg_ruimte_type IN ('T', 'R', 'W')
AND d.ins_deel_parent_key IS NULL
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = disc.ins_discipline_key
AND d.ins_alg_ruimte_key = o.alg_onroerendgoed_keys
AND d.ins_alg_ruimte_type = o.alg_onroerendgoed_type
AND d.ins_alg_locatie_key = o.alg_locatie_key -- redundant?
AND o.alg_locatie_key = l.alg_locatie_key
AND d.ins_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
UNION ALL
SELECT 'Melding op ruimte',
l.alg_locatie_omschrijving,
o.alg_gebouw_omschrijving,
o.alg_verdieping_omschrijving,
o.alg_plaatsaanduiding plaats,
r.alg_ruimte_key ruimte_key,
sr.alg_srtruimte_omschrijving,
NULL ins_discipline_omschrijving,
NULL ins_srtgroep_omschrijving,
NULL ins_srtdeel_key,
NULL ins_srtdeel_omschrijving,
NULL ins_srtdeel_code,
NULL ins_deel_key,
NULL ins_deel_omschrijving,
NULL ins_deel_upper,
b.fac_bookmark_id,
'RUIMTE_KEY'
FROM fac_bookmark b,
alg_ruimte r,
alg_srtruimte sr,
ins_v_alg_overzicht o,
alg_locatie l
WHERE TRUNC (b.fac_bookmark_aanmaak) = TO_DATE ('10062013', 'ddmmyyyy')
AND UPPER (b.fac_bookmark_path) = 'APPL/PDA/MELDING.ASP'
--AND UPPER (b.fac_bookmark_naam) LIKE '%(GENERIEK)%'
--AND INSTR (UPPER (b.fac_bookmark_query), 'RUIMTE_KEY=') > 0
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND r.alg_ruimte_key = o.alg_onroerendgoed_keys
AND o.alg_onroerendgoed_type = 'R'
AND o.alg_locatie_key = l.alg_locatie_key
UNION ALL
SELECT 'Reserveer ruimte',
l.alg_locatie_omschrijving,
o.alg_gebouw_omschrijving,
o.alg_verdieping_omschrijving,
rr.res_ruimte_nr plaats,
rar.res_ruimte_key ruimte_key,
sr.alg_srtruimte_omschrijving,
NULL ins_discipline_omschrijving,
NULL ins_srtgroep_omschrijving,
NULL ins_srtdeel_key,
NULL ins_srtdeel_omschrijving,
NULL ins_srtdeel_code,
NULL ins_deel_key,
NULL ins_deel_omschrijving,
NULL ins_deel_upper,
b.fac_bookmark_id,
'RES_RUIMTE_KEY'
FROM fac_bookmark b,
res_ruimte rr,
( 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) rar,
alg_ruimte r,
alg_srtruimte sr,
ins_v_alg_overzicht o,
alg_locatie l
WHERE TRUNC (b.fac_bookmark_aanmaak) = TO_DATE ('10062013', 'ddmmyyyy')
AND UPPER (b.fac_bookmark_path) = 'APPL/PDA/RESERVERINGEN.ASP'
--AND UPPER (b.fac_bookmark_naam) LIKE '%(GENERIEK)%'
--AND INSTR (UPPER (b.fac_bookmark_query), 'RES_RUIMTE_KEY=') > 0
AND rr.res_discipline_key NOT IN (61, 62)
AND rr.res_ruimte_key = rar.res_ruimte_key
AND rar.alg_ruimte_key = r.alg_ruimte_key
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND r.alg_ruimte_key = o.alg_onroerendgoed_keys
AND o.alg_onroerendgoed_type = 'R'
AND o.alg_locatie_key = l.alg_locatie_key
AND l.alg_locatie_key = 50;
/* Formatted on 29-8-2013 17:20:02 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PACKAGE RENK
AS
-- PACKAGES voor de RENK specifieke ondersteuning
PROCEDURE freezereserveringen (p_groepering IN VARCHAR2,
p_kenmerk IN VARCHAR2);
END;
/
/* Formatted on 29-8-2013 17:20:02 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PACKAGE BODY RENK
AS
PROCEDURE freezereserveringen (p_groepering IN VARCHAR2,
p_kenmerk IN VARCHAR2)
AS
-- Volgende cursors lopen over boekingen door de huurder geidentificeerd
-- door 'p_groepering' in de lopende jaarhelft hebben plaatsgevonden (of
-- nog moeten plaatsvinden) en nog niet zijn gefactuureerd; betreffende
-- ruimte-reservering worden NIET Administratief Verwerkt!
-- Ook wordt aan deze reserveringen een (nieuw) Docman-kenmerk gekoppeld.
CURSOR cobj
IS
SELECT v.resid,
rr.res_rsv_ruimte_key,
rr.res_reservering_key,
rr.res_rsv_ruimte_volgnr,
rd.res_rsv_deel_key,
rd.res_status_bo_key
FROM renk_v_verhuurregels_alle v,
res_v_aanwezigrsv_ruimte rr,
res_v_aanwezigrsv_deel rd
WHERE v.groepering = p_groepering
AND v.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
AND rr.res_rsv_ruimte_key = rd.res_rsv_ruimte_key;
CURSOR cart
IS
SELECT v.resid,
rr.res_rsv_ruimte_key,
rr.res_reservering_key,
rr.res_rsv_ruimte_volgnr,
ra.res_rsv_artikel_key,
ra.res_status_bo_key
FROM renk_v_verhuurregels_alle v,
res_v_aanwezigrsv_ruimte rr,
res_v_aanwezigrsv_artikel ra
WHERE v.groepering = p_groepering
AND v.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key;
CURSOR crui
IS
SELECT v.resid,
rr.res_rsv_ruimte_key,
rr.res_reservering_key,
rr.res_rsv_ruimte_volgnr,
rr.res_status_bo_key
FROM renk_v_verhuurregels_alle v, res_v_aanwezigrsv_ruimte rr
WHERE v.groepering = p_groepering
AND v.res_rsv_ruimte_key = rr.res_rsv_ruimte_key;
c_applname VARCHAR2 (50) := 'FREEZE_RES';
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200) := '-';
v_count NUMBER (10);
v_count_upd NUMBER (10);
--v_factuurnr VARCHAR2 (20);
--v_prskey NUMBER (10);
--v_huurderlid VARCHAR2 (1) := 'N';
--v_factuurbedrag NUMBER (12, 2);
--v_prijs NUMBER (9, 2);
BEGIN
v_count_upd := 0;
-- Bevriezen RES-objecten!
FOR rec IN cobj
LOOP
BEGIN
v_aanduiding :=
'['
|| rec.resid
|| '|'
|| rec.res_rsv_ruimte_key
|| '|'
|| TO_CHAR (p_groepering)
|| '] ';
-- Eerst maar eens afmelden (als dat nog niet is gedaan)!
IF (rec.res_status_bo_key = 2)
THEN
v_errormsg := 'Fout bij TV-en RES-object.';
UPDATE res_rsv_deel
SET res_status_bo_key = 5
WHERE res_rsv_deel_key = rec.res_rsv_deel_key;
COMMIT;
v_count_upd := v_count_upd + 1;
END IF;
--v_errormsg := 'Fout bij bepalen res_rsv_deel_prijs.';
--SELECT res.getdeelprijs (rec.res_rsv_deel_key)
-- INTO v_prijs
-- FROM DUAL;
--v_errormsg := 'Fout bij bijwerken res_rsv_deel_prijs.';
--UPDATE res_rsv_deel
-- SET res_rsv_deel_prijs = v_prijs
-- WHERE res_rsv_deel_key = rec.res_rsv_deel_key;
--v_errormsg := 'Fout bij AV-en RES-object.';
--UPDATE res_rsv_deel
-- SET res_status_bo_key = 6
-- WHERE res_rsv_deel_key = rec.res_rsv_deel_key;
--COMMIT;
--v_count_upd := v_count_upd + 1;
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.writelog (c_applname,
'W',
v_aanduiding || v_errormsg,
'RES-object');
COMMIT;
END;
END LOOP;
fac.writelog (c_applname,
'S',
'RES-object/#afgemeld: ' || TO_CHAR (v_count_upd),
'');
COMMIT;
v_count_upd := 0;
-- Bevriezen RES-artikelen!
FOR rec IN cart
LOOP
BEGIN
v_aanduiding :=
'['
|| rec.resid
|| '|'
|| rec.res_rsv_ruimte_key
|| '|'
|| TO_CHAR (p_groepering)
|| '] ';
-- Eerst maar eens afmelden (als dat nog niet is gedaan)!
IF (rec.res_status_bo_key = 2)
THEN
v_errormsg := 'Fout bij TV-en RES-artikel.';
UPDATE res_rsv_artikel
SET res_status_bo_key = 5
WHERE res_rsv_artikel_key = rec.res_rsv_artikel_key;
COMMIT;
v_count_upd := v_count_upd + 1;
END IF;
--IF (rec.res_artikel_prijs_vast = 1)
--THEN
-- v_errormsg := 'Fout bij bepalen res_rsv_artikel_prijs.';
-- SELECT res.getartikelprijs (rec.res_rsv_artikel_key)
-- INTO v_prijs
-- FROM DUAL;
-- v_errormsg := 'Fout bij bijwerken res_rsv_artikel_prijs.';
-- UPDATE res_rsv_artikel
-- SET res_rsv_artikel_prijs = v_prijs,
-- res_rsv_artikel_inkoopprijs =
-- (SELECT res_artikel_inkoopprijs
-- FROM res_artikel
-- WHERE res_artikel_key = rec.res_artikel_key),
-- res_rsv_artikel_btw =
-- (SELECT res_artikel_btw
-- FROM res_artikel
-- WHERE res_artikel_key = rec.res_artikel_key)
-- WHERE res_rsv_artikel_key = rec.res_rsv_artikel_key;
--END IF;
--v_errormsg := 'Fout bij AV-en RES-artikel.';
--UPDATE res_rsv_artikel
-- SET res_status_bo_key = 6
-- WHERE res_rsv_artikel_key = rec.res_rsv_artikel_key;
--COMMIT;
--v_count_upd := v_count_upd + 1;
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.writelog (c_applname,
'W',
v_aanduiding || v_errormsg,
'RES-artikel');
COMMIT;
END;
END LOOP;
fac.writelog (c_applname,
'S',
'RES-artikel/#afgemeld: ' || TO_CHAR (v_count_upd),
'');
COMMIT;
v_count_upd := 0;
-- Eerst maar eens afmelden (als dat nog niet is gedaan)!
FOR rec IN crui
LOOP
BEGIN
v_aanduiding :=
'['
|| rec.resid
|| '|'
|| rec.res_rsv_ruimte_key
|| '|'
|| TO_CHAR (p_groepering)
|| '] ';
-- Niet voor reeds afgemelde reserveringen en "roomservice"!
IF (rec.res_status_bo_key = 2)
THEN
v_errormsg := 'Fout bij TV-en RES-ruimte.';
UPDATE res_rsv_ruimte
SET res_status_bo_key = 5
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
fac.trackaction ('RESAFM',
rec.res_rsv_ruimte_key,
NULL,
NULL,
NULL);
COMMIT;
v_count_upd := v_count_upd + 1;
END IF;
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.writelog (c_applname,
'W',
v_aanduiding || v_errormsg,
'RES-ruimte/TV');
COMMIT;
END;
END LOOP;
fac.writelog (c_applname,
'S',
'RES-ruimte/#afgemeld: ' || TO_CHAR (v_count_upd),
'');
COMMIT;
v_count_upd := 0;
FOR rec IN crui
LOOP
BEGIN
v_aanduiding :=
'['
|| rec.resid
|| '|'
|| rec.res_rsv_ruimte_key
|| '|'
|| TO_CHAR (p_groepering)
|| '] ';
v_errormsg := 'Fout bij bijwerken kenmerk.';
UPDATE res_rsv_ruimte
SET res_rsv_ruimte_ordernr =
DECODE (res_rsv_ruimte_ordernr,
NULL, p_kenmerk,
res_rsv_ruimte_ordernr || '+' || p_kenmerk)
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
-- Niet voor "roomservice"!
--IF (rec.res_status_bo_key = 5)
--THEN
-- IF (rec.old_prijs <> rec.new_prijs)
-- THEN
-- v_errormsg := 'Fout bij bijwerken res_rsv_ruimte_prijs';
-- UPDATE res_rsv_ruimte rr
-- SET rr.res_rsv_ruimte_prijs = rec.new_prijs
-- WHERE rr.res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
-- END IF;
-- v_errormsg := 'Fout bij AV-en RES-ruimte.';
-- UPDATE res_rsv_ruimte
-- SET res_status_bo_key = 6
-- WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
-- fac.trackaction ('RESVER',
-- rec.res_rsv_ruimte_key,
-- NULL,
-- NULL,
-- NULL);
--END IF;
COMMIT;
v_count_upd := v_count_upd + 1;
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.writelog (c_applname,
'W',
v_aanduiding || v_errormsg,
'RES-ruimte/AV');
COMMIT;
END;
END LOOP;
fac.writelog (c_applname,
'S',
'RES-ruimte/#bijgewerkt: ' || TO_CHAR (v_count_upd),
'');
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog (c_applname,
'E',
v_aanduiding || v_errormsg,
'');
COMMIT;
END freezereserveringen;
END;
/
/* Formatted on 1-8-2013 9:52:25 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW renk_v_verhuurregels_alle
(
groepering,
sortering1,
sortering2,
fclt_f_naam,
naam,
afd,
tav,
aanhef,
adres,
postcode,
plaats,
factuurdatum,
res_rsv_ruimte_key,
resid,
ordernr,
sys_helft,
dagnaam,
dagnr,
van,
tot,
omschrijving,
opmerking,
datumverzoek,
soortverzoek,
tarief_code,
termijnen,
korting,
behandelaar_naam,
behandelaar_tel,
behandelaar_mail,
res_discipline_key,
res_ruimte_key,
alg_locatie_key,
res_type,
res_ruimte_nr,
vnr,
onderwerp,
res_voorziening,
res_rsv_prijs,
aantal,
ps,
po,
pm,
pa,
pd,
btw
)
AS
SELECT DECODE ( -- V -> per jaarhelft/locatie; I of C -> per reservering!
tarief.res_kenmerkreservering_waarde,
'84', -- Vast
TO_CHAR (rvc.alg_locatie_key) || '-' -- Dash!
|| COALESCE (TO_CHAR (r.bedr_key),
--inaam.res_kenmerkreservering_waarde,
UPPER (TRIM (x.res_rsv_ruimte_omschrijving)),
'[naam]'),
TO_CHAR (x.res_key) || '/' || TO_CHAR (x.res_vnr) -- Slash!
)
groepering,
TO_CHAR (x.van, 'yyyy-mm-dd hh24:mi')
|| rvc.res_ruimte_nr
|| x.res_key
sortering1, -- Factuurregels op datum-tijd en dan ruimtenr
rvc.res_type || SUBSTR ('000000' || TO_CHAR (rvc.vnr), -6)
sortering2, -- ..daarbinnen op type (1R2V3C) en dan volgnr
DECODE (
r.bedr_key,
NULL,
COALESCE (UPPER (TRIM (x.res_rsv_ruimte_omschrijving)),
'[naam]'),
TRIM (r.prs_bedrijf_naam)
)
fclt_f_naam,
DECODE (r.bedr_key,
NULL,
COALESCE (inaam.res_kenmerkreservering_waarde, '[naam]'),
COALESCE (rnaam.prs_kenmerklink_waarde, '[naam]'))
naam,
DECODE (r.bedr_key,
NULL, iafd.res_kenmerkreservering_waarde,
rafd.prs_kenmerklink_waarde)
afd,
DECODE (r.bedr_key,
NULL, itav.res_kenmerkreservering_waarde,
rtav.prs_kenmerklink_waarde)
tav,
DECODE (
r.bedr_key,
NULL,
COALESCE (iaanhef.res_kenmerkreservering_waarde, '[aanhef]'),
COALESCE (raanhef.prs_kenmerklink_waarde, '[aanhef]')
)
aanhef,
DECODE (
r.bedr_key,
NULL,
COALESCE (iadres.res_kenmerkreservering_waarde, '[adres]'),
COALESCE (r.adres, '[adres]')
)
adres,
DECODE (
r.bedr_key,
NULL,
COALESCE (ipostcode.res_kenmerkreservering_waarde, '[pc]'),
COALESCE (r.postcode, '[pc]')
)
postcode,
DECODE (
r.bedr_key,
NULL,
COALESCE (iplaats.res_kenmerkreservering_waarde, '[plaats]'),
COALESCE (r.plaats, '[plaats]')
)
plaats,
TO_CHAR (SYSDATE, 'dd')
|| DECODE (TO_CHAR (SYSDATE, 'mm'),
'01', ' januari ',
'02', ' februari ',
'03', ' maart ',
'04', ' april ',
'05', ' mei ',
'06', ' juni ',
'07', ' juli ',
'08', ' augustus ',
'09', ' september ',
'10', ' okotober ',
'11', ' november ',
' december ')
|| TO_CHAR (SYSDATE, 'yyyy')
factuurdatum,
x.res_rsv_ruimte_key,
x.res_key || '/' || x.res_vnr resid,
x.res_rsv_ruimte_ordernr ordernr,
x.sys_helft, -- 1e of 2e jaarhelft in formaat yyyyh(elft)!
DECODE (TO_CHAR (x.van, 'd'),
'2', 'maandag',
'3', 'dinsdag',
'4', 'woensdag',
'5', 'donderdag',
'6', 'vrijdag',
'7', 'zaterdag',
'zondag')
dagnaam,
DECODE (TO_CHAR (x.van, 'd'),
'1', 7,
TO_NUMBER (TO_CHAR (x.van, 'd')) - 1)
dagnr,
x.van, --TO_CHAR (x.van, 'hh24:mi') van,
x.tot, --TO_CHAR (x.tot, 'hh24:mi') tot,
x.res_rsv_ruimte_omschrijving oms,
x.res_rsv_ruimte_opmerking opm,
COALESCE (datumverzoek.res_kenmerkreservering_waarde,
'dd-mm-jjjj')
datumverzoek,
DECODE (soortverzoek.res_kenmerkreservering_waarde,
'81', 'telefonische',
'82', 'schriftelijke',
'[soortverzoek]')
soortverzoek,
DECODE (tarief.res_kenmerkreservering_waarde,
'84', 'V', -- Vast!
'85', 'C', -- Commercieel!
'I') -- Incidenteel!
tarief_code,
rtermijnen.prs_kenmerklink_waarde termijnen,
DECODE (
rkorting.prs_kenmerklink_waarde,
'1',
DECODE (
rvc.res_discipline_key,
41,
DECODE (
TO_CHAR (x.tot, 'd'),
'4', -- Woensdag
DECODE (SIGN ( ( (x.van - TRUNC (x.van)) * 24) - 12), -1, 1, 0.5),
DECODE (SIGN ( ( (x.van - TRUNC (x.van)) * 24) - 18), -1, 1, 0.5)
),
42,
DECODE (
TO_CHAR (x.tot, 'd'),
'4', -- Woensdag
DECODE (SIGN ( ( (x.van - TRUNC (x.van)) * 24) - 12), -1, 1, 0.5),
DECODE (SIGN ( ( (x.van - TRUNC (x.van)) * 24) - 18), -1, 1, 0.5)
),
1
),
1
)
korting, -- Eventueel te hanteren korting (factor)!
x.behandelaar_naam,
x.behandelaar_tel,
x.behandelaar_mail,
rvc.res_discipline_key,
rvc.res_ruimte_key,
rvc.alg_locatie_key,
rvc.res_type,
rvc.res_ruimte_nr,
rvc.vnr,
rvc.onderwerp,
rvc.res_voorziening,
rvc.res_rsv_prijs,
rvc.aantal,
rvc.ps, -- Uur-tarief
rvc.po, -- Incidenteel tarief
rvc.pm, -- Vast tarief/K
rvc.pa, -- Commercieel tarief/H
rvc.pd, -- Jaartarief/J
rvc.btw
FROM (SELECT rr.res_rsv_ruimte_key,
rr.res_reservering_key res_key,
rr.res_rsv_ruimte_volgnr res_vnr,
rr.res_rsv_ruimte_van van,
rr.res_rsv_ruimte_tot tot,
rr.res_rsv_ruimte_omschrijving,
rr.res_rsv_ruimte_opmerking,
p.prs_perslid_key,
DECODE (
p.prs_perslid_voornaam,
'', '',
p.prs_perslid_voornaam
|| ' '
)
|| DECODE (
p.prs_perslid_tussenvoegsel,
'', '',
p.prs_perslid_tussenvoegsel
|| ' '
)
|| p.prs_perslid_naam
behandelaar_naam,
COALESCE (
p.prs_perslid_telefoonnr,
p.prs_perslid_mobiel
)
behandelaar_tel,
p.prs_perslid_email
behandelaar_mail,
TO_CHAR (
rr.res_rsv_ruimte_tot,
'yyyy'
)
|| DECODE (
TRUNC (
ADD_MONTHS (
rr.res_rsv_ruimte_tot, 6
),
'yyyy'
),
TRUNC (
rr.res_rsv_ruimte_tot,
'yyyy'
),
'1',
'2'
) res_helft,
TO_CHAR (
ADD_MONTHS (
SYSDATE, 1
),
'yyyy'
)
|| DECODE (
TRUNC (
ADD_MONTHS (
SYSDATE, 7
),
'yyyy'
),
TRUNC (
ADD_MONTHS (
SYSDATE, 1
),
'yyyy'
),
'1',
'2'
) sys_helft,
rr.res_rsv_ruimte_ordernr
FROM res_v_aanwezigrsv_ruimte rr,
prs_perslid p
WHERE rr.res_activiteit_key IN (30, 230) -- Verhuur/Schoollokaal
AND rr.res_status_fo_key IN (1, 2)
AND rr.res_rsv_ruimte_dirtlevel = 0
--rr.res_rsv_ruimte_ordernr IS NULL
--AND COALESCE (
-- rr.res_status_bo_key, 2
-- ) != 6 -- Nog niet AV
AND rr.res_rsv_ruimte_tot >
TO_DATE (
'01072013', 'ddmmyyyy'
)
AND rr.res_rsv_ruimte_tot >
TRUNC (
ADD_MONTHS (
SYSDATE, -12
),
'yyyy'
)
AND rr.res_rsv_ruimte_contact_key =
p.prs_perslid_key)
x
LEFT JOIN -- 301/422 = Datum verzoek
res_v_aanwezigkenmerkwaarde datumverzoek
ON x.res_rsv_ruimte_key = datumverzoek.res_rsv_ruimte_key
AND datumverzoek.res_kenmerk_key IN (301, 422)
LEFT JOIN -- 302/423 = Soort verzoek
res_v_aanwezigkenmerkwaarde soortverzoek
ON x.res_rsv_ruimte_key = soortverzoek.res_rsv_ruimte_key
AND soortverzoek.res_kenmerk_key IN (302, 423)
LEFT JOIN -- 303/424 = Verhuur tarief
res_v_aanwezigkenmerkwaarde tarief
ON x.res_rsv_ruimte_key = tarief.res_rsv_ruimte_key
AND tarief.res_kenmerk_key IN (303, 424)
LEFT JOIN -- Regelmatige relatiegegevens
(SELECT kw.res_rsv_ruimte_key,
b.prs_bedrijf_key bedr_key,
b.prs_bedrijf_naam,
COALESCE (
b.prs_bedrijf_post_adres,
b.prs_bedrijf_bezoek_adres
) adres,
COALESCE (
b.prs_bedrijf_post_postcode,
b.prs_bedrijf_bezoek_postcode
) postcode,
COALESCE (
b.prs_bedrijf_post_plaats,
b.prs_bedrijf_bezoek_plaats
) plaats
FROM res_v_aanwezigkenmerkwaarde kw,
prs_bedrijf b
WHERE kw.res_kenmerk_key IN (9, 426) -- Relatie
AND fac.safe_to_number(kw.res_kenmerkreservering_waarde) =
b.prs_bedrijf_key)
r
ON x.res_rsv_ruimte_key = r.res_rsv_ruimte_key
LEFT JOIN -- 2/428 = Incidentele relatie/Naam
res_v_aanwezigkenmerkwaarde inaam
ON x.res_rsv_ruimte_key = inaam.res_rsv_ruimte_key
AND inaam.res_kenmerk_key IN (2, 428)
LEFT JOIN -- 341/429 = Incidentele relatie/Afd
res_v_aanwezigkenmerkwaarde iafd
ON x.res_rsv_ruimte_key = iafd.res_rsv_ruimte_key
AND iafd.res_kenmerk_key IN (341, 429)
LEFT JOIN -- 342/430 = Incidentele relatie/Tav
res_v_aanwezigkenmerkwaarde itav
ON x.res_rsv_ruimte_key = itav.res_rsv_ruimte_key
AND itav.res_kenmerk_key IN (342, 430)
LEFT JOIN -- 304/436 = Incidentele relatie/Aanhef
res_v_aanwezigkenmerkwaarde iaanhef
ON x.res_rsv_ruimte_key = iaanhef.res_rsv_ruimte_key
AND iaanhef.res_kenmerk_key IN (304, 436)
LEFT JOIN -- 3/431 = Incidentele relatie/Adres
res_v_aanwezigkenmerkwaarde iadres
ON x.res_rsv_ruimte_key = iadres.res_rsv_ruimte_key
AND iadres.res_kenmerk_key IN (3, 431)
LEFT JOIN -- 4/432 = Incidentele relatie/Postcode
res_v_aanwezigkenmerkwaarde ipostcode
ON x.res_rsv_ruimte_key = ipostcode.res_rsv_ruimte_key
AND ipostcode.res_kenmerk_key IN (4, 432)
LEFT JOIN -- 5/433 = Incidentele relatie/Plaats
res_v_aanwezigkenmerkwaarde iplaats
ON x.res_rsv_ruimte_key = iplaats.res_rsv_ruimte_key
AND iplaats.res_kenmerk_key IN (5, 433)
LEFT JOIN -- 1021 = Regelmatige relatie/Naam
prs_v_aanwezigkenmerklink rnaam
ON r.bedr_key = rnaam.prs_link_key
AND rnaam.prs_kenmerk_key = 1021
LEFT JOIN -- 1040 = Regelmatige relatie/Afd
prs_v_aanwezigkenmerklink rafd
ON r.bedr_key = rafd.prs_link_key
AND rafd.prs_kenmerk_key = 1040
LEFT JOIN -- 1041 = Regelmatige relatie/Tav
prs_v_aanwezigkenmerklink rtav
ON r.bedr_key = rtav.prs_link_key
AND rtav.prs_kenmerk_key = 1041
LEFT JOIN -- 1022 = Regelmatige relatie/Aanhef
prs_v_aanwezigkenmerklink raanhef
ON r.bedr_key = raanhef.prs_link_key
AND raanhef.prs_kenmerk_key = 1022
LEFT JOIN -- 1023 = Regelmatige relatie/Termijnen
prs_v_aanwezigkenmerklink rtermijnen
ON r.bedr_key = rtermijnen.prs_link_key
AND rtermijnen.prs_kenmerk_key = 1023
LEFT JOIN -- 1060 = Regelmatige relatie/Korting
prs_v_aanwezigkenmerklink rkorting
ON r.bedr_key = rkorting.prs_link_key
AND rkorting.prs_kenmerk_key = 1060
LEFT JOIN
(SELECT rrr.res_rsv_ruimte_key,
rr.res_discipline_key,
rr.res_ruimte_key,
l.alg_locatie_key,
'1R' res_type,
rr.res_ruimte_nr,
TO_NUMBER (NULL) vnr,
-- rdi.ins_discipline_omschrijving
--|| ' '
--|| l.alg_locatie_omschrijving
--|| ' '
--|| l.alg_locatie_plaats
'Huur'
|| ' '
|| rdi.ins_discipline_omschrijving
|| ' '
|| DECODE (
rrr.res_activiteit_key,
30,
TRIM(SUBSTR (
rr.res_ruimte_nr,
1,
INSTR (rr.res_ruimte_nr || '(', '(')
- 1
)),
l.alg_locatie_omschrijving
|| ' '
|| l.alg_locatie_plaats
)
onderwerp,
rr.res_ruimte_nr res_voorziening,
rrr.res_rsv_ruimte_prijs res_rsv_prijs,
(rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van)
* 24
aantal, -- Duur in uren
rr.res_ruimte_prijs ps, -- Uur-tarief
rr.res_ruimte_prijs_ochtend po, -- Incidenteel tarief
rr.res_ruimte_prijs_middag pm, -- Vast tarief/K
rr.res_ruimte_prijs_avond pa, -- Commercieel tarief/H
rr.res_ruimte_prijs_dag pd, -- Jaartarief/J
6 btw
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
res_discipline rdi,
res_v_res_ruimte_gegevens_all rga,
alg_locatie l
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = rdi.ins_discipline_key
AND rr.res_ruimte_key = rga.res_ruimte_key
AND rga.alg_locatie_key = l.alg_locatie_key
UNION ALL
SELECT rrd.res_rsv_ruimte_key,
rr.res_discipline_key,
rr.res_ruimte_key,
l.alg_locatie_key,
'2V' res_type,
rr.res_ruimte_nr,
rd.res_ins_deel_key vnr,
NULL onderwerp,
LTRIM (ID.ins_deel_omschrijving)
|| DECODE (rd.res_deel_eenheid,
NULL, '',
' (' || rd.res_deel_eenheid || ')')
res_voorziening,
rrd.res_rsv_deel_prijs res_rsv_prijs,
(rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24
aantal, -- Duur in uren
rd.res_deel_prijs ps, -- Uur-tarief
TO_NUMBER (NULL) po, -- Incidenteel tarief
TO_NUMBER (NULL) pm, -- Vast tarief/K
TO_NUMBER (NULL) pa, -- Commercieel tarief/H
TO_NUMBER (NULL) pd, -- Jaartarief/J
6 btw
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
res_v_res_ruimte_gegevens_all rga,
alg_locatie l,
res_v_aanwezigrsv_deel rrd,
res_deel rd,
ins_deel ID
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_ruimte_key = rga.res_ruimte_key
AND rga.alg_locatie_key = l.alg_locatie_key
AND rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key
AND rrd.res_deel_key = rd.res_deel_key
AND rd.res_ins_deel_key = ID.ins_deel_key
UNION ALL
SELECT rra.res_rsv_ruimte_key,
rr.res_discipline_key,
rr.res_ruimte_key,
l.alg_locatie_key,
'3C' res_type,
rr.res_ruimte_nr,
ra.res_artikel_volgnummer vnr,
NULL onderwerp,
LTRIM (ra.res_artikel_omschrijving)
|| DECODE (ra.res_artikel_eenheid,
NULL, '',
' (' || ra.res_artikel_eenheid || ')')
res_voorziening,
rra.res_rsv_artikel_prijs res_rsv_prijs,
rra.res_rsv_artikel_aantal aantal,
ra.res_artikel_prijs ps, -- Stuksprijs
TO_NUMBER (NULL) po, -- Incidenteel tarief
TO_NUMBER (NULL) pm, -- Vast tarief/K
TO_NUMBER (NULL) pa, -- Commercieel tarief/H
TO_NUMBER (NULL) pd, -- Jaartarief/J
COALESCE (rra.res_rsv_artikel_btw,
ra.res_artikel_btw,
21)
btw
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
res_v_res_ruimte_gegevens_all rga,
alg_locatie l,
res_v_aanwezigrsv_artikel rra,
res_artikel ra
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_ruimte_key = rga.res_ruimte_key
AND rga.alg_locatie_key = l.alg_locatie_key
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key) rvc
ON x.res_rsv_ruimte_key = rvc.res_rsv_ruimte_key
WHERE x.res_helft <= x.sys_helft -- Facturatie t/m lopende jaarhelft!
AND (x.res_rsv_ruimte_ordernr IS NULL -- Niet eerder gefactureerd
OR (x.res_rsv_ruimte_ordernr IS NOT NULL -- .. of correctie
AND x.res_helft = x.sys_helft)) -- ..nog toegestaan!
AND tarief.res_kenmerkreservering_waarde != '261' -- Niet nul
AND 1 = 1;
/* Formatted on 31-7-2013 11:42:24 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW renk_v_lokaalverhuur_vast
(
groepering, -- Huurder/locatie -> factuur
sys_helft,
res_ruimte_key, -- Ruimte
khj_tarief -- K(wartaal), H(alfjaar) of J(aar)
)
AS
SELECT x.groepering,
x.sys_helft,
x.res_ruimte_key,
DECODE (
x.sys_helft,
'1',
DECODE (x.k1 + x.k2,
2, DECODE (x.k3 + x.k4, 2, 'J', 'H'),
'K'), -- Deze helft geen boekingen in beide kwartalen!
DECODE (x.k3 + x.k4,
2, DECODE (x.k1 + x.k2, 2, 'J', 'H'),
'K') -- Deze helft geen boekingen in beide kwartalen!
) khj
FROM ( SELECT TO_CHAR (x.alg_locatie_key) || '-'
|| COALESCE (bedr_key.res_kenmerkreservering_waarde,
--inaam.res_kenmerkreservering_waarde,
UPPER (TRIM (x.res_rsv_ruimte_omschrijving)),
'[naam]')
groepering,
x.sys_helft,
x.res_ruimte_key,
DECODE (SIGN (SUM (x.k1) - 8), -1, 0, 1) k1,
DECODE (SIGN (SUM (x.k2) - 8), -1, 0, 1) k2,
DECODE (SIGN (SUM (x.k3) - 8), -1, 0, 1) k3,
DECODE (SIGN (SUM (x.k4) - 8), -1, 0, 1) k4
FROM (SELECT rrr.res_rsv_ruimte_key,
rrr.res_rsv_ruimte_omschrijving,
DECODE (
TRUNC (ADD_MONTHS (SYSDATE, 7),
'yyyy'),
TRUNC (ADD_MONTHS (SYSDATE, 1),
'yyyy'),
'1',
'2'
) sys_helft,
rr.res_ruimte_key,
rga.alg_locatie_key,
DECODE (
TO_CHAR (rrr.res_rsv_ruimte_tot,
'Q'),
1, 1,
0
) k1,
DECODE (
TO_CHAR (rrr.res_rsv_ruimte_tot,
'Q'),
2, 1,
0
) k2,
DECODE (
TO_CHAR (rrr.res_rsv_ruimte_tot,
'Q'),
3, 1,
0
) k3,
DECODE (
TO_CHAR (rrr.res_rsv_ruimte_tot,
'Q'),
4, 1,
0
) k4
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
res_v_res_ruimte_gegevens_all rga
WHERE rrr.res_activiteit_key = 230 -- Schoollokaal
AND rrr.res_status_fo_key IN (1, 2)
AND rrr.res_rsv_ruimte_dirtlevel = 0
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = 43
AND rr.res_ruimte_key = rga.res_ruimte_key
AND rrr.res_rsv_ruimte_tot BETWEEN ADD_MONTHS (
TRUNC (
ADD_MONTHS (
SYSDATE, -5
),
'yyyy'
),
6
)
AND ADD_MONTHS (
TRUNC (
ADD_MONTHS (
SYSDATE, -5
),
'yyyy'
),
18
))
x
LEFT JOIN -- 303 = Verhuur tarief
res_v_aanwezigkenmerkwaarde tarief
ON x.res_rsv_ruimte_key = tarief.res_rsv_ruimte_key
AND tarief.res_kenmerk_key = 303
LEFT JOIN -- 9 = Regelmatige relatiegegevens
res_v_aanwezigkenmerkwaarde bedr_key
ON x.res_rsv_ruimte_key = bedr_key.res_rsv_ruimte_key
AND bedr_key.res_kenmerk_key = 9
--LEFT JOIN -- 2 = Incidentele relatie/Naam
-- res_v_aanwezigkenmerkwaarde inaam
--ON x.res_rsv_ruimte_key = inaam.res_rsv_ruimte_key
-- AND inaam.res_kenmerk_key = 2
WHERE tarief.res_kenmerkreservering_waarde = '84'
GROUP BY TO_CHAR (x.alg_locatie_key) || '-'
|| COALESCE (bedr_key.res_kenmerkreservering_waarde,
--inaam.res_kenmerkreservering_waarde,
UPPER (TRIM (x.res_rsv_ruimte_omschrijving)),
'[naam]'),
x.sys_helft,
x.res_ruimte_key) x;
/* Formatted on 2-8-2013 10:00:45 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW renk_v_rap_res_actual
(
hide_f_groepering,
hide_f_mindatum,
hide_f_maxdatum,
hide_f_restype,
fclt_f_naam,
naam,
afd,
tav,
aanhef,
adres,
postcode,
plaats,
factuurdatum,
ordernr,
periode, -- sys_helft
dagnaam,
dagnr,
van,
tot,
rvc_oms,
aantal,
stuksprijs,
bruto,
onderwerp,
datumverzoek,
soortverzoek,
tarief_code,
termijnen,
korting,
kenmerk,
behandelaar_naam,
behandelaar_tel,
behandelaar_mail,
res_discipline_key,
res_ruimte_key,
aant_weken
)
AS
SELECT x.groepering,
MIN (x.sortering1),
MAX (x.sortering1),
x.sortering2,
MIN (x.fclt_f_naam),
MIN (x.naam),
MIN (x.afd),
MIN (x.tav),
MIN (x.aanhef),
MIN (x.adres),
MIN (x.postcode),
MIN (x.plaats),
MIN (x.factuurdatum),
MIN (x.ordernr),
MIN (x.sys_helft),
MIN (x.dagnaam),
x.dagnr,
x.van,
x.tot,
MIN (x.res_voorziening),
MIN (x.aantal),
MIN (x.stuksprijs),
DECODE (x.khj_tarief,
NULL, SUM (x.bruto),
SUM (x.bruto) / COUNT ( * )),
MIN (x.onderwerp),
MIN (x.datumverzoek), -- Langst geleden verzoekdatum!
MIN (x.soortverzoek), -- Schriftelijk wint!
MIN (x.tarief_code),
MIN (x.termijnen),
MIN (x.korting),
'***CONCEPT***' kenmerk,
MIN (x.behandelaar_naam),
MIN (x.behandelaar_tel),
MIN (x.behandelaar_mail),
MIN (x.res_discipline_key),
x.res_ruimte_key,
COUNT ( * ) aant_weken
FROM (SELECT x.groepering,
x.sortering1,
x.sortering2,
x.fclt_f_naam,
x.naam,
x.afd,
x.tav,
x.aanhef,
x.adres,
x.postcode,
x.plaats,
x.factuurdatum,
x.ordernr,
x.sys_helft,
x.dagnaam,
x.dagnr,
TO_CHAR (x.van, 'hh24:mi') van,
TO_CHAR (x.tot, 'hh24:mi') tot,
x.res_voorziening,
x.aantal,
ROUND (
DECODE (
x.res_rsv_prijs,
NULL,
DECODE (
x.res_type,
'1R',
DECODE (
x.tarief_code,
'V', -- Speciale tarieven igv. lokalen!
DECODE (y.khj_tarief,
'H', x.pa, -- Halfjaar
'J', x.pd, -- Jaar
x.pm), -- Vast/Kwartaal
'C',
x.pa, -- Commercieel!
x.po -- Incidenteel!
),
x.ps -- 2V/3C!
),
x.res_rsv_prijs
/ DECODE (x.aantal, NULL, 1, 0, 1, x.aantal)
),
2
)
stuksprijs,
ROUND (
DECODE (
x.res_type,
'1R', -- ZIE OOK ONDERSTAANDE - GEVAARLIJKE - AANNAME!
COALESCE (
x.res_rsv_prijs, -- NULL totdat door MVH "bevroren"
--DECODE (x.res_ruimte_key,
-- 121, CEIL (x.aantal / 4),
-- x.aantal) -- Instructieruimte per dagdeel
x.aantal
* DECODE (
x.tarief_code,
'V', -- Speciale tarieven igv. lokalen!
DECODE (y.khj_tarief,
'H', x.pa, -- Halfjaar
'J', x.pd, -- Jaar
x.pm), -- Vast/Kwartaal
'C',
x.pa, -- Commercieel!
x.po -- Incidenteel!
)
* x.korting
),
COALESCE (x.res_rsv_prijs, x.aantal * x.ps) -- 2V/3C!
),
2
)
bruto,
x.onderwerp,
SUBSTR (x.datumverzoek, 7, 4)
|| SUBSTR (x.datumverzoek, 4, 2)
|| SUBSTR (x.datumverzoek, 1, 2)
datumverzoek,
x.soortverzoek,
x.tarief_code,
x.termijnen,
x.korting,
x.behandelaar_naam,
x.behandelaar_tel,
x.behandelaar_mail,
x.res_discipline_key,
x.res_ruimte_key,
y.khj_tarief
FROM renk_v_verhuurregels_alle x,
renk_v_lokaalverhuur_vast y
WHERE x.groepering = y.groepering(+)
AND x.sys_helft = y.sys_helft(+)
AND x.res_ruimte_key = y.res_ruimte_key(+)) x
GROUP BY x.groepering,
x.sortering2,
x.dagnr,
x.van,
x.tot,
x.res_ruimte_key,
x.khj_tarief;
/* Formatted on 2-8-2013 10:05:45 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW renk_v_rap_freezereserveringen
(
hide_f_groepering,
fclt_f_naam,
aantal,
eerder_kenmerk
)
AS
SELECT v.hide_f_groepering,
v.fclt_f_naam,
SUM (v.aant_weken) aantal,
MAX (v.ordernr)
FROM renk_v_rap_res_actual v
WHERE SUBSTR (v.hide_f_restype, 1, 2) = '1R'
GROUP BY v.hide_f_groepering, v.fclt_f_naam;
-- View voor notificatiejob controleert elk uur of er nieuwe (srtnoti 59)/
-- gewijzigde (srtnoti 60) reserveringen zijn voor zalen B&W kamer, raadzaal
-- en trouwzaal (resp. keys 5, 6 en 7).
-- Met RENK#27558 alleen reserveringen tussen 18:00 en 24:00 controleren.
CREATE OR REPLACE VIEW RENK_V_NOTI_SPEC_RESREMINDER
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT DISTINCT
'RESUPD',
NULL,
usr.prs_perslid_key,
(CASE str.fac_srtnotificatie_key
WHEN 60
THEN
'Reservering '
|| rrr.res_reservering_key
|| '/'
|| rrr.res_rsv_ruimte_volgnr
|| ' ('
|| res_rsv_ruimte_van
|| ' - '
|| res_ruimte_nr
|| ') is op '
|| fac_tracking_datum
|| ' gewijzigd door '
|| pf.prs_perslid_naam_full
ELSE
'Reservering '
|| rrr.res_reservering_key
|| '/'
|| rrr.res_rsv_ruimte_volgnr
|| ' ('
|| res_rsv_ruimte_van
|| ' - '
|| res_ruimte_nr
|| ') is op '
|| fac_tracking_datum
|| ' nieuw aangemaakt door '
|| pf.prs_perslid_naam_full
END)
text,
res_reservering_key,
res_rsv_ruimte_key
FROM res_rsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
fac_tracking tr,
fac_srtnotificatie str,
prs_v_perslid_fullnames_all pf,
(SELECT DISTINCT p.prs_perslid_key
FROM fac_groeprechten g,
fac_functie f,
fac_gebruikersgroep gg,
prs_v_aanwezigperslid p
WHERE g.fac_functie_key = f.fac_functie_key
AND g.fac_groep_key = gg.fac_groep_key
AND p.prs_perslid_key = gg.prs_perslid_key
AND fac_functie_code = 'WEB_USER02') usr
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND res_rsv_ruimte_verwijder IS NULL
AND rr.res_ruimte_key IN (5, 6, 7)
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND tr.prs_perslid_key = pf.prs_perslid_key(+)
AND ( (tr.fac_tracking_refkey = rrr.res_rsv_ruimte_key
AND str.fac_srtnotificatie_xmlnode IN
('reservering', 'xreservering')))
AND str.fac_srtnotificatie_key IN (59, 60)
AND tr.fac_tracking_datum >
(SELECT fac_notificatie_job_nextrun
- fac_notificatie_job_interval / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view =
'RENK_V_NOTI_SPEC_RESREMINDER')
AND ( (TO_CHAR (rrr.res_rsv_ruimte_van, 'HH24MISS') BETWEEN '180000'
AND '235959')
OR (TO_CHAR (rrr.res_rsv_ruimte_tot, 'HH24MISS') BETWEEN '180000'
AND '235959'));
BEGIN fac.registercustversion('RENK', 6); END;
/
BEGIN adm.systrackscript('$Workfile: renk.sql $', '$Revision$', 0); END;
/
commit;
spool off