2999 lines
134 KiB
SQL
2999 lines
134 KiB
SQL
--
|
||
-- $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 |