- con_nr vervangen door san_nr - Studenten met een datum verwijder moeten evengoed opnieuw worden ingevoerd svn path=/Customer/trunk/; revision=32253
12060 lines
504 KiB
MySQL
12060 lines
504 KiB
MySQL
--
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer specific sql statements for the FACILITOR database
|
||
|
||
DEFINE thisfile = 'NYBU.SQL'
|
||
DEFINE dbuser = '^NYBU'
|
||
DEFINE custid = 'NYBU'
|
||
|
||
SET ECHO ON
|
||
SET DEFINE ON
|
||
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
||
WHENEVER SQLERROR EXIT;
|
||
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
SPOOL &fcltlogfile
|
||
SET DEFINE OFF
|
||
|
||
------ payload begin ------
|
||
|
||
CREATE OR REPLACE PACKAGE nybu
|
||
AS
|
||
TYPE t_cursor IS REF CURSOR;
|
||
|
||
FUNCTION getPeriodeNaam (p_periode IN VARCHAR2, p_lang IN VARCHAR2)
|
||
RETURN VARCHAR2;
|
||
|
||
FUNCTION getAantalDagenInPeriode (p_van IN DATE,
|
||
p_tot IN DATE,
|
||
p_periode_van IN DATE,
|
||
p_periode_tot IN DATE:= NULL)
|
||
RETURN NUMBER;
|
||
|
||
PROCEDURE nybu_rap_vrije_kamers (user_key IN NUMBER,
|
||
p_datum_van IN VARCHAR2, -- Let wel: formaat '16-01-2006'
|
||
p_datum_tot IN VARCHAR2,
|
||
p_cursor OUT t_cursor);
|
||
|
||
PROCEDURE upsertkenmerk_res (p_kenmerk_key IN NUMBER,
|
||
p_rsv_ruimte_key IN NUMBER,
|
||
p_waarde IN VARCHAR2);
|
||
END nybu;
|
||
/
|
||
|
||
CREATE OR REPLACE PACKAGE BODY nybu
|
||
AS
|
||
FUNCTION getPeriodeNaam (p_periode IN VARCHAR2, p_lang IN VARCHAR2)
|
||
RETURN VARCHAR2
|
||
IS
|
||
v_naam VARCHAR2 (20);
|
||
BEGIN
|
||
SELECT DECODE (
|
||
p_lang,
|
||
'NL',
|
||
DECODE (SUBSTR (p_periode, 5, 2),
|
||
'01', 'januari',
|
||
'02', 'februari',
|
||
'03', 'maart',
|
||
'04', 'april',
|
||
'05', 'mei',
|
||
'06', 'juni',
|
||
'07', 'juli',
|
||
'08', 'augustus',
|
||
'09', 'september',
|
||
'10', 'oktober',
|
||
'11', 'november',
|
||
'12', 'december'),
|
||
DECODE (SUBSTR (p_periode, 5, 2),
|
||
'01', 'January',
|
||
'02', 'February',
|
||
'03', 'March',
|
||
'04', 'April',
|
||
'05', 'May',
|
||
'06', 'June',
|
||
'07', 'July',
|
||
'08', 'August',
|
||
'09', 'September',
|
||
'10', 'October',
|
||
'11', 'November',
|
||
'12', 'December'))
|
||
|| ' '
|
||
|| SUBSTR (p_periode, 1, 4)
|
||
INTO v_naam
|
||
FROM DUAL;
|
||
|
||
RETURN v_naam;
|
||
END getPeriodeNaam;
|
||
|
||
-- Bepaal aantal dagen in begin- of eindperiode waarvoor huur betaald moet worden
|
||
-- Periode moet binnen dezelfde kalendermaand liggen.
|
||
-- Als p_periode_tot leeg is, gaan we uit van het einde van de maand
|
||
-- Als p_van en/of p_tot leeg zijn, dan zetten we die op begin resp. eind van de periode
|
||
FUNCTION getAantalDagenInPeriode (p_van IN DATE,
|
||
p_tot IN DATE,
|
||
p_periode_van IN DATE,
|
||
p_periode_tot IN DATE:= NULL)
|
||
RETURN NUMBER
|
||
IS
|
||
o_aantal_dagen NUMBER (4);
|
||
v_periode_tot DATE;
|
||
v_van DATE;
|
||
v_tot DATE;
|
||
BEGIN
|
||
-- Einddatum van de periode die we beschouwen.
|
||
-- Als geen einddatum, dan einde van de maand (startdatum zou dan eerste dag van de maand moeten zijn)
|
||
v_periode_tot := COALESCE (p_periode_tot, LAST_DAY (p_periode_van));
|
||
|
||
-- Valt periode (p_van - p_tot) geheel buiten (p_periode_van - p_periode_tot)? Dan nul dagen overlap!
|
||
IF (p_tot < p_periode_van OR p_van > p_periode_tot)
|
||
THEN
|
||
RETURN 0;
|
||
END IF;
|
||
|
||
-- Aantal dagen is maximaal de hele periode
|
||
o_aantal_dagen :=
|
||
CAST (TO_CHAR (v_periode_tot, 'DD') AS INT)
|
||
- CAST (TO_CHAR (p_periode_van, 'DD') AS INT)
|
||
+ 1;
|
||
|
||
v_van := p_van;
|
||
v_tot := p_tot;
|
||
|
||
-- Als geen van/tot datum opgegeven, of als van/tot datum buiten periode valt,
|
||
-- dan zet op begin-/einddatum van de periode (periode)
|
||
IF (v_van IS NULL OR v_van < p_periode_van)
|
||
THEN
|
||
v_van := p_periode_van;
|
||
END IF;
|
||
|
||
IF (v_tot IS NULL OR v_tot > v_periode_tot)
|
||
THEN
|
||
v_tot := v_periode_tot;
|
||
END IF;
|
||
|
||
-- Beslaat het contract de volledige periode, of beginnen/eindigen we halverwege?
|
||
-- DAN:
|
||
-- - ingangsmaand is hetzelfde als van huidige periode
|
||
-- - ingangsdag is later dan de eerste dag van de periode
|
||
-- EN/OF:
|
||
-- - eindmaand is hetzelfde als van huidige periode
|
||
-- - einddag is eerder dan de laatste dag van de periode
|
||
IF ( (TRUNC (v_van, 'MM') = TRUNC (p_periode_van, 'MM')
|
||
AND TRUNC (v_van, 'DD') > p_periode_van)
|
||
OR (TRUNC (v_tot, 'MM') = TRUNC (v_periode_tot, 'MM')
|
||
AND TRUNC (v_tot, 'DD') < v_periode_tot))
|
||
THEN
|
||
-- prijsfactor = aantal_dagen_gehuurd / aantal_dagen_in_deze_periode
|
||
-- = einddag - begindag + 1 / aantal_dagen_in_deze_periode
|
||
o_aantal_dagen :=
|
||
( CAST (TO_CHAR (v_tot, 'DD') AS INT)
|
||
- CAST (TO_CHAR (v_van, 'DD') AS INT)
|
||
+ 1);
|
||
END IF;
|
||
|
||
RETURN o_aantal_dagen;
|
||
END;
|
||
|
||
-- Overzicht van beschikbare studentenkamers (zonder huidig/toekomstig contract)
|
||
-- Toont (indien aanwezig) ook wanneer het eerstvolgende contract begint en het vorige eindigde.
|
||
-- (Aangepast van view naar procedure voor NYBU#28846)
|
||
-- contractsoort "Student room" 55
|
||
-- cnt_kenmerk "Student room" 1
|
||
-- alg_ruimtekenmerk "Zijde campus" 1080
|
||
-- alg_ruimtekenmerk "Out of order tot" 1100
|
||
-- fac_usrtab "Zijde campus" 281
|
||
PROCEDURE nybu_rap_vrije_kamers (user_key IN NUMBER,
|
||
p_datum_van IN VARCHAR2, -- Let wel: formaat '16-01-2006'
|
||
p_datum_tot IN VARCHAR2,
|
||
p_cursor OUT t_cursor)
|
||
AS
|
||
v_datum_van DATE;
|
||
v_datum_tot DATE;
|
||
BEGIN
|
||
v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
|
||
v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');
|
||
|
||
OPEN p_cursor FOR
|
||
SELECT rg.alg_ruimte_nr hide_f_sort,
|
||
g.alg_gebouw_naam fclt_f_gebouw,
|
||
rg.alg_verdieping_code fclt_f_verdieping,
|
||
rg.alg_ruimte_nr fclt_x_kamer,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("'
|
||
|| 'appl/ALG/alg_ruimte.asp?key='
|
||
|| rg.alg_ruimte_key
|
||
|| '")''>'
|
||
|| HTF.escape_sc (rg.alg_ruimte_nr)
|
||
|| '</a>'
|
||
html_kamer,
|
||
rg.alg_srtruimte_omschrijving fclt_f_type,
|
||
rg.alg_ruimte_bruto_vloeropp opp,
|
||
ud.fac_usrdata_omschr fclt_f_zijde,
|
||
(SELECT TO_CHAR (MIN (cnt_contract_looptijd_van),
|
||
'YYYY-MM-DD')
|
||
FROM cnt_contract c, cnt_kenmerkcontract kc
|
||
WHERE c.ins_discipline_key = 55
|
||
AND c.cnt_contract_looptijd_van >= v_datum_tot
|
||
AND kc.cnt_contract_key = c.cnt_contract_key
|
||
AND kc.cnt_kenmerk_key = 1
|
||
AND fac.safe_to_number (
|
||
kc.cnt_kenmerkcontract_waarde) =
|
||
rg.alg_ruimte_key)
|
||
bezet_vanaf,
|
||
(SELECT TO_CHAR (MAX (cnt_contract_looptijd_tot),
|
||
'YYYY-MM-DD')
|
||
FROM cnt_contract c, cnt_kenmerkcontract kc
|
||
WHERE c.ins_discipline_key = 55
|
||
AND c.cnt_contract_looptijd_tot <= v_datum_van
|
||
AND kc.cnt_contract_key = c.cnt_contract_key
|
||
AND kc.cnt_kenmerk_key = 1
|
||
AND fac.safe_to_number (
|
||
kc.cnt_kenmerkcontract_waarde) =
|
||
rg.alg_ruimte_key)
|
||
vrij_sinds,
|
||
fac.safe_to_date (ooo.alg_onrgoedkenmerk_waarde,
|
||
'DD-MM-YYYY')
|
||
out_of_order_tot
|
||
FROM nybu_v_studentenkamers sk,
|
||
alg_v_ruimte_gegevens rg,
|
||
alg_gebouw g,
|
||
(SELECT *
|
||
FROM alg_onrgoedkenmerk
|
||
WHERE alg_kenmerk_key = 1080
|
||
AND alg_onrgoedkenmerk_verwijder IS NULL) zijde,
|
||
(SELECT *
|
||
FROM alg_onrgoedkenmerk
|
||
WHERE alg_kenmerk_key = 1100
|
||
AND alg_onrgoedkenmerk_verwijder IS NULL) ooo,
|
||
(SELECT *
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 281) ud
|
||
WHERE sk.alg_ruimte_key = rg.alg_ruimte_key
|
||
AND g.alg_gebouw_key = rg.alg_gebouw_key
|
||
AND zijde.alg_onrgoed_key(+) = rg.alg_ruimte_key
|
||
AND ooo.alg_onrgoed_key(+) = rg.alg_ruimte_key
|
||
AND ud.fac_usrdata_key(+) =
|
||
fac.safe_to_number (zijde.alg_onrgoedkenmerk_waarde)
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM cnt_contract c, cnt_kenmerkcontract kc
|
||
WHERE c.ins_discipline_key = 55
|
||
AND c.cnt_contract_looptijd_tot >= v_datum_van
|
||
AND c.cnt_contract_looptijd_van <= v_datum_tot
|
||
AND kc.cnt_contract_key = c.cnt_contract_key
|
||
AND kc.cnt_kenmerk_key = 1
|
||
AND c.cnt_contract_verwijder IS NULL
|
||
AND fac.safe_to_number (
|
||
kc.cnt_kenmerkcontract_waarde) =
|
||
rg.alg_ruimte_key)
|
||
ORDER BY rg.alg_ruimte_nr;
|
||
END;
|
||
|
||
PROCEDURE upsertkenmerk_res (p_kenmerk_key IN NUMBER,
|
||
p_rsv_ruimte_key IN NUMBER,
|
||
p_waarde IN VARCHAR2)
|
||
IS
|
||
v_count NUMBER;
|
||
BEGIN
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM res_kenmerkwaarde
|
||
WHERE res_rsv_ruimte_key = p_rsv_ruimte_key
|
||
AND res_kenmerk_key = p_kenmerk_key
|
||
AND res_kenmerkwaarde_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_waarde IS NULL
|
||
THEN
|
||
DELETE res_kenmerkwaarde
|
||
WHERE res_rsv_ruimte_key = p_rsv_ruimte_key
|
||
AND res_kenmerk_key = p_kenmerk_key
|
||
AND res_kenmerkwaarde_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE res_kenmerkwaarde
|
||
SET res_kenmerkreservering_waarde = p_waarde
|
||
WHERE res_rsv_ruimte_key = p_rsv_ruimte_key
|
||
AND res_kenmerk_key = p_kenmerk_key
|
||
AND res_kenmerkwaarde_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO res_kenmerkwaarde (res_kenmerk_key,
|
||
res_rsv_ruimte_key,
|
||
res_kenmerkreservering_waarde)
|
||
VALUES (p_kenmerk_key, p_rsv_ruimte_key, p_waarde);
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
END nybu;
|
||
/
|
||
|
||
------- PERSONENIMPORT ACTIVE DIRECTORY -----------------------------------------
|
||
|
||
CREATE OR REPLACE PROCEDURE nybu_import_prs (p_import_key IN NUMBER)
|
||
IS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_header VARCHAR2 (1000);
|
||
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_naam VARCHAR2 (256);
|
||
v_prs_perslid_voornaam VARCHAR2 (256);
|
||
v_prs_perslid_oslogin VARCHAR2 (256);
|
||
v_prs_perslid_nr VARCHAR2 (256);
|
||
v_prs_projkpn_nr VARCHAR2 (256);
|
||
v_prs_afdeling_omschrijving VARCHAR2 (256);
|
||
v_prs_srtperslid_omschrijving VARCHAR2 (256);
|
||
v_prs_perslid_email VARCHAR2 (256);
|
||
v_prs_perslid_telefoonnr VARCHAR2 (256);
|
||
v_prs_perslid_mobiel VARCHAR2 (256);
|
||
v_werkplek_oms VARCHAR2 (256);
|
||
v_prs_perslid_tussenvoegsel prs_perslid.prs_perslid_tussenvoegsel%TYPE;
|
||
-- Dummy
|
||
v_dummy VARCHAR2 (256);
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM nybu_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_header := v_newline;
|
||
v_aanduiding := '';
|
||
v_errorhint := 'Fout bij opvragen te importeren rij';
|
||
v_ongeldig := 0;
|
||
v_prs_perslid_tussenvoegsel := NULL;
|
||
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline,
|
||
c_fielddelimitor,
|
||
v_prs_perslid_voornaam); -- givenname
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam); -- surname
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email); -- mail
|
||
fac.imp_getfield (v_newline,
|
||
c_fielddelimitor,
|
||
v_prs_afdeling_omschrijving); -- department
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_mobiel); -- mobile
|
||
fac.imp_getfield (v_newline,
|
||
c_fielddelimitor,
|
||
v_prs_perslid_telefoonnr); -- telephonenumber
|
||
fac.imp_getfield (v_newline,
|
||
c_fielddelimitor,
|
||
v_prs_srtperslid_omschrijving); -- title
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr); -- EmployeeNumber
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_projkpn_nr); -- departmentNumber
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_werkplek_oms); -- physicalDeliveryOfficeName
|
||
fac.imp_getfield (v_newline,
|
||
c_fielddelimitor,
|
||
v_prs_perslid_oslogin); -- samAccountName
|
||
-- fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
|
||
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_prs_perslid_oslogin
|
||
|| '|'
|
||
|| v_prs_perslid_naam
|
||
|| '|'
|
||
|| v_prs_perslid_voornaam
|
||
|| '|'
|
||
|| v_prs_perslid_email
|
||
|| '] ';
|
||
|
||
-- 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_header) LIKE
|
||
UPPER('"givenname";"surname";"mail";"department";"mobile";"telephonenumber";"title";"EmployeeNumber";"departmentNumber";"physicalDeliveryOfficeName";"samAccountName"'
|
||
|| '%')
|
||
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
|
||
|| ']');
|
||
END IF;
|
||
|
||
v_errorhint := 'Ongeldige achternaam';
|
||
v_prs_perslid_naam := TRIM (v_prs_perslid_naam);
|
||
|
||
IF LENGTH (v_prs_perslid_naam) > 30
|
||
THEN
|
||
v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 30);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Achternaam te lang',
|
||
'Achternaam wordt afgebroken tot ['
|
||
|| v_prs_perslid_naam
|
||
|| ']');
|
||
ELSE
|
||
IF (v_prs_perslid_naam IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Achternaam onbekend',
|
||
'Achternaam is verplicht; regel wordt overgeslagen!');
|
||
END IF;
|
||
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 te lang',
|
||
'Voornaam wordt afgebroken tot ['
|
||
|| v_prs_perslid_voornaam
|
||
|| ']');
|
||
END IF;
|
||
|
||
v_errorhint := 'Ongeldige accountnaam';
|
||
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 || 'accountnaam te lang',
|
||
'accountnaam wordt afgebroken tot ['
|
||
|| v_prs_perslid_oslogin
|
||
|| ']');
|
||
ELSE
|
||
IF (v_prs_perslid_oslogin IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding || 'accountnaam onbekend',
|
||
'Accountnaam is verplicht; regel wordt overgeslagen!');
|
||
END IF;
|
||
END IF;
|
||
|
||
v_errorhint := 'Ongeldige projectkostenplaats';
|
||
v_prs_projkpn_nr := TRIM (v_prs_projkpn_nr);
|
||
|
||
IF LENGTH (v_prs_projkpn_nr) > 30
|
||
THEN
|
||
v_prs_projkpn_nr := SUBSTR (v_prs_projkpn_nr, 1, 30);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Projectkostenplaats te lang',
|
||
'Projectkostenplaats wordt afgebroken tot ['
|
||
|| v_prs_projkpn_nr
|
||
|| ']');
|
||
END IF;
|
||
|
||
v_errorhint := 'Ongeldige afdeling';
|
||
v_prs_afdeling_omschrijving := TRIM (v_prs_afdeling_omschrijving);
|
||
|
||
IF LENGTH (v_prs_afdeling_omschrijving) > 60
|
||
THEN
|
||
v_prs_afdeling_omschrijving :=
|
||
SUBSTR (v_prs_afdeling_omschrijving, 1, 60);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Afdeling te lang',
|
||
'Afdeling wordt afgebroken tot ['
|
||
|| v_prs_afdeling_omschrijving
|
||
|| ']');
|
||
ELSE
|
||
IF (v_prs_afdeling_omschrijving IS NULL)
|
||
THEN
|
||
v_prs_afdeling_omschrijving := 'Unknown';
|
||
--TODO: verplicht maken?
|
||
--v_ongeldig := 1;
|
||
--fac.imp_writelog (
|
||
-- p_import_key,
|
||
-- 'E',
|
||
-- v_aanduiding || 'Afdeling onbekend',
|
||
-- 'Afdeling is verplicht; regel wordt overgeslagen!');
|
||
END IF;
|
||
END IF;
|
||
|
||
v_errorhint := 'Ongeldige functie';
|
||
v_prs_srtperslid_omschrijving :=
|
||
TRIM (v_prs_srtperslid_omschrijving);
|
||
|
||
IF LENGTH (v_prs_srtperslid_omschrijving) > 60
|
||
THEN
|
||
v_prs_srtperslid_omschrijving :=
|
||
SUBSTR (v_prs_srtperslid_omschrijving, 1, 60);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Functie te lang',
|
||
'Functie wordt afgebroken tot ['
|
||
|| v_prs_srtperslid_omschrijving
|
||
|| ']');
|
||
ELSE
|
||
IF (v_prs_srtperslid_omschrijving IS NULL)
|
||
THEN
|
||
v_prs_srtperslid_omschrijving := 'Unknown';
|
||
--TODO: verplicht maken?
|
||
--v_ongeldig := 1;
|
||
--fac.imp_writelog (
|
||
-- p_import_key,
|
||
-- 'E',
|
||
-- v_aanduiding || 'Functie onbekend',
|
||
-- 'Functie is verplicht; regel wordt overgeslagen!');
|
||
END IF;
|
||
END IF;
|
||
|
||
v_errorhint := 'Telefoonnummer te lang';
|
||
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 || v_errorhint,
|
||
'Nummer wordt afgebroken tot ['
|
||
|| v_prs_perslid_telefoonnr
|
||
|| ']');
|
||
END IF;
|
||
|
||
v_errorhint := 'E-mailadres te lang';
|
||
v_prs_perslid_email := TRIM (v_prs_perslid_email);
|
||
|
||
IF LENGTH (v_prs_perslid_email) > 100
|
||
THEN
|
||
v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 100);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'E-mailadres wordt afgebroken tot ['
|
||
|| v_prs_perslid_email
|
||
|| ']');
|
||
END IF;
|
||
|
||
v_errorhint := 'Mobiel nummer te lang';
|
||
v_prs_perslid_mobiel := TRIM (v_prs_perslid_mobiel);
|
||
|
||
IF LENGTH (v_prs_perslid_mobiel) > 15
|
||
THEN
|
||
v_prs_perslid_mobiel := SUBSTR (v_prs_perslid_mobiel, 1, 15);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Nummer wordt afgebroken tot ['
|
||
|| v_prs_perslid_mobiel
|
||
|| ']');
|
||
END IF;
|
||
|
||
v_errorhint := 'Tussenvoegsel';
|
||
|
||
SELECT MAX (fac_usrdata_omschr)
|
||
INTO v_prs_perslid_tussenvoegsel
|
||
FROM fac_usrdata u
|
||
WHERE UPPER (v_prs_perslid_naam) LIKE
|
||
UPPER (u.fac_usrdata_omschr) || ' ' || '%'
|
||
AND fac_usrtab_key = 1;
|
||
|
||
IF (v_prs_perslid_tussenvoegsel IS NOT NULL)
|
||
THEN
|
||
v_prs_perslid_naam :=
|
||
TRIM(SUBSTR (v_prs_perslid_naam,
|
||
LENGTH (v_prs_perslid_tussenvoegsel) + 1));
|
||
-- fac.imp_writelog (
|
||
-- p_import_key,
|
||
-- 'I',
|
||
-- v_aanduiding || 'Tussenvoegsel: '||v_prs_perslid_tussenvoegsel,
|
||
-- 'Achternaam: '||v_prs_perslid_naam);
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errorhint :=
|
||
'Fout bij toevoegen regel aan importtabel NYBU_IMP_PRS';
|
||
|
||
INSERT INTO nybu_imp_prs (imp_datum,
|
||
prs_perslid_naam,
|
||
prs_perslid_voornaam,
|
||
prs_perslid_tussenvoegsel,
|
||
prs_perslid_oslogin,
|
||
prs_perslid_nr,
|
||
prs_projkpn_nr,
|
||
prs_afdeling_omschrijving,
|
||
prs_srtperslid_omschrijving,
|
||
prs_perslid_email,
|
||
prs_perslid_telefoonnr,
|
||
prs_perslid_mobiel,
|
||
werkplek_oms)
|
||
VALUES (SYSDATE,
|
||
v_prs_perslid_naam,
|
||
v_prs_perslid_voornaam,
|
||
v_prs_perslid_tussenvoegsel,
|
||
v_prs_perslid_oslogin,
|
||
v_prs_perslid_nr,
|
||
v_prs_projkpn_nr,
|
||
v_prs_afdeling_omschrijving,
|
||
v_prs_srtperslid_omschrijving,
|
||
v_prs_perslid_email,
|
||
v_prs_perslid_telefoonnr,
|
||
v_prs_perslid_mobiel,
|
||
v_werkplek_oms);
|
||
|
||
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,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Ingelezen regel kan niet worden weggeschreven!');
|
||
COMMIT;
|
||
END;
|
||
END IF;
|
||
END IF; -- header_valid
|
||
END;
|
||
END LOOP;
|
||
|
||
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),
|
||
'');
|
||
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 nybu_import_prs;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE nybu_update_prs (p_import_key IN NUMBER)
|
||
IS
|
||
-- LET OP: moet idem zijn als declaratie bij nybu_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;
|
||
c_min_persons NUMBER := 350;
|
||
-- Ruimte waar personen in geplaatst worden (indien nog geen ruimte in opgegeven gebouw)
|
||
c_gebouw_code VARCHAR2 (10) := '';
|
||
c_ruimte_nr VARCHAR2 (10) := '999';
|
||
c_gebouw_key NUMBER (10);
|
||
c_ruimte_key NUMBER (10);
|
||
-- Groep waar personen in geplaatst worden (indien nog geen groep)
|
||
c_groep_upper 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 v<><76>r import!
|
||
v_count_tot NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
--
|
||
v_perslid_key NUMBER (10);
|
||
v_perslid_naam VARCHAR2 (30);
|
||
v_perslid_tussenvoegsel VARCHAR2 (15);
|
||
v_kpn_key NUMBER (10);
|
||
v_afdeling_key NUMBER (10);
|
||
v_srtperslid_key NUMBER (10);
|
||
--v_oslogin VARCHAR2 (30);
|
||
--v_locatie_key NUMBER (10);
|
||
v_gebouw_key NUMBER (10);
|
||
v_verdieping_key NUMBER (10);
|
||
v_ruimte_key NUMBER (10);
|
||
v_ruimte_nr VARCHAR2 (10);
|
||
v_wp_key NUMBER (10);
|
||
v_wp_volgnr NUMBER (3);
|
||
v_wp_oms VARCHAR2 (30);
|
||
v_groep_key NUMBER (10);
|
||
v_kenmerklink_key NUMBER (10);
|
||
v_dbg_gebouw_code VARCHAR2 (10);
|
||
v_dbg_ruimte_nr VARCHAR2 (10);
|
||
|
||
-- Alle personen met primaire login in Facilitor, die in de import niet voorkomen.
|
||
-- Dubbele nummers? Dan wordt iemand mogelijk niet verwijderd/INACTIEF!
|
||
CURSOR cdelprs
|
||
IS
|
||
SELECT p.prs_perslid_key,
|
||
p.prs_perslid_oslogin,
|
||
p.prs_perslid_naam,
|
||
p.prs_perslid_voornaam
|
||
FROM prs_v_aanwezigperslid p, prs_srtperslid sp
|
||
WHERE p.prs_perslid_oslogin IS NOT NULL
|
||
AND p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\'
|
||
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
|
||
AND UPPER (sp.prs_srtperslid_omschrijving) NOT LIKE '%STUDENT%'
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM nybu_imp_prs ip
|
||
WHERE UPPER (ip.prs_perslid_oslogin) =
|
||
p.prs_perslid_oslogin);
|
||
|
||
-- Werkplekken van te verwijderen persoon
|
||
-- Als een persoon (logisch) verwijderd wordt, worden zijn/haar (perslid-)werkplekken dat ook
|
||
CURSOR cdelwp (
|
||
p_perslid_key NUMBER)
|
||
IS
|
||
SELECT pw.prs_perslidwerkplek_key, w.prs_werkplek_key
|
||
FROM prs_perslidwerkplek pw, prs_werkplek w
|
||
WHERE pw.prs_perslid_key = p_perslid_key
|
||
AND w.prs_werkplek_key = pw.prs_werkplek_key;
|
||
|
||
-- Dubbele nummers? Dan worden gewoon 2 (of meer) personen toegevoegd!
|
||
-- Alle gegevens uit importtabel geformatteerd volgens specificatie
|
||
CURSOR cperslid
|
||
IS
|
||
SELECT prs_perslid_naam,
|
||
prs_perslid_tussenvoegsel,
|
||
prs_perslid_voornaam,
|
||
prs_perslid_oslogin,
|
||
prs_perslid_nr,
|
||
prs_projkpn_nr,
|
||
prs_afdeling_omschrijving,
|
||
prs_srtperslid_omschrijving,
|
||
prs_perslid_email,
|
||
prs_perslid_telefoonnr,
|
||
prs_perslid_mobiel
|
||
FROM nybu_imp_prs
|
||
WHERE prs_perslid_oslogin IS NOT NULL;
|
||
|
||
-- Soort perslid/functie
|
||
CURSOR csrtperslid
|
||
IS
|
||
SELECT MIN (prs_perslid_oslogin) prs_perslid_oslogin,
|
||
MIN (prs_perslid_naam) prs_perslid_naam,
|
||
MIN (prs_perslid_voornaam) prs_perslid_voornaam,
|
||
MIN (prs_srtperslid_omschrijving) prs_srtperslid_omschrijving
|
||
FROM nybu_imp_prs
|
||
GROUP BY UPPER (prs_srtperslid_omschrijving);
|
||
|
||
-- Dubbele nummers? Dan krijgt iemand mogelijk de verkeerde plaats!
|
||
-- Personen in importsheet + hun werkplekken
|
||
-- (voor maken nieuwe/verhuizen naar (virtuele) werkplek)
|
||
CURSOR cwp
|
||
IS
|
||
SELECT p.*
|
||
FROM nybu_imp_prs ip, prs_v_aanwezigperslid p
|
||
WHERE UPPER (ip.prs_perslid_oslogin) = UPPER (p.prs_perslid_oslogin);
|
||
|
||
-- Alle actieve personen met primaire login (ie. de import-doelgroep) zonder een werkplek
|
||
-- Voor logging: lijst van mensen zonder werkplek
|
||
CURSOR cnowp
|
||
IS
|
||
SELECT p.prs_perslid_key,
|
||
p.prs_perslid_oslogin,
|
||
p.prs_perslid_naam,
|
||
p.prs_perslid_voornaam
|
||
FROM prs_v_aanwezigperslid p
|
||
WHERE p.prs_perslid_oslogin IS NOT NULL
|
||
AND p.prs_perslid_naam NOT LIKE c_persoon_inactief || '%'
|
||
AND NOT EXISTS (SELECT pw.prs_perslid_key
|
||
FROM prs_perslidwerkplek pw
|
||
WHERE pw.prs_perslid_key = p.prs_perslid_key);
|
||
|
||
-- Alle aanwezige personen met primaire login (ie. de import-doelgroep) niet in een authorisatiegroep
|
||
CURSOR cnogroup
|
||
IS
|
||
SELECT p.prs_perslid_key,
|
||
p.prs_perslid_oslogin,
|
||
p.prs_perslid_naam,
|
||
p.prs_perslid_voornaam
|
||
FROM prs_v_aanwezigperslid p
|
||
WHERE p.prs_perslid_oslogin IS NOT NULL
|
||
AND NOT EXISTS (SELECT 1
|
||
FROM fac_gebruikersgroep g
|
||
WHERE g.prs_perslid_key = p.prs_perslid_key);
|
||
BEGIN
|
||
-- Bepaal accountnaam-match tussen Facilitor en RECENT importbestand ofwel
|
||
-- het aantal actieve personen na import.
|
||
-- RECENT betekent niet meer dan een kwartiertje oud (14,4 minuten); dit voorkomt
|
||
-- dat - als er geen nieuw importbestand is aangeleverd - telkens dezelfde fouten
|
||
-- worden gerapporteerd (nl. op basis van een oud importbestand in NYBU_IMP_PRS).
|
||
SELECT COUNT ( * )
|
||
INTO v_count_prs_import
|
||
FROM prs_v_aanwezigperslid p, nybu_imp_prs ip
|
||
WHERE p.prs_perslid_oslogin IS NOT NULL
|
||
AND UPPER (p.prs_perslid_oslogin) = UPPER (ip.prs_perslid_oslogin)
|
||
AND (ip.imp_datum + 0.01) > SYSDATE;
|
||
|
||
-- Bepaal huidig aantal actieve personen in Facilitor.
|
||
SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
|
||
INTO v_count_prs_actual
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_oslogin IS NOT NULL;
|
||
|
||
-- IF ( (TRUNC ( (v_count_prs_import / v_count_prs_actual) * 100) >=
|
||
-- (100 - c_max_delta_percentage))
|
||
-- OR
|
||
-- v_count_prs_actual < 20
|
||
-- )
|
||
IF (v_count_prs_import >= c_min_persons)
|
||
THEN
|
||
-- Geldig importbestand wat betreft aantal personen
|
||
FOR recdelprs IN cdelprs
|
||
LOOP
|
||
BEGIN
|
||
-- 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 login ['
|
||
|| recdelprs.prs_perslid_oslogin
|
||
|| '] en naam ['
|
||
|| recdelprs.prs_perslid_naam
|
||
|| ', '
|
||
|| recdelprs.prs_perslid_voornaam
|
||
|| '] is verwijderd',
|
||
'Persoon is verwijderd');
|
||
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 zetten persoon';
|
||
|
||
-- Persoon INACTIEF zetten (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 login ['
|
||
|| recdelprs.prs_perslid_oslogin
|
||
|| '] en naam ['
|
||
|| recdelprs.prs_perslid_naam
|
||
|| ', '
|
||
|| recdelprs.prs_perslid_voornaam
|
||
|| '] is INACTIEF gezet',
|
||
'Persoon met verplichtingen is INACTIEF gezet');
|
||
ELSE
|
||
v_errorhint := 'Fout bij INACTIEF maken persoon';
|
||
|
||
-- Persoon INACTIEF maken (reset oslogin; indien handmatig INACTIEF gezet)
|
||
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 login ['
|
||
|| recdelprs.prs_perslid_oslogin
|
||
|| '] en naam ['
|
||
|| recdelprs.prs_perslid_naam
|
||
|| ', '
|
||
|| recdelprs.prs_perslid_voornaam
|
||
|| '] is INACTIEF gemaakt',
|
||
'Persoon met verplichtingen is INACTIEF gemaakt (en account is verwijderd)');
|
||
END IF;
|
||
|
||
COMMIT;
|
||
END IF;
|
||
|
||
-- NYBU heeft impliciete werkplekken; werkplekken verwijderen om gedoe te voorkomen.
|
||
-- Dit moet ook als iemand inactief gemaakt/gezet wordt.
|
||
v_errorhint := 'Fout bij verwijderen werkplek(ken)';
|
||
|
||
FOR rdwp IN cdelwp (recdelprs.prs_perslid_key)
|
||
LOOP
|
||
-- Per 5.3.2/FSN#26947 verdwijnt via trigger vanzelf de bezetting!
|
||
v_errorhint := 'Fout bij verwijderen werkplek';
|
||
|
||
DELETE FROM prs_werkplek
|
||
WHERE prs_werkplek_key = rdwp.prs_werkplek_key;
|
||
END LOOP;
|
||
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,
|
||
'W',
|
||
v_errormsg,
|
||
v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
FOR recsrtperslid IN csrtperslid
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding :=
|
||
recsrtperslid.prs_perslid_oslogin
|
||
|| '|'
|
||
|| recsrtperslid.prs_perslid_naam
|
||
|| '|'
|
||
|| recsrtperslid.prs_perslid_voornaam
|
||
|| '|'
|
||
|| recsrtperslid.prs_srtperslid_omschrijving
|
||
|| ' - ';
|
||
v_errorhint := 'Fout bij bepalen functie';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM prs_srtperslid
|
||
WHERE UPPER (prs_srtperslid_omschrijving) =
|
||
UPPER (recsrtperslid.prs_srtperslid_omschrijving)
|
||
AND prs_srtperslid_verwijder IS NULL;
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errorhint := 'Fout bij toevoegen functie';
|
||
|
||
INSERT INTO prs_srtperslid (prs_srtperslid_omschrijving)
|
||
VALUES (recsrtperslid.prs_srtperslid_omschrijving);
|
||
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);
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Functie: verwerkte regels zonder foutmelding: '
|
||
|| TO_CHAR (v_count_tot - v_count_error),
|
||
'');
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Functie: verwerkte regels met foutmelding: '
|
||
|| TO_CHAR (v_count_error),
|
||
'');
|
||
|
||
COMMIT;
|
||
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
FOR recperslid IN cperslid
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding :=
|
||
'['
|
||
|| recperslid.prs_perslid_oslogin
|
||
|| '|'
|
||
|| recperslid.prs_perslid_naam
|
||
|| '|'
|
||
|| recperslid.prs_perslid_voornaam
|
||
|| '] - ';
|
||
|
||
v_errorhint :=
|
||
'Fout bij bepalen functie ['
|
||
|| recperslid.prs_srtperslid_omschrijving
|
||
|| ']';
|
||
|
||
SELECT prs_srtperslid_key
|
||
INTO v_srtperslid_key
|
||
FROM prs_srtperslid
|
||
WHERE prs_srtperslid_verwijder IS NULL
|
||
AND UPPER (prs_srtperslid_omschrijving) =
|
||
UPPER (recperslid.prs_srtperslid_omschrijving);
|
||
|
||
v_errorhint :=
|
||
'Fout bij bepalen afdeling ['
|
||
|| recperslid.prs_afdeling_omschrijving
|
||
|| ']';
|
||
|
||
SELECT prs_afdeling_key
|
||
INTO v_afdeling_key
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
AND UPPER (prs_afdeling_omschrijving) =
|
||
UPPER (recperslid.prs_afdeling_omschrijving);
|
||
|
||
v_errorhint :=
|
||
'Fout bij bepalen naam ['
|
||
|| recperslid.prs_perslid_naam
|
||
|| ']';
|
||
|
||
--TODO: Is die lengte-check wel nodig? Doet import_prs ook al!
|
||
-- (Let op: v_perslid_naam wordt hieronder gebruikt!)
|
||
IF LENGTH (recperslid.prs_perslid_naam) > 30
|
||
THEN
|
||
v_perslid_naam := SUBSTR (recperslid.prs_perslid_naam, 1, 30);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Achternaam te lang',
|
||
'Achternaam wordt afgebroken tot ['
|
||
|| v_perslid_naam
|
||
|| ']');
|
||
ELSE
|
||
v_perslid_naam := recperslid.prs_perslid_naam;
|
||
END IF;
|
||
|
||
v_errorhint := 'Fout bij bepalen persoon';
|
||
|
||
SELECT COUNT ( * ), MAX (prs_perslid_key)
|
||
INTO v_count, v_perslid_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND UPPER (prs_perslid_oslogin) =
|
||
UPPER (recperslid.prs_perslid_oslogin);
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errorhint := 'Fout bij toevoegen persoon';
|
||
|
||
INSERT INTO prs_perslid (prs_perslid_module,
|
||
prs_perslid_naam,
|
||
prs_perslid_tussenvoegsel,
|
||
prs_perslid_voornaam,
|
||
prs_perslid_oslogin,
|
||
prs_perslid_nr,
|
||
prs_afdeling_key,
|
||
prs_srtperslid_key,
|
||
prs_perslid_email,
|
||
prs_perslid_telefoonnr,
|
||
prs_perslid_mobiel)
|
||
VALUES ('PRS',
|
||
v_perslid_naam,
|
||
recperslid.prs_perslid_tussenvoegsel,
|
||
recperslid.prs_perslid_voornaam,
|
||
recperslid.prs_perslid_oslogin,
|
||
recperslid.prs_perslid_nr,
|
||
v_afdeling_key,
|
||
v_srtperslid_key,
|
||
recperslid.prs_perslid_email,
|
||
recperslid.prs_perslid_telefoonnr,
|
||
recperslid.prs_perslid_mobiel)
|
||
RETURNING prs_perslid_key
|
||
INTO v_perslid_key;
|
||
--TODO: voeg persoon toe op standaardwerkplek (xxx-0-999)
|
||
ELSE
|
||
IF (v_count > 1)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding || ' kan persoon niet eenduidig bepalen',
|
||
v_errorhint);
|
||
END IF;
|
||
|
||
v_errorhint := 'Fout bij wijzigen persoon';
|
||
|
||
-- TODO: coalesce's voor velden die nog niet overschreven moeten worden.
|
||
-- NYBU#30064: perslid_nr niet leegmaken
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_naam = v_perslid_naam,
|
||
prs_perslid_tussenvoegsel =
|
||
recperslid.prs_perslid_tussenvoegsel,
|
||
prs_perslid_voornaam = recperslid.prs_perslid_voornaam,
|
||
prs_perslid_oslogin = recperslid.prs_perslid_oslogin,
|
||
prs_perslid_nr =
|
||
COALESCE (recperslid.prs_perslid_nr, prs_perslid_nr),
|
||
prs_afdeling_key = v_afdeling_key,
|
||
prs_srtperslid_key = v_srtperslid_key,
|
||
prs_perslid_email = recperslid.prs_perslid_email,
|
||
prs_perslid_telefoonnr =
|
||
recperslid.prs_perslid_telefoonnr,
|
||
prs_perslid_mobiel = recperslid.prs_perslid_mobiel
|
||
WHERE prs_perslid_key = v_perslid_key;
|
||
--TODO: als nog geen werkplek, dan standaardwerkplek?
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Geen data gevonden',
|
||
v_errorhint);
|
||
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),
|
||
'');
|
||
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
FOR recnogroup IN cnogroup
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding :=
|
||
recnogroup.prs_perslid_oslogin
|
||
|| '|'
|
||
|| recnogroup.prs_perslid_naam
|
||
|| '|'
|
||
|| recnogroup.prs_perslid_voornaam
|
||
|| ' - ';
|
||
v_errorhint := 'Fout bij bepalen groep [' || c_groep_upper || ']';
|
||
|
||
SELECT fac_groep_key
|
||
INTO v_groep_key
|
||
FROM fac_groep
|
||
WHERE fac_groep_upper = c_groep_upper;
|
||
|
||
v_errorhint :=
|
||
'Fout bij koppelen persoon aan groep ['
|
||
|| c_groep_upper
|
||
|| ']';
|
||
|
||
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
|
||
VALUES (v_groep_key, recnogroup.prs_perslid_key);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'OTHERS (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint);
|
||
END;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
|
||
-- 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);
|
||
ELSE
|
||
IF (v_count_prs_import = 0)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Geen nieuw/recent bestand met te importeren personen aangetroffen!',
|
||
'');
|
||
ELSE
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
'Verschil tussen het actuele aantal en het te importeren aantal personen te groot; zie specificatie!',
|
||
'- max. verschilpercentage = ['
|
||
|| TO_CHAR (c_max_delta_percentage)
|
||
|| '%] <br> '
|
||
|| '- matchend #personen importbestand = ['
|
||
|| TO_CHAR (v_count_prs_import)
|
||
|| '] <br> '
|
||
|| '- #personen Facilitor = ['
|
||
|| TO_CHAR (v_count_prs_actual)
|
||
|| ']');
|
||
END IF;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
END nybu_update_prs;
|
||
/
|
||
|
||
-- NYBU#29356: export die optionele ruimterserveringen die plaatsvinden binnen 14 dagen en
|
||
-- optionele voorzieningen reserveringen die plaats vinden binnen 7 dagen automatisch op definitief zet.
|
||
-- de activiteiten residence (=key 130) en staff (=key 110) vanllen hier buiten.
|
||
|
||
CREATE OR REPLACE PROCEDURE nybu_export_res_statusupd (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2)
|
||
AS
|
||
CURSOR copt
|
||
IS
|
||
SELECT res_rsv_ruimte_key
|
||
FROM res_rsv_ruimte ra
|
||
WHERE ra.res_status_fo_key = 1
|
||
AND res_rsv_ruimte_verwijder IS NULL
|
||
AND res_rsv_ruimte_van < SYSDATE + 28
|
||
AND res_rsv_ruimte_van > SYSDATE
|
||
AND res_activiteit_key NOT IN (110, 130)
|
||
AND ra.res_rsv_ruimte_dirtlevel = 0
|
||
AND res_activiteit_key NOT IN
|
||
(SELECT res_activiteit_key
|
||
FROM res_activiteit
|
||
WHERE res_srtactiviteit_key IN
|
||
(SELECT res_srtactiviteit_key
|
||
FROM res_srtactiviteit
|
||
WHERE res_srtactiviteit_soort = 1))
|
||
UNION ALL
|
||
SELECT res_rsv_ruimte_key
|
||
FROM res_rsv_ruimte ra
|
||
WHERE ra.res_status_fo_key = 1
|
||
AND res_rsv_ruimte_verwijder IS NULL
|
||
AND res_rsv_ruimte_van < SYSDATE + 7
|
||
AND res_rsv_ruimte_van > SYSDATE
|
||
AND ra.res_rsv_ruimte_dirtlevel = 0
|
||
AND res_activiteit_key NOT IN
|
||
(SELECT res_activiteit_key
|
||
FROM res_activiteit
|
||
WHERE res_srtactiviteit_key NOT IN
|
||
(SELECT res_srtactiviteit_key
|
||
FROM res_srtactiviteit
|
||
WHERE res_srtactiviteit_soort = 1));
|
||
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
FOR rc IN copt
|
||
LOOP
|
||
BEGIN
|
||
v_errorhint := 'Fout bij bijwerken reserveringsstatus';
|
||
|
||
UPDATE res_rsv_ruimte
|
||
SET res_status_fo_key = 2
|
||
WHERE res_rsv_ruimte_key = rc.res_rsv_ruimte_key;
|
||
|
||
fac.trackaction ('RESUPD',
|
||
rc.res_rsv_ruimte_key,
|
||
NULL,
|
||
NULL,
|
||
'Reservering automatisch definitief');
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
' ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.writelog (p_applname,
|
||
'W',
|
||
rc.res_rsv_ruimte_key || ' ' || v_errormsg,
|
||
v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
--
|
||
-- TIJDELIJK: Bij het herhalen van reserveringen worden ook kenmerken meegekopieerd die te maken hebben met de
|
||
-- export. Deze kenmerken worden hier verwijderd. (NYBU#35318). Er is ook een logcenter melding aangemaakt om
|
||
-- dit structureel op te lossen FSN#35335.
|
||
--
|
||
DELETE res_kenmerkwaarde kw
|
||
WHERE res_kenmerkwaarde_key IN
|
||
(SELECT kw2.res_kenmerkwaarde_key
|
||
FROM res_kenmerkwaarde kw2,
|
||
res_kenmerk k,
|
||
res_rsv_ruimte rr
|
||
WHERE kw2.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key IN
|
||
(201, 202, 203, 221, 222, 241, 261) -- kenmerken die door de export gezet worden.
|
||
AND kw2.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND TO_CHAR (kw2.res_kenmerkwaarde_aanmaak,
|
||
'yyyymmddhh24mi') =
|
||
TO_CHAR (rr.res_rsv_ruimte_aanmaak,
|
||
'yyyymmddhh24mi')
|
||
AND kw2.res_kenmerkwaarde_aanmaak > SYSDATE - 1);
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.writelog (p_applname,
|
||
'E',
|
||
'Proces auto status update afgebroken!',
|
||
v_errormsg);
|
||
COMMIT;
|
||
END nybu_export_res_statusupd;
|
||
/
|
||
|
||
|
||
-- Export om notificatie naar contactpersonen van een reservering
|
||
-- te sturen op het moment dat de reservering totaal afgemeld is
|
||
-- en de contactpersoon de resevering moet goedkeuren.
|
||
|
||
CREATE OR REPLACE PROCEDURE nybu_export_res_noti_goedk (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2)
|
||
AS
|
||
CURSOR c
|
||
IS
|
||
SELECT rrr.res_rsv_ruimte_key,
|
||
'Goedkeuring voor reservering '
|
||
|| rrr.res_reservering_key
|
||
|| '/'
|
||
|| rrr.res_rsv_ruimte_volgnr
|
||
|| ' ('
|
||
|| rrr.res_rsv_ruimte_omschrijving
|
||
|| ') is vereist'
|
||
omschrijving
|
||
FROM res_rsv_ruimte rrr,
|
||
( SELECT MIN (res_status_bo_key) res_status_bo_key,
|
||
res_rsv_ruimte_key
|
||
FROM (SELECT res_status_bo_key, rr1.res_rsv_ruimte_key
|
||
FROM res_rsv_ruimte rr1
|
||
WHERE rr1.res_rsv_ruimte_verwijder IS NULL
|
||
UNION ALL
|
||
SELECT res_status_bo_key, rd1.res_rsv_ruimte_key
|
||
FROM res_rsv_deel rd1
|
||
WHERE rd1.res_rsv_deel_verwijder IS NULL
|
||
UNION ALL
|
||
SELECT res_status_bo_key, ra1.res_rsv_ruimte_key
|
||
FROM res_rsv_artikel ra1
|
||
WHERE ra1.res_rsv_artikel_verwijder IS NULL)
|
||
GROUP BY res_rsv_ruimte_key) bo_stat
|
||
WHERE NOT EXISTS
|
||
-- die nog niet genotificeerd zijn
|
||
(SELECT fac_tracking_refkey
|
||
FROM fac_tracking t, fac_srtnotificatie sn
|
||
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'CUST01'
|
||
AND fac_tracking_refkey = rrr.res_rsv_ruimte_key)
|
||
-- met cateringkosten
|
||
AND (SELECT SUM (res.getartikelprijs (res_rsv_artikel_key))
|
||
FROM res_rsv_artikel rra, res_artikel ra
|
||
WHERE res_rsv_artikel_verwijder IS NULL
|
||
AND rra.res_artikel_key = ra.res_artikel_key
|
||
AND ra.res_discipline_key NOT IN (462, 581, 741) -- hotelkamers, inhuur voorzieningen, linnen
|
||
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key) <>
|
||
0
|
||
AND rrr.res_rsv_ruimte_key = bo_stat.res_rsv_ruimte_key
|
||
AND bo_stat.res_status_bo_key = 5
|
||
AND rrr.res_rsv_ruimte_van > TO_DATE ('20160101', 'yyyymmdd');
|
||
BEGIN
|
||
FOR rec IN c
|
||
LOOP
|
||
fac.trackaction ('CUST01',
|
||
rec.res_rsv_ruimte_key,
|
||
NULL,
|
||
NULL,
|
||
rec.omschrijving);
|
||
END LOOP;
|
||
END nybu_export_res_noti_goedk;
|
||
/
|
||
|
||
-- Verschilrapportage werkplek FACILITOR vs AD
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_wp_verschil
|
||
AS
|
||
SELECT pf.prs_perslid_naam_full name,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("appl/prs/prs_perslid.asp?key='
|
||
|| p.prs_perslid_key
|
||
|| '")''>'
|
||
|| HTF.escape_sc (p.prs_perslid_oslogin)
|
||
|| '</a>'
|
||
html_account,
|
||
g.alg_gebouw_naam || ' ' || ar.alg_ruimte_nr room_facilitor,
|
||
ip.werkplek_oms room_ad
|
||
FROM alg_v_aanwezigruimte ar,
|
||
alg_verdieping v,
|
||
alg_gebouw g,
|
||
prs_werkplek w,
|
||
prs_perslidwerkplek pw,
|
||
prs_v_aanwezigperslid p,
|
||
prs_v_perslid_fullnames pf,
|
||
nybu_imp_prs ip
|
||
WHERE UPPER (ip.prs_perslid_oslogin) = p.prs_perslid_oslogin
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_perslid_key = pw.prs_perslid_key(+)
|
||
AND pw.prs_werkplek_key = w.prs_werkplek_key(+)
|
||
AND w.prs_alg_ruimte_key = ar.alg_ruimte_key(+)
|
||
AND ar.alg_verdieping_key = v.alg_verdieping_key(+)
|
||
AND v.alg_gebouw_key = g.alg_gebouw_key(+)
|
||
AND (ip.werkplek_oms !=
|
||
g.alg_gebouw_naam || ' ' || ar.alg_ruimte_nr
|
||
OR (ip.werkplek_oms IS NULL AND ar.alg_ruimte_key IS NOT NULL)
|
||
OR (ip.werkplek_oms IS NOT NULL AND ar.alg_ruimte_key IS NULL));
|
||
|
||
-- Verschilrapportage afdeling Planon vs AD/Raedt
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_afd_verschil
|
||
AS
|
||
SELECT pf.prs_perslid_naam_full naam,
|
||
a.prs_afdeling_naam code,
|
||
a.prs_afdeling_omschrijving afdeling_ad,
|
||
km.prs_kenmerklink_waarde afdeling_planon
|
||
FROM prs_v_perslid_fullnames pf,
|
||
prs_v_aanwezigperslid p,
|
||
prs_afdeling a,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1040) km
|
||
WHERE pf.prs_perslid_key = p.prs_perslid_key
|
||
AND km.prs_link_key(+) = p.prs_perslid_key
|
||
AND a.prs_afdeling_key = p.prs_afdeling_key
|
||
AND a.prs_afdeling_naam != km.prs_kenmerklink_waarde;
|
||
|
||
------- IMPORT STUDENTENGEGEVENS CRM --------------------------------------------
|
||
|
||
CREATE OR REPLACE PROCEDURE nybu_import_crm (p_import_key IN NUMBER)
|
||
IS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
c_headerline VARCHAR (1000)
|
||
:= '(Do Not Modify) Enrollment Id;(Do Not Modify) Row Checksum;(Do Not Modify) Modified On;Contact Number (Contact) (Contact);Last Name (Contact) (Contact);First Name (Contact) (Contact);Initials (Contact) (Contact);Infix (Contact) (Contact);Gender (Contact) (Contact);Line 1 (private) (Contact) (Contact);Housenumber (private) (Contact) (Contact);Line 2 (private) (Contact) (Contact);Postal Code (private) (Contact) (Contact);City (private) (Contact) (Contact);Country (private) (Contact) (Contact);Email Private (Contact) (Contact);Private Mobile Phone (Contact) (Contact);Private Phone (Contact) (Contact);Participant Number (Contact) (Contact);SAN Number (Contact) (Contact);Birthday (Contact) (Contact);Applicant For (Program);Applicant For (Group)';
|
||
-- c_headerline VARCHAR (1000) := 'Enrollment;Contact Number (Participant);Last Name (Participant);First Name Used (Participant);Initials (Participant);Infix (Participant);Gender (Participant);Private Address: Street 1 (Participant);Private Address: Street 2 (Participant);Private Address: ZIP/Postal Code (Participant);Private Address: City (Participant);Private Address: Country (Participant);Private E-mail (Participant);Mobile Phone (Participant);Private Phone (Participant);Participant Number (Participant);SAN Number (Participant);Birthday (Participant);Applicant For (Program);Applicant For (Group)';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_header VARCHAR2 (1000);
|
||
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_contact_nr VARCHAR2 (256);
|
||
v_prs_perslid_naam VARCHAR2 (256);
|
||
v_prs_perslid_tussenvoegsel VARCHAR2 (256);
|
||
v_prs_perslid_voornaam VARCHAR2 (256);
|
||
v_prs_perslid_initialen VARCHAR2 (256);
|
||
v_prs_perslid_geslacht VARCHAR2 (256);
|
||
v_adres_prive_straat1 VARCHAR2 (256);
|
||
v_housenumber VARCHAR2 (256);
|
||
v_adres_prive_straat2 VARCHAR2 (256);
|
||
v_adres_prive_postcode VARCHAR2 (256);
|
||
v_adres_prive_plaats VARCHAR2 (256);
|
||
v_adres_prive_land VARCHAR2 (256);
|
||
v_prs_perslid_email VARCHAR2 (256);
|
||
v_prs_perslid_mobiel VARCHAR2 (256);
|
||
v_prs_perslid_telnr VARCHAR2 (256);
|
||
v_prs_perslid_nr VARCHAR2 (256);
|
||
v_san_nr VARCHAR2 (256);
|
||
v_geboortedatum VARCHAR2 (256);
|
||
v_prs_afdeling_omschrijving VARCHAR2 (256);
|
||
-- Dummy
|
||
v_dummy VARCHAR2 (256);
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM nybu_imp_crm;
|
||
|
||
COMMIT;
|
||
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_header := v_newline;
|
||
v_aanduiding := '';
|
||
v_errorhint := 'Fout bij opvragen te importeren rij';
|
||
v_ongeldig := 0;
|
||
v_prs_perslid_tussenvoegsel := NULL;
|
||
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy); -- Enrollment ID
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy); -- Row Checksum
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy); -- Modified on
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_contact_nr); -- Contact number
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam); -- Last Name
|
||
fac.imp_getfield (v_newline,
|
||
c_fielddelimitor,
|
||
v_prs_perslid_voornaam); -- First Name
|
||
fac.imp_getfield (v_newline,
|
||
c_fielddelimitor,
|
||
v_prs_perslid_initialen); -- Initials
|
||
fac.imp_getfield (v_newline,
|
||
c_fielddelimitor,
|
||
v_prs_perslid_tussenvoegsel); -- Infix
|
||
fac.imp_getfield (v_newline,
|
||
c_fielddelimitor,
|
||
v_prs_perslid_geslacht); -- Gender
|
||
fac.imp_getfield (v_newline,
|
||
c_fielddelimitor,
|
||
v_adres_prive_straat1); -- Private Address: Line 1
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_housenumber); -- Housenumber
|
||
fac.imp_getfield (v_newline,
|
||
c_fielddelimitor,
|
||
v_adres_prive_straat2); -- Private Address: Line 2
|
||
fac.imp_getfield (v_newline,
|
||
c_fielddelimitor,
|
||
v_adres_prive_postcode); -- Private Address: Postal Code
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_adres_prive_plaats); -- Private Address: City
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_adres_prive_land); -- Private Address: Country
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email); -- E-mail Private
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_mobiel); -- Private Mobile Phone
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_telnr); -- Private Phone
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr); -- Participant Number
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_san_nr); -- SAN Number
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_geboortedatum); -- Birthday
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy); -- Applicant For (Program)
|
||
fac.imp_getfield (v_newline,
|
||
c_fielddelimitor,
|
||
v_prs_afdeling_omschrijving); -- Applicant For (Group)
|
||
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_prs_perslid_naam
|
||
|| '|'
|
||
|| v_prs_perslid_voornaam
|
||
|| '|'
|
||
|| v_contact_nr
|
||
|| '] ';
|
||
|
||
-- 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_header) LIKE UPPER (c_headerline || '%')
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
-- Controleer alle veldwaarden
|
||
v_errorhint := 'Ongeldig studentnummer';
|
||
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 || 'Studentnummer te lang',
|
||
'Studentnummer wordt afgebroken tot ['
|
||
|| v_prs_perslid_nr
|
||
|| ']');
|
||
END IF;
|
||
|
||
v_errorhint := 'Ongeldig SAN-nummer';
|
||
v_san_nr := TRIM (v_san_nr);
|
||
|
||
IF LENGTH (v_san_nr) > 20
|
||
THEN
|
||
v_san_nr := SUBSTR (v_san_nr, 1, 20);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'SAN-nummer te lang',
|
||
'SAN-nummer wordt afgebroken tot [' || v_san_nr || ']');
|
||
END IF;
|
||
|
||
v_errorhint := 'Ongeldige achternaam';
|
||
v_prs_perslid_naam := TRIM (v_prs_perslid_naam);
|
||
|
||
IF LENGTH (v_prs_perslid_naam) > 30
|
||
THEN
|
||
v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 30);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Achternaam te lang',
|
||
'Achternaam wordt afgebroken tot ['
|
||
|| v_prs_perslid_naam
|
||
|| ']');
|
||
ELSE
|
||
IF (v_prs_perslid_naam IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Achternaam onbekend',
|
||
'Achternaam is verplicht; regel wordt overgeslagen!');
|
||
END IF;
|
||
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 te lang',
|
||
'Voornaam wordt afgebroken tot ['
|
||
|| v_prs_perslid_voornaam
|
||
|| ']');
|
||
END IF;
|
||
|
||
v_errorhint := 'Ongeldige opleiding/afdeling';
|
||
v_prs_afdeling_omschrijving := TRIM (v_prs_afdeling_omschrijving);
|
||
|
||
IF LENGTH (v_prs_afdeling_omschrijving) > 60
|
||
THEN
|
||
v_prs_afdeling_omschrijving :=
|
||
SUBSTR (v_prs_afdeling_omschrijving, 1, 60);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Opleiding/Afdeling te lang',
|
||
'Opleiding/Afdeling wordt afgebroken tot ['
|
||
|| v_prs_afdeling_omschrijving
|
||
|| ']');
|
||
ELSE
|
||
IF (v_prs_afdeling_omschrijving IS NULL)
|
||
THEN
|
||
v_prs_afdeling_omschrijving := 'Unknown';
|
||
--TODO: verplicht maken?
|
||
--v_ongeldig := 1;
|
||
--fac.imp_writelog (
|
||
-- p_import_key,
|
||
-- 'E',
|
||
-- v_aanduiding || 'Afdeling onbekend',
|
||
-- 'Afdeling is verplicht; regel wordt overgeslagen!');
|
||
END IF;
|
||
END IF;
|
||
|
||
v_errorhint := 'E-mailadres te lang';
|
||
v_prs_perslid_email := TRIM (v_prs_perslid_email);
|
||
|
||
IF LENGTH (v_prs_perslid_email) > 100
|
||
THEN
|
||
v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 100);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'E-mailadres wordt afgebroken tot ['
|
||
|| v_prs_perslid_email
|
||
|| ']');
|
||
END IF;
|
||
|
||
v_errorhint := 'Tussenvoegsel';
|
||
v_prs_perslid_tussenvoegsel := TRIM (v_prs_perslid_tussenvoegsel);
|
||
|
||
IF LENGTH (v_prs_perslid_tussenvoegsel) > 15
|
||
THEN
|
||
v_prs_perslid_tussenvoegsel :=
|
||
SUBSTR (v_prs_perslid_tussenvoegsel, 1, 15);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Tussenvoegsel wordt afgebroken tot ['
|
||
|| v_prs_perslid_tussenvoegsel
|
||
|| ']');
|
||
END IF;
|
||
|
||
v_errorhint := 'Mobiel nr';
|
||
v_prs_perslid_mobiel :=
|
||
TRIM (REPLACE (v_prs_perslid_mobiel, ' ', ''));
|
||
|
||
IF LENGTH (v_prs_perslid_mobiel) > 15
|
||
THEN
|
||
v_prs_perslid_mobiel := SUBSTR (v_prs_perslid_mobiel, 1, 15);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Mobiel nr wordt afgebroken tot ['
|
||
|| v_prs_perslid_mobiel
|
||
|| ']');
|
||
END IF;
|
||
|
||
v_errorhint := 'Telefoonnr';
|
||
v_prs_perslid_telnr :=
|
||
TRIM (REPLACE (v_prs_perslid_telnr, ' ', ''));
|
||
|
||
IF LENGTH (v_prs_perslid_telnr) > 15
|
||
THEN
|
||
v_prs_perslid_telnr := SUBSTR (v_prs_perslid_telnr, 1, 15);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Telefoonnr wordt afgebroken tot ['
|
||
|| v_prs_perslid_telnr
|
||
|| ']');
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errorhint :=
|
||
'Fout bij toevoegen regel aan importtabel NYBU_IMP_CRM';
|
||
|
||
INSERT INTO nybu_imp_crm (imp_datum,
|
||
contact_nr,
|
||
prs_perslid_naam,
|
||
prs_perslid_tussenvoegsel,
|
||
prs_perslid_voornaam,
|
||
prs_perslid_initialen,
|
||
prs_perslid_geslacht,
|
||
adres_prive_straat1,
|
||
adres_prive_straat2,
|
||
adres_prive_postcode,
|
||
adres_prive_plaats,
|
||
adres_prive_land,
|
||
prs_perslid_email,
|
||
prs_perslid_mobiel,
|
||
prs_perslid_telefoonnr,
|
||
prs_perslid_nr,
|
||
san_nr,
|
||
geboortedatum,
|
||
prs_afdeling_omschrijving,
|
||
housenumber)
|
||
VALUES (SYSDATE,
|
||
v_contact_nr,
|
||
v_prs_perslid_naam,
|
||
v_prs_perslid_tussenvoegsel,
|
||
v_prs_perslid_voornaam,
|
||
v_prs_perslid_initialen,
|
||
v_prs_perslid_geslacht,
|
||
v_adres_prive_straat1,
|
||
v_adres_prive_straat2,
|
||
v_adres_prive_postcode,
|
||
v_adres_prive_plaats,
|
||
v_adres_prive_land,
|
||
v_prs_perslid_email,
|
||
v_prs_perslid_mobiel,
|
||
v_prs_perslid_telnr,
|
||
v_prs_perslid_nr,
|
||
v_san_nr,
|
||
v_geboortedatum,
|
||
v_prs_afdeling_omschrijving,
|
||
v_housenumber);
|
||
|
||
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,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Ingelezen regel kan niet worden weggeschreven!');
|
||
COMMIT;
|
||
END;
|
||
END IF;
|
||
END IF; -- header_valid
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = 1)
|
||
THEN
|
||
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),
|
||
'');
|
||
ELSE
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
'Ongeldige headerregel!',
|
||
SUBSTR ('Moet zijn: "' || c_headerline || '"', 1, 1000));
|
||
END IF;
|
||
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 nybu_import_crm;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE nybu_update_crm (p_import_key IN NUMBER)
|
||
IS
|
||
c_persoon_inactief VARCHAR2 (30) := 'INACTIEF: ';
|
||
-- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een nummer
|
||
c_max_delta_percentage NUMBER (10) := 20;
|
||
-- Ruimte waar studenten in geplaatst worden (indien nog geen ruimte in opgegeven gebouw)
|
||
c_gebouw_code VARCHAR2 (10) := '';
|
||
c_ruimte_nr VARCHAR2 (10) := '999';
|
||
c_gebouw_key NUMBER (10);
|
||
c_ruimte_key NUMBER (10);
|
||
-- Flexkenmerken
|
||
c_contact_nr_key NUMBER (10) := 1000;
|
||
c_address_street1_key NUMBER (10) := 1022;
|
||
c_address_street2_key NUMBER (10) := 1023;
|
||
c_address_zip_key NUMBER (10) := 1024;
|
||
c_address_city_key NUMBER (10) := 1025;
|
||
c_address_country_key NUMBER (10) := 1026;
|
||
c_birthday_key NUMBER (10) := 1027;
|
||
c_email_key NUMBER (10) := 1180;
|
||
c_san_nr_key NUMBER (10) := 1200;
|
||
-- Groep waar studenten in geplaatst worden (indien nog geen groep)
|
||
c_groep_upper 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_tot NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
--
|
||
v_perslid_key NUMBER (10);
|
||
v_perslid_naam VARCHAR2 (30);
|
||
v_perslid_tussenvoegsel VARCHAR2 (15);
|
||
v_afdeling_key NUMBER (10);
|
||
v_srtperslid_key NUMBER (10);
|
||
--v_oslogin VARCHAR2 (30);
|
||
--v_locatie_key NUMBER (10);
|
||
v_gebouw_key NUMBER (10);
|
||
v_verdieping_key NUMBER (10);
|
||
v_ruimte_key NUMBER (10);
|
||
v_ruimte_nr VARCHAR2 (10);
|
||
v_wp_key NUMBER (10);
|
||
v_wp_volgnr NUMBER (3);
|
||
v_wp_oms VARCHAR2 (30);
|
||
v_groep_key NUMBER (10);
|
||
v_kenmerklink_key NUMBER (10);
|
||
v_dbg_gebouw_code VARCHAR2 (10);
|
||
v_dbg_ruimte_nr VARCHAR2 (10);
|
||
|
||
-- Dubbele nummers? Dan worden gewoon 2 (of meer) personen toegevoegd!
|
||
-- Alle gegevens uit importtabel geformatteerd volgens specificatie
|
||
CURSOR cstudent
|
||
IS
|
||
SELECT contact_nr,
|
||
TO_DATE (enrollment_date, 'DD-MM-YYYY'),
|
||
prs_perslid_naam,
|
||
prs_perslid_tussenvoegsel,
|
||
prs_perslid_voornaam,
|
||
prs_perslid_initialen,
|
||
DECODE (UPPER (prs_perslid_geslacht),
|
||
'MALE', 1,
|
||
'FEMALE', 0,
|
||
NULL)
|
||
prs_perslid_geslacht,
|
||
adres_prive_straat1 || ' ' || housenumber AS adres_prive_straat1,
|
||
adres_prive_straat2,
|
||
adres_prive_postcode,
|
||
adres_prive_plaats,
|
||
adres_prive_land,
|
||
prs_perslid_email,
|
||
prs_perslid_mobiel,
|
||
prs_perslid_telefoonnr,
|
||
prs_perslid_nr,
|
||
san_nr,
|
||
TO_DATE (geboortedatum, 'DD-MM-YYYY') geboortedatum,
|
||
prs_afdeling_omschrijving
|
||
FROM nybu_imp_crm
|
||
WHERE contact_nr IS NOT NULL;
|
||
|
||
FUNCTION hasKenmerk (p_perslid_key IN NUMBER, p_kenmerk_key IN NUMBER)
|
||
RETURN BOOLEAN
|
||
IS
|
||
v_result NUMBER;
|
||
BEGIN
|
||
SELECT COUNT ( * )
|
||
INTO v_result
|
||
FROM prs_kenmerklink
|
||
WHERE prs_link_key = p_perslid_key
|
||
AND prs_kenmerk_key = p_kenmerk_key
|
||
AND prs_kenmerklink_niveau = 'P'
|
||
AND prs_kenmerklink_verwijder IS NULL;
|
||
|
||
RETURN v_result > 0;
|
||
END;
|
||
BEGIN
|
||
v_errorhint := 'Fout bij bepalen functie';
|
||
|
||
SELECT prs_srtperslid_key
|
||
INTO v_srtperslid_key
|
||
FROM prs_srtperslid
|
||
WHERE prs_srtperslid_verwijder IS NULL
|
||
AND UPPER (prs_srtperslid_omschrijving) = 'STUDENT';
|
||
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
FOR recstudent IN cstudent
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding :=
|
||
'['
|
||
|| recstudent.prs_perslid_naam
|
||
|| '|'
|
||
|| recstudent.prs_perslid_voornaam
|
||
|| '|'
|
||
|| recstudent.contact_nr
|
||
|| '] - ';
|
||
|
||
v_errorhint :=
|
||
'Fout bij bepalen afdeling ['
|
||
|| recstudent.prs_afdeling_omschrijving
|
||
|| ']';
|
||
|
||
SELECT prs_afdeling_key
|
||
INTO v_afdeling_key
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
AND prs_afdeling_upper =
|
||
DECODE (
|
||
SUBSTR (
|
||
UPPER (recstudent.prs_afdeling_omschrijving),
|
||
1,
|
||
3),
|
||
'MSC',
|
||
UPPER(SUBSTR (recstudent.prs_afdeling_omschrijving,
|
||
1,
|
||
5)),
|
||
'IMB',
|
||
UPPER(SUBSTR (recstudent.prs_afdeling_omschrijving,
|
||
1,
|
||
4)
|
||
|| SUBSTR (
|
||
recstudent.prs_afdeling_omschrijving,
|
||
8,
|
||
2)));
|
||
|
||
v_errorhint :=
|
||
'Fout bij bepalen naam [' || recstudent.prs_perslid_naam || ']';
|
||
|
||
--TODO: Is die lengte-check wel nodig? Doet import_prs ook al!
|
||
-- (Let op: v_perslid_naam wordt hieronder gebruikt!)
|
||
IF LENGTH (recstudent.prs_perslid_naam) > 30
|
||
THEN
|
||
v_perslid_naam := SUBSTR (recstudent.prs_perslid_naam, 1, 30);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Achternaam te lang',
|
||
'Achternaam wordt afgebroken tot [' || v_perslid_naam || ']');
|
||
ELSE
|
||
v_perslid_naam := recstudent.prs_perslid_naam;
|
||
END IF;
|
||
|
||
v_errorhint := 'Fout bij bepalen student';
|
||
|
||
--- NYBU#37370 en #37367
|
||
--- con_nr vervangen door san_nr
|
||
-- Studenten met een datum verwijder moeten evengoed opnieuw worden ingevoerd
|
||
SELECT COUNT ( * ), MAX (prs_perslid_key)
|
||
INTO v_count, v_perslid_key
|
||
FROM prs_perslid p, prs_kenmerklink kp
|
||
WHERE kp.prs_kenmerk_key = c_san_nr_key
|
||
AND p.prs_perslid_key = kp.prs_link_key
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND UPPER (kp.prs_kenmerklink_waarde) =
|
||
UPPER (recstudent.san_nr);
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errorhint := 'Fout bij toevoegen student';
|
||
|
||
INSERT INTO prs_perslid (prs_perslid_module,
|
||
prs_perslid_naam,
|
||
prs_perslid_tussenvoegsel,
|
||
prs_perslid_voornaam,
|
||
prs_perslid_voorletters,
|
||
prs_perslid_geslacht,
|
||
prs_perslid_email,
|
||
prs_perslid_mobiel,
|
||
prs_perslid_telefoonnr,
|
||
prs_perslid_nr,
|
||
prs_afdeling_key,
|
||
prs_srtperslid_key)
|
||
VALUES ('PRS',
|
||
v_perslid_naam,
|
||
recstudent.prs_perslid_tussenvoegsel,
|
||
recstudent.prs_perslid_voornaam,
|
||
recstudent.prs_perslid_initialen,
|
||
recstudent.prs_perslid_geslacht,
|
||
recstudent.prs_perslid_email,
|
||
recstudent.prs_perslid_mobiel,
|
||
recstudent.prs_perslid_telefoonnr,
|
||
recstudent.prs_perslid_nr,
|
||
v_afdeling_key,
|
||
v_srtperslid_key)
|
||
RETURNING prs_perslid_key
|
||
INTO v_perslid_key;
|
||
|
||
-- Kenmerk: contact_nr
|
||
v_errorhint := 'Fout zetten contact_nr';
|
||
prs.upsertkenmerk (c_contact_nr_key,
|
||
v_perslid_key,
|
||
recstudent.contact_nr);
|
||
|
||
-- Kenmerken: adres (straat1, straat2, postcode, plaats, land)
|
||
v_errorhint := 'Fout zetten adresregel 1';
|
||
prs.upsertkenmerk (c_address_street1_key,
|
||
v_perslid_key,
|
||
recstudent.adres_prive_straat1);
|
||
v_errorhint := 'Fout zetten adresregel 2';
|
||
prs.upsertkenmerk (c_address_street2_key,
|
||
v_perslid_key,
|
||
recstudent.adres_prive_straat2);
|
||
v_errorhint := 'Fout zetten postcode';
|
||
prs.upsertkenmerk (c_address_zip_key,
|
||
v_perslid_key,
|
||
recstudent.adres_prive_postcode);
|
||
v_errorhint := 'Fout zetten plaats';
|
||
prs.upsertkenmerk (c_address_city_key,
|
||
v_perslid_key,
|
||
recstudent.adres_prive_plaats);
|
||
v_errorhint := 'Fout zetten land';
|
||
prs.upsertkenmerk (c_address_country_key,
|
||
v_perslid_key,
|
||
recstudent.adres_prive_land);
|
||
-- Kenmerk: geboortedatum
|
||
v_errorhint := 'Fout zetten geboortedatum';
|
||
prs.upsertkenmerk (
|
||
c_birthday_key,
|
||
v_perslid_key,
|
||
TO_CHAR (recstudent.geboortedatum, 'DD-MM-YYYY'));
|
||
-- Kenmerk: e-mailadres
|
||
v_errorhint := 'Fout zetten e-mailadres';
|
||
prs.upsertkenmerk (c_email_key,
|
||
v_perslid_key,
|
||
recstudent.prs_perslid_email);
|
||
-- Kenmerk: SAN-nr
|
||
v_errorhint := 'Fout zetten SAN-nr';
|
||
prs.upsertkenmerk (c_san_nr_key,
|
||
v_perslid_key,
|
||
recstudent.san_nr);
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Persoon toegevoegd',
|
||
v_aanduiding);
|
||
--TODO: voeg persoon toe op standaardwerkplek (xxx-0-999)
|
||
ELSE
|
||
IF (v_count > 1)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding || ' kan persoon niet eenduidig bepalen',
|
||
v_errorhint);
|
||
END IF;
|
||
|
||
v_errorhint := 'Fout bij wijzigen persoon';
|
||
|
||
-- TODO: coalesce's voor velden die nog niet overschreven moeten worden.
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_naam =
|
||
COALESCE (prs_perslid_naam, v_perslid_naam),
|
||
prs_perslid_tussenvoegsel =
|
||
COALESCE (prs_perslid_tussenvoegsel,
|
||
recstudent.prs_perslid_tussenvoegsel),
|
||
prs_perslid_voornaam =
|
||
COALESCE (prs_perslid_voornaam,
|
||
recstudent.prs_perslid_voornaam),
|
||
prs_perslid_initialen =
|
||
COALESCE (prs_perslid_initialen,
|
||
recstudent.prs_perslid_initialen),
|
||
prs_perslid_geslacht =
|
||
COALESCE (prs_perslid_geslacht,
|
||
recstudent.prs_perslid_geslacht),
|
||
prs_perslid_email =
|
||
COALESCE (prs_perslid_email,
|
||
recstudent.prs_perslid_email),
|
||
prs_perslid_telefoonnr =
|
||
COALESCE (prs_perslid_telefoonnr,
|
||
recstudent.prs_perslid_telefoonnr),
|
||
prs_perslid_mobiel =
|
||
COALESCE (prs_perslid_mobiel,
|
||
recstudent.prs_perslid_mobiel),
|
||
prs_perslid_nr =
|
||
COALESCE (prs_perslid_nr, recstudent.prs_perslid_nr),
|
||
prs_afdeling_key =
|
||
COALESCE (prs_afdeling_key, v_afdeling_key),
|
||
prs_srtperslid_key =
|
||
COALESCE (prs_srtperslid_key, v_srtperslid_key)
|
||
WHERE prs_perslid_key = v_perslid_key;
|
||
|
||
-- Kenmerken: adres (straat1, straat2, postcode, plaats, land)
|
||
v_errorhint := 'Fout zetten adresregel 1';
|
||
|
||
IF (NOT hasKenmerk (v_perslid_key, c_address_street1_key))
|
||
THEN
|
||
prs.upsertkenmerk (c_address_street1_key,
|
||
v_perslid_key,
|
||
recstudent.adres_prive_straat1);
|
||
END IF;
|
||
|
||
v_errorhint := 'Fout zetten adresregel 2';
|
||
|
||
IF (NOT hasKenmerk (v_perslid_key, c_address_street2_key))
|
||
THEN
|
||
prs.upsertkenmerk (c_address_street2_key,
|
||
v_perslid_key,
|
||
recstudent.adres_prive_straat2);
|
||
END IF;
|
||
|
||
v_errorhint := 'Fout zetten postcode';
|
||
|
||
IF (NOT hasKenmerk (v_perslid_key, c_address_zip_key))
|
||
THEN
|
||
prs.upsertkenmerk (c_address_zip_key,
|
||
v_perslid_key,
|
||
recstudent.adres_prive_postcode);
|
||
END IF;
|
||
|
||
v_errorhint := 'Fout zetten plaats';
|
||
|
||
IF (NOT hasKenmerk (v_perslid_key, c_address_city_key))
|
||
THEN
|
||
prs.upsertkenmerk (c_address_city_key,
|
||
v_perslid_key,
|
||
recstudent.adres_prive_plaats);
|
||
END IF;
|
||
|
||
v_errorhint := 'Fout zetten land';
|
||
|
||
IF (NOT hasKenmerk (v_perslid_key, c_address_country_key))
|
||
THEN
|
||
prs.upsertkenmerk (c_address_country_key,
|
||
v_perslid_key,
|
||
recstudent.adres_prive_land);
|
||
END IF;
|
||
|
||
-- Kenmerk: geboortedatum
|
||
v_errorhint := 'Fout zetten geboortedatum';
|
||
|
||
IF (NOT hasKenmerk (v_perslid_key, c_birthday_key))
|
||
THEN
|
||
prs.upsertkenmerk (
|
||
c_birthday_key,
|
||
v_perslid_key,
|
||
TO_CHAR (recstudent.geboortedatum, 'DD-MM-YYYY'));
|
||
END IF;
|
||
|
||
-- Kenmerk: e-mailadres
|
||
v_errorhint := 'Fout zetten e-mailadres';
|
||
|
||
IF (NOT hasKenmerk (v_perslid_key, c_email_key))
|
||
THEN
|
||
prs.upsertkenmerk (c_email_key,
|
||
v_perslid_key,
|
||
recstudent.prs_perslid_email);
|
||
END IF;
|
||
|
||
-- Kenmerk: SAN-nr
|
||
v_errorhint := 'Fout zetten SAN-nr';
|
||
|
||
IF (NOT hasKenmerk (v_perslid_key, c_san_nr_key))
|
||
THEN
|
||
prs.upsertkenmerk (c_san_nr_key,
|
||
v_perslid_key,
|
||
recstudent.san_nr);
|
||
END IF;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Persoonsgegevens aangevuld',
|
||
v_aanduiding);
|
||
--TODO: als nog geen werkplek, dan standaardwerkplek?
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Geen data gevonden',
|
||
v_errorhint);
|
||
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',
|
||
'Student: verwerkte regels zonder foutmelding: '
|
||
|| TO_CHAR (v_count_tot - v_count_error),
|
||
'');
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Student: verwerkte regels met foutmelding: '
|
||
|| TO_CHAR (v_count_error),
|
||
'');
|
||
|
||
COMMIT;
|
||
END nybu_update_crm;
|
||
/
|
||
|
||
|
||
------- OVERIG ------------------------------------------------------------------
|
||
|
||
-- Ruimtes waar mensen vandaan/naartoe kunnen verhuizen
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_werkplekruimtes
|
||
AS
|
||
SELECT rg.*
|
||
FROM alg_v_ruimte_gegevens rg, alg_srtruimte sr
|
||
WHERE rg.alg_srtruimte_key = sr.alg_srtruimte_key
|
||
AND sr.alg_srtruimte_verwijder IS NULL
|
||
AND sr.prs_bevat_werkplek IS NOT NULL;
|
||
|
||
|
||
------- HUURCONTRACTEN ----------------------------------------------------------
|
||
|
||
-- Kenmerkdomein projectkostenplaats
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_projectkostenplaats
|
||
AS
|
||
SELECT prs_kostenplaats_key,
|
||
prs_kostenplaats_nr,
|
||
prs_kostenplaats_omschrijving,
|
||
prs_kostenplaats_nr || ' - ' || prs_kostenplaats_omschrijving
|
||
prs_kostenplaats_aanduiding
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_verwijder IS NULL
|
||
AND prs_kostenplaats_module = 'PRJ';
|
||
|
||
-- Kenmerkdomein huurders (van studentenkamers)
|
||
-- Toont alle studenten plus allen niet-studenten aangemerkt als 'is huurder'
|
||
-- Voormalige studenten worden met een verwijderdatum in het verleden opgehaald (i.e. niet kiesbaar, alleen toonbaar)
|
||
-- functie 'Student' = 1537
|
||
-- kenmerk 'Former tenant' = 1220
|
||
-- kenmerk 'Is huurder' = 1080
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_huurders_student
|
||
AS
|
||
SELECT pf.prs_perslid_key,
|
||
pf.prs_perslid_naam_full || ' [' || p.prs_perslid_nr || ']'
|
||
huurder_naam,
|
||
DECODE (
|
||
p.prs_perslid_key,
|
||
(SELECT prs_link_key
|
||
FROM prs_kenmerklink pk
|
||
WHERE p.prs_perslid_key = pk.prs_link_key
|
||
AND prs_kenmerklink_waarde = 1
|
||
AND prs_kenmerk_key = 1220),
|
||
SYSDATE - 1,
|
||
p.prs_perslid_verwijder)
|
||
prs_perslid_verwijder
|
||
FROM prs_v_perslid_fullnames_all pf, prs_perslid p
|
||
WHERE pf.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_srtperslid_key = 1537
|
||
UNION ALL
|
||
SELECT pf.prs_perslid_key,
|
||
pf.prs_perslid_naam_full || ' [' || p.prs_perslid_nr || ']'
|
||
huurder_naam,
|
||
p.prs_perslid_verwijder
|
||
FROM prs_v_perslid_fullnames_all pf, prs_perslid p, prs_kenmerklink km
|
||
WHERE pf.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_srtperslid_key NOT IN (1537)
|
||
AND km.prs_link_key = p.prs_perslid_key
|
||
AND km.prs_kenmerk_key = 1080
|
||
AND km.prs_kenmerklink_waarde = '1'
|
||
AND km.prs_kenmerklink_verwijder IS NULL;
|
||
|
||
-- Kenmerkdomein studentenkamers
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_studentenkamers
|
||
AS
|
||
SELECT r.alg_ruimte_key,
|
||
g.alg_gebouw_code
|
||
|| '-'
|
||
|| v.alg_verdieping_volgnr
|
||
|| '-'
|
||
|| r.alg_ruimte_nr
|
||
|| ' ('
|
||
|| r.alg_ruimte_omschrijving
|
||
|| ', '
|
||
|| sr.alg_srtruimte_omschrijving
|
||
|| ')'
|
||
ruimte_oms
|
||
FROM alg_v_aanwezigruimte r,
|
||
alg_verdieping v,
|
||
alg_gebouw g,
|
||
alg_srtruimte sr
|
||
WHERE v.alg_gebouw_key = g.alg_gebouw_key
|
||
AND r.alg_verdieping_key = v.alg_verdieping_key
|
||
AND r.alg_srtruimte_key IN (56, 43, 58, 39, 121, 141,101)
|
||
AND sr.alg_srtruimte_key = r.alg_srtruimte_key;
|
||
|
||
-- Kenmerkdomein studentenpartner
|
||
-- functie 'Student partner' = 1644
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_studentenpartners
|
||
AS
|
||
SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames pf, prs_v_aanwezigperslid p
|
||
WHERE pf.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_srtperslid_key = 1644;
|
||
|
||
-- Kenmerkdomein kamercontrolemeldingen
|
||
-- (stdmelding Request roomcheck (workflow) = 941)
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_huur_kamercontroles
|
||
AS
|
||
SELECT mld_melding_key, TO_CHAR (mld_melding_key) oms
|
||
FROM mld_melding
|
||
WHERE mld_stdmelding_key = 941;
|
||
|
||
-- NYBU#30687: Kenmerkdomein "Arrival on campus"-meldingen
|
||
-- (stdmelding 'Arrival on Campus (workflow)' = 1021)
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_huur_arrival
|
||
AS
|
||
SELECT mld_melding_key, TO_CHAR (mld_melding_key) oms
|
||
FROM mld_melding
|
||
WHERE mld_stdmelding_key = 1021;
|
||
|
||
-- Kenmerkdomein huurders overige ruimtes en residenties
|
||
-- kenmerk 'Is huurder' = 1080
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_huurders
|
||
AS
|
||
SELECT pf.*, p.prs_perslid_verwijder
|
||
FROM prs_v_perslid_fullnames_all pf, prs_kenmerklink kl, prs_perslid p
|
||
WHERE kl.prs_link_key = pf.prs_perslid_key
|
||
AND kl.prs_kenmerk_key = 1080
|
||
AND kl.prs_kenmerklink_verwijder IS NULL
|
||
AND kl.prs_kenmerklink_waarde = '1'
|
||
AND p.prs_perslid_key = pf.prs_perslid_key;
|
||
|
||
-- Gebruikt door huurcontracten-view en bereken-export; lijstje van huurcontracten
|
||
-- waarmee bepaald kan worden of een huurder een roommate (i.e. iemand met een contract
|
||
-- op dezelfde kamer) heeft.
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_potential_roommates
|
||
AS
|
||
SELECT kamer.cnt_contract_key,
|
||
fac.safe_to_number (kamer.cnt_kenmerkcontract_waarde)
|
||
alg_ruimte_key,
|
||
pf.prs_perslid_key,
|
||
pf.prs_perslid_naam_full,
|
||
contr.cnt_contract_looptijd_van,
|
||
contr.cnt_contract_looptijd_tot
|
||
FROM cnt_kenmerkcontract kamer,
|
||
cnt_kenmerkcontract roommate,
|
||
cnt_contract contr,
|
||
prs_v_perslid_fullnames pf
|
||
WHERE kamer.cnt_kenmerk_key = 1
|
||
AND kamer.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND roommate.cnt_kenmerk_key = 81
|
||
AND roommate.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND pf.prs_perslid_key =
|
||
fac.safe_to_number (roommate.cnt_kenmerkcontract_waarde)
|
||
AND kamer.cnt_contract_key = roommate.cnt_contract_key
|
||
AND contr.cnt_contract_key = kamer.cnt_contract_key
|
||
AND contr.cnt_contract_verwijder IS NULL
|
||
AND contr.cnt_contract_status = 0
|
||
-- Poging om alleen recente contracten te vinden (voor allonges hoeven contracten niet per se actueel te zijn)
|
||
AND contr.cnt_contract_looptijd_tot >=
|
||
TRUNC (ADD_MONTHS (SYSDATE, -1), 'MM');
|
||
|
||
-- Basisview voor berekening, rapportage en facturatie huurcontracten studentenkamers.
|
||
-- contractsoort Student room 55
|
||
-- kenmerk Tenant 81
|
||
-- kenmerk Codanr 1000
|
||
-- kenmerk SANnr 1200
|
||
-- kenmerk Studentenkamer 1
|
||
-- kenmerk Borgbedrag 2
|
||
-- kenmerk Borg_betaald 43
|
||
-- kenmerk Schades 41
|
||
-- kenmerk Telefoonaansluiting 42
|
||
-- kenmerk Partner 21
|
||
-- kenmerk Budgetnr 63
|
||
-- kenmerk Rent to budget nr 64
|
||
-- kenmerk Service costs to nr 65
|
||
-- kenmerk Telephone to nr 66
|
||
-- kenmerk Partnercharge to nr 681
|
||
-- kenmerk Vooruit betalen 122
|
||
-- kenmerk Betaald tot 124
|
||
-- kenmerk Refund 123
|
||
-- kenmerk Schoonmaak verhuizing 941
|
||
-- srtkenmerk Maak allonge(s) 681
|
||
-- usrdata telefoonkosten 61
|
||
-- usrdata Tenant 441
|
||
-- usrdata Budget nr 442
|
||
-- usrdata Salary 443
|
||
-- NYBU#30133: SAN-nummer overruled nu het CODA-nummer (CON-nummer)
|
||
-- NYBU#30899: voor allonges alleen nog contracten met "Maak allonge(s)" beschouwen
|
||
-- NYBU#33330: huurcontract partner kan halverwege de maand eindigen; die looptijd ook meegeven
|
||
-- NYBU#33043: contracten in voorbereiding hoeven niet aan een ruimte gekoppeld te zijn
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_huurcontracten_student
|
||
AS
|
||
SELECT c.cnt_contract_key,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_versie,
|
||
DECODE (
|
||
c.cnt_contract_versie,
|
||
NULL,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_nummer_intern || '.' || c.cnt_contract_versie)
|
||
cnt_contract_nr_versie,
|
||
c.cnt_contract_looptijd_van,
|
||
c.cnt_contract_looptijd_tot, -- eind,
|
||
c.cnt_prs_bedrijf_key,
|
||
kp.prs_kostenplaats_nr kpn,
|
||
SUBSTR (kg.prs_kostenplaatsgrp_oms, 1, 7) kpngrp,
|
||
ks.prs_kostensoort_oms AS kostensoort,
|
||
r.alg_ruimte_key,
|
||
g.alg_gebouw_naam gebouw,
|
||
v.alg_verdieping_code verdieping,
|
||
r.alg_ruimte_nr kamer,
|
||
p.prs_perslid_key,
|
||
p.prs_perslid_naam achternaam,
|
||
pf.prs_perslid_naam_full naam,
|
||
COALESCE (sannr.prs_kenmerklink_waarde,
|
||
codanr.prs_kenmerklink_waarde)
|
||
codanr,
|
||
partner.prs_perslid_key partner_key,
|
||
partner.prs_perslid_naam_full partner_naam,
|
||
sr.alg_srtruimte_omschrijving,
|
||
COALESCE (sr.alg_srtruimte_prijs, 0) huur,
|
||
DECODE (rentto.cnt_kenmerkcontract_waarde,
|
||
'442', ak.prs_kostenplaats_nr,
|
||
'443', 'salaris',
|
||
NULL)
|
||
budget_huur,
|
||
COALESCE (sr.alg_srtruimte_prijs2, 0) servicekosten,
|
||
DECODE (servto.cnt_kenmerkcontract_waarde,
|
||
'442', ak.prs_kostenplaats_nr,
|
||
'443', 'salaris',
|
||
NULL)
|
||
budget_service,
|
||
COALESCE (sr.alg_srtruimte_prijs3, 0) partnercharge,
|
||
DECODE (partnerto.cnt_kenmerkcontract_waarde,
|
||
'442', ak.prs_kostenplaats_nr,
|
||
'443', 'salaris',
|
||
NULL)
|
||
budget_partnercharge,
|
||
DECODE (telaansl.cnt_kenmerkcontract_waarde,
|
||
'1', (SELECT fac_usrdata_prijs
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key = 61),
|
||
0)
|
||
telefooncharge,
|
||
DECODE (telto.cnt_kenmerkcontract_waarde,
|
||
'442', ak.prs_kostenplaats_nr,
|
||
'443', 'salaris',
|
||
NULL)
|
||
budget_telefoon,
|
||
DECODE (borgbet.cnt_kenmerkcontract_waarde,
|
||
'1', 0,
|
||
fac.safe_to_number (borgbedr.cnt_kenmerkcontract_waarde))
|
||
borg_tebetalen,
|
||
DECODE (borgbet.cnt_kenmerkcontract_waarde,
|
||
'1',
|
||
fac.safe_to_number (borgbedr.cnt_kenmerkcontract_waarde),
|
||
0)
|
||
borg_betaald,
|
||
fac.safe_to_number (schade.cnt_kenmerkcontract_waarde) schadebedrag,
|
||
DECODE (fac.safe_to_number (vooruit.cnt_kenmerkcontract_waarde),
|
||
NULL, 1,
|
||
fac.safe_to_number (vooruit.cnt_kenmerkcontract_waarde))
|
||
aantal_periodes,
|
||
bettot.cnt_kenmerkcontract_waarde betaald_tot,
|
||
fac.safe_to_number (refund.cnt_kenmerkcontract_waarde) refund,
|
||
fac.safe_to_number (schoonm.cnt_kenmerkcontract_waarde) schoonmaak,
|
||
fac.safe_to_number (allonge.cnt_kenmerkcontract_waarde)
|
||
maak_allonge
|
||
FROM cnt_contract c,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 81) huurder,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames pf,
|
||
prs_v_aanwezigkostenplaats ak,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1000
|
||
AND prs_kenmerklink_verwijder IS NULL) codanr,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1200
|
||
AND prs_kenmerklink_verwijder IS NULL) sannr,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 1
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) studkam,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 2
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) borgbedr,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 43
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) borgbet,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 42
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) telaansl,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 41
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) schade,
|
||
(SELECT kc.cnt_contract_key, pf.*
|
||
FROM cnt_kenmerkcontract kc, prs_v_perslid_fullnames pf
|
||
WHERE kc.cnt_kenmerk_key = 21
|
||
AND cnt_kenmerkcontract_verwijder IS NULL
|
||
AND fac.safe_to_number (kc.cnt_kenmerkcontract_waarde) =
|
||
pf.prs_perslid_key) partner,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 63
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) budgnr,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 64
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) rentto,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 65
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) servto,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 66
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) telto,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 681
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) partnerto,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 122
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) vooruit,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 124
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) bettot,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 123
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) refund,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 941
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) schoonm,
|
||
(SELECT kc.*
|
||
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
||
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||
AND k.cnt_srtkenmerk_key = 681
|
||
AND kc.cnt_kenmerkcontract_verwijder IS NULL) allonge,
|
||
alg_ruimte r,
|
||
alg_verdieping v,
|
||
alg_gebouw g,
|
||
alg_srtruimte sr,
|
||
prs_afdeling a,
|
||
prs_kostenplaats kp,
|
||
prs_kostenplaatsgrp kg,
|
||
ins_tab_discipline d,
|
||
prs_kostensoort ks
|
||
WHERE c.ins_discipline_key = 55
|
||
AND c.ins_discipline_key = d.ins_discipline_key
|
||
AND d.prs_kostensoort_key = ks.prs_kostensoort_key
|
||
AND c.cnt_contract_verwijder IS NULL
|
||
AND c.cnt_contract_status = 0
|
||
AND huurder.cnt_contract_key = c.cnt_contract_key
|
||
AND p.prs_perslid_key =
|
||
fac.safe_to_number (huurder.cnt_kenmerkcontract_waarde)
|
||
AND pf.prs_perslid_key = p.prs_perslid_key
|
||
AND codanr.prs_link_key(+) = p.prs_perslid_key
|
||
AND sannr.prs_link_key(+) = p.prs_perslid_key
|
||
AND studkam.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND r.alg_ruimte_key(+) =
|
||
fac.safe_to_number (studkam.cnt_kenmerkcontract_waarde)
|
||
AND v.alg_verdieping_key(+) = r.alg_verdieping_key
|
||
AND g.alg_gebouw_key(+) = v.alg_gebouw_key
|
||
AND sr.alg_srtruimte_key(+) = r.alg_srtruimte_key
|
||
AND borgbedr.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND borgbet.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND telaansl.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND schade.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND partner.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND budgnr.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND ak.prs_kostenplaats_key(+) =
|
||
fac.safe_to_number (budgnr.cnt_kenmerkcontract_waarde)
|
||
AND rentto.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND servto.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND telto.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND partnerto.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND vooruit.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND bettot.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND refund.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND schoonm.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND allonge.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND a.prs_afdeling_key = p.prs_afdeling_key
|
||
AND kp.prs_kostenplaats_key = c.prs_kostenplaats_key
|
||
AND kg.prs_kostenplaatsgrp_key(+) = kp.prs_kostenplaatsgrp_key
|
||
AND COALESCE (sannr.prs_kenmerklink_waarde,
|
||
codanr.prs_kenmerklink_waarde) IS NOT NULL;
|
||
|
||
----- Exports ------------------------------------
|
||
|
||
-- Bepaalt factuurregels op basis van huidige contractgegevens.
|
||
-- Deze gegevens kunnen op twee manieren gebruikt worden: reguliere export en mutatie.
|
||
-- Bij reguliere export worden de gegenereerde factuurregels voor een periode naar een exportbestand geschreven
|
||
-- Bij mutatie worden de resulterende regels tegen al bestaande regels voor dezelfde periode gehouden en
|
||
-- worden verschilregels gegenereerd. Die verschilregels zijn voor de volgende periode en worden in de
|
||
-- export voor die periode meegenomen.
|
||
-- Parameter p_mode:
|
||
-- 0: testexport (gebruik alleen buffer, kenmerken niet bijwerken)
|
||
-- 1: definitieve export (kopieer buffer naar archief, kenmerken bijwerken)
|
||
-- 2: allonges (gebruik alleen buffer, alleen contracten met "Maak allonge(s)" gezet,
|
||
-- kenmerken niet bijwerken)
|
||
-- NYBU#30133: SAN-nummer overruled CODA-nummer (CON-nummer)
|
||
-- NYBU#30899: kenmerk "Maak allonge(s)" meenemen
|
||
-- NYBU#33043: alleen campuscontracten overwegen die aan een ruimte gekoppeld te zijn
|
||
-- cnt_srtcontract Campus 55
|
||
-- cnt_srtcontract Staff Residence 221
|
||
-- cnt_srtcontract Office 561
|
||
-- prs_kenmerk CON-number 1000
|
||
-- cnt_kenmerk SAN number 1200
|
||
-- cnt_kenmerk Student room 1
|
||
-- cnt_kenmerk Budget nr 63
|
||
-- cnt_kenmerk Tenant (student) 81
|
||
-- cnt_kenmerk Bill in advance 122
|
||
-- cnt_kenmerk Contract paid until 124
|
||
-- cnt_srtkenmerk Huurder 101
|
||
-- cnt_srtkenmerk Verhuurbare ruimte 102
|
||
-- cnt_srtkenmerk P-number 341
|
||
-- cnt_srtkenmerk Maak allonge(s) 681
|
||
-- cnt_srtkenmerk Refund omschrijving (BTW hoog) 722
|
||
-- cnt_srtkenmerk Refund bedrag (incl BTW hoog) 723
|
||
-- cnt_srtkenmerk Refund omschrijving (BTW laag) 724
|
||
-- cnt_srtkenmerk Refund bedrag (incl BTW laag) 725
|
||
-- cnt_srtkenmerk Refund omschrijving (geen BTW) 726
|
||
-- cnt_srtkenmerk Refund bedrag (geen BTW) 727
|
||
-- fac_usrtab CODA_BTW 42
|
||
-- fac_usrtab CODA_OMS 43
|
||
|
||
CREATE OR REPLACE PROCEDURE nybu_bereken_factuurregels (
|
||
p_applname IN VARCHAR2,
|
||
p_run IN DATE,
|
||
p_periode IN VARCHAR2,
|
||
p_mode IN NUMBER)
|
||
AS
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER;
|
||
|
||
-- Student room
|
||
-- Alle verhuurcontracten waarbij de huidige periode (deels) binnen de looptijd valt
|
||
-- TRUNC op maand, omdat contracten halverwege de maand kunnen beginnen/eindigen
|
||
CURSOR sr
|
||
IS
|
||
SELECT c.*
|
||
FROM nybu_v_huurcontracten_student c
|
||
WHERE (c.betaald_tot IS NULL OR c.betaald_tot < p_periode)
|
||
AND TO_DATE (p_periode, 'YYYYMM') BETWEEN TRUNC (
|
||
c.cnt_contract_looptijd_van,
|
||
'MM')
|
||
AND TRUNC (
|
||
c.cnt_contract_looptijd_tot,
|
||
'MM')
|
||
AND alg_ruimte_key IS NOT NULL;
|
||
|
||
-- Residence/office
|
||
CURSOR ro
|
||
IS
|
||
SELECT c.cnt_contract_key,
|
||
c.cnt_contract_looptijd_van,
|
||
c.cnt_contract_looptijd_tot,
|
||
DECODE (c.ins_discipline_key,
|
||
221, 'Staff residence',
|
||
561, 'Office')
|
||
betreft,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_versie,
|
||
DECODE (
|
||
c.cnt_contract_versie,
|
||
NULL,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_nummer_intern || '.' || c.cnt_contract_versie)
|
||
cnt_contract_nr_versie,
|
||
c.cnt_contract_omschrijving,
|
||
kp.prs_kostenplaats_nr kpn,
|
||
TRIM (SUBSTR (kg.prs_kostenplaatsgrp_oms, 1, 7)) kpngrp,
|
||
ks.prs_kostensoort_oms kostensoort,
|
||
p.prs_perslid_key,
|
||
p.prs_perslid_naam,
|
||
pf.prs_perslid_naam_full,
|
||
COALESCE (sannr.prs_kenmerklink_waarde,
|
||
codanr.prs_kenmerklink_waarde)
|
||
codanr,
|
||
k.prs_kostenplaats_nr,
|
||
rg.alg_ruimte_key,
|
||
rg.alg_ruimte_aanduiding,
|
||
allonge.cnt_kenmerkcontract_waarde maak_allonge
|
||
FROM (SELECT *
|
||
FROM cnt_contract
|
||
WHERE ins_discipline_key IN (221, 561)) c,
|
||
(SELECT kc.*
|
||
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
||
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||
AND k.cnt_srtkenmerk_key = 101
|
||
AND kc.cnt_kenmerkcontract_verwijder IS NULL) huurder,
|
||
(SELECT kc.*
|
||
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
||
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||
AND cnt_srtkenmerk_key = 341) pnummer,
|
||
(SELECT kc.*
|
||
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
||
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||
AND k.cnt_srtkenmerk_key = 102
|
||
AND kc.cnt_kenmerkcontract_verwijder IS NULL) ruimte,
|
||
(SELECT kc.*
|
||
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
||
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||
AND k.cnt_srtkenmerk_key = 681
|
||
AND kc.cnt_kenmerkcontract_verwijder IS NULL) allonge,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames pf,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1000
|
||
AND prs_kenmerklink_verwijder IS NULL) codanr,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1200
|
||
AND prs_kenmerklink_verwijder IS NULL) sannr,
|
||
prs_kostenplaats k,
|
||
prs_kostenplaats kp,
|
||
prs_kostenplaatsgrp kg,
|
||
alg_v_ruimte_gegevens rg,
|
||
ins_tab_discipline d,
|
||
prs_kostensoort ks
|
||
WHERE c.ins_discipline_key = d.ins_discipline_key
|
||
AND d.prs_kostensoort_key = ks.prs_kostensoort_key
|
||
AND huurder.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND pnummer.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND ruimte.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND allonge.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND kp.prs_kostenplaats_key = c.prs_kostenplaats_key
|
||
AND kg.prs_kostenplaatsgrp_key(+) = kp.prs_kostenplaatsgrp_key
|
||
AND p.prs_perslid_key(+) =
|
||
fac.safe_to_number (huurder.cnt_kenmerkcontract_waarde)
|
||
AND pf.prs_perslid_key(+) = p.prs_perslid_key
|
||
AND codanr.prs_link_key(+) = p.prs_perslid_key
|
||
AND sannr.prs_link_key(+) = p.prs_perslid_key
|
||
AND k.prs_kostenplaats_key(+) =
|
||
fac.safe_to_number (pnummer.cnt_kenmerkcontract_waarde)
|
||
AND rg.alg_ruimte_key(+) =
|
||
fac.safe_to_number (ruimte.cnt_kenmerkcontract_waarde)
|
||
AND c.cnt_contract_verwijder IS NULL
|
||
AND TO_DATE (p_periode, 'YYYYMM') BETWEEN TRUNC (
|
||
c.cnt_contract_looptijd_van,
|
||
'MM')
|
||
AND TRUNC (
|
||
c.cnt_contract_looptijd_tot,
|
||
'MM');
|
||
|
||
-- Refunds
|
||
-- Voor zowel campus- als residence/office-contracten. Aparte cursor, omdat hiervoor
|
||
-- ook gesloten contracten moeten worden beschouwd.
|
||
CURSOR refunds
|
||
IS
|
||
WITH refunds
|
||
AS (SELECT c.cnt_contract_key,
|
||
kco.cnt_kenmerkcontract_waarde omschrijving,
|
||
fac.safe_to_number (kcb.cnt_kenmerkcontract_waarde)
|
||
bedrag,
|
||
'VH21' btw,
|
||
ko.cnt_kenmerk_volgnummer volgnr,
|
||
ko.cnt_srtkenmerk_key,
|
||
ko.cnt_kenmerk_key omschr_key,
|
||
kb.cnt_kenmerk_key bedrag_key
|
||
FROM cnt_contract c,
|
||
cnt_kenmerk ko,
|
||
cnt_kenmerk kb,
|
||
cnt_kenmerkcontract kco,
|
||
cnt_kenmerkcontract kcb
|
||
WHERE c.cnt_contract_verwijder IS NULL
|
||
AND kco.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND kco.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND kco.cnt_contract_key = c.cnt_contract_key
|
||
AND kcb.cnt_contract_key = c.cnt_contract_key
|
||
AND kco.cnt_kenmerk_key = ko.cnt_kenmerk_key
|
||
AND kcb.cnt_kenmerk_key = kb.cnt_kenmerk_key
|
||
AND ko.cnt_kenmerk_key IN
|
||
(SELECT cnt_kenmerk_key
|
||
FROM cnt_kenmerk
|
||
WHERE cnt_srtkenmerk_key = 722)
|
||
AND kb.cnt_kenmerk_key IN
|
||
(SELECT cnt_kenmerk_key
|
||
FROM cnt_kenmerk
|
||
WHERE cnt_srtkenmerk_key = 723)
|
||
UNION ALL
|
||
SELECT c.cnt_contract_key,
|
||
kco.cnt_kenmerkcontract_waarde omschrijving,
|
||
fac.safe_to_number (kcb.cnt_kenmerkcontract_waarde)
|
||
bedrag,
|
||
'VL' btw,
|
||
ko.cnt_kenmerk_volgnummer volgnr,
|
||
ko.cnt_srtkenmerk_key,
|
||
ko.cnt_kenmerk_key omschr_key,
|
||
kb.cnt_kenmerk_key bedrag_key
|
||
FROM cnt_contract c,
|
||
cnt_kenmerk ko,
|
||
cnt_kenmerk kb,
|
||
cnt_kenmerkcontract kco,
|
||
cnt_kenmerkcontract kcb
|
||
WHERE c.cnt_contract_verwijder IS NULL
|
||
AND kco.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND kco.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND kco.cnt_contract_key = c.cnt_contract_key
|
||
AND kcb.cnt_contract_key = c.cnt_contract_key
|
||
AND kco.cnt_kenmerk_key = ko.cnt_kenmerk_key
|
||
AND kcb.cnt_kenmerk_key = kb.cnt_kenmerk_key
|
||
AND ko.cnt_kenmerk_key IN
|
||
(SELECT cnt_kenmerk_key
|
||
FROM cnt_kenmerk
|
||
WHERE cnt_srtkenmerk_key = 724)
|
||
AND kb.cnt_kenmerk_key IN
|
||
(SELECT cnt_kenmerk_key
|
||
FROM cnt_kenmerk
|
||
WHERE cnt_srtkenmerk_key = 725)
|
||
UNION ALL
|
||
SELECT c.cnt_contract_key,
|
||
kco.cnt_kenmerkcontract_waarde omschrijving,
|
||
fac.safe_to_number (kcb.cnt_kenmerkcontract_waarde)
|
||
bedrag,
|
||
'VV' btw,
|
||
ko.cnt_kenmerk_volgnummer volgnr,
|
||
ko.cnt_srtkenmerk_key,
|
||
ko.cnt_kenmerk_key omschr_key,
|
||
kb.cnt_kenmerk_key bedrag_key
|
||
FROM cnt_contract c,
|
||
cnt_kenmerk ko,
|
||
cnt_kenmerk kb,
|
||
cnt_kenmerkcontract kco,
|
||
cnt_kenmerkcontract kcb
|
||
WHERE c.cnt_contract_verwijder IS NULL
|
||
AND kco.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND kco.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND kco.cnt_contract_key = c.cnt_contract_key
|
||
AND kcb.cnt_contract_key = c.cnt_contract_key
|
||
AND kco.cnt_kenmerk_key = ko.cnt_kenmerk_key
|
||
AND kcb.cnt_kenmerk_key = kb.cnt_kenmerk_key
|
||
AND ko.cnt_kenmerk_key IN
|
||
(SELECT cnt_kenmerk_key
|
||
FROM cnt_kenmerk
|
||
WHERE cnt_srtkenmerk_key = 726)
|
||
AND kb.cnt_kenmerk_key IN
|
||
(SELECT cnt_kenmerk_key
|
||
FROM cnt_kenmerk
|
||
WHERE cnt_srtkenmerk_key = 727)),
|
||
contracten
|
||
AS (SELECT c.cnt_contract_key,
|
||
c.ins_discipline_key,
|
||
DECODE (c.ins_discipline_key,
|
||
221, 'Staff residence',
|
||
561, 'Office')
|
||
betreft,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_versie,
|
||
DECODE (
|
||
c.cnt_contract_versie,
|
||
NULL,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_nummer_intern
|
||
|| '.'
|
||
|| c.cnt_contract_versie)
|
||
cnt_contract_nr_versie,
|
||
kp.prs_kostenplaats_nr kpn,
|
||
TRIM (SUBSTR (kg.prs_kostenplaatsgrp_oms, 1, 7))
|
||
kpngrp,
|
||
ks.prs_kostensoort_oms kostensoort,
|
||
p.prs_perslid_key,
|
||
p.prs_perslid_naam,
|
||
pf.prs_perslid_naam_full,
|
||
COALESCE (sannr.prs_kenmerklink_waarde,
|
||
codanr.prs_kenmerklink_waarde)
|
||
codanr,
|
||
k.prs_kostenplaats_nr budgetnr,
|
||
rg.alg_ruimte_key,
|
||
rg.alg_ruimte_aanduiding alg_ruimte_nr,
|
||
allonge.cnt_kenmerkcontract_waarde maak_allonge
|
||
FROM (SELECT *
|
||
FROM cnt_contract
|
||
WHERE ins_discipline_key IN (221, 561)) c,
|
||
(SELECT kc.*
|
||
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
||
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||
AND k.cnt_srtkenmerk_key = 101
|
||
AND kc.cnt_kenmerkcontract_verwijder IS NULL)
|
||
huurder,
|
||
(SELECT kc.*
|
||
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
||
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||
AND cnt_srtkenmerk_key = 341) pnummer,
|
||
(SELECT kc.*
|
||
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
||
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||
AND k.cnt_srtkenmerk_key = 102
|
||
AND kc.cnt_kenmerkcontract_verwijder IS NULL)
|
||
ruimte,
|
||
(SELECT kc.*
|
||
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
||
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||
AND k.cnt_srtkenmerk_key = 681
|
||
AND kc.cnt_kenmerkcontract_verwijder IS NULL)
|
||
allonge,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames pf,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1000
|
||
AND prs_kenmerklink_verwijder IS NULL)
|
||
codanr,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1200
|
||
AND prs_kenmerklink_verwijder IS NULL) sannr,
|
||
prs_kostenplaats k,
|
||
prs_kostenplaats kp,
|
||
prs_kostenplaatsgrp kg,
|
||
alg_v_ruimte_gegevens rg,
|
||
ins_tab_discipline d,
|
||
prs_kostensoort ks
|
||
WHERE c.ins_discipline_key = d.ins_discipline_key
|
||
AND d.prs_kostensoort_key = ks.prs_kostensoort_key
|
||
AND huurder.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND pnummer.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND ruimte.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND allonge.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND kp.prs_kostenplaats_key = c.prs_kostenplaats_key
|
||
AND kg.prs_kostenplaatsgrp_key(+) =
|
||
kp.prs_kostenplaatsgrp_key
|
||
AND p.prs_perslid_key(+) =
|
||
fac.safe_to_number (
|
||
huurder.cnt_kenmerkcontract_waarde)
|
||
AND pf.prs_perslid_key(+) = p.prs_perslid_key
|
||
AND codanr.prs_link_key(+) = p.prs_perslid_key
|
||
AND sannr.prs_link_key(+) = p.prs_perslid_key
|
||
AND k.prs_kostenplaats_key(+) =
|
||
fac.safe_to_number (
|
||
pnummer.cnt_kenmerkcontract_waarde)
|
||
AND rg.alg_ruimte_key(+) =
|
||
fac.safe_to_number (
|
||
ruimte.cnt_kenmerkcontract_waarde)
|
||
AND c.cnt_contract_verwijder IS NULL
|
||
UNION ALL
|
||
SELECT c.cnt_contract_key,
|
||
c.ins_discipline_key,
|
||
'Campus' betreft,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_versie,
|
||
DECODE (
|
||
c.cnt_contract_versie,
|
||
NULL,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_nummer_intern
|
||
|| '.'
|
||
|| c.cnt_contract_versie)
|
||
cnt_contract_nr_versie,
|
||
kp.prs_kostenplaats_nr kpn,
|
||
SUBSTR (kg.prs_kostenplaatsgrp_oms, 1, 7) kpngrp,
|
||
ks.prs_kostensoort_oms kostensoort,
|
||
p.prs_perslid_key,
|
||
p.prs_perslid_naam achternaam,
|
||
pf.prs_perslid_naam_full naam,
|
||
COALESCE (sannr.prs_kenmerklink_waarde,
|
||
codanr.prs_kenmerklink_waarde)
|
||
codanr,
|
||
ak.prs_kostenplaats_nr budgetnr,
|
||
r.alg_ruimte_key,
|
||
r.alg_ruimte_nr,
|
||
allonge.cnt_kenmerkcontract_waarde maak_allonge
|
||
FROM cnt_contract c,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 81) student,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames pf,
|
||
prs_v_aanwezigkostenplaats ak,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1000
|
||
AND prs_kenmerklink_verwijder IS NULL)
|
||
codanr,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1200
|
||
AND prs_kenmerklink_verwijder IS NULL) sannr,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 1
|
||
AND cnt_kenmerkcontract_verwijder IS NULL)
|
||
studkam,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 63
|
||
AND cnt_kenmerkcontract_verwijder IS NULL)
|
||
budgnr,
|
||
(SELECT kc.*
|
||
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
||
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||
AND k.cnt_srtkenmerk_key = 681
|
||
AND kc.cnt_kenmerkcontract_verwijder IS NULL)
|
||
allonge,
|
||
alg_ruimte r,
|
||
prs_afdeling a,
|
||
prs_kostenplaats kp,
|
||
prs_kostenplaatsgrp kg,
|
||
ins_tab_discipline d,
|
||
prs_kostensoort ks
|
||
WHERE c.ins_discipline_key = 55
|
||
AND c.ins_discipline_key = d.ins_discipline_key
|
||
AND d.prs_kostensoort_key = ks.prs_kostensoort_key
|
||
AND c.cnt_contract_verwijder IS NULL
|
||
AND student.cnt_contract_key = c.cnt_contract_key
|
||
AND p.prs_perslid_key =
|
||
fac.safe_to_number (
|
||
student.cnt_kenmerkcontract_waarde)
|
||
AND pf.prs_perslid_key = p.prs_perslid_key
|
||
AND codanr.prs_link_key(+) = p.prs_perslid_key
|
||
AND sannr.prs_link_key(+) = p.prs_perslid_key
|
||
AND allonge.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND studkam.cnt_contract_key = c.cnt_contract_key
|
||
AND r.alg_ruimte_key(+) =
|
||
fac.safe_to_number (
|
||
studkam.cnt_kenmerkcontract_waarde)
|
||
AND budgnr.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND ak.prs_kostenplaats_key(+) =
|
||
fac.safe_to_number (
|
||
budgnr.cnt_kenmerkcontract_waarde)
|
||
AND a.prs_afdeling_key = p.prs_afdeling_key
|
||
AND kp.prs_kostenplaats_key = c.prs_kostenplaats_key
|
||
AND kg.prs_kostenplaatsgrp_key(+) =
|
||
kp.prs_kostenplaatsgrp_key)
|
||
SELECT betreft,
|
||
DECODE (c.ins_discipline_key,
|
||
561, COALESCE (c.budgetnr, c.codanr),
|
||
CASE
|
||
WHEN r.volgnr BETWEEN 500 AND 599 THEN c.codanr
|
||
WHEN r.volgnr BETWEEN 600 AND 699 THEN c.budgetnr
|
||
WHEN r.volgnr BETWEEN 700 AND 799 THEN 'salaris'
|
||
END)
|
||
bill_to,
|
||
prs_perslid_naam,
|
||
prs_perslid_naam_full,
|
||
prs_perslid_key,
|
||
cnt_contract_nummer_intern,
|
||
cnt_contract_versie,
|
||
DECODE (
|
||
c.cnt_contract_versie,
|
||
NULL,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_nummer_intern || '.' || c.cnt_contract_versie)
|
||
cnt_contract_nr_versie,
|
||
r.cnt_contract_key,
|
||
alg_ruimte_nr,
|
||
alg_ruimte_key,
|
||
omschrijving,
|
||
kpngrp,
|
||
kpn,
|
||
kostensoort,
|
||
btw.fac_usrdata_omschr btw,
|
||
fac.safe_to_number (btw.fac_usrdata_code) perc,
|
||
-bedrag bedrag,
|
||
omschr_key,
|
||
bedrag_key,
|
||
maak_allonge
|
||
FROM refunds r,
|
||
contracten c,
|
||
fac_usrdata btw,
|
||
ins_tab_discipline d,
|
||
prs_kostensoort ks
|
||
WHERE r.cnt_contract_key = c.cnt_contract_key
|
||
AND c.ins_discipline_key = d.ins_discipline_key
|
||
AND d.prs_kostensoort_key = ks.prs_kostensoort_key
|
||
AND btw.fac_usrdata_omschr = r.btw
|
||
AND btw.fac_usrtab_key = 42;
|
||
|
||
-- NYBU#35517 Payments toevoegen conform refunds
|
||
-- Voor zowel campus- als residence/office-contracten. Aparte cursor, omdat hiervoor
|
||
-- ook gesloten contracten moeten worden beschouwd.
|
||
CURSOR payments
|
||
IS
|
||
WITH payments
|
||
AS (SELECT c.cnt_contract_key,
|
||
kco.cnt_kenmerkcontract_waarde omschrijving,
|
||
fac.safe_to_number (kcb.cnt_kenmerkcontract_waarde)
|
||
bedrag,
|
||
'VH21' btw,
|
||
ko.cnt_kenmerk_volgnummer volgnr,
|
||
ko.cnt_srtkenmerk_key,
|
||
ko.cnt_kenmerk_key omschr_key,
|
||
kb.cnt_kenmerk_key bedrag_key
|
||
FROM cnt_contract c,
|
||
cnt_kenmerk ko,
|
||
cnt_kenmerk kb,
|
||
cnt_kenmerkcontract kco,
|
||
cnt_kenmerkcontract kcb
|
||
WHERE c.cnt_contract_verwijder IS NULL
|
||
AND kco.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND kco.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND kco.cnt_contract_key = c.cnt_contract_key
|
||
AND kcb.cnt_contract_key = c.cnt_contract_key
|
||
AND kco.cnt_kenmerk_key = ko.cnt_kenmerk_key
|
||
AND kcb.cnt_kenmerk_key = kb.cnt_kenmerk_key
|
||
AND ko.cnt_kenmerk_key IN
|
||
(SELECT cnt_kenmerk_key
|
||
FROM cnt_kenmerk
|
||
WHERE cnt_srtkenmerk_key = 841) --- payment omschrijving BTW hoog
|
||
AND kb.cnt_kenmerk_key IN
|
||
(SELECT cnt_kenmerk_key
|
||
FROM cnt_kenmerk
|
||
WHERE cnt_srtkenmerk_key = 842) --- payment bedrag incl BTW hoog
|
||
UNION ALL
|
||
SELECT c.cnt_contract_key,
|
||
kco.cnt_kenmerkcontract_waarde omschrijving,
|
||
fac.safe_to_number (kcb.cnt_kenmerkcontract_waarde)
|
||
bedrag,
|
||
'VL' btw,
|
||
ko.cnt_kenmerk_volgnummer volgnr,
|
||
ko.cnt_srtkenmerk_key,
|
||
ko.cnt_kenmerk_key omschr_key,
|
||
kb.cnt_kenmerk_key bedrag_key
|
||
FROM cnt_contract c,
|
||
cnt_kenmerk ko,
|
||
cnt_kenmerk kb,
|
||
cnt_kenmerkcontract kco,
|
||
cnt_kenmerkcontract kcb
|
||
WHERE c.cnt_contract_verwijder IS NULL
|
||
AND kco.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND kco.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND kco.cnt_contract_key = c.cnt_contract_key
|
||
AND kcb.cnt_contract_key = c.cnt_contract_key
|
||
AND kco.cnt_kenmerk_key = ko.cnt_kenmerk_key
|
||
AND kcb.cnt_kenmerk_key = kb.cnt_kenmerk_key
|
||
AND ko.cnt_kenmerk_key IN
|
||
(SELECT cnt_kenmerk_key
|
||
FROM cnt_kenmerk
|
||
WHERE cnt_srtkenmerk_key = 843) --- payment omschrijving BTW laag
|
||
AND kb.cnt_kenmerk_key IN
|
||
(SELECT cnt_kenmerk_key
|
||
FROM cnt_kenmerk
|
||
WHERE cnt_srtkenmerk_key = 844) --- payment bedrag incl BTW laag
|
||
UNION ALL
|
||
SELECT c.cnt_contract_key,
|
||
kco.cnt_kenmerkcontract_waarde omschrijving,
|
||
fac.safe_to_number (kcb.cnt_kenmerkcontract_waarde)
|
||
bedrag,
|
||
'VV' btw,
|
||
ko.cnt_kenmerk_volgnummer volgnr,
|
||
ko.cnt_srtkenmerk_key,
|
||
ko.cnt_kenmerk_key omschr_key,
|
||
kb.cnt_kenmerk_key bedrag_key
|
||
FROM cnt_contract c,
|
||
cnt_kenmerk ko,
|
||
cnt_kenmerk kb,
|
||
cnt_kenmerkcontract kco,
|
||
cnt_kenmerkcontract kcb
|
||
WHERE c.cnt_contract_verwijder IS NULL
|
||
AND kco.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND kco.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND kco.cnt_contract_key = c.cnt_contract_key
|
||
AND kcb.cnt_contract_key = c.cnt_contract_key
|
||
AND kco.cnt_kenmerk_key = ko.cnt_kenmerk_key
|
||
AND kcb.cnt_kenmerk_key = kb.cnt_kenmerk_key
|
||
AND ko.cnt_kenmerk_key IN
|
||
(SELECT cnt_kenmerk_key
|
||
FROM cnt_kenmerk
|
||
WHERE cnt_srtkenmerk_key = 845) --- payment omschrijving geen BTW
|
||
AND kb.cnt_kenmerk_key IN
|
||
(SELECT cnt_kenmerk_key
|
||
FROM cnt_kenmerk
|
||
WHERE cnt_srtkenmerk_key = 846) --- payment bedrag geen BTW
|
||
),
|
||
contracten
|
||
AS (SELECT c.cnt_contract_key,
|
||
c.ins_discipline_key,
|
||
DECODE (c.ins_discipline_key,
|
||
221, 'Staff residence',
|
||
561, 'Office')
|
||
betreft,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_versie,
|
||
DECODE (
|
||
c.cnt_contract_versie,
|
||
NULL,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_nummer_intern
|
||
|| '.'
|
||
|| c.cnt_contract_versie)
|
||
cnt_contract_nr_versie,
|
||
kp.prs_kostenplaats_nr kpn,
|
||
TRIM (SUBSTR (kg.prs_kostenplaatsgrp_oms, 1, 7))
|
||
kpngrp,
|
||
ks.prs_kostensoort_oms kostensoort,
|
||
p.prs_perslid_key,
|
||
p.prs_perslid_naam,
|
||
pf.prs_perslid_naam_full,
|
||
COALESCE (sannr.prs_kenmerklink_waarde,
|
||
codanr.prs_kenmerklink_waarde)
|
||
codanr,
|
||
k.prs_kostenplaats_nr budgetnr,
|
||
rg.alg_ruimte_key,
|
||
rg.alg_ruimte_aanduiding alg_ruimte_nr,
|
||
allonge.cnt_kenmerkcontract_waarde maak_allonge
|
||
FROM (SELECT *
|
||
FROM cnt_contract
|
||
WHERE ins_discipline_key IN (221, 561)) c,
|
||
(SELECT kc.*
|
||
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
||
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||
AND k.cnt_srtkenmerk_key = 101
|
||
AND kc.cnt_kenmerkcontract_verwijder IS NULL)
|
||
huurder,
|
||
(SELECT kc.*
|
||
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
||
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||
AND cnt_srtkenmerk_key = 341) pnummer,
|
||
(SELECT kc.*
|
||
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
||
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||
AND k.cnt_srtkenmerk_key = 102
|
||
AND kc.cnt_kenmerkcontract_verwijder IS NULL)
|
||
ruimte,
|
||
(SELECT kc.*
|
||
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
||
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||
AND k.cnt_srtkenmerk_key = 681
|
||
AND kc.cnt_kenmerkcontract_verwijder IS NULL)
|
||
allonge,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames pf,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1000
|
||
AND prs_kenmerklink_verwijder IS NULL)
|
||
codanr,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1200
|
||
AND prs_kenmerklink_verwijder IS NULL) sannr,
|
||
prs_kostenplaats k,
|
||
prs_kostenplaats kp,
|
||
prs_kostenplaatsgrp kg,
|
||
alg_v_ruimte_gegevens rg,
|
||
ins_tab_discipline d,
|
||
prs_kostensoort ks
|
||
WHERE c.ins_discipline_key = d.ins_discipline_key
|
||
AND d.prs_kostensoort_key = ks.prs_kostensoort_key
|
||
AND huurder.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND pnummer.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND ruimte.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND allonge.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND kp.prs_kostenplaats_key = c.prs_kostenplaats_key
|
||
AND kg.prs_kostenplaatsgrp_key(+) =
|
||
kp.prs_kostenplaatsgrp_key
|
||
AND p.prs_perslid_key(+) =
|
||
fac.safe_to_number (
|
||
huurder.cnt_kenmerkcontract_waarde)
|
||
AND pf.prs_perslid_key(+) = p.prs_perslid_key
|
||
AND codanr.prs_link_key(+) = p.prs_perslid_key
|
||
AND sannr.prs_link_key(+) = p.prs_perslid_key
|
||
AND k.prs_kostenplaats_key(+) =
|
||
fac.safe_to_number (
|
||
pnummer.cnt_kenmerkcontract_waarde)
|
||
AND rg.alg_ruimte_key(+) =
|
||
fac.safe_to_number (
|
||
ruimte.cnt_kenmerkcontract_waarde)
|
||
AND c.cnt_contract_verwijder IS NULL
|
||
UNION ALL
|
||
SELECT c.cnt_contract_key,
|
||
c.ins_discipline_key,
|
||
'Campus' betreft,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_versie,
|
||
DECODE (
|
||
c.cnt_contract_versie,
|
||
NULL,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_nummer_intern
|
||
|| '.'
|
||
|| c.cnt_contract_versie)
|
||
cnt_contract_nr_versie,
|
||
kp.prs_kostenplaats_nr kpn,
|
||
SUBSTR (kg.prs_kostenplaatsgrp_oms, 1, 7) kpngrp,
|
||
ks.prs_kostensoort_oms kostensoort,
|
||
p.prs_perslid_key,
|
||
p.prs_perslid_naam achternaam,
|
||
pf.prs_perslid_naam_full naam,
|
||
COALESCE (sannr.prs_kenmerklink_waarde,
|
||
codanr.prs_kenmerklink_waarde)
|
||
codanr,
|
||
ak.prs_kostenplaats_nr budgetnr,
|
||
r.alg_ruimte_key,
|
||
r.alg_ruimte_nr,
|
||
allonge.cnt_kenmerkcontract_waarde maak_allonge
|
||
FROM cnt_contract c,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 81) student,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames pf,
|
||
prs_v_aanwezigkostenplaats ak,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1000
|
||
AND prs_kenmerklink_verwijder IS NULL)
|
||
codanr,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1200
|
||
AND prs_kenmerklink_verwijder IS NULL) sannr,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 1
|
||
AND cnt_kenmerkcontract_verwijder IS NULL)
|
||
studkam,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 63
|
||
AND cnt_kenmerkcontract_verwijder IS NULL)
|
||
budgnr,
|
||
(SELECT kc.*
|
||
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
||
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
||
AND k.cnt_srtkenmerk_key = 681
|
||
AND kc.cnt_kenmerkcontract_verwijder IS NULL)
|
||
allonge,
|
||
alg_ruimte r,
|
||
prs_afdeling a,
|
||
prs_kostenplaats kp,
|
||
prs_kostenplaatsgrp kg,
|
||
ins_tab_discipline d,
|
||
prs_kostensoort ks
|
||
WHERE c.ins_discipline_key = 55
|
||
AND c.ins_discipline_key = d.ins_discipline_key
|
||
AND d.prs_kostensoort_key = ks.prs_kostensoort_key
|
||
AND c.cnt_contract_verwijder IS NULL
|
||
AND student.cnt_contract_key = c.cnt_contract_key
|
||
AND p.prs_perslid_key =
|
||
fac.safe_to_number (
|
||
student.cnt_kenmerkcontract_waarde)
|
||
AND pf.prs_perslid_key = p.prs_perslid_key
|
||
AND codanr.prs_link_key(+) = p.prs_perslid_key
|
||
AND sannr.prs_link_key(+) = p.prs_perslid_key
|
||
AND allonge.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND studkam.cnt_contract_key = c.cnt_contract_key
|
||
AND r.alg_ruimte_key(+) =
|
||
fac.safe_to_number (
|
||
studkam.cnt_kenmerkcontract_waarde)
|
||
AND budgnr.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND ak.prs_kostenplaats_key(+) =
|
||
fac.safe_to_number (
|
||
budgnr.cnt_kenmerkcontract_waarde)
|
||
AND a.prs_afdeling_key = p.prs_afdeling_key
|
||
AND kp.prs_kostenplaats_key = c.prs_kostenplaats_key
|
||
AND kg.prs_kostenplaatsgrp_key(+) =
|
||
kp.prs_kostenplaatsgrp_key)
|
||
SELECT betreft,
|
||
DECODE (c.ins_discipline_key,
|
||
561, COALESCE (c.budgetnr, c.codanr),
|
||
c.codanr)
|
||
bill_to,
|
||
prs_perslid_naam,
|
||
prs_perslid_naam_full,
|
||
prs_perslid_key,
|
||
cnt_contract_nummer_intern,
|
||
cnt_contract_versie,
|
||
DECODE (
|
||
c.cnt_contract_versie,
|
||
NULL,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_nummer_intern || '.' || c.cnt_contract_versie)
|
||
cnt_contract_nr_versie,
|
||
p.cnt_contract_key,
|
||
alg_ruimte_nr,
|
||
alg_ruimte_key,
|
||
omschrijving,
|
||
kpngrp,
|
||
kpn,
|
||
kostensoort,
|
||
btw.fac_usrdata_omschr btw,
|
||
fac.safe_to_number (btw.fac_usrdata_code) perc,
|
||
bedrag bedrag,
|
||
omschr_key,
|
||
bedrag_key,
|
||
maak_allonge
|
||
FROM payments p,
|
||
contracten c,
|
||
fac_usrdata btw,
|
||
ins_tab_discipline d,
|
||
prs_kostensoort ks
|
||
WHERE p.cnt_contract_key = c.cnt_contract_key
|
||
AND c.ins_discipline_key = d.ins_discipline_key
|
||
AND d.prs_kostensoort_key = ks.prs_kostensoort_key
|
||
AND btw.fac_usrdata_omschr = p.btw
|
||
AND btw.fac_usrtab_key = 42;
|
||
|
||
v_periodeDate DATE;
|
||
v_periodeNaam VARCHAR2 (20);
|
||
v_aantalPeriodes NUMBER;
|
||
v_curPeriodeDate DATE;
|
||
v_curPeriode VARCHAR2 (10);
|
||
v_curPeriodeNaam VARCHAR2 (20);
|
||
v_curPeriodeDagen NUMBER (4);
|
||
v_oms fac_usrdata.fac_usrdata_omschr%TYPE;
|
||
v_btw_code fac_usrdata.fac_usrdata_omschr%TYPE;
|
||
v_btw_perc fac_usrdata.fac_usrdata_code%TYPE;
|
||
v_grtbk prs_kostensoort.prs_kostensoort_refcode%TYPE;
|
||
v_kpl prs_kostenplaats.prs_kostenplaats_nr%TYPE;
|
||
v_proj prs_kostenplaats.prs_kostenplaats_nr%TYPE;
|
||
v_aantal_dagen NUMBER (4);
|
||
v_dagen_roommate NUMBER (4);
|
||
v_dagen_partner NUMBER (4);
|
||
v_per_van DATE;
|
||
v_per_tot DATE;
|
||
v_betreft VARCHAR (20);
|
||
v_refnr VARCHAR (20);
|
||
v_kostensoort prs_kostensoort.prs_kostensoort_oms%TYPE;
|
||
BEGIN
|
||
-- Buffer en log leegmaken
|
||
DELETE nybu_huur_buffer;
|
||
|
||
DELETE imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
|
||
v_periodeDate := TO_DATE (p_periode, 'YYYYMM');
|
||
v_periodeNaam := nybu.getPeriodeNaam (p_periode, 'EN');
|
||
|
||
-- NYBU35788 kostensoorten moeten bepaald worden vanuit de contractsoorten
|
||
-- Kostensoort voor exportbestand bepalen
|
||
-- SELECT prs_kostensoort_oms
|
||
-- INTO v_kostensoort
|
||
-- FROM prs_kostensoort
|
||
-- WHERE prs_kostensoort_key = 1;
|
||
|
||
v_betreft := 'Campus';
|
||
|
||
FOR rec IN sr
|
||
LOOP
|
||
v_aanduiding := rec.cnt_contract_nr_versie || '/' || rec.naam;
|
||
|
||
-- Als we allongeregels aan het maken zijn (p_mode=2), sla dan alle contracten zonder "Maak allonge(s)" over
|
||
IF NOT (p_mode = 2 AND rec.maak_allonge IS NULL)
|
||
THEN
|
||
-- Huur, servicekosten en toeslagen kunnen een X aantal maanden vooruit betaald worden
|
||
IF (rec.aantal_periodes > 1)
|
||
THEN
|
||
fac.writelog (
|
||
p_applname,
|
||
'I',
|
||
v_aanduiding || ': meerdere maanden in <20><>n keer factureren',
|
||
'Aantal maanden: ' || rec.aantal_periodes);
|
||
END IF;
|
||
|
||
FOR cntr IN 1 .. rec.aantal_periodes
|
||
LOOP
|
||
-- Bepaal gegevens van door-te-belasten periode (bij meerdere periodes in <20><>n keer
|
||
-- doorbelasten is dit steeds een maand verder)
|
||
v_curPeriodeDate := ADD_MONTHS (v_periodeDate, cntr - 1);
|
||
v_curPeriode := TO_CHAR (v_curPeriodeDate, 'YYYYMM');
|
||
v_curPeriodeNaam := nybu.getPeriodeNaam (v_curPeriode, 'EN');
|
||
v_curPeriodeDagen :=
|
||
CAST (TO_CHAR (LAST_DAY (v_curPeriodeDate), 'DD') AS INT)
|
||
- CAST (TO_CHAR (v_curPeriodeDate, 'DD') AS INT)
|
||
+ 1;
|
||
|
||
-- Voor de eerste en laatste maand wordt voor de huurprijs etc mogelijk maar
|
||
-- een deel doorbelast, als het contract halverwege de maand begint/eindigt.
|
||
-- Daarvoor het aantal dagen uitrekenen (max is aantal dagen in huidige maand)
|
||
v_aantal_dagen := v_curPeriodeDagen;
|
||
|
||
-- Lopend contract? --> huur etc factureren
|
||
IF (TRUNC (v_curPeriodeDate, 'MM') BETWEEN TRUNC (
|
||
rec.cnt_contract_looptijd_van,
|
||
'MM')
|
||
AND TRUNC (
|
||
rec.cnt_contract_looptijd_tot,
|
||
'MM'))
|
||
THEN
|
||
-- Is de ingangsmaand van het contract volledig, of beginnen we halverwege?
|
||
-- (alleen checken bij ingangsmaand contract)
|
||
IF (TRUNC (rec.cnt_contract_looptijd_van, 'MM') =
|
||
v_curPeriodeDate)
|
||
THEN
|
||
v_aantal_dagen :=
|
||
nybu.getAantalDagenInPeriode (
|
||
rec.cnt_contract_looptijd_van,
|
||
rec.cnt_contract_looptijd_tot,
|
||
v_curPeriodeDate);
|
||
|
||
IF (v_aantal_dagen != v_curPeriodeDagen)
|
||
THEN
|
||
fac.writelog (
|
||
p_applname,
|
||
'I',
|
||
v_aanduiding
|
||
|| ': contract start halverwege '
|
||
|| v_curPeriodeNaam,
|
||
'Aantal dagen = ' || v_aantal_dagen);
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Is de eindmaand van het contract volledig, of eindigen we halverwege?
|
||
-- (alleen checken in slotmaand contract)
|
||
-- NB: ingangs- en slotmaand kunnen dezelfde zijn! (contract loopt dan minder dan een maand)
|
||
IF (TRUNC (rec.cnt_contract_looptijd_tot, 'MM') =
|
||
v_curPeriodeDate)
|
||
THEN
|
||
v_aantal_dagen :=
|
||
nybu.getAantalDagenInPeriode (
|
||
rec.cnt_contract_looptijd_van,
|
||
rec.cnt_contract_looptijd_tot,
|
||
v_curPeriodeDate);
|
||
|
||
IF (v_aantal_dagen != v_curPeriodeDagen)
|
||
THEN
|
||
fac.writelog (
|
||
p_applname,
|
||
'I',
|
||
v_aanduiding
|
||
|| ': contract eindigt halverwege '
|
||
|| v_curPeriodeNaam,
|
||
'Aantal dagen = ' || v_aantal_dagen);
|
||
END IF;
|
||
END IF;
|
||
|
||
-- NYBU#33330: als twee personen dezelfde kamer huren (huurder en roommate),
|
||
-- dan kan het contract van de roommate ook halverwege de maand starten/eindigen.
|
||
-- De rest van de maand moeten de gehele huur, service- en telefoonkosten (maar geen
|
||
-- partnercharge) worden doorberekend aan de huurder.
|
||
-- NB: een partner (flexkenmerk in contract huurder) zit er altijd even lang als de huurder zelf
|
||
-- NYBU#35948: voorheen gingen we ervan uit dat je maximaal <20><>n roommate kon hebben. In maanden
|
||
-- waarin een huurder halverwege een andere roommate krijgt is dat niet waar.
|
||
-- Daarom per dag van de periode bepalen of er een partner is
|
||
|
||
-- Overlap tussen looptijd contract en te factureren maand
|
||
v_per_van :=
|
||
GREATEST (v_curPeriodeDate, rec.cnt_contract_looptijd_van);
|
||
v_per_tot :=
|
||
LEAST (LAST_DAY (v_curPeriodeDate),
|
||
rec.cnt_contract_looptijd_tot);
|
||
|
||
-- Deze query lijst alle dagen uit in de periode v_per_van-v_per_tot (middels CONNECT BY)
|
||
-- en bepaalt voor iedere dag of er die dag een-of-meer roommate-contracten lopen op de ruimte.
|
||
-- Telt vervolgens het aantal dagen waarop er minstens <20><>n roommate-contract was (en dus een roommate)
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM ( SELECT DISTINCT dag, COUNT ( * ) aantal
|
||
FROM nybu_v_potential_roommates roommate,
|
||
( SELECT v_per_van + LEVEL - 1 dag
|
||
FROM DUAL
|
||
CONNECT BY LEVEL <= v_per_tot - v_per_van + 1)
|
||
d
|
||
WHERE rec.alg_ruimte_key IS NOT NULL
|
||
AND roommate.cnt_contract_key !=
|
||
rec.cnt_contract_key
|
||
AND roommate.alg_ruimte_key =
|
||
rec.alg_ruimte_key
|
||
AND roommate.cnt_contract_looptijd_van <
|
||
rec.cnt_contract_looptijd_tot
|
||
AND roommate.cnt_contract_looptijd_tot >
|
||
rec.cnt_contract_looptijd_van
|
||
AND d.dag BETWEEN roommate.cnt_contract_looptijd_van
|
||
AND roommate.cnt_contract_looptijd_tot
|
||
GROUP BY dag);
|
||
|
||
v_dagen_roommate := v_count;
|
||
|
||
IF (v_dagen_roommate != v_aantal_dagen
|
||
AND v_dagen_roommate > 0)
|
||
THEN
|
||
fac.writelog (
|
||
p_applname,
|
||
'I',
|
||
v_aanduiding
|
||
|| ': contract roommate begint/eindigt tijdens looptijd contract huurder',
|
||
'Aantal dagen overlap = ' || v_dagen_roommate);
|
||
END IF;
|
||
|
||
--- HUURPRIJS ---
|
||
v_errormsg := 'Archiefregel huurprijs aanmaken';
|
||
|
||
-- Plaats in archief
|
||
-- met juiste kostenplaatsen en -soorten, omschrijving
|
||
INSERT INTO nybu_huur_buffer (betreft,
|
||
datum_export,
|
||
periode,
|
||
isMutatie,
|
||
deb_nr,
|
||
achternaam,
|
||
naam_full,
|
||
prs_perslid_key,
|
||
cnt_contract_nr,
|
||
cnt_contract_key,
|
||
kamer,
|
||
alg_ruimte_key,
|
||
omschrijving,
|
||
kpn_code_afd,
|
||
kpn_code_proj,
|
||
prs_kostensoort_refcode,
|
||
btw_code,
|
||
btw_perc,
|
||
bedrag)
|
||
SELECT v_betreft,
|
||
p_run,
|
||
p_periode,
|
||
0,
|
||
COALESCE (rec.budget_huur, rec.codanr),
|
||
rec.achternaam,
|
||
rec.naam,
|
||
rec.prs_perslid_key,
|
||
rec.cnt_contract_nr_versie,
|
||
rec.cnt_contract_key,
|
||
rec.kamer,
|
||
rec.alg_ruimte_key,
|
||
oms.fac_usrdata_omschr || ' ' || v_curPeriodeNaam,
|
||
rec.kpngrp,
|
||
rec.kpn,
|
||
rec.kostensoort,
|
||
--v_kostensoort,
|
||
btw.fac_usrdata_omschr,
|
||
fac.safe_to_number (btw.fac_usrdata_code),
|
||
-- Te betalen huur = aantal dagen samen met roommate * gedeelde huurprijs
|
||
-- + aantal dagen alleen/met partner gehuurd * volle huurprijs
|
||
TRUNC (
|
||
v_dagen_roommate
|
||
/ v_curPeriodeDagen
|
||
* rec.huur
|
||
/ 2
|
||
+ (v_aantal_dagen - v_dagen_roommate)
|
||
/ v_curPeriodeDagen
|
||
* rec.huur,
|
||
2)
|
||
FROM fac_usrdata oms, fac_usrdata btw
|
||
WHERE oms.fac_usrtab_key = 43
|
||
AND btw.fac_usrdata_key = oms.fac_usrdata_parentkey
|
||
AND oms.fac_usrdata_code = 'Rent';
|
||
|
||
--- SERVICEKOSTEN ---
|
||
v_errormsg := 'Archiefregel servicekosten aanmaken';
|
||
|
||
-- Plaats in archief
|
||
-- met juiste kostenplaatsen en -soorten, omschrijving
|
||
INSERT INTO nybu_huur_buffer (betreft,
|
||
datum_export,
|
||
periode,
|
||
isMutatie,
|
||
deb_nr,
|
||
achternaam,
|
||
naam_full,
|
||
prs_perslid_key,
|
||
cnt_contract_nr,
|
||
cnt_contract_key,
|
||
kamer,
|
||
alg_ruimte_key,
|
||
omschrijving,
|
||
kpn_code_afd,
|
||
kpn_code_proj,
|
||
prs_kostensoort_refcode,
|
||
btw_code,
|
||
btw_perc,
|
||
bedrag)
|
||
SELECT v_betreft,
|
||
p_run,
|
||
p_periode,
|
||
0,
|
||
COALESCE (rec.budget_service, rec.codanr),
|
||
rec.achternaam,
|
||
rec.naam,
|
||
rec.prs_perslid_key,
|
||
rec.cnt_contract_nr_versie,
|
||
rec.cnt_contract_key,
|
||
rec.kamer,
|
||
rec.alg_ruimte_key,
|
||
oms.fac_usrdata_omschr || ' ' || v_curPeriodeNaam,
|
||
rec.kpngrp,
|
||
rec.kpn,
|
||
rec.kostensoort,
|
||
--v_kostensoort,
|
||
btw.fac_usrdata_omschr,
|
||
fac.safe_to_number (btw.fac_usrdata_code),
|
||
-- Te betalen kosten = aantal dagen samen met roommate * gedeelde servicekosten
|
||
-- + aantal dagen alleen/met partner gehuurd * volle servicekosten
|
||
TRUNC (
|
||
v_dagen_roommate
|
||
/ v_curPeriodeDagen
|
||
* rec.servicekosten
|
||
/ 2
|
||
+ (v_aantal_dagen - v_dagen_roommate)
|
||
/ v_curPeriodeDagen
|
||
* rec.servicekosten,
|
||
2)
|
||
FROM fac_usrdata oms, fac_usrdata btw
|
||
WHERE oms.fac_usrtab_key = 43
|
||
AND btw.fac_usrdata_key = oms.fac_usrdata_parentkey
|
||
AND oms.fac_usrdata_code = 'ServCost';
|
||
|
||
--- PARTNERCHARGE ---
|
||
IF (v_dagen_roommate > 0 OR rec.partner_naam IS NOT NULL)
|
||
THEN
|
||
v_errormsg := 'Archiefregel partnercharge aanmaken';
|
||
|
||
-- Plaats in archief
|
||
-- met juiste kostenplaatsen en -soorten, omschrijving
|
||
INSERT INTO nybu_huur_buffer (betreft,
|
||
datum_export,
|
||
periode,
|
||
isMutatie,
|
||
deb_nr,
|
||
achternaam,
|
||
naam_full,
|
||
prs_perslid_key,
|
||
cnt_contract_nr,
|
||
cnt_contract_key,
|
||
kamer,
|
||
alg_ruimte_key,
|
||
omschrijving,
|
||
kpn_code_afd,
|
||
kpn_code_proj,
|
||
prs_kostensoort_refcode,
|
||
btw_code,
|
||
btw_perc,
|
||
bedrag)
|
||
SELECT v_betreft,
|
||
p_run,
|
||
p_periode,
|
||
0,
|
||
COALESCE (rec.budget_partnercharge, rec.codanr),
|
||
rec.achternaam,
|
||
rec.naam,
|
||
rec.prs_perslid_key,
|
||
rec.cnt_contract_nr_versie,
|
||
rec.cnt_contract_key,
|
||
rec.kamer,
|
||
rec.alg_ruimte_key,
|
||
oms.fac_usrdata_omschr || ' ' || v_curPeriodeNaam,
|
||
rec.kpngrp,
|
||
rec.kpn,
|
||
rec.kostensoort,
|
||
-- v_kostensoort,
|
||
btw.fac_usrdata_omschr,
|
||
fac.safe_to_number (btw.fac_usrdata_code),
|
||
-- Te betalen partnercharge = aantal dagen samen met roommate * gedeelde partnercharge
|
||
-- + aantal dagen met partner gehuurd * volle partnercharge
|
||
TRUNC (
|
||
v_dagen_roommate
|
||
/ v_curPeriodeDagen
|
||
* rec.partnercharge
|
||
/ 2
|
||
+ DECODE (
|
||
rec.partner_naam,
|
||
NULL,
|
||
0,
|
||
(v_aantal_dagen - v_dagen_roommate)
|
||
/ v_curPeriodeDagen)
|
||
* rec.partnercharge,
|
||
2)
|
||
FROM fac_usrdata oms, fac_usrdata btw
|
||
WHERE oms.fac_usrtab_key = 43
|
||
AND btw.fac_usrdata_key =
|
||
oms.fac_usrdata_parentkey
|
||
AND oms.fac_usrdata_code = 'PartnerCh';
|
||
END IF;
|
||
|
||
--- TELEFOONAANSLUITING ---
|
||
IF (rec.telefooncharge IS NOT NULL AND rec.telefooncharge != 0)
|
||
THEN
|
||
v_errormsg := 'Archiefregel telefoonaansluiting aanmaken';
|
||
|
||
-- Plaats in archief
|
||
-- met juiste kostenplaatsen en -soorten, omschrijving
|
||
INSERT INTO nybu_huur_buffer (betreft,
|
||
datum_export,
|
||
periode,
|
||
isMutatie,
|
||
deb_nr,
|
||
achternaam,
|
||
naam_full,
|
||
prs_perslid_key,
|
||
cnt_contract_nr,
|
||
cnt_contract_key,
|
||
kamer,
|
||
alg_ruimte_key,
|
||
omschrijving,
|
||
kpn_code_afd,
|
||
kpn_code_proj,
|
||
prs_kostensoort_refcode,
|
||
btw_code,
|
||
btw_perc,
|
||
bedrag)
|
||
SELECT v_betreft,
|
||
p_run,
|
||
p_periode,
|
||
0,
|
||
COALESCE (rec.budget_telefoon, rec.codanr),
|
||
rec.achternaam,
|
||
rec.naam,
|
||
rec.prs_perslid_key,
|
||
rec.cnt_contract_nr_versie,
|
||
rec.cnt_contract_key,
|
||
rec.kamer,
|
||
rec.alg_ruimte_key,
|
||
oms.fac_usrdata_omschr || ' ' || v_curPeriodeNaam,
|
||
rec.kpngrp,
|
||
rec.kpn,
|
||
rec.kostensoort,
|
||
-- v_kostensoort,
|
||
btw.fac_usrdata_omschr,
|
||
fac.safe_to_number (btw.fac_usrdata_code),
|
||
-- Te betalen kosten = aantal dagen samen met roommate * gedeelde prijs
|
||
-- + aantal dagen alleen/met partner gehuurd * volle prijs
|
||
TRUNC (
|
||
v_dagen_roommate
|
||
/ v_curPeriodeDagen
|
||
* rec.telefooncharge
|
||
/ 2
|
||
+ (v_aantal_dagen - v_dagen_roommate)
|
||
/ v_curPeriodeDagen
|
||
* rec.telefooncharge,
|
||
2)
|
||
FROM fac_usrdata oms, fac_usrdata btw
|
||
WHERE oms.fac_usrtab_key = 43
|
||
AND btw.fac_usrdata_key =
|
||
oms.fac_usrdata_parentkey
|
||
AND oms.fac_usrdata_code = 'PhoneConn';
|
||
END IF;
|
||
|
||
--- SCHOONMAAKKOSTEN (eenmalig) ---
|
||
-- NYBU#32684
|
||
IF (rec.schoonmaak IS NOT NULL)
|
||
THEN
|
||
v_errormsg := 'Archiefregel schoonmaak verhuizing aanmaken';
|
||
|
||
-- Plaats in archief
|
||
-- met juiste kostenplaatsen en -soorten, omschrijving
|
||
INSERT INTO nybu_huur_buffer (betreft,
|
||
datum_export,
|
||
periode,
|
||
isMutatie,
|
||
deb_nr,
|
||
achternaam,
|
||
naam_full,
|
||
prs_perslid_key,
|
||
cnt_contract_nr,
|
||
cnt_contract_key,
|
||
kamer,
|
||
alg_ruimte_key,
|
||
omschrijving,
|
||
kpn_code_afd,
|
||
kpn_code_proj,
|
||
prs_kostensoort_refcode,
|
||
btw_code,
|
||
btw_perc,
|
||
bedrag)
|
||
VALUES (v_betreft,
|
||
p_run,
|
||
p_periode,
|
||
0,
|
||
rec.codanr,
|
||
rec.achternaam,
|
||
rec.naam,
|
||
rec.prs_perslid_key,
|
||
rec.cnt_contract_nr_versie,
|
||
rec.cnt_contract_key,
|
||
rec.kamer,
|
||
rec.alg_ruimte_key,
|
||
'Cleaning due to relocation '
|
||
|| v_curPeriodeNaam,
|
||
rec.kpngrp,
|
||
rec.kpn,
|
||
rec.kostensoort,
|
||
-- v_kostensoort,
|
||
'VH21',
|
||
21,
|
||
rec.schoonmaak);
|
||
|
||
-- Als definitieve export, dan kenmerk leegmaken en loggen.
|
||
IF (p_mode = 1)
|
||
THEN
|
||
-- "Schoonmaak verhuizing" leegmaken
|
||
UPDATE cnt_kenmerkcontract
|
||
SET cnt_kenmerkcontract_verwijder = SYSDATE
|
||
WHERE cnt_kenmerk_key = 941
|
||
AND cnt_contract_key = rec.cnt_contract_key
|
||
AND cnt_kenmerkcontract_verwijder IS NULL;
|
||
|
||
-- Tracking
|
||
fac.trackaction (
|
||
'CNTUPD',
|
||
rec.cnt_contract_key,
|
||
NULL,
|
||
NULL,
|
||
'Contract updated'
|
||
|| CHR (10)
|
||
|| '<EFBFBD>'
|
||
|| rec.schoonmaak
|
||
|| ' cleaning costs invoiced');
|
||
END IF;
|
||
END IF;
|
||
ELSE
|
||
fac.writelog (
|
||
p_applname,
|
||
'W',
|
||
v_aanduiding || ': contract loopt niet in gegeven periode!',
|
||
'Periode: ' || v_curPeriodeNaam);
|
||
END IF; -- Lopend?
|
||
END LOOP;
|
||
|
||
-- Als huur vooruit betaald, dan aangeven t/m welke periode
|
||
-- (kenmerken alleen bijwerken als we ook doorvoeren)
|
||
IF (p_mode = 1 AND rec.aantal_periodes > 1)
|
||
THEN
|
||
-- We hebben nu vooruit gefactureerd; "Bill in advance" leegmaken
|
||
UPDATE cnt_kenmerkcontract
|
||
SET cnt_kenmerkcontract_verwijder = SYSDATE
|
||
WHERE cnt_kenmerk_key = 122
|
||
AND cnt_contract_key = rec.cnt_contract_key
|
||
AND cnt_kenmerkcontract_verwijder IS NULL;
|
||
|
||
-- Voorlopig geen facturering; "Contract paid until" vullen
|
||
INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
|
||
cnt_kenmerk_key,
|
||
cnt_kenmerkcontract_waarde)
|
||
VALUES (rec.cnt_contract_key, 124, v_curPeriode);
|
||
|
||
-- Tracking
|
||
fac.trackaction (
|
||
'CNTUPD',
|
||
rec.cnt_contract_key,
|
||
NULL,
|
||
NULL,
|
||
'Contract updated'
|
||
|| CHR (10)
|
||
|| rec.aantal_periodes
|
||
|| ' months billed in advance, until '
|
||
|| v_curPeriode);
|
||
ELSE
|
||
-- (weer) normale facturering; "Contract paid until" leegmaken als gevuld
|
||
UPDATE cnt_kenmerkcontract
|
||
SET cnt_kenmerkcontract_verwijder = SYSDATE
|
||
WHERE cnt_kenmerk_key = 124
|
||
AND cnt_contract_key = rec.cnt_contract_key
|
||
AND cnt_kenmerkcontract_verwijder IS NULL;
|
||
END IF;
|
||
|
||
-- Er zijn voor dit contract allonges aangemaakt; zet het vinkje weer uit voor een schone lei
|
||
IF (p_mode = 1 AND rec.maak_allonge IS NOT NULL)
|
||
THEN
|
||
-- "Maak allonge(s)" leegmaken
|
||
UPDATE cnt_kenmerkcontract
|
||
SET cnt_kenmerkcontract_verwijder = SYSDATE
|
||
WHERE cnt_kenmerk_key IN
|
||
(SELECT cnt_kenmerk_key
|
||
FROM cnt_kenmerk
|
||
WHERE cnt_srtkenmerk_key = 681
|
||
AND cnt_kenmerk_verwijder IS NULL)
|
||
AND cnt_contract_key = rec.cnt_contract_key
|
||
AND cnt_kenmerkcontract_verwijder IS NULL;
|
||
|
||
-- Tracking
|
||
fac.trackaction (
|
||
'CNTUPD',
|
||
rec.cnt_contract_key,
|
||
NULL,
|
||
NULL,
|
||
'Contract updated'
|
||
|| CHR (10)
|
||
|| 'Maak allonge(s): 1 --> (clear)');
|
||
END IF;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
-- Aantal dagen in de huidige maand (voor berekening kosten als contract halverwege
|
||
-- de maand begint/afloopt
|
||
v_curPeriodeDagen :=
|
||
CAST (TO_CHAR (LAST_DAY (v_periodeDate), 'DD') AS INT)
|
||
- CAST (TO_CHAR (v_periodeDate, 'DD') AS INT)
|
||
+ 1;
|
||
|
||
-- Residences & offices
|
||
FOR rec IN ro
|
||
LOOP
|
||
v_aanduiding :=
|
||
rec.cnt_contract_nr_versie
|
||
|| '/'
|
||
|| rec.prs_perslid_naam
|
||
|| '/'
|
||
|| rec.alg_ruimte_aanduiding;
|
||
|
||
-- Als we allongeregels aan het maken zijn (p_mode=2), sla dan alle contracten zonder "Maak allonge(s)" over
|
||
IF NOT (p_mode = 2 AND rec.maak_allonge IS NULL)
|
||
THEN
|
||
v_betreft := rec.betreft;
|
||
v_refnr := COALESCE (rec.prs_kostenplaats_nr, rec.codanr);
|
||
|
||
v_errormsg := 'Archiefregels huur aanmaken';
|
||
|
||
-- Plaats in archief
|
||
-- met juiste kostenplaatsen en -soorten, omschrijving
|
||
-- Voor <20><>n contract kunnen in <20><>n keer meerdere regels worden toegevoegd
|
||
INSERT INTO nybu_huur_buffer (betreft,
|
||
datum_export,
|
||
periode,
|
||
isMutatie,
|
||
deb_nr,
|
||
achternaam,
|
||
naam_full,
|
||
prs_perslid_key,
|
||
cnt_contract_nr,
|
||
cnt_contract_key,
|
||
kamer,
|
||
alg_ruimte_key,
|
||
omschrijving,
|
||
kpn_code_afd,
|
||
kpn_code_proj,
|
||
prs_kostensoort_refcode,
|
||
btw_code,
|
||
btw_perc,
|
||
bedrag)
|
||
SELECT v_betreft,
|
||
p_run,
|
||
p_periode,
|
||
0,
|
||
DECODE (
|
||
rec.betreft,
|
||
'Office',
|
||
v_refnr,
|
||
CASE
|
||
WHEN k.cnt_kenmerk_volgnummer BETWEEN 100 AND 200
|
||
THEN
|
||
rec.codanr
|
||
WHEN k.cnt_kenmerk_volgnummer BETWEEN 200 AND 300
|
||
THEN
|
||
rec.prs_kostenplaats_nr
|
||
WHEN k.cnt_kenmerk_volgnummer > 300
|
||
THEN
|
||
'salaris'
|
||
END)
|
||
refnr,
|
||
rec.prs_perslid_naam,
|
||
rec.prs_perslid_naam_full,
|
||
rec.prs_perslid_key,
|
||
rec.cnt_contract_nr_versie,
|
||
rec.cnt_contract_key,
|
||
rec.alg_ruimte_aanduiding,
|
||
rec.alg_ruimte_key,
|
||
sk.cnt_srtkenmerk_omschrijving || ' ' || v_periodeNaam,
|
||
rec.kpngrp,
|
||
rec.kpn,
|
||
rec.kostensoort,
|
||
-- v_kostensoort,
|
||
sk.cnt_srtkenmerk_dimensie,
|
||
fac.safe_to_number (ud.fac_usrdata_code),
|
||
nybu.getAantalDagenInPeriode (
|
||
rec.cnt_contract_looptijd_van,
|
||
rec.cnt_contract_looptijd_tot,
|
||
v_periodeDate)
|
||
/ v_curPeriodeDagen
|
||
* fac.safe_to_number (kc.cnt_kenmerkcontract_waarde)
|
||
--fac.safe_to_number(kc.cnt_kenmerkcontract_waarde) / (1+fac.safe_to_number(ud.fac_usrdata_code)/100)
|
||
FROM cnt_kenmerkcontract kc,
|
||
cnt_kenmerk k,
|
||
cnt_srtkenmerk sk,
|
||
fac_usrdata ud
|
||
WHERE kc.cnt_contract_key = rec.cnt_contract_key
|
||
AND kc.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND k.cnt_kenmerk_key = kc.cnt_kenmerk_key
|
||
AND k.cnt_kenmerk_verwijder IS NULL
|
||
AND k.cnt_kenmerk_volgnummer > 100
|
||
AND fac.safe_to_number (kc.cnt_kenmerkcontract_waarde) IS NOT NULL
|
||
AND fac.safe_to_number (kc.cnt_kenmerkcontract_waarde) > 0
|
||
AND sk.cnt_srtkenmerk_key = k.cnt_srtkenmerk_key
|
||
AND sk.cnt_srtkenmerk_verwijder IS NULL
|
||
AND sk.cnt_srtkenmerk_kenmerktype = 'N'
|
||
AND UPPER (ud.fac_usrdata_omschr) =
|
||
UPPER (sk.cnt_srtkenmerk_dimensie)
|
||
AND ud.fac_usrtab_key = 42;
|
||
|
||
-- Er zijn voor dit contract allonges aangemaakt; zet het vinkje weer uit voor een schone lei
|
||
IF (p_mode = 1 AND rec.maak_allonge IS NOT NULL)
|
||
THEN
|
||
-- "Maak allonge(s)" leegmaken
|
||
UPDATE cnt_kenmerkcontract
|
||
SET cnt_kenmerkcontract_verwijder = SYSDATE
|
||
WHERE cnt_kenmerk_key IN
|
||
(SELECT cnt_kenmerk_key
|
||
FROM cnt_kenmerk
|
||
WHERE cnt_srtkenmerk_key = 681
|
||
AND cnt_kenmerk_verwijder IS NULL)
|
||
AND cnt_contract_key = rec.cnt_contract_key
|
||
AND cnt_kenmerkcontract_verwijder IS NULL;
|
||
|
||
-- Tracking
|
||
fac.trackaction (
|
||
'CNTUPD',
|
||
rec.cnt_contract_key,
|
||
NULL,
|
||
NULL,
|
||
'Contract updated'
|
||
|| CHR (10)
|
||
|| 'Maak allonge(s): 1 --> (clear)');
|
||
END IF;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
|
||
FOR rec IN refunds
|
||
LOOP
|
||
v_aanduiding :=
|
||
rec.cnt_contract_nr_versie
|
||
|| '/'
|
||
|| rec.prs_perslid_naam
|
||
|| '/'
|
||
|| rec.alg_ruimte_nr;
|
||
|
||
-- NYBU#34759: Voorheen werden refunds niet meegenomen bij het maken van allongeregels,
|
||
-- maar dan kun je refunds niet ongedaan maken
|
||
-- NYBU#35710: Alleen allonges voor refunds aanmaken als "Maak allonges" gezet is
|
||
-- Als we allongeregels aan het maken zijn (p_mode=2), sla dan alle contracten zonder "Maak allonge(s)" over
|
||
IF NOT (p_mode = 2 AND rec.maak_allonge IS NULL)
|
||
THEN
|
||
v_betreft := rec.betreft;
|
||
v_errormsg := 'Refundregels huur aanmaken';
|
||
|
||
-- Plaats in huurbuffer
|
||
-- met juiste kostenplaatsen en -soorten, omschrijving
|
||
INSERT INTO nybu_huur_buffer (betreft,
|
||
datum_export,
|
||
periode,
|
||
isMutatie,
|
||
deb_nr,
|
||
achternaam,
|
||
naam_full,
|
||
prs_perslid_key,
|
||
cnt_contract_nr,
|
||
cnt_contract_key,
|
||
kamer,
|
||
alg_ruimte_key,
|
||
omschrijving,
|
||
kpn_code_afd,
|
||
kpn_code_proj,
|
||
prs_kostensoort_refcode,
|
||
btw_code,
|
||
btw_perc,
|
||
bedrag)
|
||
VALUES (v_betreft,
|
||
p_run,
|
||
p_periode,
|
||
0,
|
||
rec.bill_to,
|
||
rec.prs_perslid_naam,
|
||
rec.prs_perslid_naam_full,
|
||
rec.prs_perslid_key,
|
||
rec.cnt_contract_nr_versie,
|
||
rec.cnt_contract_key,
|
||
rec.alg_ruimte_nr,
|
||
rec.alg_ruimte_key,
|
||
rec.omschrijving,
|
||
rec.kpngrp,
|
||
rec.kpn,
|
||
rec.kostensoort,
|
||
-- v_kostensoort,
|
||
rec.btw,
|
||
rec.perc,
|
||
rec.bedrag);
|
||
|
||
-- Als we met de definitieve export bezig zijn (p_mode=1),
|
||
-- maak dan de refundkenmerken bij deze refundregel leeg, voor een schone lei
|
||
IF (p_mode = 1)
|
||
THEN
|
||
-- Refundvelden leegmaken
|
||
UPDATE cnt_kenmerkcontract
|
||
SET cnt_kenmerkcontract_verwijder = SYSDATE
|
||
WHERE cnt_kenmerk_key IN (rec.omschr_key, rec.bedrag_key)
|
||
AND cnt_contract_key = rec.cnt_contract_key
|
||
AND cnt_kenmerkcontract_verwijder IS NULL;
|
||
|
||
-- Tracking
|
||
fac.trackaction (
|
||
'CNTUPD',
|
||
rec.cnt_contract_key,
|
||
NULL,
|
||
NULL,
|
||
'Contract updated'
|
||
|| CHR (10)
|
||
|| 'Refunded <20>'
|
||
|| rec.bedrag
|
||
|| ' as '
|
||
|| rec.omschrijving
|
||
|| ' ('
|
||
|| rec.btw
|
||
|| ') ');
|
||
END IF;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
--- NYBU#35517 payments toevoegen conform refunds
|
||
FOR rec IN payments
|
||
LOOP
|
||
v_aanduiding :=
|
||
rec.cnt_contract_nr_versie
|
||
|| '/'
|
||
|| rec.prs_perslid_naam
|
||
|| '/'
|
||
|| rec.alg_ruimte_nr;
|
||
|
||
-- NYBU#34759: Voorheen werden refunds niet meegenomen bij het maken van allongeregels,
|
||
-- maar dan kun je refunds niet ongedaan maken
|
||
-- NYBU#35710: Alleen allonges voor refunds aanmaken als "Maak allonges" gezet is
|
||
-- Als we allongeregels aan het maken zijn (p_mode=2), sla dan alle contracten zonder "Maak allonge(s)" over
|
||
IF NOT (p_mode = 2 AND rec.maak_allonge IS NULL)
|
||
THEN
|
||
v_betreft := rec.betreft;
|
||
v_errormsg := 'Paymentregels huur aanmaken';
|
||
|
||
-- Plaats in huurbuffer
|
||
-- met juiste kostenplaatsen en -soorten, omschrijving
|
||
INSERT INTO nybu_huur_buffer (betreft,
|
||
datum_export,
|
||
periode,
|
||
isMutatie,
|
||
deb_nr,
|
||
achternaam,
|
||
naam_full,
|
||
prs_perslid_key,
|
||
cnt_contract_nr,
|
||
cnt_contract_key,
|
||
kamer,
|
||
alg_ruimte_key,
|
||
omschrijving,
|
||
kpn_code_afd,
|
||
kpn_code_proj,
|
||
prs_kostensoort_refcode,
|
||
btw_code,
|
||
btw_perc,
|
||
bedrag)
|
||
VALUES (v_betreft,
|
||
p_run,
|
||
p_periode,
|
||
0,
|
||
rec.bill_to,
|
||
rec.prs_perslid_naam,
|
||
rec.prs_perslid_naam_full,
|
||
rec.prs_perslid_key,
|
||
rec.cnt_contract_nr_versie,
|
||
rec.cnt_contract_key,
|
||
rec.alg_ruimte_nr,
|
||
rec.alg_ruimte_key,
|
||
rec.omschrijving,
|
||
rec.kpngrp,
|
||
rec.kpn,
|
||
rec.kostensoort,
|
||
-- v_kostensoort,
|
||
rec.btw,
|
||
rec.perc,
|
||
rec.bedrag);
|
||
|
||
-- Als we met de definitieve export bezig zijn (p_mode=1),
|
||
-- maak dan de paymentkenmerken bij deze paymentregel leeg, voor een schone lei
|
||
IF (p_mode = 1)
|
||
THEN
|
||
-- Refundvelden leegmaken
|
||
UPDATE cnt_kenmerkcontract
|
||
SET cnt_kenmerkcontract_verwijder = SYSDATE
|
||
WHERE cnt_kenmerk_key IN (rec.omschr_key, rec.bedrag_key)
|
||
AND cnt_contract_key = rec.cnt_contract_key
|
||
AND cnt_kenmerkcontract_verwijder IS NULL;
|
||
|
||
-- Tracking
|
||
fac.trackaction (
|
||
'CNTUPD',
|
||
rec.cnt_contract_key,
|
||
NULL,
|
||
NULL,
|
||
'Contract updated'
|
||
|| CHR (10)
|
||
|| 'Payment <20>'
|
||
|| rec.bedrag
|
||
|| ' as '
|
||
|| rec.omschrijving
|
||
|| ' ('
|
||
|| rec.btw
|
||
|| ') ');
|
||
END IF;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
|
||
-- Als definitief, dan buffer naar archief kopi<70>ren
|
||
IF (p_mode = 1)
|
||
THEN
|
||
INSERT INTO nybu_huur_archief
|
||
SELECT *
|
||
FROM nybu_huur_buffer
|
||
WHERE periode = p_periode;
|
||
|
||
COMMIT;
|
||
-- Als test, dan eventuele nog niet-ge<67>xporteerde allongeregels in de buffer zetten
|
||
ELSE
|
||
INSERT INTO nybu_huur_buffer
|
||
SELECT *
|
||
FROM nybu_huur_archief
|
||
WHERE periode = p_periode AND ismutatie = 1 AND naar_coda IS NULL;
|
||
END IF;
|
||
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.writelog (p_applname,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Onbekende fout!');
|
||
COMMIT;
|
||
END nybu_bereken_factuurregels;
|
||
/
|
||
|
||
-- Test-export; bepaalt factuurregels om te kunnen beoordelen of alles klopt
|
||
|
||
CREATE OR REPLACE PROCEDURE nybu_select_t_huur_coda (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
-- Individuele facturen voor debiteuren; ook voor sommatieregel met totaalbedrag
|
||
-- Bedragen zijn incl BTW
|
||
CURSOR c_deb
|
||
IS
|
||
SELECT deb_nr,
|
||
achternaam,
|
||
SUM (bedrag) bedrag,
|
||
betreft
|
||
FROM nybu_huur_buffer
|
||
WHERE naar_coda IS NULL
|
||
AND deb_nr NOT LIKE 'P%'
|
||
AND deb_nr != 'salaris'
|
||
GROUP BY deb_nr, achternaam, betreft
|
||
ORDER BY deb_nr;
|
||
|
||
-- Factuurregels voor deze factuur
|
||
CURSOR regels (in_deb_nr VARCHAR2)
|
||
IS
|
||
SELECT *
|
||
FROM nybu_huur_buffer
|
||
WHERE deb_nr = in_deb_nr AND naar_coda IS NULL
|
||
ORDER BY datum_export, omschrijving, bedrag;
|
||
|
||
-- Individuele facturen voor interne kostenplaatsen; ook voor sommatieregel met totaalbedrag
|
||
-- Bedragen zijn INCLUSIEF BTW (NYBU#31139)
|
||
CURSOR c_kpn
|
||
IS
|
||
SELECT deb_nr,
|
||
achternaam,
|
||
COALESCE (TRIM (SUBSTR (kg.prs_kostenplaatsgrp_oms, 1, 7)),
|
||
'ONB')
|
||
kpn_grp,
|
||
kpn_code_afd,
|
||
kpn_code_proj,
|
||
SUM (bedrag) bedrag,
|
||
betreft
|
||
FROM nybu_huur_buffer ha,
|
||
prs_v_aanwezigkostenplaats ak,
|
||
prs_kostenplaatsgrp kg
|
||
WHERE naar_coda IS NULL
|
||
AND deb_nr LIKE 'P%'
|
||
AND ak.prs_kostenplaats_nr = deb_nr
|
||
AND kg.prs_kostenplaatsgrp_key(+) = ak.prs_kostenplaatsgrp_key
|
||
GROUP BY deb_nr,
|
||
achternaam,
|
||
prs_kostenplaatsgrp_oms,
|
||
kpn_code_afd,
|
||
kpn_code_proj,
|
||
betreft
|
||
ORDER BY deb_nr, betreft;
|
||
|
||
CURSOR c_salaris
|
||
IS
|
||
SELECT COALESCE (prs_perslid_nr, prs_perslid_email) personeelsnr,
|
||
achternaam,
|
||
kpn_code_afd,
|
||
kpn_code_proj,
|
||
bedrag,
|
||
btw_perc,
|
||
omschrijving
|
||
FROM nybu_huur_buffer b, prs_perslid p
|
||
WHERE naar_coda IS NULL
|
||
AND deb_nr = 'salaris'
|
||
AND p.prs_perslid_key = b.prs_perslid_key
|
||
ORDER BY achternaam, omschrijving;
|
||
|
||
v_teller NUMBER;
|
||
v_rap_count NUMBER;
|
||
v_run DATE;
|
||
v_lastPeriode VARCHAR (6);
|
||
v_periode VARCHAR (6);
|
||
v_periodeNaam VARCHAR2 (20);
|
||
v_last_period VARCHAR (6);
|
||
BEGIN
|
||
v_teller := 0;
|
||
v_rap_count := 0;
|
||
|
||
v_aanduiding := 'Init';
|
||
v_errormsg := 'Periode bepalen';
|
||
|
||
-- Deze export gaat over de huur voor volgende maand (periode = laatste export + 1)
|
||
-- TODO: wat als nog niets ge<67>xporteerd? Dat zal een NO_DATA_FOUND opleveren...
|
||
v_run := TO_DATE (p_applrun, 'YYYY-MM-DD HH24:MI:SS');
|
||
|
||
SELECT MAX (periode)
|
||
INTO v_lastPeriode
|
||
FROM nybu_huur_archief
|
||
WHERE ismutatie = 0;
|
||
|
||
v_periode :=
|
||
TO_CHAR (ADD_MONTHS (TO_DATE (v_lastPeriode, 'YYYYMM'), 1), 'YYYYMM');
|
||
v_periodeNaam := nybu.getPeriodeNaam (v_periode, 'EN');
|
||
|
||
-- Is deze periode al ge<67>xporteerd?
|
||
-- TODO: Niks doen, of wissen en nog een keer draaien?
|
||
-- TODO: welke periode ge<67>xporteerd moet worden, werd voorheen bepaald adhv SYSDATE. Nu is dit
|
||
-- altijd de laatste periode in het archief + 1, waardoor onderstaande check overbodig is.
|
||
SELECT COALESCE (MAX (periode), 'NogNix')
|
||
INTO v_last_period
|
||
FROM nybu_huur_archief
|
||
WHERE ismutatie = 0;
|
||
|
||
IF (v_last_period = v_periode)
|
||
THEN
|
||
fac.writelog (
|
||
p_applname,
|
||
'E',
|
||
'Definitieve export is al gedraaid voor periode '
|
||
|| v_periode
|
||
|| '!',
|
||
'Test-export wordt afgebroken');
|
||
ELSE
|
||
DELETE imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
|
||
DELETE fac_rapport
|
||
WHERE fac_rapport_node = p_applname;
|
||
|
||
-- Genereer factuurregels voor komende maand
|
||
nybu_bereken_factuurregels (p_applname,
|
||
v_run,
|
||
v_periode,
|
||
0);
|
||
|
||
-- Genereer sommatie- en specificatieregels voor debiteuren
|
||
FOR rec IN c_deb
|
||
LOOP
|
||
v_aanduiding :=
|
||
v_teller || ': ' || rec.deb_nr || '/' || rec.achternaam;
|
||
v_errormsg := 'Sommatieregel aanmaken';
|
||
v_teller := v_teller + 1;
|
||
v_rap_count := v_rap_count + 1;
|
||
|
||
-- Sommatieregel
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel,
|
||
fac_rapport_soort)
|
||
VALUES (p_applname,
|
||
v_rap_count,
|
||
v_teller
|
||
|| ';'
|
||
|| '10;'
|
||
|| '13000;'
|
||
|| REPLACE (rec.deb_nr, 'CON', 'DC')
|
||
|| ';'
|
||
|| ';'
|
||
|| TRIM(TO_CHAR (ABS (rec.bedrag),
|
||
'99999999D99',
|
||
'NLS_NUMERIC_CHARACTERS=,.'))
|
||
|| ';'
|
||
|| CASE
|
||
WHEN rec.bedrag < 0 THEN 'C;'
|
||
WHEN rec.bedrag >= 0 THEN 'D;'
|
||
END
|
||
|| ';'
|
||
|| rec.betreft
|
||
|| ' '
|
||
|| v_periodeNaam
|
||
|| ' '
|
||
|| rec.achternaam
|
||
|| ';'
|
||
|| 'Summary;'
|
||
|| 'K91200;'
|
||
|| 'P991210',
|
||
0);
|
||
|
||
-- Specificatieregels
|
||
FOR reg IN regels (rec.deb_nr)
|
||
LOOP
|
||
v_errormsg := 'Specificatieregel aanmaken';
|
||
v_rap_count := v_rap_count + 1;
|
||
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel,
|
||
fac_rapport_soort)
|
||
VALUES (p_applname,
|
||
v_rap_count,
|
||
v_teller
|
||
|| ';'
|
||
|| '12;'
|
||
|| reg.prs_kostensoort_refcode
|
||
|| ';'
|
||
|| reg.kpn_code_afd
|
||
|| ';'
|
||
|| reg.kpn_code_proj
|
||
|| ';'
|
||
|| TRIM(TO_CHAR (ABS (reg.bedrag),
|
||
'99999999D99',
|
||
'NLS_NUMERIC_CHARACTERS=,.'))
|
||
|| ';'
|
||
|| CASE
|
||
WHEN reg.bedrag < 0 THEN 'D;'
|
||
WHEN reg.bedrag >= 0 THEN 'C;'
|
||
END
|
||
|| reg.btw_code
|
||
|| ';'
|
||
|| reg.omschrijving
|
||
|| ';'
|
||
|| 'Analysis;'
|
||
|| ';'
|
||
|| '',
|
||
0);
|
||
END LOOP;
|
||
END LOOP;
|
||
|
||
-- Scheidingsregel
|
||
v_errormsg := 'Scheidingsregel aanmaken';
|
||
v_rap_count := v_rap_count + 1;
|
||
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel,
|
||
fac_rapport_soort)
|
||
VALUES (p_applname,
|
||
v_rap_count,
|
||
'INTERNE KOSTENPLAATSEN;;;;;;;;;;;',
|
||
0);
|
||
|
||
v_teller := 0;
|
||
|
||
-- Genereer sommatie- en specificatieregels voor interne kostenplaatsen
|
||
FOR rec IN c_kpn
|
||
LOOP
|
||
v_aanduiding :=
|
||
v_teller || ': ' || rec.deb_nr || '/' || rec.achternaam;
|
||
v_errormsg := 'Sommatieregel KPN aanmaken';
|
||
v_teller := v_teller + 1;
|
||
v_rap_count := v_rap_count + 1;
|
||
|
||
-- Sommatieregel
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel,
|
||
fac_rapport_soort)
|
||
VALUES (p_applname,
|
||
v_rap_count,
|
||
v_teller
|
||
|| ';'
|
||
|| ';'
|
||
|| '56000;'
|
||
|| rec.kpn_grp
|
||
|| ';'
|
||
|| rec.deb_nr
|
||
|| ';'
|
||
|| TRIM(TO_CHAR (ABS (rec.bedrag),
|
||
'99999999D99',
|
||
'NLS_NUMERIC_CHARACTERS=,.'))
|
||
|| ';'
|
||
|| CASE
|
||
WHEN rec.bedrag < 0 THEN 'C;'
|
||
WHEN rec.bedrag >= 0 THEN 'D;'
|
||
END
|
||
|| ';'
|
||
|| rec.betreft
|
||
|| ' '
|
||
|| v_periodeNaam
|
||
|| ' '
|
||
|| rec.achternaam
|
||
|| ';'
|
||
|| ';'
|
||
|| ';'
|
||
|| '',
|
||
0);
|
||
|
||
-- Tegenboeking
|
||
v_errormsg := 'Tegenboeking aanmaken';
|
||
v_rap_count := v_rap_count + 1;
|
||
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel,
|
||
fac_rapport_soort)
|
||
VALUES (p_applname,
|
||
v_rap_count,
|
||
v_teller
|
||
|| ';'
|
||
|| ';'
|
||
|| '76000;'
|
||
|| rec.kpn_code_afd
|
||
|| ';'
|
||
|| rec.kpn_code_proj
|
||
|| ';'
|
||
|| TRIM(TO_CHAR (ABS (rec.bedrag),
|
||
'99999999D99',
|
||
'NLS_NUMERIC_CHARACTERS=,.'))
|
||
|| ';'
|
||
|| CASE
|
||
WHEN rec.bedrag < 0 THEN 'D;'
|
||
WHEN rec.bedrag >= 0 THEN 'C;'
|
||
END
|
||
|| ';'
|
||
|| rec.betreft
|
||
|| ' '
|
||
|| v_periodeNaam
|
||
|| ' '
|
||
|| rec.achternaam
|
||
|| ';'
|
||
|| ';'
|
||
|| ';'
|
||
|| '',
|
||
0);
|
||
END LOOP;
|
||
|
||
-- Scheidingsregel
|
||
v_errormsg := 'Scheidingsregel aanmaken';
|
||
v_rap_count := v_rap_count + 1;
|
||
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel,
|
||
fac_rapport_soort)
|
||
VALUES (p_applname,
|
||
v_rap_count,
|
||
'SALARISADMINISTRATIE;;;;;;;;;;;',
|
||
0);
|
||
|
||
v_teller := 0;
|
||
|
||
-- Genereer specificatieregels voor salarisadministratie
|
||
FOR rec IN c_salaris
|
||
LOOP
|
||
v_aanduiding :=
|
||
v_teller || ': ' || rec.personeelsnr || '/' || rec.achternaam;
|
||
v_errormsg := 'Sommatieregel salarisadministratie aanmaken';
|
||
v_teller := v_teller + 1;
|
||
v_rap_count := v_rap_count + 1;
|
||
|
||
-- Sommatieregel
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel,
|
||
fac_rapport_soort)
|
||
VALUES (p_applname,
|
||
v_rap_count,
|
||
v_teller
|
||
|| ';'
|
||
|| rec.personeelsnr
|
||
|| ';'
|
||
|| rec.achternaam
|
||
|| ';'
|
||
|| rec.kpn_code_afd
|
||
|| ';'
|
||
|| rec.kpn_code_proj
|
||
|| ';'
|
||
|| TRIM(TO_CHAR (ABS (rec.bedrag),
|
||
'99999999D99',
|
||
'NLS_NUMERIC_CHARACTERS=,.'))
|
||
|| ';'
|
||
|| rec.btw_perc
|
||
|| ';'
|
||
|| rec.omschrijving
|
||
|| ';'
|
||
|| ';'
|
||
|| ';'
|
||
|| ';'
|
||
|| '',
|
||
0);
|
||
END LOOP;
|
||
END IF;
|
||
|
||
fac.writelog (p_applname,
|
||
'S',
|
||
'Controleregels facturen gegenereerd',
|
||
'Periode ' || v_periode);
|
||
|
||
COMMIT;
|
||
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.writelog (p_applname,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Onbekende fout!');
|
||
COMMIT;
|
||
END nybu_select_t_huur_coda;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_export_t_huur_coda
|
||
AS
|
||
SELECT fac_rapport_regel result, fac_rapport_volgnr result_order
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'T_HUUR_CODA'
|
||
ORDER BY fac_rapport_volgnr;
|
||
|
||
-- Levert alle factuurregels die naar CODA moeten.
|
||
-- Per factuur:
|
||
-- - een sommatieregel met totaalbedrag
|
||
-- - een regel per item (huurprijs, servicekosten, ...)
|
||
|
||
CREATE OR REPLACE PROCEDURE nybu_select_huur_coda (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
-- Individuele facturen voor debiteuren; ook voor sommatieregel met totaalbedrag
|
||
-- Bedragen zijn incl BTW
|
||
CURSOR c_deb
|
||
IS
|
||
SELECT deb_nr,
|
||
achternaam,
|
||
SUM (bedrag) bedrag,
|
||
betreft
|
||
FROM nybu_huur_archief
|
||
WHERE naar_coda IS NULL
|
||
AND deb_nr NOT LIKE 'P%'
|
||
AND deb_nr != 'salaris'
|
||
GROUP BY deb_nr, achternaam, betreft
|
||
ORDER BY deb_nr;
|
||
|
||
-- Factuurregels voor deze factuur
|
||
CURSOR regels (in_deb_nr VARCHAR2)
|
||
IS
|
||
SELECT *
|
||
FROM nybu_huur_archief
|
||
WHERE deb_nr = in_deb_nr AND naar_coda IS NULL
|
||
ORDER BY datum_export, omschrijving, bedrag;
|
||
|
||
-- Individuele facturen voor interne kostenplaatsen; ook voor sommatieregel met totaalbedrag
|
||
-- Bedragen zijn INCLUSIEF BTW (NYBU#31139)
|
||
CURSOR c_kpn
|
||
IS
|
||
SELECT deb_nr,
|
||
achternaam,
|
||
COALESCE (TRIM (SUBSTR (kg.prs_kostenplaatsgrp_oms, 1, 7)),
|
||
'ONB')
|
||
kpn_grp,
|
||
kpn_code_afd,
|
||
kpn_code_proj,
|
||
SUM (bedrag) bedrag,
|
||
betreft
|
||
FROM nybu_huur_archief ha,
|
||
prs_v_aanwezigkostenplaats ak,
|
||
prs_kostenplaatsgrp kg
|
||
WHERE naar_coda IS NULL
|
||
AND deb_nr LIKE 'P%'
|
||
AND ak.prs_kostenplaats_nr = deb_nr
|
||
AND kg.prs_kostenplaatsgrp_key(+) = ak.prs_kostenplaatsgrp_key
|
||
GROUP BY deb_nr,
|
||
achternaam,
|
||
prs_kostenplaatsgrp_oms,
|
||
kpn_code_afd,
|
||
kpn_code_proj,
|
||
betreft
|
||
ORDER BY deb_nr, betreft;
|
||
|
||
CURSOR c_salaris
|
||
IS
|
||
SELECT COALESCE (prs_perslid_nr, prs_perslid_email) personeelsnr,
|
||
achternaam,
|
||
kpn_code_afd,
|
||
kpn_code_proj,
|
||
bedrag,
|
||
btw_perc,
|
||
omschrijving
|
||
FROM nybu_huur_archief b, prs_perslid p
|
||
WHERE naar_coda IS NULL
|
||
AND deb_nr = 'salaris'
|
||
AND p.prs_perslid_key = b.prs_perslid_key
|
||
ORDER BY achternaam, omschrijving;
|
||
|
||
v_teller NUMBER;
|
||
v_rap_count NUMBER;
|
||
v_run DATE;
|
||
v_lastPeriode VARCHAR (6);
|
||
v_periode VARCHAR (6);
|
||
v_periodeNaam VARCHAR2 (20);
|
||
v_last_period VARCHAR (6);
|
||
BEGIN
|
||
v_teller := 0;
|
||
v_rap_count := 0;
|
||
|
||
v_aanduiding := 'Init';
|
||
v_errormsg := 'Periode bepalen';
|
||
|
||
-- Deze export gaat over de huur voor volgende maand (periode = laatste export + 1)
|
||
v_run := TO_DATE (p_applrun, 'YYYY-MM-DD HH24:MI:SS');
|
||
|
||
SELECT MAX (periode)
|
||
INTO v_lastPeriode
|
||
FROM nybu_huur_archief
|
||
WHERE ismutatie = 0;
|
||
|
||
v_periode :=
|
||
TO_CHAR (ADD_MONTHS (TO_DATE (v_lastPeriode, 'YYYYMM'), 1), 'YYYYMM');
|
||
v_periodeNaam := nybu.getPeriodeNaam (v_periode, 'EN');
|
||
|
||
-- Is deze periode al ge<67>xporteerd?
|
||
-- TODO: Niks doen, of wissen en nog een keer draaien?
|
||
SELECT COALESCE (MAX (periode), 'NogNix')
|
||
INTO v_last_period
|
||
FROM nybu_huur_archief
|
||
WHERE ismutatie = 0;
|
||
|
||
IF (v_last_period = v_periode)
|
||
THEN
|
||
fac.writelog (
|
||
p_applname,
|
||
'E',
|
||
'Export is al gedraaid voor periode ' || v_periode || '!',
|
||
'Export wordt afgebroken');
|
||
ELSE
|
||
DELETE imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
|
||
DELETE fac_rapport
|
||
WHERE fac_rapport_node = p_applname;
|
||
|
||
-- Genereer factuurregels voor komende maand
|
||
nybu_bereken_factuurregels (p_applname,
|
||
v_run,
|
||
v_periode,
|
||
1);
|
||
|
||
-- Genereer sommatie- en specificatieregels voor debiteuren
|
||
FOR rec IN c_deb
|
||
LOOP
|
||
v_aanduiding :=
|
||
v_teller || ': ' || rec.deb_nr || '/' || rec.achternaam;
|
||
v_errormsg := 'Sommatieregel aanmaken';
|
||
v_teller := v_teller + 1;
|
||
v_rap_count := v_rap_count + 1;
|
||
|
||
-- Sommatieregel
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel,
|
||
fac_rapport_soort)
|
||
VALUES (p_applname,
|
||
v_rap_count,
|
||
v_teller
|
||
|| ';'
|
||
|| '10;'
|
||
|| '13000;'
|
||
|| REPLACE (rec.deb_nr, 'CON', 'DC')
|
||
|| ';'
|
||
|| ';'
|
||
|| TRIM(TO_CHAR (ABS (rec.bedrag),
|
||
'99999999D99',
|
||
'NLS_NUMERIC_CHARACTERS=,.'))
|
||
|| ';'
|
||
|| CASE
|
||
WHEN rec.bedrag < 0 THEN 'C;'
|
||
WHEN rec.bedrag >= 0 THEN 'D;'
|
||
END
|
||
|| ';'
|
||
|| rec.betreft
|
||
|| ' '
|
||
|| v_periodeNaam
|
||
|| ' '
|
||
|| rec.achternaam
|
||
|| ';'
|
||
|| 'Summary;'
|
||
|| 'K91200;'
|
||
|| 'P991210',
|
||
0);
|
||
|
||
-- Specificatieregels
|
||
FOR reg IN regels (rec.deb_nr)
|
||
LOOP
|
||
v_errormsg := 'Specificatieregel aanmaken';
|
||
v_rap_count := v_rap_count + 1;
|
||
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel,
|
||
fac_rapport_soort)
|
||
VALUES (p_applname,
|
||
v_rap_count,
|
||
v_teller
|
||
|| ';'
|
||
|| '12;'
|
||
|| reg.prs_kostensoort_refcode
|
||
|| ';'
|
||
|| reg.kpn_code_afd
|
||
|| ';'
|
||
|| reg.kpn_code_proj
|
||
|| ';'
|
||
|| TRIM(TO_CHAR (ABS (reg.bedrag),
|
||
'99999999D99',
|
||
'NLS_NUMERIC_CHARACTERS=,.'))
|
||
|| ';'
|
||
|| CASE
|
||
WHEN reg.bedrag < 0 THEN 'D;'
|
||
WHEN reg.bedrag >= 0 THEN 'C;'
|
||
END
|
||
|| reg.btw_code
|
||
|| ';'
|
||
|| reg.omschrijving
|
||
|| ';'
|
||
|| 'Analysis;'
|
||
|| ';'
|
||
|| '',
|
||
0);
|
||
END LOOP;
|
||
END LOOP;
|
||
|
||
-- Scheidingsregel
|
||
v_errormsg := 'Scheidingsregel aanmaken';
|
||
v_rap_count := v_rap_count + 1;
|
||
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel,
|
||
fac_rapport_soort)
|
||
VALUES (p_applname,
|
||
v_rap_count,
|
||
'INTERNE KOSTENPLAATSEN;;;;;;;;;;;',
|
||
0);
|
||
|
||
v_teller := 0;
|
||
|
||
-- Genereer sommatie- en specificatieregels voor interne kostenplaatsen
|
||
FOR rec IN c_kpn
|
||
LOOP
|
||
v_aanduiding :=
|
||
v_teller || ': ' || rec.deb_nr || '/' || rec.achternaam;
|
||
v_errormsg := 'Sommatieregel KPN aanmaken';
|
||
v_teller := v_teller + 1;
|
||
v_rap_count := v_rap_count + 1;
|
||
|
||
-- Sommatieregel
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel,
|
||
fac_rapport_soort)
|
||
VALUES (p_applname,
|
||
v_rap_count,
|
||
v_teller
|
||
|| ';'
|
||
|| ';'
|
||
|| '56000;'
|
||
|| rec.kpn_grp
|
||
|| ';'
|
||
|| rec.deb_nr
|
||
|| ';'
|
||
|| TRIM(TO_CHAR (ABS (rec.bedrag),
|
||
'99999999D99',
|
||
'NLS_NUMERIC_CHARACTERS=,.'))
|
||
|| ';'
|
||
|| CASE
|
||
WHEN rec.bedrag < 0 THEN 'C;'
|
||
WHEN rec.bedrag >= 0 THEN 'D;'
|
||
END
|
||
|| ';'
|
||
|| rec.betreft
|
||
|| ' '
|
||
|| v_periodeNaam
|
||
|| ' '
|
||
|| rec.achternaam
|
||
|| ';'
|
||
|| ';'
|
||
|| ';'
|
||
|| '',
|
||
0);
|
||
|
||
-- Tegenboeking
|
||
v_errormsg := 'Tegenboeking aanmaken';
|
||
v_rap_count := v_rap_count + 1;
|
||
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel,
|
||
fac_rapport_soort)
|
||
VALUES (p_applname,
|
||
v_rap_count,
|
||
v_teller
|
||
|| ';'
|
||
|| ';'
|
||
|| '76000;'
|
||
|| rec.kpn_code_afd
|
||
|| ';'
|
||
|| rec.kpn_code_proj
|
||
|| ';'
|
||
|| TRIM(TO_CHAR (ABS (rec.bedrag),
|
||
'99999999D99',
|
||
'NLS_NUMERIC_CHARACTERS=,.'))
|
||
|| ';'
|
||
|| CASE
|
||
WHEN rec.bedrag < 0 THEN 'D;'
|
||
WHEN rec.bedrag >= 0 THEN 'C;'
|
||
END
|
||
|| ';'
|
||
|| rec.betreft
|
||
|| ' '
|
||
|| v_periodeNaam
|
||
|| ' '
|
||
|| rec.achternaam
|
||
|| ';'
|
||
|| ';'
|
||
|| ';'
|
||
|| '',
|
||
0);
|
||
END LOOP;
|
||
|
||
-- Scheidingsregel
|
||
v_errormsg := 'Scheidingsregel aanmaken';
|
||
v_rap_count := v_rap_count + 1;
|
||
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel,
|
||
fac_rapport_soort)
|
||
VALUES (p_applname,
|
||
v_rap_count,
|
||
'SALARISADMINISTRATIE;;;;;;;;;;;',
|
||
0);
|
||
|
||
v_teller := 0;
|
||
|
||
-- Genereer specificatieregels voor salarisadministratie
|
||
FOR rec IN c_salaris
|
||
LOOP
|
||
v_aanduiding :=
|
||
v_teller || ': ' || rec.personeelsnr || '/' || rec.achternaam;
|
||
v_errormsg := 'Sommatieregel salarisadministratie aanmaken';
|
||
v_teller := v_teller + 1;
|
||
v_rap_count := v_rap_count + 1;
|
||
|
||
-- Sommatieregel
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel,
|
||
fac_rapport_soort)
|
||
VALUES (p_applname,
|
||
v_rap_count,
|
||
v_teller
|
||
|| ';'
|
||
|| rec.personeelsnr
|
||
|| ';'
|
||
|| rec.achternaam
|
||
|| ';'
|
||
|| rec.kpn_code_afd
|
||
|| ';'
|
||
|| rec.kpn_code_proj
|
||
|| ';'
|
||
|| TRIM(TO_CHAR (ABS (rec.bedrag),
|
||
'99999999D99',
|
||
'NLS_NUMERIC_CHARACTERS=,.'))
|
||
|| ';'
|
||
|| rec.btw_perc
|
||
|| ';'
|
||
|| rec.omschrijving
|
||
|| ';'
|
||
|| ';'
|
||
|| ';'
|
||
|| ';'
|
||
|| '',
|
||
0);
|
||
END LOOP;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
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.writelog (p_applname,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Onbekende fout!');
|
||
COMMIT;
|
||
END nybu_select_huur_coda;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_export_huur_coda
|
||
AS
|
||
SELECT fac_rapport_regel result, fac_rapport_volgnr result_order
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'HUUR_CODA'
|
||
ORDER BY fac_rapport_volgnr;
|
||
|
||
CREATE OR REPLACE PROCEDURE nybu_export_huur_coda (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2)
|
||
AS
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
v_run DATE;
|
||
v_count NUMBER;
|
||
BEGIN
|
||
v_run := TO_DATE (p_applrun, 'YYYY-MM-DD HH24:MI:SS');
|
||
|
||
v_aanduiding := 'Init';
|
||
v_errormsg := 'Init';
|
||
|
||
-- Alleen als er iets ge<67>xporteerd is!
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = p_applname;
|
||
|
||
IF (v_count > 0)
|
||
THEN
|
||
v_errormsg := 'Exportdatum zetten';
|
||
|
||
-- Exportdatum van alle regels van de laatste export zetten
|
||
UPDATE nybu_huur_archief
|
||
SET naar_coda = v_run
|
||
WHERE naar_coda IS NULL;
|
||
END IF;
|
||
|
||
fac.writelog (p_applname,
|
||
'S',
|
||
'Factuurregels ge<67>xporteerd',
|
||
v_run);
|
||
|
||
COMMIT;
|
||
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.writelog (p_applname,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Onbekende fout!');
|
||
COMMIT;
|
||
END nybu_export_huur_coda;
|
||
/
|
||
|
||
-- Bepaalt mutaties aan contracten in de huidige periode, die in de volgende periode
|
||
-- gefactureerd moeten worden. Hiervoor worden op basis van de huidige contractgegevens
|
||
-- nieuwe factuurregels gemaakt en <20><>n-op-<2D><>n vergeleken met de al bestaande regels.
|
||
-- Voor regels die afwijken worden verschilregels in het factuurarchief gezet, voor de komende
|
||
-- periode.
|
||
|
||
CREATE OR REPLACE PROCEDURE nybu_select_huur_mutaties (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
-- Mutaties nieuw versus oud (waarbij nieuw het uitgangspunt is ivm kameromschrijving):
|
||
-- - oude bedrag != nieuwe bedrag
|
||
-- - oud bestaat niet in nieuw
|
||
-- - nieuw bestaat niet in oud
|
||
-- NYBU#29529: regels ook vergelijken op naam van huurder, ivm deb_nr 'salaris', dat voor
|
||
-- verschillende personen natuurlijk hetzelfde is (idem voor P-nummer, trouwens)
|
||
CURSOR c (
|
||
in_periode VARCHAR2)
|
||
IS
|
||
WITH nw AS (SELECT *
|
||
FROM nybu_huur_buffer
|
||
WHERE periode = in_periode),
|
||
oud
|
||
AS (SELECT a.*
|
||
FROM nybu_huur_archief a,
|
||
cnt_kenmerkcontract kc,
|
||
cnt_kenmerk k
|
||
WHERE kc.cnt_contract_key = a.cnt_contract_key
|
||
AND kc.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND k.cnt_kenmerk_key = kc.cnt_kenmerk_key
|
||
AND k.cnt_srtkenmerk_key = 681
|
||
AND periode = in_periode
|
||
AND naar_coda IS NOT NULL
|
||
AND ismutatie = 0)
|
||
SELECT nw.*,
|
||
COALESCE (oud.bedrag, 0) bedrag_oud,
|
||
COALESCE (nw.bedrag, 0) bedrag_new
|
||
FROM nw
|
||
LEFT OUTER JOIN
|
||
oud
|
||
ON oud.cnt_contract_key = nw.cnt_contract_key --- Er moet ook naar de versie van het contract gekeken worden
|
||
AND oud.deb_nr = nw.deb_nr
|
||
AND oud.omschrijving = nw.omschrijving
|
||
AND oud.kamer = nw.kamer
|
||
AND COALESCE (oud.naam_full, 'apekool') =
|
||
COALESCE (nw.naam_full, 'apekool')
|
||
WHERE oud.bedrag IS NULL -- nieuw bestaat niet in oud
|
||
OR nw.bedrag != oud.bedrag -- nieuw bedrag != oud bedrag
|
||
UNION
|
||
SELECT oud.*,
|
||
COALESCE (oud.bedrag, 0) bedrag_oud,
|
||
COALESCE (nw.bedrag, 0) bedrag_new
|
||
FROM oud
|
||
LEFT OUTER JOIN
|
||
nw
|
||
ON oud.cnt_contract_key = nw.cnt_contract_key --- Er moet ook naar de versie van het contract gekeken worden
|
||
AND oud.deb_nr = nw.deb_nr
|
||
AND oud.omschrijving = nw.omschrijving
|
||
AND oud.kamer = nw.kamer
|
||
AND COALESCE (oud.naam_full, 'apekool') =
|
||
COALESCE (nw.naam_full, 'apekool')
|
||
WHERE nw.bedrag IS NULL -- oud bestaat niet in nieuw
|
||
;
|
||
|
||
v_run DATE;
|
||
v_periode VARCHAR (6);
|
||
v_periodeNaam VARCHAR2 (20);
|
||
v_next_period VARCHAR (6);
|
||
BEGIN
|
||
v_aanduiding := 'Init';
|
||
v_errormsg := 'Periode bepalen';
|
||
|
||
-- Deze export maakt correctieregels voor de huur van de laatst ge<67>xporteerde maand
|
||
-- TODO: afdwingen dat die periode niet te ver in het verleden ligt?
|
||
v_run := TO_DATE (p_applrun, 'YYYY-MM-DD HH24:MI:SS');
|
||
|
||
SELECT MAX (periode)
|
||
INTO v_periode
|
||
FROM nybu_huur_archief
|
||
WHERE isMutatie = 0;
|
||
|
||
v_periodeNaam := nybu.getPeriodeNaam (v_periode, 'EN');
|
||
|
||
-- Mutaties over periode n komen op factuur voor periode n+1
|
||
v_next_period :=
|
||
TO_CHAR (ADD_MONTHS (TO_DATE (v_periode, 'YYYYMM'), 1), 'YYYYMM');
|
||
|
||
DELETE imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
|
||
DELETE fac_rapport
|
||
WHERE fac_rapport_node = p_applname;
|
||
|
||
-- Eerder gemaakte mutatieregels voor deze periode verwijderen
|
||
DELETE nybu_huur_archief
|
||
WHERE isMutatie = 1 AND periode >= v_next_period AND naar_coda IS NULL;
|
||
|
||
-- Genereer factuurregels voor deze maand (mode 2 = allonges)
|
||
nybu_bereken_factuurregels (p_applname,
|
||
v_run,
|
||
v_periode,
|
||
2);
|
||
|
||
-- Genereer mutatieregels
|
||
FOR rec IN c (v_periode)
|
||
LOOP
|
||
v_aanduiding :=
|
||
v_periode
|
||
|| '/'
|
||
|| rec.deb_nr
|
||
|| '/'
|
||
|| rec.achternaam
|
||
|| '/'
|
||
|| rec.omschrijving;
|
||
v_errormsg := 'Mutatieregel aanmaken';
|
||
|
||
INSERT INTO nybu_huur_archief (betreft,
|
||
datum_export,
|
||
periode,
|
||
isMutatie,
|
||
deb_nr,
|
||
achternaam,
|
||
naam_full,
|
||
prs_perslid_key,
|
||
cnt_contract_nr,
|
||
cnt_contract_key,
|
||
kamer,
|
||
alg_ruimte_key,
|
||
omschrijving,
|
||
kpn_code_afd,
|
||
kpn_code_proj,
|
||
prs_kostensoort_refcode,
|
||
btw_code,
|
||
btw_perc,
|
||
bedrag)
|
||
VALUES (rec.betreft,
|
||
v_run,
|
||
v_next_period,
|
||
1,
|
||
rec.deb_nr,
|
||
rec.achternaam,
|
||
rec.naam_full,
|
||
rec.prs_perslid_key,
|
||
rec.cnt_contract_nr,
|
||
rec.cnt_contract_key,
|
||
rec.kamer,
|
||
rec.alg_ruimte_key,
|
||
'Correction ' || rec.omschrijving,
|
||
rec.kpn_code_afd,
|
||
rec.kpn_code_proj,
|
||
rec.prs_kostensoort_refcode,
|
||
rec.btw_code,
|
||
rec.btw_perc,
|
||
rec.bedrag_new - rec.bedrag_oud);
|
||
|
||
fac.writelog (
|
||
p_applname,
|
||
'I',
|
||
'Mutatieregel voor ' || v_aanduiding,
|
||
rec.omschrijving || ': ' || (rec.bedrag_new - rec.bedrag_oud));
|
||
END LOOP;
|
||
|
||
-- Verwijder 'niet-mutatie regels' (die zijn in de buffer aangemaakt door nybu_bereken_factuurregels() )
|
||
DELETE nybu_huur_buffer
|
||
WHERE isMutatie = 0 AND periode = v_periode AND naar_coda IS NULL;
|
||
|
||
-- Zet allongeregels in huurbuffer
|
||
INSERT INTO nybu_huur_buffer
|
||
SELECT *
|
||
FROM nybu_huur_archief
|
||
WHERE periode = v_next_period AND ismutatie = 1 AND naar_coda IS NULL;
|
||
|
||
fac.writelog (p_applname,
|
||
'S',
|
||
'Mutatieregels gegenereerd',
|
||
'Periode ' || v_periode);
|
||
|
||
COMMIT;
|
||
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.writelog (p_applname,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Onbekende fout!');
|
||
COMMIT;
|
||
END nybu_select_huur_mutaties;
|
||
/
|
||
|
||
|
||
----- Rapportages --------------------------------
|
||
|
||
-- Toont de inhoud van de factuurbuffer (voor controle van gegenereerde factuurregels
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_factuur_buffer
|
||
AS
|
||
SELECT h.periode fclt_f_periode,
|
||
h.betreft fclt_f_betreft,
|
||
h.deb_nr fclt_f_debiteurnr,
|
||
DECODE (
|
||
h.prs_perslid_key,
|
||
NULL,
|
||
NULL,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("'
|
||
|| 'appl/prs/prs_perslid.asp?key='
|
||
|| h.prs_perslid_key
|
||
|| '")''>'
|
||
|| HTF.escape_sc (h.naam_full)
|
||
|| '</a>')
|
||
html_naam,
|
||
h.naam_full fclt_x_naam,
|
||
a.prs_afdeling_naam6 afdeling,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("'
|
||
|| 'appl/cnt/cnt_contract.asp?urole=bo&'
|
||
|| 'cnt_key='
|
||
|| h.cnt_contract_key
|
||
|| '")''>'
|
||
|| HTF.escape_sc (
|
||
h.cnt_contract_nr || ' - ' || c.cnt_contract_omschrijving)
|
||
|| '</a>'
|
||
html_contract,
|
||
h.cnt_contract_nr fclt_x_contract,
|
||
g.alg_gebouw_naam fclt_f_gebouw,
|
||
v.alg_verdieping_code fclt_f_verdieping,
|
||
DECODE (
|
||
h.cnt_contract_key,
|
||
NULL,
|
||
NULL,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("'
|
||
|| 'appl/ALG/alg_ruimte.asp?key='
|
||
|| h.alg_ruimte_key
|
||
|| '")''>'
|
||
|| HTF.escape_sc (r.alg_ruimte_nr)
|
||
|| '</a>')
|
||
html_kamer,
|
||
r.alg_ruimte_nr fclt_x_kamer,
|
||
sr.alg_srtruimte_omschrijving kamertype,
|
||
h.omschrijving fclt_f_omschrijving, -- TODO; alleen kernwoord ("rent", "service costs") eruit pikken
|
||
h.bedrag,
|
||
DECODE (h.ismutatie, 1, 1, NULL) ismutatie
|
||
FROM nybu_huur_buffer h,
|
||
cnt_contract c,
|
||
alg_ruimte r,
|
||
alg_srtruimte sr,
|
||
alg_verdieping v,
|
||
alg_gebouw g,
|
||
prs_perslid p,
|
||
prs_v_aanwezigafdeling a
|
||
WHERE c.cnt_contract_key = h.cnt_contract_key
|
||
AND r.alg_ruimte_key(+) = h.alg_ruimte_key
|
||
AND sr.alg_srtruimte_key(+) = r.alg_srtruimte_key
|
||
AND v.alg_verdieping_key(+) = r.alg_verdieping_key
|
||
AND g.alg_gebouw_key(+) = v.alg_gebouw_key
|
||
AND p.prs_perslid_key(+) = h.prs_perslid_key
|
||
AND a.prs_afdeling_key(+) = p.prs_afdeling_key;
|
||
|
||
-- Toont de inhoud van het factuurarchief (huurarchief)
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_factuur_archief
|
||
AS
|
||
SELECT h.periode fclt_f_periode,
|
||
h.betreft fclt_f_betreft,
|
||
h.deb_nr fclt_f_debiteurnr,
|
||
DECODE (
|
||
h.prs_perslid_key,
|
||
NULL,
|
||
NULL,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("'
|
||
|| 'appl/prs/prs_perslid.asp?key='
|
||
|| h.prs_perslid_key
|
||
|| '")''>'
|
||
|| HTF.escape_sc (h.naam_full)
|
||
|| '</a>')
|
||
html_naam,
|
||
h.naam_full fclt_x_naam,
|
||
a.prs_afdeling_naam6 afdeling,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("'
|
||
|| 'appl/cnt/cnt_contract.asp?urole=bo&'
|
||
|| 'cnt_key='
|
||
|| h.cnt_contract_key
|
||
|| '")''>'
|
||
|| HTF.escape_sc (
|
||
h.cnt_contract_nr || ' - ' || c.cnt_contract_omschrijving)
|
||
|| '</a>'
|
||
html_contract,
|
||
h.cnt_contract_nr fclt_x_contract,
|
||
g.alg_gebouw_naam fclt_f_gebouw,
|
||
v.alg_verdieping_code fclt_f_verdieping,
|
||
DECODE (
|
||
h.cnt_contract_key,
|
||
NULL,
|
||
NULL,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("'
|
||
|| 'appl/ALG/alg_ruimte.asp?key='
|
||
|| h.alg_ruimte_key
|
||
|| '")''>'
|
||
|| HTF.escape_sc (r.alg_ruimte_nr)
|
||
|| '</a>')
|
||
html_kamer,
|
||
r.alg_ruimte_nr fclt_x_kamer,
|
||
sr.alg_srtruimte_omschrijving kamertype,
|
||
h.omschrijving fclt_f_omschrijving, -- TODO; alleen kernwoord ("rent", "service costs") eruit pikken
|
||
h.bedrag,
|
||
DECODE (h.ismutatie, 1, 1, NULL) ismutatie,
|
||
DECODE (h.naar_coda, NULL, NULL, 1) geexporteerd
|
||
FROM nybu_huur_archief h,
|
||
cnt_contract c,
|
||
alg_ruimte r,
|
||
alg_srtruimte sr,
|
||
alg_verdieping v,
|
||
alg_gebouw g,
|
||
prs_perslid p,
|
||
prs_v_aanwezigafdeling a
|
||
WHERE c.cnt_contract_key = h.cnt_contract_key
|
||
AND r.alg_ruimte_key(+) = h.alg_ruimte_key
|
||
AND sr.alg_srtruimte_key(+) = r.alg_srtruimte_key
|
||
AND v.alg_verdieping_key(+) = r.alg_verdieping_key
|
||
AND g.alg_gebouw_key(+) = v.alg_gebouw_key
|
||
AND p.prs_perslid_key(+) = h.prs_perslid_key
|
||
AND a.prs_afdeling_key(+) = p.prs_afdeling_key;
|
||
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_vb_coda_export
|
||
AS
|
||
SELECT volgnr, regel
|
||
FROM (SELECT 0 volgnr,
|
||
'Nummer;Adm.;Grootboek;Debiteur / Kostenplaats;Project;Bedrag;D/C;BTW;Regelomschrijving;Regeltype;Ext ref 1;Ext ref 2;Fact nummer'
|
||
regel
|
||
FROM DUAL
|
||
UNION ALL
|
||
SELECT fac_rapport_volgnr volgnr, fac_rapport_regel regel
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'T_HUUR_CODA')
|
||
ORDER BY volgnr;
|
||
|
||
-- Actueel overzicht van huurcontracten studentenkamers, met te-factureren bedragen
|
||
-- NYBU#33043: contracten in voorbereiding hoeven niet aan een ruimte gekoppeld te zijn
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_huurcontracten
|
||
AS
|
||
SELECT DISTINCT
|
||
a.cnt_contract_nummer_intern hide_f_sort,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("'
|
||
|| 'appl/cnt/cnt_contract.asp?urole=bo&'
|
||
|| 'cnt_key='
|
||
|| a.cnt_contract_key
|
||
|| '")''>'
|
||
|| HTF.escape_sc (a.cnt_contract_nummer_intern)
|
||
|| '</a>'
|
||
html_nr,
|
||
a.cnt_contract_nummer_intern fclt_x_nr,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("'
|
||
|| 'appl/prs/prs_perslid.asp?key='
|
||
|| a.prs_perslid_key
|
||
|| '")''>'
|
||
|| HTF.escape_sc (a.naam)
|
||
|| '</a>'
|
||
html_naam,
|
||
a.codanr fclt_f_debiteur,
|
||
a.naam fclt_x_naam,
|
||
a.gebouw fclt_f_gebouw,
|
||
a.verdieping fclt_f_verdieping,
|
||
DECODE (
|
||
a.alg_ruimte_key,
|
||
NULL,
|
||
'(Geen)',
|
||
'<a class="details" onclick=''FcltMgr.openDetail("'
|
||
|| 'appl/ALG/alg_ruimte.asp?key='
|
||
|| a.alg_ruimte_key
|
||
|| '")''>'
|
||
|| HTF.escape_sc (a.kamer)
|
||
|| '</a>')
|
||
html_kamer,
|
||
COALESCE (a.kamer, '(Geen)') fclt_x_kamer,
|
||
a.alg_srtruimte_omschrijving fclt_f_type,
|
||
TO_CHAR (a.cnt_contract_looptijd_van, 'YYYY-MM-DD') van,
|
||
TO_CHAR (a.cnt_contract_looptijd_tot, 'YYYY-MM-DD') tot,
|
||
DECODE (b.prs_perslid_key, NULL, a.huur, a.huur / 2) kale_huur,
|
||
DECODE (b.prs_perslid_key,
|
||
NULL, a.servicekosten,
|
||
a.servicekosten / 2)
|
||
servicekosten,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("'
|
||
|| 'appl/prs/prs_perslid.asp?key='
|
||
|| COALESCE (a.partner_key, b.prs_perslid_key)
|
||
|| '")''>'
|
||
|| HTF.escape_sc (
|
||
COALESCE (a.partner_naam, b.prs_perslid_naam_full))
|
||
|| '</a>'
|
||
html_partner,
|
||
DECODE (b.prs_perslid_key,
|
||
NULL, DECODE (a.partner_key, NULL, 0, a.partnercharge),
|
||
a.partnercharge / 2)
|
||
partnertoeslag,
|
||
DECODE (b.prs_perslid_key, NULL, a.huur, a.huur / 2)
|
||
+ DECODE (b.prs_perslid_key,
|
||
NULL, a.servicekosten,
|
||
a.servicekosten / 2)
|
||
+ DECODE (b.prs_perslid_key,
|
||
NULL, DECODE (partner_key, NULL, 0, a.partnercharge),
|
||
a.partnercharge / 2)
|
||
huurprijs
|
||
FROM nybu_v_huurcontracten_student a
|
||
LEFT OUTER JOIN
|
||
nybu_v_potential_roommates b
|
||
ON a.alg_ruimte_key IS NOT NULL
|
||
AND b.cnt_contract_key != a.cnt_contract_key
|
||
AND b.alg_ruimte_key = a.alg_ruimte_key
|
||
AND b.cnt_contract_looptijd_van < a.cnt_contract_looptijd_tot
|
||
AND b.cnt_contract_looptijd_tot > a.cnt_contract_looptijd_van
|
||
AND b.cnt_contract_looptijd_tot > SYSDATE
|
||
WHERE TRUNC (SYSDATE, 'MM') < a.cnt_contract_looptijd_tot;
|
||
|
||
|
||
--"Campuslijst: Studenten adressen huidig bestand: naam, lichting, kamernummer, telefoonnummerkamer en mobielnummer."
|
||
-- srtperslid "Student" 1537
|
||
-- alg_kenmerk "Telephone number" 1040
|
||
-- cnt_kenmerk "Tenant" 81
|
||
-- cnt_kenmerk "Student room" 1
|
||
--- NYBU#34285 alg_kenmerk "Telephone number" 1040 vervangen door alg_kenmerk "Postal code" 1002
|
||
|
||
CREATE OR REPLACE VIEW NYBU_V_RAP_CAMPUSLIJST
|
||
(
|
||
fclt_x_naam,
|
||
naam,
|
||
tussenvoegsel,
|
||
voornaam,
|
||
voorletters,
|
||
fclt_f_lichting,
|
||
fclt_f_gebouw,
|
||
fclt_f_verdieping,
|
||
fclt_f_kamer,
|
||
postcode,
|
||
mobiel
|
||
)
|
||
AS
|
||
SELECT pf.prs_perslid_naam_full fclt_f_naam,
|
||
p.prs_perslid_naam,
|
||
p.prs_perslid_tussenvoegsel,
|
||
p.prs_perslid_voornaam,
|
||
p.prs_perslid_voorletters,
|
||
a.prs_afdeling_naam fclt_f_lichting,
|
||
g.alg_gebouw_naam fclt_f_gebouw,
|
||
rg.alg_verdieping_code fclt_f_verdieping,
|
||
rg.alg_ruimte_nr fclt_f_kamer,
|
||
-- kamtelnr.alg_onrgoedkenmerk_waarde telefoon_kamer,
|
||
pc.alg_onrgoedkenmerk_waarde postcode,
|
||
p.prs_perslid_mobiel mobiel
|
||
FROM prs_perslid p,
|
||
prs_v_perslid_fullnames pf,
|
||
prs_v_aanwezigafdeling a,
|
||
cnt_contract c,
|
||
alg_v_ruimte_gegevens rg,
|
||
alg_gebouw g,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 81
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) huurder,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 1
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) studkam,
|
||
-- (SELECT *
|
||
-- FROM alg_onrgoedkenmerk
|
||
-- WHERE alg_kenmerk_key = 1040
|
||
-- AND alg_onrgoedkenmerk_verwijder IS NULL) kamtelnr
|
||
(SELECT *
|
||
FROM alg_onrgoedkenmerk
|
||
WHERE alg_kenmerk_key = 1002
|
||
AND alg_onrgoedkenmerk_verwijder IS NULL) pc
|
||
WHERE pf.prs_perslid_key = p.prs_perslid_key
|
||
AND fac.safe_to_number (huurder.cnt_kenmerkcontract_waarde) =
|
||
p.prs_perslid_key
|
||
AND a.prs_afdeling_key = p.prs_afdeling_key
|
||
AND c.cnt_contract_key = huurder.cnt_contract_key
|
||
AND SYSDATE BETWEEN c.cnt_contract_looptijd_van
|
||
AND c.cnt_contract_looptijd_tot
|
||
AND studkam.cnt_contract_key = c.cnt_contract_key
|
||
AND rg.alg_ruimte_key =
|
||
fac.safe_to_number (studkam.cnt_kenmerkcontract_waarde)
|
||
--AND kamtelnr.alg_onrgoed_key = rg.alg_ruimte_key
|
||
AND pc.alg_onrgoed_key(+) = rg.alg_ruimte_key
|
||
AND g.alg_gebouw_key = rg.alg_gebouw_key
|
||
AND c.cnt_contract_verwijder is null;
|
||
|
||
-- "Vertrekkerslijst incl. nieuw adres, borg, eventuele schade, te verrekenen huur (refund),
|
||
-- debiteurnummer en bankrekeningnummer"
|
||
-- Vertrekker = student met contract met "Contract status" = "Closed" en status = Actief (i.e. niet Gesloten)
|
||
-- naam, adres, contractnr, debnr, borgbedrag, damages, verrekening huur ("Refund" obv dagen eerder/later weg).
|
||
-- cnt_kenmerk "Tenant" 81
|
||
-- cnt_kenmerk "Student room" 1
|
||
-- cnt_kenmerk "Deposit amount" 2
|
||
-- cnt_kenmerk "Start call of wf" 3
|
||
-- cnt_kenmerk "Damages" 41
|
||
-- cnt_kenmerk "Refund" 123
|
||
-- cnt_kenmerk "Contract status" 141 (waarde 321 = "Closed")
|
||
-- cnt_kenmerk "Schoonmaak vertrek" 942
|
||
-- prs_kenmerk "Account number" 1029
|
||
-- prs_kenmerk "IBAN" 1040
|
||
-- prs_kenmerk "BIC" 1041
|
||
-- prs_kenmerk "Street" 1022
|
||
-- prs_kenmerk "Street (extra)" 1023
|
||
-- prs_kenmerk "ZIP/Postal code" 1024
|
||
-- prs_kenmerk "City" 1025
|
||
-- prs_kenmerk "Country" 1026
|
||
-- prs_kenmerk "CODA nr" 1000
|
||
-- prs_kenmerk "SAN nr" 1200
|
||
-- NYBU#30133 SAN-nummer overruled CODA-nummer (CON-nummer)
|
||
-- NYBU#32684 Ook kosten "Schoonmaak bij vertrek" tonen
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_vertrekkers
|
||
AS
|
||
SELECT ROW_NUMBER () OVER (ORDER BY pf.prs_perslid_naam_full) AS nummer,
|
||
pf.prs_perslid_naam_full naam_full,
|
||
p.prs_perslid_naam,
|
||
p.prs_perslid_nr studentnr,
|
||
c.cnt_contract_nummer_intern contract,
|
||
g.alg_gebouw_naam gebouw,
|
||
rg.alg_verdieping_code verdieping,
|
||
rg.alg_ruimte_nr kamer,
|
||
TO_CHAR (c.cnt_contract_looptijd_tot, 'YYYY-MM-DD') einddatum,
|
||
street1.prs_kenmerklink_waarde adres,
|
||
street2.prs_kenmerklink_waarde adres2,
|
||
zip.prs_kenmerklink_waarde postcode,
|
||
city.prs_kenmerklink_waarde plaats,
|
||
country.prs_kenmerklink_waarde land,
|
||
fac.safe_to_number (borgbedr.cnt_kenmerkcontract_waarde) borg,
|
||
fac.safe_to_number (workflow.cnt_kenmerkcontract_waarde) workflow,
|
||
fac.safe_to_number (schade.cnt_kenmerkcontract_waarde) schade,
|
||
fac.safe_to_number (schoonm.cnt_kenmerkcontract_waarde) schoonmaak,
|
||
fac.safe_to_number (refund.cnt_kenmerkcontract_waarde) refund,
|
||
COALESCE (sannr.prs_kenmerklink_waarde,
|
||
codanr.prs_kenmerklink_waarde)
|
||
debiteurnr,
|
||
reknr.prs_kenmerklink_waarde rekeningnr,
|
||
iban.prs_kenmerklink_waarde iban,
|
||
bic.prs_kenmerklink_waarde bic
|
||
FROM prs_v_perslid_fullnames_all pf,
|
||
prs_perslid p,
|
||
cnt_contract c,
|
||
alg_v_ruimte_gegevens rg,
|
||
alg_gebouw g,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 141
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) cntstat,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 81
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) huurder,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 1
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) studkam,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 2
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) borgbedr,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 3
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) workflow,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 41
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) schade,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 123
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) refund,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 942
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) schoonm,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1000
|
||
AND prs_kenmerklink_verwijder IS NULL) codanr,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1200
|
||
AND prs_kenmerklink_verwijder IS NULL) sannr,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1029
|
||
AND prs_kenmerklink_verwijder IS NULL) reknr,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1140
|
||
AND prs_kenmerklink_verwijder IS NULL) iban,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1141
|
||
AND prs_kenmerklink_verwijder IS NULL) bic,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1022
|
||
AND prs_kenmerklink_verwijder IS NULL) street1,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1023
|
||
AND prs_kenmerklink_verwijder IS NULL) street2,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1024
|
||
AND prs_kenmerklink_verwijder IS NULL) zip,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1025
|
||
AND prs_kenmerklink_verwijder IS NULL) city,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1026
|
||
AND prs_kenmerklink_verwijder IS NULL) country
|
||
WHERE fac.safe_to_number (cntstat.cnt_kenmerkcontract_waarde) = 321
|
||
AND cntstat.cnt_contract_key = c.cnt_contract_key
|
||
AND c.cnt_contract_status = 0
|
||
AND c.cnt_contract_verwijder IS NULL
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM cnt_contract cc, cnt_kenmerkcontract kc
|
||
WHERE cc.cnt_contract_key != c.cnt_contract_key
|
||
AND cc.cnt_contract_looptijd_tot >=
|
||
c.cnt_contract_looptijd_tot
|
||
AND cc.cnt_contract_status = 0
|
||
AND cc.cnt_contract_verwijder IS NULL
|
||
AND kc.cnt_kenmerk_key = 81
|
||
AND kc.cnt_contract_key = cc.cnt_contract_key
|
||
AND kc.cnt_kenmerkcontract_waarde =
|
||
huurder.cnt_kenmerkcontract_waarde)
|
||
AND borgbedr.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND workflow.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND schade.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND refund.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND schoonm.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND studkam.cnt_contract_key = c.cnt_contract_key
|
||
AND rg.alg_ruimte_key =
|
||
fac.safe_to_number (studkam.cnt_kenmerkcontract_waarde)
|
||
AND g.alg_gebouw_key = rg.alg_gebouw_key
|
||
AND huurder.cnt_contract_key = c.cnt_contract_key
|
||
AND pf.prs_perslid_key =
|
||
fac.safe_to_number (huurder.cnt_kenmerkcontract_waarde)
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND codanr.prs_link_key(+) = pf.prs_perslid_key
|
||
AND sannr.prs_link_key(+) = pf.prs_perslid_key
|
||
AND reknr.prs_link_key(+) = pf.prs_perslid_key
|
||
AND iban.prs_link_key(+) = pf.prs_perslid_key
|
||
AND bic.prs_link_key(+) = pf.prs_perslid_key
|
||
AND street1.prs_link_key(+) = pf.prs_perslid_key
|
||
AND street2.prs_link_key(+) = pf.prs_perslid_key
|
||
AND zip.prs_link_key(+) = pf.prs_perslid_key
|
||
AND city.prs_link_key(+) = pf.prs_perslid_key
|
||
AND country.prs_link_key(+) = pf.prs_perslid_key;
|
||
|
||
-- Lijst met nieuwkomers, die nog borg moeten betalen
|
||
-- cnt_kenmerk "Deposit paid" 43
|
||
-- cnt_kenmerk "Contract status" 141 (waarde 221 = "In Preparation")
|
||
-- prs_kenmerk "SAN nr" 1200
|
||
-- NYBU#30133 SAN-nummer overruled CODA-nummer (CON-nummer)
|
||
-- NYBU#33043: contracten in voorbereiding hoeven niet aan een ruimte gekoppeld te zijn
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_nieuwkomers
|
||
AS
|
||
SELECT ROW_NUMBER () OVER (ORDER BY pf.prs_perslid_naam_full) AS nummer,
|
||
pf.prs_perslid_naam_full naam_full,
|
||
p.prs_perslid_naam,
|
||
p.prs_perslid_nr studentnr,
|
||
c.cnt_contract_nummer_intern contract,
|
||
g.alg_gebouw_naam gebouw,
|
||
rg.alg_verdieping_code verdieping,
|
||
rg.alg_ruimte_nr kamer,
|
||
TO_CHAR (c.cnt_contract_looptijd_van, 'YYYY-MM-DD') ingangsdatum,
|
||
street1.prs_kenmerklink_waarde adres,
|
||
street2.prs_kenmerklink_waarde adres2,
|
||
zip.prs_kenmerklink_waarde postcode,
|
||
city.prs_kenmerklink_waarde plaats,
|
||
country.prs_kenmerklink_waarde land,
|
||
fac.safe_to_number (borgbedr.cnt_kenmerkcontract_waarde) borg,
|
||
COALESCE (sannr.prs_kenmerklink_waarde,
|
||
codanr.prs_kenmerklink_waarde)
|
||
debiteurnr,
|
||
reknr.prs_kenmerklink_waarde rekeningnr,
|
||
iban.prs_kenmerklink_waarde iban,
|
||
bic.prs_kenmerklink_waarde bic
|
||
FROM prs_v_perslid_fullnames_all pf,
|
||
prs_perslid p,
|
||
cnt_contract c,
|
||
alg_v_ruimte_gegevens rg,
|
||
alg_gebouw g,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 141
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) cntstat,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 81
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) huurder,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 1
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) studkam,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 2
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) borgbedr,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 43
|
||
AND cnt_kenmerkcontract_waarde != '0'
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) borgbet,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1000
|
||
AND prs_kenmerklink_verwijder IS NULL) codanr,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1200
|
||
AND prs_kenmerklink_verwijder IS NULL) sannr,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1029
|
||
AND prs_kenmerklink_verwijder IS NULL) reknr,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1140
|
||
AND prs_kenmerklink_verwijder IS NULL) iban,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1141
|
||
AND prs_kenmerklink_verwijder IS NULL) bic,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1022
|
||
AND prs_kenmerklink_verwijder IS NULL) street1,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1023
|
||
AND prs_kenmerklink_verwijder IS NULL) street2,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1024
|
||
AND prs_kenmerklink_verwijder IS NULL) zip,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1025
|
||
AND prs_kenmerklink_verwijder IS NULL) city,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1026
|
||
AND prs_kenmerklink_verwijder IS NULL) country
|
||
WHERE fac.safe_to_number (cntstat.cnt_kenmerkcontract_waarde) = 221
|
||
AND cntstat.cnt_contract_key = c.cnt_contract_key
|
||
AND c.cnt_contract_status = 0
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM cnt_contract cc, cnt_kenmerkcontract kc
|
||
WHERE cc.cnt_contract_key != c.cnt_contract_key
|
||
AND cc.cnt_contract_status = 0
|
||
AND kc.cnt_kenmerk_key = 81
|
||
AND kc.cnt_contract_key = cc.cnt_contract_key
|
||
AND kc.cnt_kenmerkcontract_waarde =
|
||
huurder.cnt_kenmerkcontract_waarde)
|
||
AND borgbedr.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND borgbet.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND fac.safe_to_number (borgbet.cnt_kenmerkcontract_waarde) IS NULL
|
||
AND studkam.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND rg.alg_ruimte_key(+) =
|
||
fac.safe_to_number (studkam.cnt_kenmerkcontract_waarde)
|
||
AND g.alg_gebouw_key(+) = rg.alg_gebouw_key
|
||
AND huurder.cnt_contract_key = c.cnt_contract_key
|
||
AND pf.prs_perslid_key =
|
||
fac.safe_to_number (huurder.cnt_kenmerkcontract_waarde)
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND codanr.prs_link_key(+) = pf.prs_perslid_key
|
||
AND sannr.prs_link_key(+) = pf.prs_perslid_key
|
||
AND reknr.prs_link_key(+) = pf.prs_perslid_key
|
||
AND iban.prs_link_key(+) = pf.prs_perslid_key
|
||
AND bic.prs_link_key(+) = pf.prs_perslid_key
|
||
AND street1.prs_link_key(+) = pf.prs_perslid_key
|
||
AND street2.prs_link_key(+) = pf.prs_perslid_key
|
||
AND zip.prs_link_key(+) = pf.prs_perslid_key
|
||
AND city.prs_link_key(+) = pf.prs_perslid_key
|
||
AND country.prs_link_key(+) = pf.prs_perslid_key
|
||
AND c.cnt_contract_verwijder IS NULL;
|
||
|
||
-- Rapportage "HUUR: Vertrekkerslijst"
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_vertrekkers
|
||
AS
|
||
SELECT naam_full fclt_f_naam,
|
||
studentnr,
|
||
contract fclt_f_contract,
|
||
gebouw,
|
||
verdieping,
|
||
kamer fclt_f_kamer,
|
||
einddatum,
|
||
adres,
|
||
adres2,
|
||
postcode,
|
||
plaats,
|
||
land,
|
||
borg,
|
||
TO_CHAR (workflow) workflow,
|
||
schade,
|
||
schoonmaak,
|
||
refund,
|
||
debiteurnr,
|
||
rekeningnr,
|
||
iban,
|
||
bic
|
||
FROM nybu_v_vertrekkers;
|
||
|
||
-- Rapportage "HUUR: Nieuwkomers"
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_nieuwkomers
|
||
AS
|
||
SELECT naam_full fclt_f_naam,
|
||
studentnr,
|
||
contract fclt_f_contract,
|
||
gebouw,
|
||
verdieping,
|
||
COALESCE (kamer, '(Geen)') fclt_f_kamer,
|
||
ingangsdatum,
|
||
adres,
|
||
adres2,
|
||
postcode,
|
||
plaats,
|
||
land,
|
||
borg,
|
||
debiteurnr,
|
||
rekeningnr,
|
||
iban,
|
||
bic
|
||
FROM nybu_v_nieuwkomers;
|
||
|
||
-- CSV-export naar CODA, voor verrekening borgteruggaaf, schoonmaakkosten en schades etc
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_borg_terug
|
||
AS
|
||
SELECT nummer,
|
||
adm,
|
||
grootbk,
|
||
debiteurnr,
|
||
proj,
|
||
bedrag,
|
||
dc,
|
||
btw,
|
||
oms omschrijving,
|
||
regeltype,
|
||
ref1,
|
||
ref2
|
||
FROM ( SELECT nummer,
|
||
0 idx,
|
||
'10' adm,
|
||
'13000' grootbk,
|
||
REPLACE (debiteurnr, 'CON', 'DC') debiteurnr,
|
||
NULL proj,
|
||
SUM( COALESCE (borg, 0)
|
||
- COALESCE (schade, 0)
|
||
- COALESCE (schoonmaak, 0)
|
||
+ COALESCE (refund, 0))
|
||
bedrag,
|
||
CASE
|
||
WHEN SUM( COALESCE (borg, 0)
|
||
- COALESCE (schade, 0)
|
||
- COALESCE (schoonmaak, 0)
|
||
+ COALESCE (refund, 0)) < 0
|
||
THEN
|
||
'D'
|
||
ELSE
|
||
'C'
|
||
END
|
||
dc,
|
||
NULL btw,
|
||
'Deposit ' || prs_perslid_naam oms,
|
||
'Summary' regeltype,
|
||
'K91200' ref1,
|
||
'P991210' ref2
|
||
FROM nybu_v_vertrekkers
|
||
GROUP BY nummer, debiteurnr, prs_perslid_naam
|
||
UNION ALL
|
||
SELECT nummer,
|
||
1 idx,
|
||
'12' adm,
|
||
'19140' grootbk,
|
||
'K91200' debiteurnr,
|
||
'P991210' proj,
|
||
borg bedrag,
|
||
CASE WHEN borg > 0 THEN 'D' ELSE 'C' END dc,
|
||
'VV' btw,
|
||
'Deposit ' || prs_perslid_naam oms,
|
||
'Analysis' regeltype,
|
||
NULL ref1,
|
||
NULL ref2
|
||
FROM nybu_v_vertrekkers
|
||
WHERE borg IS NOT NULL AND borg > 0
|
||
UNION ALL
|
||
SELECT nummer,
|
||
2 idx,
|
||
'12' adm,
|
||
'84099' grootbk,
|
||
'K91200' debiteurnr,
|
||
'P991210' proj,
|
||
schade bedrag,
|
||
CASE WHEN schade > 0 THEN 'C' ELSE 'D' END dc,
|
||
'VH21' btw,
|
||
'Damages '
|
||
|| DECODE (workflow,
|
||
NULL, prs_perslid_naam,
|
||
'(room check N' || TO_CHAR (workflow) || ')')
|
||
oms,
|
||
'Analysis' regeltype,
|
||
NULL ref1,
|
||
NULL ref2
|
||
FROM nybu_v_vertrekkers
|
||
WHERE schade IS NOT NULL AND schade > 0
|
||
UNION ALL
|
||
SELECT nummer,
|
||
3 idx,
|
||
'12' adm,
|
||
'84099' grootbk,
|
||
'K91200' debiteurnr,
|
||
'P991210' proj,
|
||
refund bedrag,
|
||
CASE WHEN refund > 0 THEN 'C' ELSE 'D' END dc,
|
||
'VH21' btw,
|
||
'Refund ' || prs_perslid_naam oms,
|
||
'Analysis' regeltype,
|
||
NULL ref1,
|
||
NULL ref2
|
||
FROM nybu_v_vertrekkers
|
||
WHERE refund IS NOT NULL AND refund > 0
|
||
UNION ALL
|
||
SELECT nummer,
|
||
4 idx,
|
||
'12' adm,
|
||
'84099' grootbk,
|
||
'K91200' debiteurnr,
|
||
'P991210' proj,
|
||
schoonmaak bedrag,
|
||
CASE WHEN schoonmaak > 0 THEN 'C' ELSE 'D' END dc,
|
||
'VH21' btw,
|
||
'Cleaning ' || prs_perslid_naam oms,
|
||
'Analysis' regeltype,
|
||
NULL ref1,
|
||
NULL ref2
|
||
FROM nybu_v_vertrekkers
|
||
WHERE schoonmaak IS NOT NULL AND schoonmaak > 0
|
||
ORDER BY nummer, idx);
|
||
|
||
|
||
-- CSV-export naar CODA, voor betaling van borg door nieuwe huurders
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_borg_betalen
|
||
AS
|
||
SELECT nummer,
|
||
'10' adm,
|
||
'13000' grootbk,
|
||
REPLACE (debiteurnr, 'CON', 'DC') debiteurnr,
|
||
NULL proj,
|
||
SUM (borg) bedrag,
|
||
'D' dc,
|
||
NULL btw,
|
||
'Deposit ' || prs_perslid_naam omschrijving,
|
||
'Summary' regeltype,
|
||
'K91200' ref1,
|
||
'P991210' ref2
|
||
FROM nybu_v_nieuwkomers
|
||
GROUP BY nummer, debiteurnr, prs_perslid_naam
|
||
UNION ALL
|
||
SELECT nummer,
|
||
'12' adm,
|
||
'19140' grootbk,
|
||
'K91200' debiteurnr,
|
||
'P991210' proj,
|
||
borg bedrag,
|
||
'C' dc,
|
||
'VV' btw,
|
||
'Deposit ' || prs_perslid_naam omschrijving,
|
||
'Analysis' regeltype,
|
||
NULL ref1,
|
||
NULL ref2
|
||
FROM nybu_v_nieuwkomers
|
||
ORDER BY nummer, regeltype DESC;
|
||
|
||
-- Basisview voor gestylede rapportages voor afdrukken contract en welkomstbrief
|
||
-- Veld fclt_f_tonen biedt de mogelijkheid om alleen de brief, alleen het contract, of beide af te drukken
|
||
-- Middels het bedrijf van het contract wordt in de rapportage bepaald of het om een student of een
|
||
-- medewerker gaat (voor beide zijn verschillende templates)
|
||
-- prs_kenmerk 1022 Street
|
||
-- prs_kenmerk 1023 Street (extra)
|
||
-- prs_kenmerk 1024 ZIP/Postal code
|
||
-- prs_kenmerk 1025 City
|
||
-- prs_kenmerk 1200 SAN number
|
||
-- cnt_kenmerk 63 Budget nr
|
||
-- cnt_kenmerk 64 Bill rent to
|
||
-- cnt_kenmerk 65 Bill service costs to
|
||
-- cnt_kenmerk 66 Bill telephone to
|
||
-- cnt_kenmerk 681 Partnercharge to budgetnr
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_contract_bon
|
||
AS
|
||
SELECT a.*,
|
||
DECODE (b.prs_perslid_key, NULL, a.huur, a.huur / 2) kale_huur,
|
||
DECODE (b.prs_perslid_key, NULL, a.servkost, a.servkost / 2)
|
||
servicekosten,
|
||
DECODE (b.prs_perslid_key,
|
||
NULL, a.telefooncharge,
|
||
a.telefooncharge / 2)
|
||
telkosten,
|
||
DECODE (b.prs_perslid_key,
|
||
NULL, DECODE (a.partner_key, NULL, 0, a.partnercharge),
|
||
a.partnercharge / 2)
|
||
partnertoeslag,
|
||
b.roommate_naam,
|
||
b.rm_straat1,
|
||
b.rm_straat2,
|
||
b.rm_postcode,
|
||
b.rm_plaats
|
||
FROM (SELECT DECODE (
|
||
c.cnt_contract_versie,
|
||
NULL,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_nummer_intern
|
||
|| '.'
|
||
|| c.cnt_contract_versie)
|
||
fclt_f_contractnr,
|
||
c.cnt_prs_bedrijf_key,
|
||
p.prs_perslid_key,
|
||
c.naam fclt_f_naam,
|
||
p.prs_perslid_nr fclt_f_studentnr,
|
||
p.prs_perslid_voornaam voornaam,
|
||
straat1.prs_kenmerklink_waarde straat1,
|
||
straat2.prs_kenmerklink_waarde straat2,
|
||
pc.prs_kenmerklink_waarde postcode,
|
||
plaats.prs_kenmerklink_waarde plaats,
|
||
san.prs_kenmerklink_waarde san_nr,
|
||
a.prs_afdeling_omschrijving fclt_f_opleiding,
|
||
r.alg_ruimte_key,
|
||
r.alg_ruimte_nr,
|
||
c.alg_srtruimte_omschrijving,
|
||
v.alg_verdieping_volgnr,
|
||
g.alg_gebouw_naam,
|
||
pc_kamer.alg_onrgoedkenmerk_waarde postcode_kamer,
|
||
telnr.alg_onrgoedkenmerk_waarde telnr,
|
||
c.cnt_contract_looptijd_van van,
|
||
c.cnt_contract_looptijd_tot tot,
|
||
TO_CHAR (c.cnt_contract_looptijd_van, 'DD-MM-YYYY')
|
||
looptijd_van,
|
||
TO_CHAR (c.cnt_contract_looptijd_tot, 'DD-MM-YYYY')
|
||
looptijd_tot,
|
||
TO_CHAR (SYSDATE, 'DD-MM-YYYY') printdatum,
|
||
DECODE (rent.cnt_kenmerkcontract_waarde,
|
||
'442', k.prs_kostenplaats_nr,
|
||
'443', 'salaris',
|
||
NULL)
|
||
rent_to,
|
||
DECODE (serv.cnt_kenmerkcontract_waarde,
|
||
'442', k.prs_kostenplaats_nr,
|
||
'443', 'salaris',
|
||
NULL)
|
||
serv_to,
|
||
DECODE (tel.cnt_kenmerkcontract_waarde,
|
||
'442', k.prs_kostenplaats_nr,
|
||
'443', 'salaris',
|
||
NULL)
|
||
tel_to,
|
||
DECODE (partnerch.cnt_kenmerkcontract_waarde,
|
||
'442', k.prs_kostenplaats_nr,
|
||
'443', 'salaris',
|
||
NULL)
|
||
partnerch_to,
|
||
c.partner_key,
|
||
c.huur,
|
||
c.servicekosten servkost,
|
||
c.telefooncharge,
|
||
c.partnercharge,
|
||
c.borg_tebetalen + c.borg_betaald borg,
|
||
PRINT.uitdraai fclt_f_tonen
|
||
FROM nybu_v_huurcontracten_student c,
|
||
prs_perslid p,
|
||
prs_afdeling a,
|
||
alg_ruimte r,
|
||
alg_verdieping v,
|
||
alg_gebouw g,
|
||
(SELECT *
|
||
FROM alg_onrgoedkenmerk
|
||
WHERE alg_onrgoedkenmerk_verwijder IS NULL
|
||
AND alg_onrgoed_niveau = 'R'
|
||
AND alg_kenmerk_key = 1002) pc_kamer,
|
||
(SELECT *
|
||
FROM alg_onrgoedkenmerk
|
||
WHERE alg_onrgoedkenmerk_verwijder IS NULL
|
||
AND alg_onrgoed_niveau = 'R'
|
||
AND alg_kenmerk_key = 1040) telnr,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerklink_verwijder IS NULL
|
||
AND prs_kenmerklink_niveau = 'P'
|
||
AND prs_kenmerk_key = 1022) straat1,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerklink_verwijder IS NULL
|
||
AND prs_kenmerklink_niveau = 'P'
|
||
AND prs_kenmerk_key = 1023) straat2,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerklink_verwijder IS NULL
|
||
AND prs_kenmerklink_niveau = 'P'
|
||
AND prs_kenmerk_key = 1024) pc,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerklink_verwijder IS NULL
|
||
AND prs_kenmerklink_niveau = 'P'
|
||
AND prs_kenmerk_key = 1025) plaats,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerklink_verwijder IS NULL
|
||
AND prs_kenmerklink_niveau = 'P'
|
||
AND prs_kenmerk_key = 1200) san,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 63
|
||
AND cnt_kenmerkcontract_verwijder IS NULL)
|
||
budget,
|
||
prs_kostenplaats k,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 64
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) rent,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 65
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) serv,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 66
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) tel,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 681
|
||
AND cnt_kenmerkcontract_verwijder IS NULL)
|
||
partnerch,
|
||
(SELECT 'Bevestigingsbrief' uitdraai FROM DUAL
|
||
UNION ALL
|
||
SELECT 'Contract' uitdraai FROM DUAL) PRINT
|
||
WHERE p.prs_perslid_key = c.prs_perslid_key
|
||
AND SYSDATE < c.cnt_contract_looptijd_tot
|
||
AND r.alg_ruimte_key = c.alg_ruimte_key
|
||
AND v.alg_verdieping_key = r.alg_verdieping_key
|
||
AND g.alg_gebouw_key = v.alg_gebouw_key
|
||
AND pc_kamer.alg_onrgoed_key(+) = r.alg_ruimte_key
|
||
AND a.prs_afdeling_key = p.prs_afdeling_key
|
||
AND straat1.prs_link_key(+) = p.prs_perslid_key
|
||
AND straat2.prs_link_key(+) = p.prs_perslid_key
|
||
AND pc.prs_link_key(+) = p.prs_perslid_key
|
||
AND plaats.prs_link_key(+) = p.prs_perslid_key
|
||
AND san.prs_link_key(+) = p.prs_perslid_key
|
||
AND telnr.alg_onrgoed_key(+) = r.alg_ruimte_key
|
||
AND budget.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND k.prs_kostenplaats_key(+) =
|
||
fac.safe_to_number (
|
||
budget.cnt_kenmerkcontract_waarde)
|
||
AND rent.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND serv.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND tel.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND partnerch.cnt_contract_key(+) = c.cnt_contract_key
|
||
AND COALESCE (cnt_contract_versie, 'apekool') =
|
||
COALESCE (
|
||
(SELECT MAX (cnt_contract_versie)
|
||
FROM cnt_contract
|
||
WHERE cnt_contract_nummer_intern =
|
||
c.cnt_contract_nummer_intern
|
||
AND cnt_contract_verwijder IS NULL),
|
||
'apekool')) a
|
||
LEFT OUTER JOIN
|
||
(SELECT pf.prs_perslid_key,
|
||
fac.safe_to_number (sk.cnt_kenmerkcontract_waarde)
|
||
alg_ruimte_key,
|
||
pf.prs_perslid_naam_full roommate_naam,
|
||
straat1.prs_kenmerklink_waarde rm_straat1,
|
||
straat2.prs_kenmerklink_waarde rm_straat2,
|
||
pc.prs_kenmerklink_waarde rm_postcode,
|
||
plaats.prs_kenmerklink_waarde rm_plaats,
|
||
c.cnt_contract_looptijd_van van,
|
||
c.cnt_contract_looptijd_tot tot
|
||
FROM cnt_contract c,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 81
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) h,
|
||
prs_v_perslid_fullnames pf,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = 1
|
||
AND cnt_kenmerkcontract_verwijder IS NULL) sk,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerklink_verwijder IS NULL
|
||
AND prs_kenmerklink_niveau = 'P'
|
||
AND prs_kenmerk_key = 1022) straat1,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerklink_verwijder IS NULL
|
||
AND prs_kenmerklink_niveau = 'P'
|
||
AND prs_kenmerk_key = 1023) straat2,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerklink_verwijder IS NULL
|
||
AND prs_kenmerklink_niveau = 'P'
|
||
AND prs_kenmerk_key = 1024) pc,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerklink_verwijder IS NULL
|
||
AND prs_kenmerklink_niveau = 'P'
|
||
AND prs_kenmerk_key = 1025) plaats
|
||
WHERE c.ins_discipline_key = 55
|
||
AND c.cnt_contract_looptijd_tot > SYSDATE
|
||
AND c.cnt_contract_verwijder IS NULL
|
||
AND h.cnt_contract_key = c.cnt_contract_key
|
||
AND pf.prs_perslid_key =
|
||
fac.safe_to_number (h.cnt_kenmerkcontract_waarde)
|
||
AND sk.cnt_contract_key = c.cnt_contract_key
|
||
AND straat1.prs_link_key(+) = pf.prs_perslid_key
|
||
AND straat2.prs_link_key(+) = pf.prs_perslid_key
|
||
AND pc.prs_link_key(+) = pf.prs_perslid_key
|
||
AND plaats.prs_link_key(+) = pf.prs_perslid_key) b
|
||
ON a.alg_ruimte_key = b.alg_ruimte_key
|
||
AND a.prs_perslid_key != b.prs_perslid_key
|
||
AND b.van < a.tot
|
||
AND b.tot > a.van;
|
||
|
||
|
||
-- Rapportageview voor afdrukken huurovereenkomst + bevestigingsbrief STUDENT
|
||
-- 1643 = bedrijf "Students"
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_contract_student
|
||
AS
|
||
SELECT *
|
||
FROM nybu_v_contract_bon
|
||
WHERE cnt_prs_bedrijf_key = 1643;
|
||
|
||
-- Rapportageview voor afdrukken huurovereenkomst + bevestigingsbrief MEDEWERKER
|
||
-- (voor tijdelijke verhuur studentenkamers aan medewerkers/stagiairs)
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_contract_medewerker
|
||
AS
|
||
SELECT *
|
||
FROM nybu_v_contract_bon
|
||
WHERE cnt_prs_bedrijf_key != 1643;
|
||
|
||
-- Gestylede rapportage voor genereren vertrekbrief, o.b.v. workflowmelding en huurcontract
|
||
-- Filtering:
|
||
-- * stdmelding 941 ("Request roomcheck (Workflow)")
|
||
-- * alleen workflows zonder afgewezen meldingen.
|
||
-- * met gekozen kamernummer gekoppeld aan campuscontract
|
||
-- * melding binnen looptijd contract
|
||
-- * alleen actieve (niet-gesloten) contracten
|
||
-- mld_kenmerk 502 Date Roomcheck
|
||
-- mld_kenmerk 503 Time Roomcheck
|
||
-- cnt_kenmerk 1 Student room
|
||
-- cnt_kenmerk 81 Tenant
|
||
-- alg_kenmerk 1002 Postal code
|
||
-- prs_kenmerk 1022 Street
|
||
-- prs_kenmerk 1023 Street (extra)
|
||
-- prs_kenmerk 1024 ZIP/Postal code
|
||
-- prs_kenmerk 1025 City
|
||
-- prs_kenmerk 1026 Country
|
||
-- prs_kenmerk 1180 Prive emailadres
|
||
-- prs_kenmerk 1140 IBAN
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_vertrekbrief
|
||
AS
|
||
SELECT m.mld_melding_key,
|
||
TO_CHAR (m.mld_melding_key) || ' - ' || pf.prs_perslid_naam_full
|
||
fclt_f_melding,
|
||
pf.prs_perslid_naam_full fclt_f_naam,
|
||
r.alg_ruimte_nr fclt_f_kamer,
|
||
TRUNC (m.mld_melding_datum) datum,
|
||
chkdatum.mld_kenmerkmelding_waarde chkdatum,
|
||
chktijd.mld_kenmerkmelding_waarde chktijd,
|
||
c.cnt_contract_key,
|
||
DECODE (
|
||
c.cnt_contract_versie,
|
||
NULL,
|
||
c.cnt_contract_nummer_intern,
|
||
c.cnt_contract_nummer_intern || '.' || c.cnt_contract_versie)
|
||
fclt_f_contract,
|
||
TO_CHAR (c.cnt_contract_looptijd_tot, 'DD-MM-YYYY') einddatum,
|
||
r.alg_ruimte_key,
|
||
r.alg_ruimte_nr kamer,
|
||
pc.alg_onrgoedkenmerk_waarde postcode,
|
||
p.prs_perslid_key,
|
||
p.prs_perslid_naam naam,
|
||
p.prs_perslid_tussenvoegsel tussenvoegsel,
|
||
p.prs_perslid_voorletters voorletters,
|
||
p.prs_perslid_voornaam voornaam,
|
||
p.prs_perslid_mobiel mobiel,
|
||
p.prs_perslid_telefoonnr telefoonnr,
|
||
adres.prs_kenmerklink_waarde adres,
|
||
adres2.prs_kenmerklink_waarde extraadres,
|
||
zip.prs_kenmerklink_waarde zip,
|
||
plaats.prs_kenmerklink_waarde plaats,
|
||
land.prs_kenmerklink_waarde land,
|
||
email.prs_kenmerklink_waarde email,
|
||
iban.prs_kenmerklink_waarde iban
|
||
FROM mld_melding m,
|
||
(SELECT *
|
||
FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL
|
||
AND mld_kenmerk_key = 502) chkdatum,
|
||
(SELECT *
|
||
FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL
|
||
AND mld_kenmerk_key = 503) chktijd,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerkcontract_verwijder IS NULL
|
||
AND cnt_kenmerk_key = 1) kamer,
|
||
(SELECT *
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_kenmerkcontract_verwijder IS NULL
|
||
AND cnt_kenmerk_key = 81) student,
|
||
(SELECT *
|
||
FROM cnt_contract c
|
||
WHERE cnt_contract_verwijder IS NULL
|
||
AND COALESCE (cnt_contract_versie, '0') =
|
||
(SELECT COALESCE (MAX (cnt_contract_versie), '0')
|
||
FROM cnt_contract
|
||
WHERE cnt_contract_verwijder IS NULL
|
||
AND cnt_contract_nummer_intern =
|
||
c.cnt_contract_nummer_intern)) c,
|
||
alg_ruimte r,
|
||
(SELECT *
|
||
FROM alg_onrgoedkenmerk
|
||
WHERE alg_onrgoedkenmerk_verwijder IS NULL
|
||
AND alg_kenmerk_key = 1002) pc,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames pf,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerklink_verwijder IS NULL
|
||
AND prs_kenmerk_key = 1022) adres,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerklink_verwijder IS NULL
|
||
AND prs_kenmerk_key = 1023) adres2,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerklink_verwijder IS NULL
|
||
AND prs_kenmerk_key = 1024) zip,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerklink_verwijder IS NULL
|
||
AND prs_kenmerk_key = 1025) plaats,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerklink_verwijder IS NULL
|
||
AND prs_kenmerk_key = 1026) land,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerklink_verwijder IS NULL
|
||
AND prs_kenmerk_key = 1180) email,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerklink_verwijder IS NULL
|
||
AND prs_kenmerk_key = 1140) iban
|
||
WHERE m.mld_stdmelding_key = 941
|
||
AND m.mld_melding_status IN (0, 2, 3, 4, 7, 99)
|
||
AND NOT EXISTS
|
||
(SELECT mld_melding_key
|
||
FROM mld_melding
|
||
WHERE mld_melding_status = 1
|
||
AND mld_melding_start_key = m.mld_melding_key)
|
||
AND c.cnt_contract_status = 0
|
||
AND c.cnt_contract_key = kamer.cnt_contract_key
|
||
AND fac.safe_to_number (kamer.cnt_kenmerkcontract_waarde(+)) =
|
||
m.mld_alg_onroerendgoed_keys
|
||
AND chkdatum.mld_melding_key(+) = m.mld_melding_key
|
||
AND chktijd.mld_melding_key(+) = m.mld_melding_key
|
||
AND r.alg_ruimte_key(+) = m.mld_alg_onroerendgoed_keys
|
||
AND pc.alg_onrgoed_key(+) = r.alg_ruimte_key
|
||
AND student.cnt_contract_key(+) = kamer.cnt_contract_key
|
||
AND p.prs_perslid_key(+) =
|
||
fac.safe_to_number (student.cnt_kenmerkcontract_waarde)
|
||
AND pf.prs_perslid_key(+) = p.prs_perslid_key
|
||
AND adres.prs_link_key(+) = p.prs_perslid_key
|
||
AND adres2.prs_link_key(+) = p.prs_perslid_key
|
||
AND zip.prs_link_key(+) = p.prs_perslid_key
|
||
AND plaats.prs_link_key(+) = p.prs_perslid_key
|
||
AND land.prs_link_key(+) = p.prs_perslid_key
|
||
AND email.prs_link_key(+) = p.prs_perslid_key
|
||
AND iban.prs_link_key(+) = p.prs_perslid_key
|
||
ORDER BY m.mld_melding_key, c.cnt_contract_key, p.prs_perslid_naam;
|
||
|
||
-- Voorbeeldrapportje CODA-export huurregistratie
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_vb_coda_export
|
||
AS
|
||
SELECT volgnr hide_f_volgnr, regel
|
||
FROM (SELECT 0 volgnr,
|
||
'Nummer;Adm.;Grootboek;Debiteur / Kostenplaats;Project;Bedrag;D/C;BTW;Regelomschrijving;Regeltype;Ext ref 1;Ext ref 2;Fact nummer'
|
||
regel
|
||
FROM DUAL
|
||
UNION ALL
|
||
SELECT fac_rapport_volgnr volgnr, fac_rapport_regel regel
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'HUUR_CODA')
|
||
ORDER BY volgnr;
|
||
|
||
-- Rapportage van logging huurexports
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_huur_exports
|
||
AS
|
||
SELECT imp_log_applicatie fclt_f_export,
|
||
TO_CHAR (imp_log_datum, 'YYYY-MM-DD HH24:MI') fclt_f_datum,
|
||
imp_log_status fclt_f_status,
|
||
imp_log_omschrijving omschrijving,
|
||
imp_log_hint hint
|
||
FROM imp_log
|
||
WHERE imp_log_applicatie IN ('T_HUUR_CODA', 'HUUR_CODA', 'HUUR_MUTATIES');
|
||
|
||
|
||
------- WERKPLEKDOORBELASTING --------------------------------------------------
|
||
-- View en rapportages werkplekdoorbelasting
|
||
-- Personen kunnen voor meerdere afdelingen (kostenplaatsen) werken.
|
||
-- Deze afdelingen en FTE per afdeling zijn in flexkenmerken bij personen geregistreerd
|
||
-- Kosten per werkplek per afdeling per persoon = FTE * m2 * tarief ruimtesoort
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_werkplekken
|
||
AS
|
||
SELECT wpg.*,
|
||
COALESCE (fac.safe_to_number (fte.prs_kenmerklink_waarde), 1) fte
|
||
FROM (SELECT p.prs_perslid_key,
|
||
p.prs_perslid_nr,
|
||
pf.prs_perslid_naam_full,
|
||
kl.prs_kenmerk_key,
|
||
rb.bez_totaal,
|
||
wg.alg_ruimte_bruto_vloeropp
|
||
* pw.prs_perslidwerkplek_bezetting
|
||
/ rb.bez_totaal
|
||
wpopp,
|
||
wg.alg_ruimte_bruto_vloeropp,
|
||
wg.alg_gebouw_upper,
|
||
wg.alg_verdieping_code,
|
||
wg.alg_ruimte_key,
|
||
wg.alg_ruimte_nr,
|
||
wg.alg_ruimte_aanduiding,
|
||
sr.alg_srtruimte_prijs,
|
||
pw.prs_perslidwerkplek_bezetting,
|
||
kpn.prs_kostenplaats_nr,
|
||
pf2.prs_perslid_naam_full budgethouder,
|
||
kpg.prs_kostenplaatsgrp_oms,
|
||
sr.alg_srtruimte_prijs * wg.alg_ruimte_bruto_vloeropp
|
||
ruimte_prijs,
|
||
sr.alg_srtruimte_prijs
|
||
* wg.alg_ruimte_bruto_vloeropp
|
||
* pw.prs_perslidwerkplek_bezetting
|
||
/ rb.bez_totaal
|
||
wp_prijs
|
||
FROM prs_perslid p,
|
||
prs_v_perslid_fullnames pf,
|
||
prs_v_perslid_fullnames pf2,
|
||
prs_perslidwerkplek pw,
|
||
prs_v_werkplek_gegevens wg,
|
||
( SELECT alg_ruimte_key,
|
||
SUM (prs_perslidwerkplek_bezetting) bez_totaal
|
||
FROM prs_v_werkplek_gegevens wg,
|
||
prs_perslidwerkplek pw
|
||
WHERE pw.prs_werkplek_key = wg.prs_werkplek_key
|
||
GROUP BY alg_ruimte_key, alg_ruimte_bruto_vloeropp) rb,
|
||
alg_ruimte r,
|
||
alg_srtruimte sr,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key IN (1061, 1063, 1065, 1067)
|
||
AND prs_kenmerklink_verwijder IS NULL) kl,
|
||
prs_kostenplaats kpn,
|
||
prs_kostenplaatsgrp kpg
|
||
WHERE p.prs_perslid_naam NOT LIKE 'INACTIEF%'
|
||
AND pf.prs_perslid_key = p.prs_perslid_key
|
||
AND kpn.prs_perslid_key = pf2.prs_perslid_key(+)
|
||
AND kpn.prs_kostenplaatsgrp_key =
|
||
kpg.prs_kostenplaatsgrp_key(+)
|
||
AND pw.prs_perslid_key(+) = p.prs_perslid_key
|
||
AND wg.prs_werkplek_key(+) = pw.prs_werkplek_key
|
||
AND rb.alg_ruimte_key(+) = wg.alg_ruimte_key
|
||
AND r.alg_ruimte_key(+) = wg.alg_ruimte_key
|
||
AND r.alg_srtruimte_key NOT IN (56, 43, 58, 39, 121)
|
||
AND sr.alg_srtruimte_key(+) = r.alg_srtruimte_key
|
||
AND kl.prs_link_key(+) = p.prs_perslid_key
|
||
AND kpn.prs_kostenplaats_key(+) =
|
||
fac.safe_to_number (kl.prs_kenmerklink_waarde))
|
||
wpg
|
||
LEFT OUTER JOIN
|
||
(SELECT * FROM prs_kenmerklink) fte
|
||
ON fte.prs_link_key = wpg.prs_perslid_key
|
||
AND fte.prs_kenmerk_key =
|
||
DECODE (wpg.prs_kenmerk_key,
|
||
1061, 1062,
|
||
1063, 1064,
|
||
1065, 1066,
|
||
1067, 1068);
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_werkplekken
|
||
AS
|
||
SELECT prs_perslid_nr || prs_kostenplaats_nr hide_f_sort,
|
||
prs_perslid_nr fclt_f_personeelsnummer,
|
||
prs_perslid_naam_full fclt_x_naam,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("appl/prs/prs_perslid.asp?prs_key='
|
||
|| w1.prs_perslid_key
|
||
|| '")''>'
|
||
|| HTF.escape_sc (prs_perslid_naam_full)
|
||
|| '</a>'
|
||
html_naam,
|
||
prs_kostenplaats_nr fclt_f_kostenplaats,
|
||
budgethouder fclt_f_budgethouder,
|
||
prs_kostenplaatsgrp_oms fclt_f_kostenplaatsgroep,
|
||
alg_gebouw_upper fclt_f_gebouw,
|
||
alg_verdieping_code fclt_f_verdieping,
|
||
alg_ruimte_aanduiding fclt_x_ruimte,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("appl/ALG/alg_ruimte.asp?key='
|
||
|| alg_ruimte_key
|
||
|| '")''>'
|
||
|| HTF.escape_sc (alg_ruimte_nr)
|
||
|| '</a>'
|
||
html_ruimte,
|
||
alg_ruimte_bruto_vloeropp ruimte_m2,
|
||
prs_perslidwerkplek_bezetting BEZETTINGSPERC,
|
||
ROUND (DECODE (totaal, NULL, wpopp * fte, wpopp * (fte / totaal)),
|
||
2)
|
||
m2_kostenplaats,
|
||
wp_prijs prijs_werkplek,
|
||
COALESCE (totaal, 1) fte_totaal,
|
||
fte fte_kostenplaats,
|
||
alg_srtruimte_prijs prijs_pm2_pmaand,
|
||
ROUND (
|
||
DECODE (totaal, NULL, wp_prijs * fte, wp_prijs * (fte / totaal)),
|
||
2)
|
||
prijs
|
||
FROM nybu_v_werkplekken w1,
|
||
( SELECT prs_link_key prs_perslid_key,
|
||
SUM(COALESCE (fac.safe_to_number (prs_kenmerklink_waarde),
|
||
0))
|
||
totaal
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key IN (1062, 1064, 1066, 1068)
|
||
AND prs_kenmerklink_waarde IS NOT NULL
|
||
AND fac.safe_to_number (prs_kenmerklink_waarde) > 0
|
||
GROUP BY prs_link_key) w2
|
||
WHERE w1.prs_perslid_key = w2.prs_perslid_key(+);
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_werkplekken_totaal
|
||
AS
|
||
SELECT fclt_f_kostenplaats kostenplaats, ROUND (SUM (prijs), 2) bedrag
|
||
FROM nybu_v_rap_werkplekken
|
||
GROUP BY fclt_f_kostenplaats;
|
||
|
||
------- IMPORT DEELTIJDPERCENTAGES MEDEWERKERS ---------------------------------
|
||
|
||
CREATE OR REPLACE PROCEDURE nybu_import_kpnprs (p_import_key IN NUMBER)
|
||
IS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
c_headerline VARCHAR (1000)
|
||
:= 'Pers.nr.;Kostenpl;Naam samengesteld;Kostendr;Oms functie';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_header VARCHAR2 (1000);
|
||
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_kostenplaats_nr VARCHAR2 (256);
|
||
v_prs_perslid_naamfull VARCHAR2 (256);
|
||
v_prs_project_nr VARCHAR2 (256);
|
||
v_prs_srtperslid_oms VARCHAR2 (256);
|
||
v_fte VARCHAR2 (256);
|
||
v_fte_num NUMBER (6, 4);
|
||
|
||
v_last_perslid_nr VARCHAR2 (256);
|
||
v_last_perslid_naamfull VARCHAR2 (256);
|
||
v_dummy VARCHAR2 (256);
|
||
v_regel NUMBER (2);
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM nybu_imp_kpnprs;
|
||
|
||
COMMIT;
|
||
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
v_regel := 1;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_header := v_newline;
|
||
v_aanduiding := '';
|
||
v_errorhint := 'Fout bij opvragen te importeren rij';
|
||
v_ongeldig := 0;
|
||
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr); -- Pers.nr.
|
||
fac.imp_getfield (v_newline,
|
||
c_fielddelimitor,
|
||
v_prs_kostenplaats_nr); -- Kostenpl
|
||
fac.imp_getfield (v_newline,
|
||
c_fielddelimitor,
|
||
v_prs_perslid_naamfull); -- Naam samengesteld
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_project_nr); -- Kostendr
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_srtperslid_oms); -- Oms functie
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy); -- %FTE
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_fte); -- % LV * %FTE
|
||
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_prs_perslid_nr
|
||
|| '|'
|
||
|| v_prs_perslid_naamfull
|
||
|| '|'
|
||
|| v_prs_kostenplaats_nr
|
||
|| '/'
|
||
|| v_prs_project_nr
|
||
|| '] ';
|
||
|
||
-- 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_header) LIKE UPPER (c_headerline || '%')
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
-- Lege regels aan het einde van het importbestand negeren
|
||
IF (v_prs_perslid_nr IS NULL AND v_prs_perslid_naamfull IS NULL)
|
||
THEN
|
||
CONTINUE;
|
||
END IF;
|
||
|
||
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
|
||
-- Niet iedere regel bevat het personeelsnummer. Dan het laatste hergebruiken.
|
||
IF v_prs_perslid_nr IS NULL
|
||
THEN
|
||
IF (v_prs_perslid_naamfull = v_last_perslid_naamfull)
|
||
THEN
|
||
v_prs_perslid_nr := v_last_perslid_nr;
|
||
-- Extra regel bij zelfde persoon
|
||
v_regel := v_regel + 1;
|
||
ELSE
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Personeelsnummer ontbreekt',
|
||
'Eerste regel van persoon moet personeelsnummer bevatten');
|
||
END IF;
|
||
ELSE
|
||
-- Nieuwe persoon; dus eerste regel
|
||
v_regel := 1;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Bewaar personeelsnummer voor volgende regel (personen die voor meerdere
|
||
-- P-nummers werken, komen vaker voor in het bestand, maar alleen de eerste
|
||
-- regel bevat het personeelsnummer)
|
||
v_last_perslid_nr := v_prs_perslid_nr;
|
||
v_last_perslid_naamfull := v_prs_perslid_naamfull;
|
||
|
||
v_errorhint := 'Ongeldige kostenplaatscode';
|
||
v_prs_kostenplaats_nr := TRIM (v_prs_kostenplaats_nr);
|
||
|
||
IF (v_prs_kostenplaats_nr IS NULL)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Kostenplaatscode ontbreekt',
|
||
'Verwerken zal fout opleveren');
|
||
ELSIF LENGTH (v_prs_kostenplaats_nr) > 30
|
||
THEN
|
||
v_prs_kostenplaats_nr := SUBSTR (v_prs_kostenplaats_nr, 1, 30);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Kostenplaatscode te lang',
|
||
'Kostenplaatscode wordt afgebroken tot ['
|
||
|| v_prs_kostenplaats_nr
|
||
|| ']');
|
||
END IF;
|
||
|
||
v_errorhint := 'Ongeldig projectnummer';
|
||
v_prs_project_nr := TRIM (v_prs_project_nr);
|
||
|
||
IF (v_prs_project_nr IS NULL)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Projectnummer ontbreekt',
|
||
'Verwerken zal fout opleveren');
|
||
ELSIF LENGTH (v_prs_project_nr) > 30
|
||
THEN
|
||
v_prs_project_nr := SUBSTR (v_prs_project_nr, 1, 30);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Projectnummer te lang',
|
||
'Projectnummer wordt afgebroken tot ['
|
||
|| v_prs_project_nr
|
||
|| ']');
|
||
END IF;
|
||
|
||
v_errorhint := 'Functieomschrijving te lang';
|
||
v_prs_srtperslid_oms := TRIM (v_prs_srtperslid_oms);
|
||
|
||
IF LENGTH (v_prs_srtperslid_oms) > 60
|
||
THEN
|
||
v_prs_srtperslid_oms := SUBSTR (v_prs_srtperslid_oms, 1, 60);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Functieomschrijving wordt afgebroken tot ['
|
||
|| v_prs_srtperslid_oms
|
||
|| ']');
|
||
END IF;
|
||
|
||
v_errorhint := 'Deeltijdpercentage ongeldig';
|
||
v_fte_num := fac.safe_to_number (TRIM (REPLACE (v_fte, ',', '.')));
|
||
|
||
IF (v_fte_num IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errorhint,
|
||
'Regel wordt overgeslagen (waarde: '
|
||
|| v_fte_num
|
||
|| '/'
|
||
|| v_fte
|
||
|| ')');
|
||
-- Percentage 0 betekent nul-urencontract. Inlezen als 0,01, zodat wel wordt doorbelast.
|
||
-- ( dergelijke personen werken maar voor <20><>n afdeling en 0,01 / 0,01 = 1,
|
||
-- dus werkplek wordt dan volledig doorbelast)
|
||
ELSIF (v_fte_num = 0)
|
||
THEN
|
||
v_fte_num := 0.01;
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
v_aanduiding || 'Deeltijdpercentage is nul',
|
||
'Wordt ingelezen als 0,01%');
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errorhint :=
|
||
'Fout bij toevoegen regel aan importtabel NYBU_IMP_KPNPRS';
|
||
|
||
INSERT INTO nybu_imp_kpnprs (fac_import_key,
|
||
prs_perslid_nr,
|
||
prs_perslid_naamfull,
|
||
prs_kostenplaats_nr,
|
||
prs_project_nr,
|
||
prs_srtperslid_omschrijving,
|
||
fte,
|
||
regel)
|
||
VALUES (p_import_key,
|
||
v_prs_perslid_nr,
|
||
v_prs_perslid_naamfull,
|
||
v_prs_kostenplaats_nr,
|
||
v_prs_project_nr,
|
||
v_prs_srtperslid_oms,
|
||
v_fte_num,
|
||
v_regel);
|
||
|
||
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; -- header_valid
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = 1)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Aantal ingelezen regels: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Aantal ongeldige importregels: '
|
||
|| TO_CHAR (v_count_tot - v_count_import),
|
||
'');
|
||
ELSE
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
'Ongeldige headerregel!',
|
||
SUBSTR ('Moet zijn: "' || c_headerline || '..."', 1, 1000));
|
||
END IF;
|
||
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 nybu_import_kpnprs;
|
||
/
|
||
|
||
-- prs_kenmerk Account 1 1061
|
||
-- prs_kenmerk FTE 1 1062
|
||
-- prs_kenmerk Account 2 1063
|
||
-- prs_kenmerk FTE 2 1064
|
||
-- prs_kenmerk Account 3 1065
|
||
-- prs_kenmerk FTE 3 1066
|
||
-- prs_kenmerk Account 4 1067
|
||
-- prs_kenmerk FTE 4 1068
|
||
|
||
CREATE OR REPLACE PROCEDURE nybu_update_kpnprs (p_import_key IN NUMBER)
|
||
IS
|
||
-- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een nummer
|
||
c_max_delta_percentage NUMBER (10) := 20;
|
||
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_tot NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
--
|
||
v_perslid_key NUMBER (10);
|
||
v_project_key NUMBER (10);
|
||
v_flex_account_key NUMBER (10);
|
||
v_flex_fte_key NUMBER (10);
|
||
v_account_old prs_kostenplaats.prs_kostenplaats_nr%TYPE;
|
||
v_fte_old nybu_imp_kpnprs.fte%TYPE;
|
||
|
||
-- Eerst checken: staat er projectnummer-kostenplaats-combinaties in de import
|
||
-- die niet in FACILITOR bestaan?
|
||
CURSOR c_check_kpn
|
||
IS
|
||
SELECT prs_perslid_nr,
|
||
prs_perslid_naamfull,
|
||
prs_project_nr,
|
||
prs_kostenplaats_nr
|
||
FROM nybu_imp_kpnprs i
|
||
WHERE NOT EXISTS
|
||
(SELECT ak.prs_kostenplaats_nr, kg.prs_kostenplaatsgrp_nr
|
||
FROM prs_v_aanwezigkostenplaats ak, prs_kostenplaatsgrp kg
|
||
WHERE kg.prs_kostenplaatsgrp_key =
|
||
ak.prs_kostenplaatsgrp_key
|
||
AND ak.prs_kostenplaats_nr = i.prs_project_nr
|
||
AND kg.prs_kostenplaatsgrp_nr = i.prs_kostenplaats_nr);
|
||
|
||
-- Ook checken: staan er personeelsnummers in de import die niet in FACILITOR bestaan,
|
||
-- of die vaker voorkomen in FACILITOR?
|
||
CURSOR c_check_prsnr
|
||
IS
|
||
SELECT DISTINCT i.prs_perslid_nr, i.prs_perslid_naamfull
|
||
FROM nybu_imp_kpnprs i
|
||
WHERE prs_perslid_nr NOT IN ( SELECT prs_perslid_nr
|
||
FROM prs_v_aanwezigperslid
|
||
GROUP BY prs_perslid_nr
|
||
HAVING COUNT ( * ) = 1);
|
||
|
||
-- Verwijderen: deeltijdpercentages van personen met personeelsnummer in
|
||
-- FACILITOR die niet (meer) voorkomen in de import.
|
||
CURSOR c_del
|
||
IS
|
||
SELECT p.prs_perslid_nr,
|
||
pf.prs_perslid_naam_full,
|
||
k.prs_kostenplaats_nr prs_project_nr,
|
||
fac.safe_to_number (f.prs_kenmerklink_waarde) fte,
|
||
p.prs_perslid_key,
|
||
a.prs_kenmerk_key accnt_key,
|
||
f.prs_kenmerk_key fte_key
|
||
FROM prs_kenmerklink a,
|
||
prs_kenmerklink f,
|
||
prs_kostenplaats k,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames pf
|
||
WHERE a.prs_kenmerk_key IN (1061, 1063, 1065, 1067)
|
||
AND f.prs_kenmerk_key =
|
||
DECODE (a.prs_kenmerk_key,
|
||
1061, 1062,
|
||
1063, 1064,
|
||
1065, 1066,
|
||
1067, 1068)
|
||
AND a.prs_kenmerklink_verwijder IS NULL
|
||
AND f.prs_kenmerklink_verwijder IS NULL
|
||
AND f.prs_link_key = a.prs_link_key
|
||
AND p.prs_perslid_key = a.prs_link_key
|
||
AND p.prs_perslid_nr IS NOT NULL
|
||
AND pf.prs_perslid_key = a.prs_link_key
|
||
AND k.prs_kostenplaats_key =
|
||
fac.safe_to_number (a.prs_kenmerklink_waarde)
|
||
AND NOT EXISTS (SELECT *
|
||
FROM nybu_imp_kpnprs
|
||
WHERE prs_perslid_nr = p.prs_perslid_nr)
|
||
ORDER BY p.prs_perslid_nr, k.prs_kostenplaats_nr;
|
||
|
||
-- Deeltijdpercentages (max 4) per medewerker
|
||
-- Gegeven alle unieke personen in het bestand, haal alle deelpercentages met
|
||
-- projectnummer en kostenplaatsnummer op.
|
||
CURSOR c_accounts
|
||
IS
|
||
SELECT prs_perslid_nr,
|
||
prs_perslid_naamfull,
|
||
prs_project_nr,
|
||
prs_kostenplaats_nr,
|
||
fte,
|
||
regel
|
||
FROM (WITH pers
|
||
AS (SELECT DISTINCT
|
||
prs_perslid_nr, prs_perslid_naamfull
|
||
FROM nybu_imp_kpnprs)
|
||
SELECT i.prs_perslid_nr,
|
||
i.prs_perslid_naamfull,
|
||
i.prs_project_nr,
|
||
i.prs_kostenplaats_nr,
|
||
i.fte,
|
||
1 regel
|
||
FROM pers p, (SELECT *
|
||
FROM nybu_imp_kpnprs
|
||
WHERE regel = 1) i
|
||
WHERE i.prs_perslid_nr(+) = p.prs_perslid_nr
|
||
AND i.prs_perslid_naamfull(+) = p.prs_perslid_naamfull
|
||
UNION ALL
|
||
SELECT p.prs_perslid_nr,
|
||
p.prs_perslid_naamfull,
|
||
i.prs_project_nr,
|
||
i.prs_kostenplaats_nr,
|
||
i.fte,
|
||
2 regel
|
||
FROM pers p, (SELECT *
|
||
FROM nybu_imp_kpnprs
|
||
WHERE regel = 2) i
|
||
WHERE i.prs_perslid_nr(+) = p.prs_perslid_nr
|
||
AND i.prs_perslid_naamfull(+) = p.prs_perslid_naamfull
|
||
UNION ALL
|
||
SELECT p.prs_perslid_nr,
|
||
p.prs_perslid_naamfull,
|
||
i.prs_project_nr,
|
||
i.prs_kostenplaats_nr,
|
||
i.fte,
|
||
3 regel
|
||
FROM pers p, (SELECT *
|
||
FROM nybu_imp_kpnprs
|
||
WHERE regel = 3) i
|
||
WHERE i.prs_perslid_nr(+) = p.prs_perslid_nr
|
||
AND i.prs_perslid_naamfull(+) = p.prs_perslid_naamfull
|
||
UNION ALL
|
||
SELECT p.prs_perslid_nr,
|
||
p.prs_perslid_naamfull,
|
||
i.prs_project_nr,
|
||
i.prs_kostenplaats_nr,
|
||
i.fte,
|
||
4 regel
|
||
FROM pers p, (SELECT *
|
||
FROM nybu_imp_kpnprs
|
||
WHERE regel = 4) i
|
||
WHERE i.prs_perslid_nr(+) = p.prs_perslid_nr
|
||
AND i.prs_perslid_naamfull(+) = p.prs_perslid_naamfull)
|
||
ORDER BY prs_perslid_nr, prs_perslid_naamfull, regel;
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
-- Check of alle projectnummers/kostenplaatsen bestaan in FACILITOR
|
||
FOR rec IN c_check_kpn
|
||
LOOP
|
||
v_aanduiding :=
|
||
'[' || rec.prs_perslid_nr || '|' || rec.prs_perslid_naamfull || ']';
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
'Projectnr '
|
||
|| rec.prs_project_nr
|
||
|| ' bestaat niet! (binnen kostenplaats '
|
||
|| rec.prs_kostenplaats_nr
|
||
|| ')',
|
||
v_aanduiding);
|
||
v_count_error := v_count_error + 1;
|
||
END LOOP;
|
||
|
||
IF (v_count_error > 0)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
v_count_error
|
||
|| ' onbekende project-/kostenplaatsnummer(s) gevonden.',
|
||
'Import wordt afgebroken.');
|
||
END IF;
|
||
|
||
-- Check of alle personeelsnummers bestaan in FACILITOR
|
||
FOR rec IN c_check_prsnr
|
||
LOOP
|
||
v_aanduiding :=
|
||
'[' || rec.prs_perslid_nr || '|' || rec.prs_perslid_naamfull || ']';
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Personeelsnr niet gevonden!',
|
||
v_aanduiding);
|
||
v_count_error := v_count_error + 1;
|
||
END LOOP;
|
||
|
||
IF (v_count_error > 0)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
v_count_error || ' onbekende personeelsnummer(s) gevonden.',
|
||
'Import wordt afgebroken.');
|
||
END IF;
|
||
|
||
-- Alleen verder gaan als alle stamgegevens (kpn's, persnr's) matchen
|
||
IF (v_count_error = 0)
|
||
THEN
|
||
-- Verwijder alle niet meer aanwezige deeltijdpercentages
|
||
-- D.i. alle combinaties van een persoon en een projectnummer in FACILITOR
|
||
-- die niet in het importbestand voorkomen.
|
||
FOR rec IN c_del
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding :=
|
||
'['
|
||
|| rec.prs_perslid_nr
|
||
|| '|'
|
||
|| rec.prs_perslid_naam_full
|
||
|| '] - ';
|
||
|
||
v_errorhint :=
|
||
'Fout bij verwijderen kenmerk Account'
|
||
|| (rec.accnt_key - 1059) / 2;
|
||
prs.upsertkenmerk (rec.accnt_key, rec.prs_perslid_key, NULL);
|
||
|
||
v_errorhint :=
|
||
'Fout bij verwijderen kenmerk FTE' || (rec.fte_key - 1060) / 2;
|
||
prs.upsertkenmerk (rec.fte_key, rec.prs_perslid_key, NULL);
|
||
|
||
DBMS_OUTPUT.PUT_LINE( v_aanduiding
|
||
|| ': '
|
||
|| 'Deeltijdpercentage '
|
||
|| rec.prs_project_nr
|
||
|| ' ('
|
||
|| TO_CHAR (rec.fte)
|
||
|| ') verwijderd');
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Deeltijdpercentage '
|
||
|| rec.prs_project_nr
|
||
|| ' ('
|
||
|| TO_CHAR (rec.fte)
|
||
|| ') verwijderd',
|
||
v_aanduiding || 'niet gevonden in importbestand');
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Persoon niet gevonden',
|
||
v_errorhint);
|
||
WHEN TOO_MANY_ROWS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding
|
||
|| 'Meerdere personen met hetzelfde personeelsnummer',
|
||
v_errorhint);
|
||
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;
|
||
|
||
FOR rec IN c_accounts
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding :=
|
||
'['
|
||
|| rec.prs_perslid_nr
|
||
|| '|'
|
||
|| rec.prs_perslid_naamfull
|
||
|| '] - ['
|
||
|| rec.prs_project_nr
|
||
|| '/'
|
||
|| rec.prs_kostenplaats_nr
|
||
|| ']';
|
||
|
||
-- Vind persoon met personeelsnummer. Niet of meermalen gevonden? Next!
|
||
v_errorhint := 'Fout bij bepalen persoon; wordt overgeslagen.';
|
||
|
||
SELECT ap.prs_perslid_key
|
||
INTO v_perslid_key
|
||
FROM prs_v_aanwezigperslid ap
|
||
WHERE UPPER (ap.prs_perslid_nr) = UPPER (rec.prs_perslid_nr);
|
||
|
||
-- Als een eenduidig persoon is gevonden, dan kunnen we verder.
|
||
-- Bepalen over welke flexkenmerken we het hebben
|
||
SELECT DECODE (rec.regel, 1, 1061, 2, 1063, 3, 1065, 4, 1067)
|
||
accnt,
|
||
DECODE (rec.regel, 1, 1062, 2, 1064, 3, 1066, 4, 1068) fte
|
||
INTO v_flex_account_key, v_flex_fte_key
|
||
FROM DUAL;
|
||
|
||
-- Als geen projnr/kpn/fte, dan was dit geen regel in het importbestand en
|
||
-- moeten alleen eventueel aanwezige kenmerken geleegd worden
|
||
IF ( rec.prs_project_nr IS NULL
|
||
AND rec.prs_kostenplaats_nr IS NULL
|
||
AND rec.fte IS NULL)
|
||
THEN
|
||
v_project_key := NULL;
|
||
ELSE
|
||
v_errorhint :=
|
||
'Fout bij bepalen project '
|
||
|| rec.prs_project_nr
|
||
|| ' binnen kostenplaats '
|
||
|| rec.prs_kostenplaats_nr;
|
||
|
||
SELECT proj.prs_kostenplaats_key
|
||
INTO v_project_key
|
||
FROM prs_kostenplaats proj, prs_kostenplaatsgrp kpn
|
||
WHERE proj.prs_kostenplaats_verwijder IS NULL
|
||
AND proj.prs_kostenplaats_upper =
|
||
UPPER (rec.prs_project_nr)
|
||
AND kpn.prs_kostenplaatsgrp_key =
|
||
proj.prs_kostenplaatsgrp_key
|
||
AND UPPER (kpn.prs_kostenplaatsgrp_nr) =
|
||
UPPER (rec.prs_kostenplaats_nr);
|
||
END IF;
|
||
|
||
-- Is er een gevuld kenmerk?
|
||
v_errorhint :=
|
||
'Fout bij bepalen deeltijdpercentage Account ' || rec.regel;
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key IN (v_flex_account_key, v_flex_fte_key)
|
||
AND prs_kenmerklink_verwijder IS NULL
|
||
AND prs_link_key = v_perslid_key;
|
||
|
||
IF (v_count >= 2)
|
||
THEN
|
||
v_errorhint :=
|
||
'Fout bij ophalen deeltijdpercentage Account ' || rec.regel;
|
||
|
||
SELECT k.prs_kostenplaats_nr,
|
||
fac.safe_to_number (fte.prs_kenmerklink_waarde)
|
||
INTO v_account_old, v_fte_old
|
||
FROM prs_kostenplaats k,
|
||
prs_kenmerklink accnt,
|
||
prs_kenmerklink fte
|
||
WHERE accnt.prs_kenmerk_key = v_flex_account_key
|
||
AND accnt.prs_kenmerklink_verwijder IS NULL
|
||
AND accnt.prs_link_key = v_perslid_key
|
||
AND fte.prs_kenmerk_key = v_flex_fte_key
|
||
AND fte.prs_kenmerklink_verwijder IS NULL
|
||
AND fte.prs_link_key = v_perslid_key
|
||
AND k.prs_kostenplaats_key =
|
||
fac.safe_to_number (accnt.prs_kenmerklink_waarde);
|
||
ELSE
|
||
v_account_old := NULL;
|
||
v_fte_old := NULL;
|
||
END IF;
|
||
|
||
-- Als de importwaarden afwijken van de huidige, dan bijwerken
|
||
IF (COALESCE (v_account_old, 'apekool') !=
|
||
COALESCE (rec.prs_project_nr, 'apekool')
|
||
OR COALESCE (v_fte_old, -1) != COALESCE (rec.fte, -1))
|
||
THEN
|
||
v_errorhint :=
|
||
'Fout bij aanmaken/bijwerken/verwijderen kenmerk Account '
|
||
|| rec.regel;
|
||
prs.upsertkenmerk (v_flex_account_key,
|
||
v_perslid_key,
|
||
TO_CHAR (v_project_key));
|
||
|
||
v_errorhint :=
|
||
'Fout bij aanmaken/bijwerken/verwijderen kenmerk FTE '
|
||
|| rec.regel;
|
||
prs.upsertkenmerk (v_flex_fte_key,
|
||
v_perslid_key,
|
||
TO_CHAR (rec.fte));
|
||
|
||
IF (v_project_key IS NOT NULL)
|
||
THEN
|
||
DBMS_OUTPUT.PUT_LINE( v_aanduiding
|
||
|| ': '
|
||
|| 'Deeltijdpercentage '
|
||
|| rec.prs_project_nr
|
||
|| ' = '
|
||
|| TO_CHAR (rec.fte)
|
||
|| ' (was '
|
||
|| v_account_old
|
||
|| ' = '
|
||
|| v_fte_old
|
||
|| ')');
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Deeltijdpercentage '
|
||
|| rec.prs_project_nr
|
||
|| ' = '
|
||
|| TO_CHAR (rec.fte)
|
||
|| ' (was '
|
||
|| v_account_old
|
||
|| ' = '
|
||
|| v_fte_old
|
||
|| ')',
|
||
v_aanduiding);
|
||
ELSE
|
||
DBMS_OUTPUT.PUT_LINE( v_aanduiding
|
||
|| ': '
|
||
|| 'Deeltijdpercentage '
|
||
|| v_account_old
|
||
|| ' verwijderd'
|
||
|| ' (was '
|
||
|| v_fte_old
|
||
|| ')');
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Deeltijdpercentage '
|
||
|| v_account_old
|
||
|| ' verwijderd'
|
||
|| ' (was '
|
||
|| v_fte_old
|
||
|| ')',
|
||
v_aanduiding);
|
||
END IF;
|
||
END IF;
|
||
|
||
v_count := v_count + 1;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Geen data gevonden',
|
||
v_errorhint);
|
||
WHEN TOO_MANY_ROWS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Meerdere records gevonden',
|
||
v_errorhint);
|
||
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',
|
||
'Verwerkte regels zonder foutmelding: '
|
||
|| TO_CHAR (v_count_tot - v_count_error),
|
||
'');
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Verwerkte regels met foutmelding: ' || TO_CHAR (v_count_error),
|
||
'');
|
||
END IF;
|
||
--COMMIT;
|
||
END nybu_update_kpnprs;
|
||
/
|
||
|
||
|
||
------- KOPPELING SENTIDO (Reserveringen) --------------------------------------
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_res_sentido
|
||
AS
|
||
SELECT TO_CHAR (van, 'YYYY-MM-DD HH24:MI')
|
||
|| ' '
|
||
|| TO_CHAR (tot, 'HH24:MI')
|
||
srt,
|
||
res_nr,
|
||
res_ruimte_nr,
|
||
oms,
|
||
TO_CHAR (van, 'DD/MM/YYYY HH24:MI') van,
|
||
TO_CHAR (tot, 'DD/MM/YYYY HH24:MI') tot
|
||
FROM (WITH r
|
||
AS -- 1<> Show on info screen
|
||
(SELECT rr.res_rsv_ruimte_key,
|
||
rr.res_reservering_key res_nr,
|
||
r.res_ruimte_nr,
|
||
COALESCE (
|
||
alt_desc.res_kenmerkreservering_waarde,
|
||
rr.res_rsv_ruimte_omschrijving)
|
||
oms,
|
||
rr.res_rsv_ruimte_van van,
|
||
alt_start.res_kenmerkreservering_waarde alt_van,
|
||
rr.res_rsv_ruimte_tot tot,
|
||
alt_end.res_kenmerkreservering_waarde alt_tot
|
||
FROM res_rsv_ruimte rr,
|
||
res_ruimte_opstelling ro,
|
||
res_ruimte r,
|
||
res_kenmerkwaarde kw,
|
||
res_kenmerk k,
|
||
-- 2<> Alt. start time
|
||
(SELECT kw.*
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 2
|
||
AND kw.res_kenmerkreservering_waarde IS NOT NULL)
|
||
alt_start,
|
||
-- 3<> Alt. end time
|
||
(SELECT kw.*
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 3
|
||
AND kw.res_kenmerkreservering_waarde IS NOT NULL)
|
||
alt_end,
|
||
-- 4<> Alt. description
|
||
(SELECT kw.*
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 4
|
||
AND kw.res_kenmerkreservering_waarde IS NOT NULL)
|
||
alt_desc
|
||
WHERE kw.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND kw.res_kenmerkreservering_waarde IS NOT NULL
|
||
AND kw.res_kenmerkreservering_waarde = '1'
|
||
AND k.res_kenmerk_key = kw.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 1
|
||
AND ro.res_ruimte_opstel_key =
|
||
rr.res_ruimte_opstel_key
|
||
AND r.res_ruimte_key = ro.res_ruimte_key
|
||
AND rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rr.res_status_fo_key NOT IN (3, 4)
|
||
AND TRUNC (rr.res_rsv_ruimte_van) BETWEEN TRUNC(SYSDATE)
|
||
AND TRUNC(SYSDATE
|
||
+ 3)
|
||
AND alt_desc.res_rsv_ruimte_key(+) =
|
||
rr.res_rsv_ruimte_key
|
||
AND alt_start.res_rsv_ruimte_key(+) =
|
||
rr.res_rsv_ruimte_key
|
||
AND alt_end.res_rsv_ruimte_key(+) =
|
||
rr.res_rsv_ruimte_key)
|
||
SELECT r.res_nr,
|
||
r.res_ruimte_nr,
|
||
r.oms,
|
||
DECODE (
|
||
r.alt_van,
|
||
NULL,
|
||
r.van,
|
||
TO_DATE (TO_CHAR (r.van, 'DD/MM/YYYY ') || r.alt_van,
|
||
'DD/MM/YYYY HH24:MI'))
|
||
van,
|
||
DECODE (
|
||
r.alt_tot,
|
||
NULL,
|
||
r.tot,
|
||
TO_DATE (TO_CHAR (r.tot, 'DD/MM/YYYY ') || r.alt_tot,
|
||
'DD/MM/YYYY HH24:MI'))
|
||
tot
|
||
FROM r
|
||
UNION ALL
|
||
SELECT r.res_nr,
|
||
r.res_ruimte_nr,
|
||
ext1_desc.res_kenmerkreservering_waarde oms,
|
||
TO_DATE (
|
||
TO_CHAR (r.van, 'DD/MM/YYYY ')
|
||
|| ext1_start.res_kenmerkreservering_waarde,
|
||
'DD/MM/YYYY HH24:MI')
|
||
van,
|
||
TO_DATE (
|
||
TO_CHAR (r.tot, 'DD/MM/YYYY ')
|
||
|| ext1_end.res_kenmerkreservering_waarde,
|
||
'DD/MM/YYYY HH24:MI')
|
||
tot
|
||
FROM r,
|
||
-- 7<> Extra description 1
|
||
(SELECT kw.*
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 7
|
||
AND kw.res_kenmerkreservering_waarde IS NOT NULL)
|
||
ext1_desc,
|
||
-- 8<> Extra start time 1
|
||
(SELECT kw.*
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 8
|
||
AND kw.res_kenmerkreservering_waarde IS NOT NULL)
|
||
ext1_start,
|
||
-- 9<> Extra end time 1
|
||
(SELECT kw.*
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 9
|
||
AND kw.res_kenmerkreservering_waarde IS NOT NULL)
|
||
ext1_end
|
||
WHERE ext1_desc.res_rsv_ruimte_key = r.res_rsv_ruimte_key
|
||
AND ext1_start.res_rsv_ruimte_key = r.res_rsv_ruimte_key
|
||
AND ext1_end.res_rsv_ruimte_key = r.res_rsv_ruimte_key
|
||
UNION ALL
|
||
SELECT r.res_nr,
|
||
r.res_ruimte_nr,
|
||
ext2_desc.res_kenmerkreservering_waarde oms,
|
||
TO_DATE (
|
||
TO_CHAR (r.van, 'DD/MM/YYYY ')
|
||
|| ext2_start.res_kenmerkreservering_waarde,
|
||
'DD/MM/YYYY HH24:MI')
|
||
van,
|
||
TO_DATE (
|
||
TO_CHAR (r.tot, 'DD/MM/YYYY ')
|
||
|| ext2_end.res_kenmerkreservering_waarde,
|
||
'DD/MM/YYYY HH24:MI')
|
||
tot
|
||
FROM r,
|
||
--10<EFBFBD> Extra description 2
|
||
(SELECT kw.*
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 10
|
||
AND kw.res_kenmerkreservering_waarde IS NOT NULL)
|
||
ext2_desc,
|
||
--11<EFBFBD> Extra start time 2
|
||
(SELECT kw.*
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 11
|
||
AND kw.res_kenmerkreservering_waarde IS NOT NULL)
|
||
ext2_start,
|
||
--12<EFBFBD> Extra end time 2
|
||
(SELECT kw.*
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 12
|
||
AND kw.res_kenmerkreservering_waarde IS NOT NULL)
|
||
ext2_end
|
||
WHERE ext2_desc.res_rsv_ruimte_key = r.res_rsv_ruimte_key
|
||
AND ext2_start.res_rsv_ruimte_key = r.res_rsv_ruimte_key
|
||
AND ext2_end.res_rsv_ruimte_key = r.res_rsv_ruimte_key);
|
||
|
||
|
||
------- KOPPELING CODA (Reserveringen) -----------------------------------------
|
||
|
||
-- Externe reserveringen die moeten worden doorbelast
|
||
-- discipline 581 Verbruiksartikel Inhuur Voorzieningen
|
||
-- discipline 462 Verbruiksartikel Hotelkamers
|
||
-- res_srtkenmerk 202 Exportdatum
|
||
-- res_srtkenmerk 81 Company
|
||
-- fac_usrtab 42 CODA BTW-tarieven
|
||
-- NYBU#30023: deze view haalt nu ook reserveringen op met totaalprijs 0, omdat die
|
||
-- wel gecrediteerd kunnen worden (de export bepaalt per creditering of die in- of extern
|
||
-- is door 'm tegen de rsv_ruimte_keys in deze view te houden)
|
||
-- Facturatie is inclusief BTW.
|
||
-- Korting gaat alleen van rsv_ruimte af, omdat catering door Vermaat wordt gefactureerd.
|
||
-- Ruimteprijs is excl BTW, dus korting ook.
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_res_factuur_extern
|
||
AS
|
||
SELECT COALESCE (b.prs_bedrijf_naam, k.prs_kostenplaats_omschrijving)
|
||
klant,
|
||
xyz.res_rsv_ruimte_van,
|
||
TO_CHAR (xyz.res_rsv_ruimte_van, 'YYYYMM') periode,
|
||
xyz.prs_kostensoort_oms grootboek,
|
||
kg.prs_kostenplaatsgrp_key kostenplaats_key,
|
||
TRIM (SUBSTR (kg.prs_kostenplaatsgrp_oms, 1, 7)) kostenplaats,
|
||
b.prs_leverancier_nr deb_nr,
|
||
k.prs_kostenplaats_key proj_key,
|
||
k.prs_kostenplaats_nr proj,
|
||
xyz.btw,
|
||
xyz.prs_kostensoort_btw,
|
||
btwc.fac_usrdata_omschr btw_code,
|
||
xyz.res_reservering_key res_key,
|
||
xyz.res_rsv_ruimte_volgnr res_volgnr,
|
||
kref.res_kenmerkreservering_waarde referentie,
|
||
xyz.reservering,
|
||
xyz.res_rsv_ruimte_key,
|
||
DECODE (kref.res_kenmerkreservering_waarde,
|
||
NULL, '',
|
||
kref.res_kenmerkreservering_waarde || ' ')
|
||
|| xyz.res_rsv_ruimte_omschrijving
|
||
descr,
|
||
xyz.aantal,
|
||
xyz.omschrijving,
|
||
xyz.soort,
|
||
-- deelresprijs excl = zaal_excl + deel_excl + artikel_excl
|
||
-- = (zaal - korting)(excl) + deel(excl) + artikel(excl)
|
||
DECODE (xyz.prs_kostensoort_btw,
|
||
1, xyz.prijs / (1 + xyz.btw / 100),
|
||
xyz.prijs)
|
||
prijs_ex,
|
||
-- deelresprijs incl = zaal_incl + deel_incl + artikel_incl
|
||
-- = (zaal - korting)(incl) + deel(incl) + artikel(incl)
|
||
DECODE (xyz.prs_kostensoort_btw,
|
||
1, xyz.prijs,
|
||
xyz.prijs * (1 + xyz.btw / 100))
|
||
prijs_inc,
|
||
-- btw laag = ruimte_btw_laag + deel_btw_laag + artikel_btw_laag
|
||
-- = if(6%) artikel_btw (ruimte en deel zijn altijd 21%, maar dat gaat vanzelf goed)
|
||
DECODE (
|
||
xyz.btw,
|
||
6,
|
||
DECODE (xyz.prs_kostensoort_btw,
|
||
1, xyz.prijs / (100 + xyz.btw) * xyz.btw,
|
||
xyz.prijs / 100 * xyz.btw),
|
||
0)
|
||
btw_laag,
|
||
-- btw hoog = ruimte_btw + deel_btw_hoog + artikel_btw_hoog
|
||
-- = (zaal - korting)(excl) * 21% + if(21%) deel_btw + if(21%) artikel_btw
|
||
DECODE (
|
||
xyz.btw,
|
||
21,
|
||
DECODE (xyz.prs_kostensoort_btw,
|
||
1, xyz.prijs / (100 + xyz.btw) * xyz.btw,
|
||
xyz.prijs / 100 * xyz.btw),
|
||
0)
|
||
btw_hoog,
|
||
xyz.korting,
|
||
1 inex
|
||
FROM (SELECT 'ruimte' soort,
|
||
rr.*,
|
||
ks.prs_kostensoort_oms,
|
||
ks.prs_kostensoort_btw,
|
||
21 btw,
|
||
rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr
|
||
reservering,
|
||
1 aantal,
|
||
r.res_ruimte_nr omschrijving,
|
||
res.getruimteprijs (rr.res_rsv_ruimte_key)
|
||
- COALESCE (res_rsv_ruimte_korting, 0)
|
||
prijs,
|
||
COALESCE (res_rsv_ruimte_korting, 0) korting
|
||
FROM res_rsv_ruimte rr,
|
||
res_ruimte_opstelling ro,
|
||
res_ruimte r,
|
||
res_discipline di,
|
||
prs_kostensoort ks
|
||
WHERE ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
|
||
AND r.res_ruimte_key = ro.res_ruimte_key
|
||
AND di.ins_discipline_key = r.res_discipline_key
|
||
AND ks.prs_kostensoort_key(+) = di.prs_kostensoort_key
|
||
UNION ALL
|
||
SELECT 'artikel' soort,
|
||
rr.*,
|
||
ks.prs_kostensoort_oms,
|
||
ks.prs_kostensoort_btw,
|
||
COALESCE (a.res_artikel_btw, 0) btw,
|
||
rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr
|
||
reservering,
|
||
ra.res_rsv_artikel_aantal aantal,
|
||
a.res_artikel_omschrijving omschrijving,
|
||
res.getartikelprijs (ra.res_rsv_artikel_key) prijs,
|
||
0 korting
|
||
FROM res_rsv_ruimte rr,
|
||
res_rsv_artikel ra,
|
||
res_artikel a,
|
||
res_discipline di,
|
||
prs_kostensoort ks
|
||
WHERE ra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND res.getartikelprijs (ra.res_rsv_artikel_key) != 0
|
||
AND a.res_artikel_key = ra.res_artikel_key
|
||
AND di.ins_discipline_key = a.res_discipline_key
|
||
AND di.ins_discipline_key IN (581, 462)
|
||
AND ks.prs_kostensoort_key(+) = di.prs_kostensoort_key
|
||
UNION ALL
|
||
SELECT 'deel' soort,
|
||
rr.*,
|
||
ks.prs_kostensoort_oms,
|
||
ks.prs_kostensoort_btw,
|
||
21 btw,
|
||
rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr
|
||
reservering,
|
||
rd.res_rsv_deel_aantal aantal,
|
||
d.res_deel_omschrijving,
|
||
res.getdeelprijs (rd.res_rsv_deel_key) prijs,
|
||
0 korting
|
||
FROM res_rsv_ruimte rr,
|
||
res_rsv_deel rd,
|
||
res_deel d,
|
||
res_discipline di,
|
||
prs_kostensoort ks
|
||
WHERE rd.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND d.res_deel_key = rd.res_deel_key
|
||
AND res.getdeelprijs (rd.res_rsv_deel_key) != 0
|
||
AND di.ins_discipline_key = d.res_discipline_key
|
||
AND ks.prs_kostensoort_key(+) = di.prs_kostensoort_key) xyz,
|
||
prs_kostenplaats k,
|
||
prs_kostenplaatsgrp kg,
|
||
(SELECT kw.*
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
WHERE k.res_srtkenmerk_key = 121
|
||
AND kw.res_kenmerk_key = k.res_kenmerk_key
|
||
AND kw.res_kenmerkwaarde_verwijder IS NULL
|
||
AND k.res_kenmerk_verwijder IS NULL) kref,
|
||
(SELECT kw.*
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
WHERE k.res_srtkenmerk_key = 81
|
||
AND kw.res_kenmerk_key = k.res_kenmerk_key
|
||
AND kw.res_kenmerkwaarde_verwijder IS NULL
|
||
AND k.res_kenmerk_verwijder IS NULL) comp,
|
||
prs_bedrijf b,
|
||
(SELECT *
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 42) btwc
|
||
WHERE k.prs_kostenplaats_extern = 1
|
||
AND kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key
|
||
AND xyz.prs_kostenplaats_key = k.prs_kostenplaats_key
|
||
AND xyz.res_rsv_ruimte_dirtlevel = 0
|
||
AND kref.res_rsv_ruimte_key(+) = xyz.res_rsv_ruimte_key
|
||
AND comp.res_rsv_ruimte_key(+) = xyz.res_rsv_ruimte_key
|
||
AND b.prs_bedrijf_key(+) =
|
||
fac.safe_to_number (comp.res_kenmerkreservering_waarde)
|
||
AND fac.safe_to_number (btwc.fac_usrdata_code) = xyz.btw
|
||
AND ( (xyz.res_rsv_ruimte_verwijder IS NULL
|
||
AND xyz.res_status_bo_key = 5)
|
||
OR ( xyz.res_rsv_ruimte_verwijder IS NOT NULL
|
||
AND xyz.res_status_fo_key = 4
|
||
AND xyz.res_status_bo_key != 6))
|
||
-- Geen exportdatum
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
WHERE k.res_srtkenmerk_key = 202
|
||
AND kw.res_kenmerk_key = k.res_kenmerk_key
|
||
AND kw.res_kenmerkwaarde_verwijder IS NULL
|
||
AND k.res_kenmerk_verwijder IS NULL
|
||
AND kw.res_rsv_ruimte_key = xyz.res_rsv_ruimte_key);
|
||
|
||
-- Interne reserveringen die doorbelast moeten worden. View levert ook reserveringen met
|
||
-- totaalprijs 0, zodat we daar de crediteringen tegenaan kunnen houden
|
||
-- res_srtkenmerk 202 Exportdatum
|
||
-- Interne doorbelasting is exclusief BTW
|
||
-- deelresprijs excl = zaal(excl) - korting(excl)
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_res_factuur_intern
|
||
AS
|
||
SELECT k.prs_kostenplaats_omschrijving klant,
|
||
rr.res_rsv_ruimte_van,
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'YYYYMM') periode,
|
||
ks.prs_kostensoort_oms grootboek,
|
||
kg.prs_kostenplaatsgrp_key kostenplaats_key,
|
||
TRIM (SUBSTR (kg.prs_kostenplaatsgrp_oms, 1, 7)) kostenplaats,
|
||
k.prs_kostenplaats_nr deb_nr,
|
||
k.prs_kostenplaats_key proj_key,
|
||
k.prs_kostenplaats_nr proj,
|
||
0 btw,
|
||
ks.prs_kostensoort_btw,
|
||
btwc.fac_usrdata_omschr btw_code,
|
||
rr.res_reservering_key res_key,
|
||
rr.res_rsv_ruimte_volgnr res_volgnr,
|
||
NULL referentie,
|
||
rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr
|
||
reservering,
|
||
rr.res_rsv_ruimte_key,
|
||
rr.res_rsv_ruimte_omschrijving descr,
|
||
1 aantal,
|
||
r.res_ruimte_nr omschrijving,
|
||
'ruimte' soort,
|
||
COALESCE (res.getruimteprijs (rr.res_rsv_ruimte_key), 0)
|
||
- COALESCE (rr.res_rsv_ruimte_korting, 0)
|
||
prijs_ex,
|
||
COALESCE (res.getruimteprijs (rr.res_rsv_ruimte_key), 0)
|
||
- COALESCE (rr.res_rsv_ruimte_korting, 0)
|
||
prijs_inc,
|
||
0 btw_laag,
|
||
0 btw_hoog,
|
||
COALESCE (rr.res_rsv_ruimte_korting, 0) korting,
|
||
0 inex
|
||
FROM res_rsv_ruimte rr,
|
||
prs_kostenplaats k,
|
||
prs_kostenplaatsgrp kg,
|
||
res_ruimte_opstelling ro,
|
||
res_ruimte r,
|
||
res_discipline di,
|
||
prs_kostensoort ks,
|
||
(SELECT MAX (fac_usrdata_omschr) fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 42 AND fac_usrdata_code = '0') btwc
|
||
WHERE COALESCE (k.prs_kostenplaats_extern, 0) = 0
|
||
AND kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key
|
||
AND rr.prs_kostenplaats_key = k.prs_kostenplaats_key
|
||
AND rr.res_rsv_ruimte_dirtlevel = 0
|
||
AND ( (rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rr.res_status_bo_key = 5)
|
||
OR ( res_rsv_ruimte_verwijder IS NOT NULL
|
||
AND rr.res_status_fo_key = 4
|
||
AND rr.res_status_bo_key != 6))
|
||
AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
|
||
AND r.res_ruimte_key = ro.res_ruimte_key
|
||
AND di.ins_discipline_key = r.res_discipline_key
|
||
AND ks.prs_kostensoort_key = di.prs_kostensoort_key
|
||
AND ks.prs_kostensoort_key = 23 -- 84010 Zaalhuur
|
||
-- Geen exportdatum
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
WHERE k.res_srtkenmerk_key = 202
|
||
AND kw.res_kenmerk_key = k.res_kenmerk_key
|
||
AND kw.res_kenmerkwaarde_verwijder IS NULL
|
||
AND k.res_kenmerk_verwijder IS NULL
|
||
AND kw.res_rsv_ruimte_key = rr.res_rsv_ruimte_key);
|
||
|
||
-- NYBU#30645: berekent verkoopfactuurregels voor reserveringen en plaatst die in fin_verkoopfactuur.
|
||
-- Gebruikt door nybu_select_res_coda().
|
||
-- fin_verkoopfactuur_n1 = intern/extern (0/1)
|
||
-- fin_verkoopfactuur_n2 = creditering nee/ja (0/1)
|
||
-- fin_verkoopfactuur_c1 = reserveringnummer
|
||
-- fin_verkoopfactuur_c2 = klantnaam
|
||
-- fin_verkoopfactuur_c3 = klantreferentie
|
||
-- fin_verkoopfactuur_c4 = type verkoopfactuur {'catering', 'ruimte/voorz'}
|
||
-- fin_verkoopfactuur_d1 = rsv_ruimte_datum_van
|
||
|
||
CREATE OR REPLACE PROCEDURE nybu_res_verkoopfacturen (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
-- Alle factuurregels voor zowel interne als externe reserveringen
|
||
-- Intern worden alleen ruimtes gefactureerd, extern alles behalve catering van Vermaat
|
||
CURSOR c_regels
|
||
IS
|
||
SELECT *
|
||
FROM nybu_v_res_factuur_extern
|
||
WHERE prijs_inc != 0
|
||
UNION ALL
|
||
SELECT *
|
||
FROM nybu_v_res_factuur_intern
|
||
WHERE prijs_ex != 0;
|
||
|
||
-- Te crediteren verkoopfactuurregels. Per deelreservering wordt met vinkje "Te crediteren" aangegeven
|
||
-- dat deze gecrediteerd moet worden. Van deze deelreserveringen worden de laatst
|
||
-- ge<67>xporteerde regels in fin_verkoopfactuur opgezocht. Die worden vervolgens met negatieve
|
||
-- bedragen in dezelfde tabel gezet (zodat origineel bedrag + creditbedrag = 0).
|
||
-- res_srtkenmerk 202 Exportdatum
|
||
-- res_srtkenmerk 203 Te crediteren
|
||
CURSOR c_credits
|
||
IS
|
||
SELECT vf.*
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k, fin_verkoopfactuur vf
|
||
WHERE k.res_srtkenmerk_key = 203
|
||
AND kw.res_kenmerk_key = k.res_kenmerk_key
|
||
AND kw.res_kenmerkwaarde_verwijder IS NULL
|
||
AND k.res_kenmerk_verwijder IS NULL
|
||
AND kw.res_kenmerkreservering_waarde = '1'
|
||
AND vf.fin_verkoopfactuur_refkey = kw.res_rsv_ruimte_key
|
||
AND vf.fin_verkoopfactuur_xmlnode = 'reservering'
|
||
AND vf.fin_verkoopfactuur_c4 = 'ruimte/voorz'
|
||
AND vf.fin_verkoopfactuur_datum IS NOT NULL
|
||
AND vf.fin_verkoopfactuur_datum =
|
||
(SELECT MAX (fin_verkoopfactuur_datum)
|
||
FROM fin_verkoopfactuur
|
||
WHERE fin_verkoopfactuur_refkey = kw.res_rsv_ruimte_key
|
||
AND fin_verkoopfactuur_xmlnode = 'reservering')
|
||
-- Geen exportdatum
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM res_kenmerkwaarde kw1, res_kenmerk k1
|
||
WHERE k1.res_srtkenmerk_key = 202
|
||
AND kw1.res_kenmerk_key = k1.res_kenmerk_key
|
||
AND kw1.res_kenmerkwaarde_verwijder IS NULL
|
||
AND k1.res_kenmerk_verwijder IS NULL
|
||
AND kw1.res_rsv_ruimte_key = kw.res_rsv_ruimte_key);
|
||
|
||
v_debnr VARCHAR2 (60);
|
||
BEGIN
|
||
v_aanduiding := 'Init';
|
||
v_errormsg := 'Init';
|
||
|
||
DELETE imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
|
||
DELETE fin_verkoopfactuur vf
|
||
WHERE vf.fin_verkoopfactuur_datum IS NULL
|
||
AND vf.fin_verkoopfactuur_c4 = 'ruimte/voorz';
|
||
|
||
-- Genereer verkoopfactuurregels voor externe reserveringen
|
||
FOR rec IN c_regels
|
||
LOOP
|
||
v_errormsg := 'Regels';
|
||
v_debnr := COALESCE (rec.deb_nr, rec.klant);
|
||
v_aanduiding :=
|
||
v_debnr
|
||
|| '/'
|
||
|| rec.proj
|
||
|| ' ('
|
||
|| rec.periode
|
||
|| '): '
|
||
|| rec.reservering
|
||
|| ' ('
|
||
|| rec.inex
|
||
|| ')';
|
||
|
||
-- TODO algemeen:
|
||
-- facturatie-views hebben nu <20><>n regel met twee BTW-percentages. Dat splitsen.
|
||
-- creditering doet excl/laag/hoog zelfs helemaal apart, maar dat kan straks anders.
|
||
-- TODO specifiek:
|
||
-- prs_kostenplaats_key
|
||
-- regel per BTW-percentage
|
||
INSERT INTO fin_verkoopfactuur (fin_verkoopfactuur_id,
|
||
fin_verkoopfactuur_datum,
|
||
fin_verkoopfactuur_omschr,
|
||
fin_verkoopfactuur_xmlnode,
|
||
fin_verkoopfactuur_refkey,
|
||
prs_kostenplaats_nr,
|
||
prs_kostenplaats_omschrijving,
|
||
prs_kostenplaatsgrp_oms,
|
||
prs_kostensoort_oms,
|
||
prs_debiteur_naam,
|
||
fin_verkoopfactuur_bedrag,
|
||
fin_verkoopfactuur_btw,
|
||
fin_btwtabelwaarde_code,
|
||
fin_btwtabelwaarde_oms,
|
||
fin_btwtabelwaarde_perc,
|
||
fin_verkoopfactuur_maand,
|
||
fin_verkoopfactuur_n1,
|
||
fin_verkoopfactuur_n2,
|
||
fin_verkoopfactuur_c1,
|
||
fin_verkoopfactuur_c2,
|
||
fin_verkoopfactuur_c3,
|
||
fin_verkoopfactuur_c4,
|
||
fin_verkoopfactuur_d1)
|
||
VALUES (TO_CHAR (SYSDATE, 'YYYY-MM-DD'),
|
||
NULL,
|
||
DECODE (rec.soort,
|
||
'ruimte', rec.omschrijving,
|
||
TO_CHAR (rec.aantal) || 'x ' || rec.omschrijving),
|
||
'reservering',
|
||
rec.res_rsv_ruimte_key,
|
||
rec.proj,
|
||
rec.proj,
|
||
rec.kostenplaats,
|
||
rec.grootboek,
|
||
v_debnr,
|
||
rec.prijs_ex,
|
||
COALESCE (rec.btw_hoog, rec.btw_laag),
|
||
rec.btw_code,
|
||
rec.btw_code,
|
||
rec.btw,
|
||
rec.periode,
|
||
rec.inex,
|
||
0, -- debet
|
||
rec.reservering,
|
||
rec.klant,
|
||
rec.referentie,
|
||
'ruimte/voorz',
|
||
rec.res_rsv_ruimte_van);
|
||
|
||
fac.writelog (p_applname,
|
||
'D',
|
||
v_aanduiding,
|
||
'regels');
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
|
||
-- Genereer creditfactuurregels voor ex- en interne reserveringen
|
||
FOR rec IN c_credits
|
||
LOOP
|
||
v_errormsg := 'Regels';
|
||
v_debnr := rec.prs_debiteur_naam;
|
||
v_aanduiding :=
|
||
v_debnr
|
||
|| '/'
|
||
|| rec.prs_kostenplaats_nr
|
||
|| ' ('
|
||
|| rec.fin_verkoopfactuur_maand
|
||
|| '): '
|
||
|| rec.fin_verkoopfactuur_omschr;
|
||
|
||
INSERT INTO fin_verkoopfactuur (fin_verkoopfactuur_id,
|
||
fin_verkoopfactuur_datum,
|
||
fin_verkoopfactuur_omschr,
|
||
fin_verkoopfactuur_xmlnode,
|
||
fin_verkoopfactuur_refkey,
|
||
prs_kostenplaats_nr,
|
||
prs_kostenplaats_omschrijving,
|
||
prs_kostenplaatsgrp_oms,
|
||
prs_kostensoort_oms,
|
||
prs_debiteur_naam,
|
||
fin_verkoopfactuur_bedrag,
|
||
fin_verkoopfactuur_btw,
|
||
fin_btwtabelwaarde_code,
|
||
fin_btwtabelwaarde_oms,
|
||
fin_btwtabelwaarde_perc,
|
||
fin_verkoopfactuur_maand,
|
||
fin_verkoopfactuur_n1,
|
||
fin_verkoopfactuur_n2,
|
||
fin_verkoopfactuur_c1,
|
||
fin_verkoopfactuur_c2,
|
||
fin_verkoopfactuur_c3,
|
||
fin_verkoopfactuur_c4,
|
||
fin_verkoopfactuur_d1)
|
||
VALUES (TO_CHAR (SYSDATE, 'YYYY-MM-DD'),
|
||
NULL,
|
||
'Correctie ' || rec.fin_verkoopfactuur_omschr,
|
||
rec.fin_verkoopfactuur_xmlnode,
|
||
rec.fin_verkoopfactuur_refkey,
|
||
rec.prs_kostenplaats_nr,
|
||
rec.prs_kostenplaats_omschrijving,
|
||
rec.prs_kostenplaatsgrp_oms,
|
||
rec.prs_kostensoort_oms,
|
||
rec.prs_debiteur_naam,
|
||
- (rec.fin_verkoopfactuur_bedrag),
|
||
- (rec.fin_verkoopfactuur_btw),
|
||
rec.fin_btwtabelwaarde_code,
|
||
rec.fin_btwtabelwaarde_oms,
|
||
rec.fin_btwtabelwaarde_perc,
|
||
rec.fin_verkoopfactuur_maand,
|
||
rec.fin_verkoopfactuur_n1,
|
||
1, -- credit
|
||
rec.fin_verkoopfactuur_c1,
|
||
rec.fin_verkoopfactuur_c2,
|
||
rec.fin_verkoopfactuur_c3,
|
||
'ruimte/voorz',
|
||
rec.fin_verkoopfactuur_d1);
|
||
|
||
fac.writelog (p_applname,
|
||
'D',
|
||
v_aanduiding,
|
||
'credits');
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
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.writelog (p_applname,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Onbekende fout!');
|
||
COMMIT;
|
||
END nybu_res_verkoopfacturen;
|
||
/
|
||
|
||
-- Genereert exportbestand voor CODA over externe en interne reserveringen
|
||
-- Voor externe reserveringen worden factuurregels gegenereerd, voor interne doorbelastingsregels.
|
||
-- Beide soorten komen in <20><>n bestand, met een scheidingsregel ertussen.
|
||
-- Alle ge<67>xporteerde rsv_ruimtes worden gemarkeerd met "In laatste export"; alleen die reserveringen
|
||
-- worden verwerkt door de verwerk-export
|
||
-- res_srtkenmerk 241 Laatste export
|
||
-- fin_verkoopfactuur_n1 = intern/extern (0/1)
|
||
-- fin_verkoopfactuur_n2 = credit nee/ja (0/1)
|
||
-- fin_verkoopfactuur_c1 = reserveringnummer
|
||
-- fin_verkoopfactuur_c2 = klantnaam
|
||
-- fin_verkoopfactuur_c3 = klantreferentie
|
||
-- fin_verkoopfactuur_d1 = res_rsv_ruimte_van
|
||
-- fin_verkoopfactuur_d2 = periode_tot (alleen voor catering)
|
||
|
||
CREATE OR REPLACE PROCEDURE nybu_select_res_coda (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
-- Individuele facturen voor debiteuren; ook voor sommatieregel met totaalbedrag
|
||
-- Bedragen zijn incl BTW
|
||
-- NYBU#30023: expliciet filteren op soort = ruimte, want creditering alleen op
|
||
-- rsv_ruimte en niet ook nog op bijbehorende rsv_deel'en en rsv_artikel'en
|
||
-- Ik ben alleen ge<67>nteresseerd in rsv_ruimtes m<>t kosten <20>f m<>t een creditbedrag
|
||
CURSOR c_deb
|
||
IS
|
||
SELECT deb_nr,
|
||
periode,
|
||
kostenplaats,
|
||
proj,
|
||
SUM (bedrag) bedrag,
|
||
SUM (credit) credit
|
||
FROM (SELECT COALESCE (prs_debiteur_naam, fin_verkoopfactuur_c1)
|
||
deb_nr,
|
||
fin_verkoopfactuur_maand periode,
|
||
prs_kostenplaatsgrp_oms kostenplaats,
|
||
prs_kostenplaats_nr proj,
|
||
ROUND (
|
||
DECODE (
|
||
fin_verkoopfactuur_n2,
|
||
0,
|
||
fin_verkoopfactuur_bedrag
|
||
+ COALESCE (fin_verkoopfactuur_btw, 0),
|
||
0),
|
||
2)
|
||
bedrag,
|
||
ROUND (
|
||
DECODE (
|
||
fin_verkoopfactuur_n2,
|
||
1,
|
||
- (fin_verkoopfactuur_bedrag
|
||
+ COALESCE (fin_verkoopfactuur_btw, 0)),
|
||
0),
|
||
2)
|
||
credit
|
||
FROM fin_verkoopfactuur
|
||
WHERE fin_verkoopfactuur_n1 = 1 -- extern
|
||
AND fin_verkoopfactuur_datum IS NULL
|
||
AND COALESCE (fin_verkoopfactuur_c4, 'NOP') =
|
||
'ruimte/voorz')
|
||
WHERE bedrag != 0 OR credit != 0
|
||
GROUP BY deb_nr,
|
||
periode,
|
||
kostenplaats,
|
||
proj
|
||
ORDER BY deb_nr,
|
||
periode,
|
||
kostenplaats,
|
||
proj;
|
||
|
||
-- Factuurregels voor deze factuur (ook crediteringen)
|
||
-- NYBU#30023: expliciet filteren op prijs != 0
|
||
-- NYBU#31401: expliciet filteren op prijs_ex + btw != 0, anders vallen regels met alleen BTW weg
|
||
-- (dat zijn dan credits voor 'oude' exportregels waar de totalen ex_btw, btw_hoog en btw_laag
|
||
-- werden ge<67>xporteerd)
|
||
CURSOR regels (
|
||
in_deb_nr VARCHAR2,
|
||
in_periode VARCHAR2,
|
||
in_proj VARCHAR2)
|
||
IS
|
||
SELECT *
|
||
FROM fin_verkoopfactuur
|
||
WHERE COALESCE (prs_debiteur_naam, fin_verkoopfactuur_c1) = in_deb_nr
|
||
AND fin_verkoopfactuur_maand = in_periode
|
||
AND prs_kostenplaats_nr = in_proj
|
||
AND fin_verkoopfactuur_datum IS NULL
|
||
AND fin_verkoopfactuur_bedrag + fin_verkoopfactuur_btw != 0
|
||
AND COALESCE (fin_verkoopfactuur_c4, 'NOP') = 'ruimte/voorz';
|
||
|
||
-- Individuele facturen voor interne kostenplaatsen, gesommeerd per P-nummer (project)
|
||
-- (Crediteringen gaan apart)
|
||
-- Bedragen zijn excl BTW
|
||
-- NYBU#30023: expliciet filteren op prijs != 0
|
||
CURSOR c_intern
|
||
IS
|
||
SELECT deb_nr,
|
||
periode,
|
||
kostenplaats,
|
||
proj,
|
||
SUM (bedrag) bedrag,
|
||
SUM (credit) credit
|
||
FROM (SELECT COALESCE (prs_debiteur_naam, fin_verkoopfactuur_c1)
|
||
deb_nr,
|
||
fin_verkoopfactuur_maand periode,
|
||
prs_kostenplaatsgrp_oms kostenplaats,
|
||
prs_kostenplaats_nr proj,
|
||
ROUND (
|
||
DECODE (
|
||
fin_verkoopfactuur_n2,
|
||
0,
|
||
fin_verkoopfactuur_bedrag
|
||
+ COALESCE (fin_verkoopfactuur_btw, 0),
|
||
0),
|
||
2)
|
||
bedrag,
|
||
ROUND (
|
||
DECODE (
|
||
fin_verkoopfactuur_n2,
|
||
1,
|
||
- (fin_verkoopfactuur_bedrag
|
||
+ COALESCE (fin_verkoopfactuur_btw, 0)),
|
||
0),
|
||
2)
|
||
credit
|
||
FROM fin_verkoopfactuur
|
||
WHERE fin_verkoopfactuur_n1 = 0 -- intern
|
||
AND fin_verkoopfactuur_datum IS NULL
|
||
AND COALESCE (fin_verkoopfactuur_c4, 'NOP') =
|
||
'ruimte/voorz')
|
||
WHERE bedrag != 0 OR credit != 0
|
||
GROUP BY deb_nr,
|
||
periode,
|
||
kostenplaats,
|
||
proj
|
||
ORDER BY deb_nr,
|
||
periode,
|
||
kostenplaats,
|
||
proj;
|
||
|
||
CURSOR regels_intern (
|
||
in_deb_nr VARCHAR2,
|
||
in_periode VARCHAR2,
|
||
in_proj VARCHAR2)
|
||
IS
|
||
SELECT *
|
||
FROM fin_verkoopfactuur
|
||
WHERE COALESCE (prs_debiteur_naam, fin_verkoopfactuur_c1) = in_deb_nr
|
||
AND fin_verkoopfactuur_maand = in_periode
|
||
AND prs_kostenplaats_nr = in_proj
|
||
AND fin_verkoopfactuur_datum IS NULL
|
||
AND fin_verkoopfactuur_bedrag + fin_verkoopfactuur_btw != 0
|
||
AND COALESCE (fin_verkoopfactuur_c4, 'NOP') = 'ruimte/voorz';
|
||
|
||
-- Voor markeren van de externe + interne reserveringen die we net gefactureerd/doorbelast/gecrediteerd
|
||
-- hebben. (Daarvoor zetten we het kenmerk "In laatste export")
|
||
-- Dat zijn: alle reserveringen in nybu_v_res_factuur_ex-/intern, ook met prijs = 0
|
||
-- (dus dat is inclusief alle gecrediteerde reserveringen)
|
||
CURSOR c_markeren
|
||
IS
|
||
SELECT DISTINCT res_rsv_ruimte_key, reservering
|
||
FROM nybu_v_res_factuur_extern
|
||
UNION ALL
|
||
SELECT DISTINCT res_rsv_ruimte_key, reservering
|
||
FROM nybu_v_res_factuur_intern;
|
||
|
||
v_teller NUMBER;
|
||
v_rap_count NUMBER;
|
||
v_kenmerk_key_laatste NUMBER;
|
||
BEGIN
|
||
v_teller := 0;
|
||
v_rap_count := 0;
|
||
|
||
v_aanduiding := 'Init';
|
||
v_errormsg := 'Periode bepalen';
|
||
|
||
DELETE imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
|
||
DELETE fac_rapport
|
||
WHERE fac_rapport_node = p_applname;
|
||
|
||
-- Boekhouding: markering "In laatste export" verwijderen, zodat we met een schone lei beginnen
|
||
DELETE res_kenmerkwaarde
|
||
WHERE res_kenmerk_key IN (SELECT res_kenmerk_key
|
||
FROM res_kenmerk
|
||
WHERE res_srtkenmerk_key = 241);
|
||
|
||
-- Vul tabel fin_verkoopfactuur met nieuwe regels (procedure verwijdert oude regels zelf al)
|
||
nybu_res_verkoopfacturen (p_applname, p_applrun);
|
||
|
||
-- Genereer headerregel
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel,
|
||
fac_rapport_soort)
|
||
VALUES (p_applname,
|
||
v_rap_count,
|
||
'"NUMMER";"ADM";"GROOTBK";"DEB / KPL";"PROJ";"BEDRAG (INCL BTW)";"D/C";"BTW";"DATUM (DD-MM) + OMSCHRIJVING";"(EXT REF 2)";"(EXT REF 3)";"KLANTREFERENTIE (EXT REF 1)";"COMMENTAAR (EXT REF 4)";"EXTRA VELD (EXT REF 5)";"REGELTYPE";"DOCNR"',
|
||
0);
|
||
|
||
-- Genereer sommatie-, specificatie- en creditregels voor debiteuren
|
||
FOR rec IN c_deb
|
||
LOOP
|
||
v_errormsg := 'Sommatieregel aanmaken';
|
||
v_teller := v_teller + 1;
|
||
v_aanduiding :=
|
||
v_teller
|
||
|| ': '
|
||
|| rec.deb_nr
|
||
|| '/'
|
||
|| rec.proj
|
||
|| ' ('
|
||
|| rec.periode
|
||
|| ')';
|
||
v_rap_count := v_rap_count + 1;
|
||
|
||
-- Sommatieregel
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel,
|
||
fac_rapport_soort)
|
||
VALUES (p_applname,
|
||
v_rap_count,
|
||
v_teller
|
||
|| ';'
|
||
|| -- nummer
|
||
'10;'
|
||
|| -- adm
|
||
'13000;'
|
||
|| -- grootbk
|
||
rec.deb_nr
|
||
|| ';'
|
||
|| -- deb/kpl
|
||
';'
|
||
|| -- proj
|
||
TRIM(TO_CHAR (
|
||
ABS (rec.bedrag - COALESCE (rec.credit, 0)),
|
||
'99999999D99',
|
||
'NLS_NUMERIC_CHARACTERS=,.'))
|
||
|| ';'
|
||
|| -- bedrag
|
||
CASE
|
||
WHEN rec.bedrag - COALESCE (rec.credit, 0) < 0
|
||
THEN
|
||
'C;'
|
||
WHEN rec.bedrag - COALESCE (rec.credit, 0) >= 0
|
||
THEN
|
||
'D;'
|
||
END
|
||
|| -- d/c
|
||
';'
|
||
|| -- btw
|
||
SUBSTR (
|
||
'Zaalhuur '
|
||
|| nybu.getPeriodeNaam (rec.periode, 'NL'),
|
||
1,
|
||
36)
|
||
|| ';'
|
||
|| -- datum + omschrijving
|
||
rec.proj
|
||
|| ';'
|
||
|| -- ext ref 2
|
||
';'
|
||
|| -- ext ref 3
|
||
rec.kostenplaats
|
||
|| ';'
|
||
|| -- klantreferentie (ext ref 1)
|
||
';'
|
||
|| -- commentaar (ext ref 4)
|
||
';'
|
||
|| -- extra veld (ext ref 5)
|
||
'Summary;'
|
||
|| -- regeltype
|
||
'', -- docnr
|
||
0);
|
||
|
||
IF rec.credit != 0
|
||
THEN
|
||
fac.writelog (
|
||
p_applname,
|
||
'S',
|
||
'Externe facturen: '
|
||
|| rec.deb_nr
|
||
|| ' ('
|
||
|| rec.proj
|
||
|| ')'
|
||
|| ' totaal <20>'
|
||
|| TO_CHAR (rec.bedrag)
|
||
|| ' - <20>'
|
||
|| TO_CHAR (rec.credit)
|
||
|| ' incl BTW',
|
||
'extern');
|
||
ELSE
|
||
fac.writelog (
|
||
p_applname,
|
||
'S',
|
||
'Externe facturen: '
|
||
|| rec.deb_nr
|
||
|| ' ('
|
||
|| rec.proj
|
||
|| ')'
|
||
|| ' totaal <20>'
|
||
|| TO_CHAR (rec.bedrag)
|
||
|| ' incl BTW',
|
||
'extern');
|
||
END IF;
|
||
|
||
-- Specificatieregels
|
||
FOR reg IN regels (rec.deb_nr, rec.periode, rec.proj)
|
||
LOOP
|
||
v_errormsg := 'Specificatieregel aanmaken';
|
||
v_aanduiding :=
|
||
v_teller
|
||
|| ': '
|
||
|| rec.deb_nr
|
||
|| '/'
|
||
|| rec.proj
|
||
|| ' - '
|
||
|| reg.fin_verkoopfactuur_c1
|
||
|| ' ('
|
||
|| rec.periode
|
||
|| ')';
|
||
v_rap_count := v_rap_count + 1;
|
||
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel,
|
||
fac_rapport_soort)
|
||
VALUES (p_applname,
|
||
v_rap_count,
|
||
v_teller
|
||
|| ';'
|
||
|| -- nummer
|
||
'12;'
|
||
|| -- adm
|
||
reg.prs_kostensoort_oms
|
||
|| ';'
|
||
|| -- grootbk
|
||
reg.prs_kostenplaatsgrp_oms
|
||
|| ';'
|
||
|| -- deb/kpl
|
||
reg.prs_kostenplaats_nr
|
||
|| ';'
|
||
|| -- proj
|
||
TRIM(TO_CHAR (
|
||
ROUND (
|
||
ABS(reg.fin_verkoopfactuur_bedrag
|
||
+ reg.fin_verkoopfactuur_btw),
|
||
2),
|
||
'99999999D99',
|
||
'NLS_NUMERIC_CHARACTERS=,.'))
|
||
|| ';'
|
||
|| -- bedrag
|
||
CASE
|
||
WHEN reg.fin_verkoopfactuur_bedrag
|
||
+ reg.fin_verkoopfactuur_btw < 0
|
||
THEN
|
||
'D;'
|
||
WHEN reg.fin_verkoopfactuur_bedrag
|
||
+ reg.fin_verkoopfactuur_btw >= 0
|
||
THEN
|
||
'C;'
|
||
END
|
||
|| -- d/c
|
||
reg.fin_btwtabelwaarde_code
|
||
|| ';'
|
||
|| -- btw
|
||
'"'
|
||
|| SUBSTR (
|
||
TO_CHAR (reg.fin_verkoopfactuur_d1, 'DD-MM ')
|
||
|| reg.fin_verkoopfactuur_omschr,
|
||
1,
|
||
36)
|
||
|| '";'
|
||
|| -- datum + omschrijving
|
||
';'
|
||
|| -- ext ref 2
|
||
';'
|
||
|| -- ext ref 3
|
||
DECODE (reg.fin_verkoopfactuur_c3,
|
||
NULL, ';',
|
||
'"' || reg.fin_verkoopfactuur_c3 || '";')
|
||
|| -- klantreferente (ext ref 1)
|
||
'"Info: Sales &'
|
||
|| ' Events 0346-291544";'
|
||
|| -- commentaar (ext ref 4)
|
||
'"Periode: '
|
||
|| nybu.getPeriodeNaam (reg.fin_verkoopfactuur_maand,
|
||
'NL')
|
||
|| '";'
|
||
|| -- extra veld (ext ref 5)
|
||
'Analysis;'
|
||
|| -- regeltype
|
||
reg.fin_verkoopfactuur_c1, -- docnr
|
||
0);
|
||
END LOOP;
|
||
END LOOP;
|
||
|
||
|
||
-- Scheidingsregel
|
||
v_errormsg := 'Scheidingsregel aanmaken';
|
||
v_rap_count := v_rap_count + 1;
|
||
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel,
|
||
fac_rapport_soort)
|
||
VALUES (p_applname,
|
||
v_rap_count,
|
||
'"Nummer";"Adm.";"Grootboek";"Kostenplaats";"Project";"Medewerker";"Bedrag";"D/C";"Regelomschrijving"',
|
||
0);
|
||
|
||
v_teller := 0;
|
||
|
||
-- Genereer regels voor interne kostenplaatsen
|
||
-- Tegenboekingsregel (opbrengsten-boeking)
|
||
v_errormsg := 'Opbrengsten-regel aanmaken';
|
||
v_rap_count := v_rap_count + 1;
|
||
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel,
|
||
fac_rapport_soort)
|
||
SELECT p_applname,
|
||
v_rap_count,
|
||
'1;'
|
||
|| ';'
|
||
|| ks.prs_kostensoort_oms
|
||
|| ';'
|
||
|| TRIM (SUBSTR (kg.prs_kostenplaatsgrp_oms, 1, 7))
|
||
|| ';'
|
||
|| k.prs_kostenplaats_nr
|
||
|| ';'
|
||
|| ';'
|
||
|| TRIM(TO_CHAR (ABS (vf.bedrag),
|
||
'99999999D99',
|
||
'NLS_NUMERIC_CHARACTERS=,.'))
|
||
|| ';'
|
||
|| CASE
|
||
WHEN vf.bedrag < 0 THEN 'D'
|
||
WHEN vf.bedrag >= 0 THEN 'C'
|
||
END
|
||
|| ';'
|
||
|| '"Zaalhuur '
|
||
|| nybu.getPeriodeNaam (vf.periode, 'NL')
|
||
|| '"',
|
||
0
|
||
FROM prs_kostensoort ks,
|
||
prs_kostenplaats k,
|
||
prs_kostenplaatsgrp kg,
|
||
(SELECT SUM (fin_verkoopfactuur_bedrag) bedrag,
|
||
MAX (fin_verkoopfactuur_maand) periode
|
||
FROM fin_verkoopfactuur
|
||
WHERE fin_verkoopfactuur_datum IS NULL
|
||
AND fin_verkoopfactuur_n1 = 0 -- intern
|
||
AND COALESCE (fin_verkoopfactuur_c4, 'NOP') =
|
||
'ruimte/voorz') vf
|
||
WHERE ks.prs_kostensoort_oms = '76015'
|
||
AND k.prs_kostenplaats_key = ks.prs_kostenplaats_key
|
||
AND kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key;
|
||
|
||
-- Genereer specificatieregels voor interne kostenplaatsen
|
||
FOR rec IN c_intern
|
||
LOOP
|
||
|
||
IF rec.credit != 0
|
||
THEN
|
||
fac.writelog (
|
||
p_applname,
|
||
'S',
|
||
'Externe facturen: '
|
||
|| rec.deb_nr
|
||
|| ' ('
|
||
|| rec.proj
|
||
|| ')'
|
||
|| ' totaal <20>'
|
||
|| TO_CHAR (rec.bedrag)
|
||
|| ' - <20>'
|
||
|| TO_CHAR (rec.credit)
|
||
|| ' incl BTW',
|
||
'extern');
|
||
ELSE
|
||
fac.writelog (
|
||
p_applname,
|
||
'S',
|
||
'Externe facturen: '
|
||
|| rec.deb_nr
|
||
|| ' ('
|
||
|| rec.proj
|
||
|| ')'
|
||
|| ' totaal <20>'
|
||
|| TO_CHAR (rec.bedrag)
|
||
|| ' incl BTW',
|
||
'extern');
|
||
END IF;
|
||
|
||
-- Specificatieregels
|
||
FOR reg IN regels_intern (rec.deb_nr, rec.periode, rec.proj)
|
||
LOOP
|
||
v_errormsg := 'Specificatieregel aanmaken';
|
||
v_aanduiding :=
|
||
v_teller
|
||
|| ': '
|
||
|| rec.deb_nr
|
||
|| '/'
|
||
|| rec.proj
|
||
|| ' - '
|
||
|| reg.fin_verkoopfactuur_c1
|
||
|| ' ('
|
||
|| rec.periode
|
||
|| ')';
|
||
v_rap_count := v_rap_count + 1;
|
||
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel,
|
||
fac_rapport_soort)
|
||
VALUES (p_applname,
|
||
v_rap_count,
|
||
v_teller || ';' -- nummer
|
||
|| ';' -- adm
|
||
|| '56015;' -- grootbk
|
||
|| rec.kostenplaats || ';' ---kostenplaats
|
||
|| rec.proj || ';' -- project
|
||
|| ';' --- medewerker
|
||
|| TRIM(TO_CHAR (
|
||
ROUND (
|
||
ABS(reg.fin_verkoopfactuur_bedrag
|
||
+ reg.fin_verkoopfactuur_btw),
|
||
2),
|
||
'99999999D99',
|
||
'NLS_NUMERIC_CHARACTERS=,.')) || ';'
|
||
||
|
||
CASE
|
||
WHEN reg.fin_verkoopfactuur_bedrag+ reg.fin_verkoopfactuur_btw >= 0 THEN 'D;'
|
||
WHEN reg.fin_verkoopfactuur_bedrag+ reg.fin_verkoopfactuur_btw < 0 THEN 'C;'
|
||
END
|
||
||
|
||
SUBSTR (
|
||
TO_CHAR (reg.fin_verkoopfactuur_d1, 'DD-MM ')
|
||
|| reg.fin_verkoopfactuur_omschr,
|
||
1,
|
||
36)
|
||
|| ';'
|
||
|| -- datum + omschrijving
|
||
'"Periode: '
|
||
|| nybu.getPeriodeNaam (reg.fin_verkoopfactuur_maand,
|
||
'NL')
|
||
|| '";'
|
||
|| -- extra veld (ext ref 5)
|
||
'Analysis;'
|
||
|| -- regeltype
|
||
reg.fin_verkoopfactuur_c1, -- docnr
|
||
0);
|
||
END LOOP;
|
||
END LOOP;
|
||
|
||
-- Boekhouding: markeer alle reserveringen die we net gefactureerd hebben
|
||
FOR rec IN c_markeren
|
||
LOOP
|
||
v_aanduiding := rec.reservering;
|
||
v_errormsg := 'Kenmerk "In laatste export" bepalen';
|
||
|
||
-- Vind kenmerk bij kenmerksoort voor activiteit van rsv_ruimte
|
||
SELECT res_kenmerk_key
|
||
INTO v_kenmerk_key_laatste
|
||
FROM res_kenmerk k, res_rsv_ruimte rr
|
||
WHERE k.res_srtkenmerk_key = 241
|
||
AND rr.res_activiteit_key = k.res_activiteit_key
|
||
AND rr.res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
|
||
|
||
v_errormsg := 'Reservering markeren';
|
||
nybu.upsertkenmerk_res (v_kenmerk_key_laatste,
|
||
rec.res_rsv_ruimte_key,
|
||
'1');
|
||
END LOOP;
|
||
|
||
fac.writelog (p_applname,
|
||
'S',
|
||
'Factuurregels gegenereerd',
|
||
'');
|
||
|
||
COMMIT;
|
||
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.writelog (p_applname,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Onbekende fout!');
|
||
COMMIT;
|
||
END nybu_select_res_coda;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_export_res_coda
|
||
AS
|
||
SELECT fac_rapport_regel result, fac_rapport_volgnr result_order
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'RES_CODA'
|
||
ORDER BY fac_rapport_volgnr;
|
||
|
||
-- Zet status van de met RES_CODA ge<67>xporteerde reserveringen op Verwerkt.
|
||
-- res_srtkenmerk 202 Exportdatum
|
||
-- res_srtkenmerk 261 Ge<47>xporteerd bedrag
|
||
-- res_srtkenmerk 203 Te crediteren
|
||
-- res_srtkenmerk 241 In laatste export
|
||
-- fin_verkoopfactuur_n1 = intern/extern (0/1)
|
||
-- fin_verkoopfactuur_n2 = credit nee/ja (0/1)
|
||
-- fin_verkoopfactuur_c1 = reserveringnummer
|
||
-- NB: "In laatste export" wordt door de verwerk-export niet gereset
|
||
|
||
CREATE OR REPLACE PROCEDURE nybu_export_res_verwerk (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2)
|
||
AS
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
-- Alle doorbelaste rsv_ruimtes
|
||
-- NYBU#30023: niet meer verwerken, maar exportdatum + bedragen zetten
|
||
-- TODO: 6 maanden na dato verwerken?
|
||
CURSOR c_rsv
|
||
IS
|
||
SELECT DISTINCT res_rsv_ruimte_key, reservering
|
||
FROM nybu_v_res_factuur_extern
|
||
WHERE 1 = 0
|
||
UNION ALL
|
||
SELECT DISTINCT
|
||
rr.res_rsv_ruimte_key,
|
||
rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr volgnr
|
||
FROM res_rsv_ruimte rr, prs_kostenplaats k
|
||
WHERE 1 = 0
|
||
AND COALESCE (k.prs_kostenplaats_extern, 0) = 0
|
||
AND rr.prs_kostenplaats_key = k.prs_kostenplaats_key
|
||
AND ( (rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rr.res_status_bo_key = 5)
|
||
OR ( res_rsv_ruimte_verwijder IS NOT NULL
|
||
AND rr.res_status_bo_key < 6
|
||
AND rr.res_status_fo_key = 4));
|
||
|
||
-- Gefactureerde externe + interne reserveringen in laatste export
|
||
-- Bepaal gefactureerde bedragen per en leg vast bij deelreservering
|
||
-- O.b.v. kenmerk "In laatste export" alleen reserveringen uit laatste export
|
||
CURSOR c_fact
|
||
IS
|
||
SELECT ei.*, COALESCE (vf.prijs, 0) prijs
|
||
FROM (SELECT DISTINCT fe.res_rsv_ruimte_key,
|
||
reservering,
|
||
'extern' inex,
|
||
'incl' inclexcl
|
||
FROM nybu_v_res_factuur_extern fe,
|
||
res_kenmerkwaarde kw,
|
||
res_kenmerk k
|
||
WHERE kw.res_rsv_ruimte_key = fe.res_rsv_ruimte_key
|
||
AND kw.res_kenmerkreservering_waarde = '1'
|
||
AND kw.res_kenmerkwaarde_verwijder IS NULL
|
||
AND k.res_kenmerk_key = kw.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 241
|
||
AND k.res_kenmerk_verwijder IS NULL
|
||
UNION ALL
|
||
SELECT DISTINCT fi.res_rsv_ruimte_key,
|
||
reservering,
|
||
'intern' inex,
|
||
'excl' inclexcl
|
||
FROM nybu_v_res_factuur_intern fi,
|
||
res_kenmerkwaarde kw,
|
||
res_kenmerk k
|
||
WHERE kw.res_rsv_ruimte_key = fi.res_rsv_ruimte_key
|
||
AND kw.res_kenmerkreservering_waarde = '1'
|
||
AND kw.res_kenmerkwaarde_verwijder IS NULL
|
||
AND k.res_kenmerk_key = kw.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 241
|
||
AND k.res_kenmerk_verwijder IS NULL) ei
|
||
LEFT OUTER JOIN
|
||
( SELECT fac.safe_to_number (vf.fin_verkoopfactuur_refkey)
|
||
res_rsv_ruimte_key,
|
||
ROUND (
|
||
SUM(fin_verkoopfactuur_bedrag
|
||
+ fin_verkoopfactuur_btw),
|
||
2)
|
||
prijs
|
||
FROM fin_verkoopfactuur vf
|
||
WHERE vf.fin_verkoopfactuur_datum IS NULL
|
||
AND vf.fin_verkoopfactuur_c4 = 'ruimte/voorz'
|
||
AND vf.fin_verkoopfactuur_n2 = 0 -- geen creditering
|
||
GROUP BY fin_verkoopfactuur_refkey) vf
|
||
ON vf.res_rsv_ruimte_key = ei.res_rsv_ruimte_key;
|
||
|
||
-- Gecrediteerde reserveringen in laatste export
|
||
-- Wis vink "Te crediteren"
|
||
CURSOR c_cred
|
||
IS
|
||
SELECT rr.res_rsv_ruimte_key,
|
||
rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr
|
||
reservering,
|
||
COALESCE (vf.credit, 0) credit,
|
||
vf.inex,
|
||
vf.inclexcl
|
||
FROM res_rsv_ruimte rr,
|
||
(SELECT kw.*
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
WHERE k.res_srtkenmerk_key = 203
|
||
AND kw.res_kenmerk_key = k.res_kenmerk_key
|
||
AND kw.res_kenmerkwaarde_verwijder IS NULL
|
||
AND k.res_kenmerk_verwijder IS NULL
|
||
AND kw.res_kenmerkreservering_waarde = '1') te_cred,
|
||
(SELECT kw.*
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
WHERE k.res_srtkenmerk_key = 241
|
||
AND k.res_kenmerk_key = kw.res_kenmerk_key
|
||
AND kw.res_kenmerkwaarde_verwijder IS NULL
|
||
AND k.res_kenmerk_verwijder IS NULL
|
||
AND kw.res_kenmerkreservering_waarde = '1') in_laatste,
|
||
( SELECT fac.safe_to_number (fin_verkoopfactuur_refkey)
|
||
res_rsv_ruimte_key,
|
||
fin_verkoopfactuur_c1 reservering,
|
||
ROUND (
|
||
SUM(fin_verkoopfactuur_bedrag
|
||
+ fin_verkoopfactuur_btw),
|
||
2)
|
||
* -1
|
||
credit,
|
||
DECODE (fin_verkoopfactuur_n1, 0, 'intern', 1, 'extern')
|
||
inex,
|
||
DECODE (fin_verkoopfactuur_n1, 0, 'excl', 1, 'incl')
|
||
inclexcl
|
||
FROM fin_verkoopfactuur
|
||
WHERE fin_verkoopfactuur_datum IS NULL
|
||
AND fin_verkoopfactuur_n2 = 1 -- creditering
|
||
GROUP BY fin_verkoopfactuur_refkey,
|
||
fin_verkoopfactuur_n1,
|
||
fin_verkoopfactuur_c1) vf
|
||
WHERE te_cred.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND in_laatste.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND vf.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key
|
||
-- Geen exportdatum
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
WHERE k.res_srtkenmerk_key = 202
|
||
AND kw.res_kenmerk_key = k.res_kenmerk_key
|
||
AND kw.res_kenmerkwaarde_verwijder IS NULL
|
||
AND k.res_kenmerk_verwijder IS NULL
|
||
AND kw.res_rsv_ruimte_key = rr.res_rsv_ruimte_key);
|
||
|
||
v_periode VARCHAR (6);
|
||
v_periodeNaam VARCHAR2 (20);
|
||
v_kenmerk_key_cred NUMBER;
|
||
v_kenmerk_key_datum NUMBER;
|
||
v_kenmerk_key_geexp NUMBER;
|
||
v_trackmessage VARCHAR2 (100);
|
||
BEGIN
|
||
v_aanduiding := 'Init';
|
||
v_errormsg := 'Periode bepalen';
|
||
|
||
-- Deze export gaat over de maand-van-de-meest-recente-reserveringsdatum.
|
||
SELECT TO_CHAR (MAX (res_rsv_ruimte_van), 'YYYYMM')
|
||
INTO v_periode
|
||
FROM nybu_v_res_factuur_extern;
|
||
|
||
v_periodeNaam := nybu.getPeriodeNaam (v_periode, 'NL');
|
||
|
||
DELETE imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
|
||
-- Gecrediteerde facturen: wis vinkje "Te crediteren" en ge<67>xporteerde bedragen, maak tracking
|
||
FOR rec IN c_cred
|
||
LOOP
|
||
v_aanduiding := rec.reservering;
|
||
v_errorhint := 'Kenmerk "Te crediteren" bepalen';
|
||
|
||
-- Vind kenmerk bij kenmerksoort voor activiteit van rsv_ruimte
|
||
SELECT cred.res_kenmerk_key, geexp.res_kenmerk_key
|
||
INTO v_kenmerk_key_cred, v_kenmerk_key_geexp
|
||
FROM res_kenmerk cred, res_kenmerk geexp, res_rsv_ruimte rr
|
||
WHERE cred.res_srtkenmerk_key = 203
|
||
AND geexp.res_srtkenmerk_key = 261
|
||
AND cred.res_kenmerk_verwijder IS NULL
|
||
AND geexp.res_kenmerk_verwijder IS NULL
|
||
AND rr.res_activiteit_key = cred.res_activiteit_key
|
||
AND rr.res_activiteit_key = geexp.res_activiteit_key
|
||
AND rr.res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
|
||
|
||
v_errormsg := 'Reset "Te crediteren"';
|
||
nybu.upsertkenmerk_res (v_kenmerk_key_cred,
|
||
rec.res_rsv_ruimte_key,
|
||
NULL);
|
||
v_errormsg := 'Reset bedrag';
|
||
nybu.upsertkenmerk_res (v_kenmerk_key_geexp,
|
||
rec.res_rsv_ruimte_key,
|
||
NULL);
|
||
|
||
fac.trackaction (
|
||
'RESUPD',
|
||
rec.res_rsv_ruimte_key,
|
||
NULL,
|
||
SYSDATE,
|
||
'<EFBFBD>'
|
||
|| TO_CHAR (rec.credit)
|
||
|| ' '
|
||
|| rec.inclexcl
|
||
|| ' BTW gecrediteerd');
|
||
fac.writelog (
|
||
p_applname,
|
||
'I',
|
||
rec.reservering
|
||
|| ': <20>'
|
||
|| TO_CHAR (rec.credit)
|
||
|| ' '
|
||
|| rec.inclexcl
|
||
|| ' BTW gecrediteerd',
|
||
rec.inex);
|
||
END LOOP;
|
||
|
||
-- Externe + interne reserveringen: zet exportdatum en gefactureerd bedrag (incl resp excl BTW)
|
||
-- En zet exportdatum in verkoopfactuurtabel
|
||
FOR rec IN c_fact
|
||
LOOP
|
||
v_aanduiding := rec.reservering;
|
||
v_errorhint := 'Kenmerken bepalen';
|
||
|
||
-- Vind kenmerk bij kenmerksoort voor activiteit van rsv_ruimte
|
||
SELECT datum.res_kenmerk_key, geexp.res_kenmerk_key
|
||
INTO v_kenmerk_key_datum, v_kenmerk_key_geexp
|
||
FROM res_kenmerk datum, res_kenmerk geexp, res_rsv_ruimte rr
|
||
WHERE datum.res_srtkenmerk_key = 202
|
||
AND geexp.res_srtkenmerk_key = 261
|
||
AND datum.res_kenmerk_verwijder IS NULL
|
||
AND geexp.res_kenmerk_verwijder IS NULL
|
||
AND rr.res_activiteit_key = datum.res_activiteit_key
|
||
AND rr.res_activiteit_key = geexp.res_activiteit_key
|
||
AND rr.res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
|
||
|
||
v_aanduiding := rec.reservering;
|
||
v_errorhint := 'Update kenmerken (' || rec.inex || ')';
|
||
nybu.upsertkenmerk_res (v_kenmerk_key_datum,
|
||
rec.res_rsv_ruimte_key,
|
||
TO_CHAR (SYSDATE, 'DD-MM-YYYY'));
|
||
|
||
IF (rec.prijs != 0)
|
||
THEN
|
||
nybu.upsertkenmerk_res (v_kenmerk_key_geexp,
|
||
rec.res_rsv_ruimte_key,
|
||
TO_CHAR (rec.prijs));
|
||
v_trackmessage :=
|
||
'<EFBFBD>'
|
||
|| TO_CHAR (rec.prijs)
|
||
|| ' '
|
||
|| rec.inclexcl
|
||
|| ' BTW gefactureerd';
|
||
ELSE
|
||
v_trackmessage := 'Exportdatum gezet (geen kosten bij reservering)';
|
||
END IF;
|
||
|
||
fac.trackaction ('RESUPD',
|
||
rec.res_rsv_ruimte_key,
|
||
NULL,
|
||
SYSDATE,
|
||
v_trackmessage);
|
||
fac.writelog (p_applname,
|
||
'I',
|
||
rec.reservering || ': ' || v_trackmessage,
|
||
rec.inex);
|
||
|
||
v_errorhint := 'Zet exportdatum in verkoopfactuur';
|
||
|
||
UPDATE fin_verkoopfactuur
|
||
SET fin_verkoopfactuur_datum = SYSDATE
|
||
WHERE fac.safe_to_number (fin_verkoopfactuur_refkey) =
|
||
rec.res_rsv_ruimte_key;
|
||
END LOOP;
|
||
|
||
FOR rec IN c_rsv
|
||
LOOP
|
||
v_aanduiding :=
|
||
'Reservering '
|
||
|| rec.reservering
|
||
|| ' ('
|
||
|| rec.res_rsv_ruimte_key
|
||
|| ')';
|
||
|
||
v_errormsg := 'Verbruiksartikelen verwerken';
|
||
|
||
UPDATE res_rsv_artikel
|
||
SET res_status_bo_key = 6
|
||
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
|
||
|
||
v_errormsg := 'Voorzieningen verwerken';
|
||
|
||
UPDATE res_rsv_deel
|
||
SET res_status_bo_key = 6
|
||
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
|
||
|
||
v_errormsg := 'Ruimte verwerken';
|
||
|
||
UPDATE res_rsv_ruimte
|
||
SET res_status_bo_key = 6
|
||
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
|
||
|
||
fac.writelog (p_applname,
|
||
'I',
|
||
'Reservering verwerkt',
|
||
rec.reservering);
|
||
|
||
fac.trackaction ('RESVER',
|
||
rec.res_rsv_ruimte_key,
|
||
NULL,
|
||
NULL,
|
||
NULL);
|
||
END LOOP;
|
||
|
||
fac.writelog (p_applname,
|
||
'S',
|
||
'Reserveringen verwerkt',
|
||
'Periode ' || v_periodeNaam);
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
ROLLBACK;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
v_errorhint
|
||
|| ' ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.writelog (p_applname,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Onbekende fout! Niets verwerkt.');
|
||
COMMIT;
|
||
END nybu_export_res_verwerk;
|
||
/
|
||
|
||
|
||
-- Genereert exportbestand voor doorbelasting catering over interne reserveringen
|
||
-- fin_verkoopfactuur_n1 = intern/extern (0 = intern)
|
||
-- fin_verkoopfactuur_n2 = credit nee/ja (0 = nee)
|
||
-- fin_verkoopfactuur_c1 = reserveringnummer
|
||
-- fin_verkoopfactuur_c2 = klantnaam
|
||
-- fin_verkoopfactuur_c3 = klantreferentie
|
||
-- fin_verkoopfactuur_c4 = catering
|
||
-- fin_verkoopfactuur_d1 = res_rsv_ruimte_van
|
||
-- fin_verkoopfactuur_d2 = periode_tot (alleen voor catering)
|
||
|
||
CREATE OR REPLACE PROCEDURE nybu_select_res_cat (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
CURSOR c (c_tot DATE)
|
||
IS
|
||
SELECT klant,
|
||
res_rsv_ruimte_van,
|
||
periode,
|
||
grootboek,
|
||
kostenplaats_key,
|
||
kostenplaats,
|
||
deb_nr,
|
||
proj_key,
|
||
proj,
|
||
btw,
|
||
prs_kostensoort_btw,
|
||
res_key,
|
||
res_volgnr,
|
||
referentie,
|
||
res_rsv_ruimte_key,
|
||
descr,
|
||
aantal,
|
||
omschrijving,
|
||
soort,
|
||
btw_code,
|
||
SUM (prijs_ex) prijs_ex,
|
||
SUM (prijs_inc) prijs_inc,
|
||
SUM (btw_laag) btw_laag,
|
||
SUM (btw_hoog) btw_hoog,
|
||
SUM (korting) korting,
|
||
SUM (inex) inex
|
||
FROM (SELECT k.prs_kostenplaats_omschrijving klant,
|
||
rr.res_rsv_ruimte_van,
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'YYYYMM') periode,
|
||
ks.prs_kostensoort_oms grootboek,
|
||
kg.prs_kostenplaatsgrp_key kostenplaats_key,
|
||
TRIM (SUBSTR (kg.prs_kostenplaatsgrp_oms, 1, 7))
|
||
kostenplaats,
|
||
k.prs_kostenplaats_nr deb_nr,
|
||
k.prs_kostenplaats_key proj_key,
|
||
k.prs_kostenplaats_nr proj,
|
||
btw.perc btw,
|
||
ks.prs_kostensoort_btw,
|
||
btw.btw_code,
|
||
rr.res_reservering_key res_key,
|
||
rr.res_rsv_ruimte_volgnr res_volgnr,
|
||
NULL referentie,
|
||
rr.res_reservering_key
|
||
|| '/'
|
||
|| rr.res_rsv_ruimte_volgnr
|
||
reservering,
|
||
rr.res_rsv_ruimte_key,
|
||
rr.res_rsv_ruimte_omschrijving descr,
|
||
1 aantal,
|
||
COALESCE (
|
||
(SELECT r.res_ruimte_nr
|
||
FROM res_ruimte_opstelling ro, res_ruimte r
|
||
WHERE ro.res_ruimte_opstel_key =
|
||
rr.res_ruimte_opstel_key
|
||
AND r.res_ruimte_key = ro.res_ruimte_key),
|
||
(SELECT 'Kamer '
|
||
|| alg_ruimte_nr
|
||
|| ' ('
|
||
|| alg_ruimte_omschrijving
|
||
|| ')'
|
||
FROM alg_v_ruimte_gegevens rg
|
||
WHERE rg.alg_ruimte_key = rr.alg_ruimte_key))
|
||
omschrijving,
|
||
'catering' soort,
|
||
(rra.res_rsv_artikel_prijs / (btw.perc + 100)) * 100
|
||
prijs_ex,
|
||
rra.res_rsv_artikel_prijs prijs_inc,
|
||
DECODE (
|
||
btw.perc,
|
||
6,
|
||
rra.res_rsv_artikel_prijs
|
||
* btw.perc
|
||
/ (100 + btw.perc),
|
||
0)
|
||
btw_laag,
|
||
DECODE (
|
||
btw.perc,
|
||
21,
|
||
rra.res_rsv_artikel_prijs
|
||
* btw.perc
|
||
/ (100 + btw.perc),
|
||
0)
|
||
btw_hoog,
|
||
0 korting,
|
||
0 inex
|
||
FROM res_rsv_ruimte rr,
|
||
prs_kostenplaats k,
|
||
prs_kostenplaatsgrp kg,
|
||
res_rsv_artikel rra,
|
||
res_artikel ra,
|
||
res_discipline di,
|
||
prs_kostensoort ks,
|
||
(SELECT fac.safe_to_number (fac_usrdata_upper) perc,
|
||
fac_usrdata_omschr btw_code
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 42
|
||
AND fac_usrdata_verwijder IS NULL) btw
|
||
WHERE COALESCE (k.prs_kostenplaats_extern, 0) = 0
|
||
AND kg.prs_kostenplaatsgrp_key =
|
||
k.prs_kostenplaatsgrp_key
|
||
AND rr.prs_kostenplaats_key = k.prs_kostenplaats_key
|
||
AND rr.res_rsv_ruimte_dirtlevel = 0
|
||
AND rr.res_rsv_ruimte_afgerond = 1
|
||
AND rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND rra.res_artikel_key = ra.res_artikel_key
|
||
AND ra.res_discipline_key = di.ins_discipline_key
|
||
AND ks.prs_kostensoort_key = di.prs_kostensoort_key
|
||
AND di.ins_discipline_key NOT IN (462, 581, 741) -- hotelkamers, inhuur voorzieningen, linnen
|
||
AND ra.res_artikel_btw = btw.perc
|
||
AND rra.res_rsv_artikel_prijs <> 0
|
||
AND rra.res_rsv_artikel_levering < c_tot
|
||
AND NOT EXISTS -- flag reservering bevat catering op externe kostenplaats is niet gezet.
|
||
(SELECT res_kenmerkwaarde_key
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 321 -- Reservering bevat catering op externe kostenpaats.
|
||
AND kw.res_rsv_ruimte_key =
|
||
rr.res_rsv_ruimte_key
|
||
AND fac.safe_to_number (
|
||
kw.res_kenmerkreservering_waarde) =
|
||
1)
|
||
AND NOT EXISTS -- entry komt nog niet voor in de verkoopfactuurtabel
|
||
(SELECT fin_verkoopfactuur_key
|
||
FROM fin_verkoopfactuur vf
|
||
WHERE vf.fin_verkoopfactuur_xmlnode =
|
||
'reservering'
|
||
AND vf.fin_verkoopfactuur_refkey =
|
||
rr.res_rsv_ruimte_key
|
||
AND COALESCE (vf.fin_verkoopfactuur_c4,
|
||
'NOP') = 'catering'))
|
||
GROUP BY klant,
|
||
res_rsv_ruimte_van,
|
||
periode,
|
||
grootboek,
|
||
kostenplaats_key,
|
||
kostenplaats,
|
||
deb_nr,
|
||
proj_key,
|
||
proj,
|
||
btw,
|
||
prs_kostensoort_btw,
|
||
res_key,
|
||
res_volgnr,
|
||
referentie,
|
||
res_rsv_ruimte_key,
|
||
descr,
|
||
aantal,
|
||
omschrijving,
|
||
soort,
|
||
btw_code
|
||
ORDER BY res_rsv_ruimte_key, btw_code;
|
||
|
||
v_teller NUMBER;
|
||
v_rap_count NUMBER;
|
||
v_kenmerk_key_laatste NUMBER;
|
||
v_ruimte_key_prev NUMBER;
|
||
v_verkoopfactuurkop_key NUMBER;
|
||
v_tot DATE;
|
||
v_van DATE;
|
||
BEGIN
|
||
v_teller := 0;
|
||
v_rap_count := 0;
|
||
|
||
v_aanduiding := 'Init';
|
||
v_errormsg := 'Periode bepalen';
|
||
|
||
SELECT TRUNC (MAX (fin_verkoopfactuur_d2))
|
||
INTO v_van
|
||
FROM fin_verkoopfactuur
|
||
WHERE fin_verkoopfactuur_datum IS NOT NULL
|
||
AND fin_verkoopfactuur_c4 = 'catering';
|
||
|
||
-- We rekenen met periodes van 4 weken. Dit in overleg met Vermaat John Hendriksen.
|
||
v_tot := v_van + 28;
|
||
|
||
DELETE imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
|
||
-- verwijder regels die nog niet verwerkt zijn
|
||
DELETE fin_verkoopfactuurkop
|
||
WHERE fin_verkoopfactuurkop_key IN
|
||
(SELECT fin_verkoopfactuurkop_key
|
||
FROM fin_verkoopfactuur
|
||
WHERE fin_verkoopfactuur_datum IS NULL
|
||
AND fin_verkoopfactuur_c4 = 'catering');
|
||
|
||
DELETE fin_verkoopfactuur
|
||
WHERE fin_verkoopfactuur_datum IS NULL
|
||
AND fin_verkoopfactuur_c4 = 'catering';
|
||
|
||
v_ruimte_key_prev := -1;
|
||
|
||
FOR rec IN c (v_tot)
|
||
LOOP
|
||
IF rec.res_rsv_ruimte_key <> v_ruimte_key_prev
|
||
THEN
|
||
v_ruimte_key_prev := rec.res_rsv_ruimte_key;
|
||
|
||
INSERT INTO fin_verkoopfactuurkop (fin_verkoopfactuurkop_id)
|
||
VALUES (rec.res_key || '/' || rec.res_volgnr || '-c')
|
||
RETURNING fin_verkoopfactuurkop_key
|
||
INTO v_verkoopfactuurkop_key;
|
||
END IF;
|
||
|
||
INSERT INTO fin_verkoopfactuur (fin_verkoopfactuurkop_key,
|
||
fin_verkoopfactuur_id,
|
||
fin_verkoopfactuur_datum,
|
||
fin_verkoopfactuur_omschr,
|
||
fin_verkoopfactuur_xmlnode,
|
||
fin_verkoopfactuur_refkey,
|
||
prs_kostenplaats_nr,
|
||
prs_kostenplaats_omschrijving,
|
||
prs_kostenplaatsgrp_oms,
|
||
prs_kostensoort_oms,
|
||
prs_debiteur_naam,
|
||
fin_verkoopfactuur_bedrag,
|
||
fin_verkoopfactuur_btw,
|
||
fin_btwtabelwaarde_code,
|
||
fin_btwtabelwaarde_oms,
|
||
fin_btwtabelwaarde_perc,
|
||
fin_verkoopfactuur_maand,
|
||
fin_verkoopfactuur_n1,
|
||
fin_verkoopfactuur_n2,
|
||
fin_verkoopfactuur_c1,
|
||
fin_verkoopfactuur_c2,
|
||
fin_verkoopfactuur_c3,
|
||
fin_verkoopfactuur_c4,
|
||
fin_verkoopfactuur_d1,
|
||
fin_verkoopfactuur_d2)
|
||
VALUES (v_verkoopfactuurkop_key,
|
||
TO_CHAR (SYSDATE, 'YYYY-MM-DD'),
|
||
NULL,
|
||
rec.omschrijving,
|
||
'reservering',
|
||
rec.res_rsv_ruimte_key,
|
||
rec.proj,
|
||
rec.proj,
|
||
rec.kostenplaats,
|
||
rec.grootboek,
|
||
rec.deb_nr,
|
||
rec.prijs_ex,
|
||
rec.btw_hoog + rec.btw_laag,
|
||
rec.btw_code,
|
||
rec.btw_code,
|
||
rec.btw,
|
||
rec.periode,
|
||
rec.inex,
|
||
0, -- debet
|
||
rec.res_key || '/' || rec.res_volgnr,
|
||
rec.klant,
|
||
rec.referentie,
|
||
'catering',
|
||
rec.res_rsv_ruimte_van,
|
||
v_tot);
|
||
END LOOP;
|
||
|
||
|
||
fac.writelog (p_applname,
|
||
'S',
|
||
'Factuurregels gegenereerd',
|
||
'');
|
||
|
||
COMMIT;
|
||
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.writelog (p_applname,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Onbekende fout!');
|
||
COMMIT;
|
||
END nybu_select_res_cat;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_exp_res_cat
|
||
(
|
||
project,
|
||
kostenplaats,
|
||
kostensoort,
|
||
bedrag,
|
||
btw,
|
||
btwcode,
|
||
opmerking
|
||
)
|
||
AS
|
||
SELECT prs_kostenplaats_nr,
|
||
prs_kostenplaatsgrp_oms,
|
||
prs_kostensoort_oms,
|
||
COALESCE (fin_verkoopfactuur_bedrag, 0),
|
||
COALESCE (fin_verkoopfactuur_btw, 0),
|
||
fin_btwtabelwaarde_code,
|
||
DECODE (
|
||
TRUNC (fin_verkoopfactuur_datum),
|
||
NULL,
|
||
'Leeg',
|
||
'Vermaat '
|
||
|| TO_CHAR (fin_verkoopfactuur_d2 - 28, 'dd/mm')
|
||
|| '-'
|
||
|| TO_CHAR (fin_verkoopfactuur_d2 - 1, 'dd/mm'))
|
||
FROM fin_verkoopfactuur v
|
||
WHERE fin_verkoopfactuur_c4 = 'catering'
|
||
AND fin_verkoopfactuur_c1 <> 'dummy';
|
||
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_factuur_cateraar
|
||
(
|
||
kostenplaats,
|
||
project,
|
||
bedrag,
|
||
btw,
|
||
bedragibtw,
|
||
btwcode,
|
||
regelomschrijving
|
||
)
|
||
AS
|
||
SELECT 'K90000' kostenplaats,
|
||
'P990000' project,
|
||
SUM (bedrag) bedrag,
|
||
SUM (btw) btw,
|
||
SUM (bedrag) + SUM (btw) bedragibtw,
|
||
btwcode,
|
||
opmerking
|
||
FROM nybu_v_exp_res_cat
|
||
GROUP BY btwcode, opmerking;
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_doorbelasting_cat
|
||
(
|
||
nummer,
|
||
adm,
|
||
grootboek,
|
||
kostenplaats,
|
||
project,
|
||
medewerker,
|
||
bedrag,
|
||
d_c,
|
||
regelomschrijving
|
||
)
|
||
AS
|
||
SELECT TO_CHAR (NULL) nummer,
|
||
TO_CHAR (NULL) adm,
|
||
kostensoort,
|
||
kostenplaats,
|
||
project,
|
||
TO_CHAR (NULL) medewerker,
|
||
SUM (bedrag) + SUM (btw),
|
||
'D',
|
||
opmerking
|
||
FROM nybu_v_exp_res_cat
|
||
GROUP BY kostensoort,
|
||
kostenplaats,
|
||
project,
|
||
opmerking
|
||
UNION ALL
|
||
SELECT TO_CHAR (NULL) nummer,
|
||
TO_CHAR (NULL) adm,
|
||
kostensoort,
|
||
'K90000' kostenplaats,
|
||
'P990000' project,
|
||
TO_CHAR (NULL) medewerker,
|
||
SUM (bedrag) + SUM (btw),
|
||
'C',
|
||
opmerking
|
||
FROM nybu_v_exp_res_cat
|
||
GROUP BY kostensoort, opmerking;
|
||
|
||
|
||
|
||
-- Zet status van de met RES_CODA ge<67>xporteerde reserveringen op Verwerkt.
|
||
-- res_srtkenmerk 202 Exportdatum
|
||
-- res_srtkenmerk 261 Ge<47>xporteerd bedrag
|
||
-- res_srtkenmerk 203 Te crediteren
|
||
-- res_srtkenmerk 241 In laatste export
|
||
-- fin_verkoopfactuur_n1 = intern/extern (0/1)
|
||
-- fin_verkoopfactuur_n2 = credit nee/ja (0/1)
|
||
-- fin_verkoopfactuur_c1 = reserveringnummer
|
||
-- NB: "In laatste export" wordt door de verwerk-export niet gereset
|
||
|
||
CREATE OR REPLACE PROCEDURE nybu_export_res_cat_verwerk (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2)
|
||
AS
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
v_periode VARCHAR (6);
|
||
v_periodeNaam VARCHAR2 (20);
|
||
v_kenmerk_key_cred NUMBER;
|
||
v_kenmerk_key_datum NUMBER;
|
||
v_kenmerk_key_geexp NUMBER;
|
||
v_trackmessage VARCHAR2 (100);
|
||
BEGIN
|
||
v_aanduiding := 'Init';
|
||
v_errormsg := 'Aanpassen facturdatum';
|
||
|
||
UPDATE fin_verkoopfactuur
|
||
SET fin_verkoopfactuur_datum = SYSDATE
|
||
WHERE fin_verkoopfactuur_datum IS NULL
|
||
AND fin_verkoopfactuur_c4 = 'catering';
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
ROLLBACK;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
v_errorhint
|
||
|| ' ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.writelog (p_applname,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Onbekende fout! Niets verwerkt.');
|
||
COMMIT;
|
||
END nybu_export_res_cat_verwerk;
|
||
/
|
||
|
||
-- NYBU#30645: Rapportage voor inzage in verkoopfactuurtabel
|
||
-- fin_verkoopfactuur_n1 = intern/extern (0/1)
|
||
-- fin_verkoopfactuur_n2 = creditering nee/ja (0/1)
|
||
-- fin_verkoopfactuur_c1 = reserveringnummer
|
||
-- fin_verkoopfactuur_c2 = klantnaam
|
||
-- fin_verkoopfactuur_c3 = klantreferentie
|
||
-- fin_verkoopfactuur_d1 = res_rsv_ruimte_van
|
||
-- fin_verkoopfactuur_d2 = periode_tot (alleen voor catering)
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_fin_verkoopfactuur
|
||
AS
|
||
SELECT fin_verkoopfactuur_maand
|
||
|| fin_verkoopfactuur_id
|
||
|| fin_verkoopfactuur_c1
|
||
|| REPLACE (fin_verkoopfactuur_omschr, 'Correctie ', ' ')
|
||
hide_f_sort,
|
||
fin_verkoopfactuur_maand fclt_f_periode,
|
||
fin_verkoopfactuur_id fclt_f_factuur_id,
|
||
fin_verkoopfactuur_c1 fclt_x_reservering,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("appl/res/res_reservering.asp?urole=fo&'
|
||
|| 'rsv_ruimte_key='
|
||
|| rr.res_rsv_ruimte_key
|
||
|| '")''>'
|
||
|| fin_verkoopfactuur_c1
|
||
|| '</a>'
|
||
html_reservering,
|
||
fin_verkoopfactuur_omschr,
|
||
prs_kostenplaats_nr fclt_f_project,
|
||
prs_kostenplaatsgrp_oms fclt_f_kostenplaats,
|
||
prs_kostensoort_oms fclt_f_kostensoort,
|
||
prs_debiteur_naam || ' ' || fin_verkoopfactuur_c2 fclt_f_debiteur,
|
||
fin_verkoopfactuur_c3 fclt_f_klantref,
|
||
fin_verkoopfactuur_bedrag bedrag_ex,
|
||
fin_verkoopfactuur_btw btw_bedrag,
|
||
fin_btwtabelwaarde_code
|
||
|| ' ('
|
||
|| TO_CHAR (fin_btwtabelwaarde_perc)
|
||
|| '%)'
|
||
btw_perc,
|
||
DECODE (fin_verkoopfactuur_n1, 0, 'intern', 1, 'extern')
|
||
fclt_f_inextern,
|
||
DECODE (fin_verkoopfactuur_n2, 0, '', 1, 'credit') fclt_f_credit
|
||
FROM fin_verkoopfactuur vf, res_rsv_ruimte rr
|
||
WHERE vf.fin_verkoopfactuur_xmlnode = 'reservering'
|
||
AND vf.fin_verkoopfactuur_c4 = 'ruimte/voorz'
|
||
AND rr.res_rsv_ruimte_key = fin_verkoopfactuur_refkey;
|
||
|
||
------- Rapportages Reserveringen ----------------------------------------------
|
||
|
||
-- Backoffice-looplijst voor General Services / schoonmaak
|
||
-- NYBU#27920: Catalogus "Catering room" (key 242) wegfilteren
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_res_looplijst
|
||
AS
|
||
SELECT DISTINCT
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'yyyy-mm-dd')
|
||
|| rg.alg_gebouw_upper
|
||
|| TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi')
|
||
hide_f_srt,
|
||
rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr nr,
|
||
rg.alg_gebouw_omschrijving fclt_f_gebouw,
|
||
rr.res_rsv_ruimte_van datum,
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi') begintijd,
|
||
TO_CHAR (rr.res_rsv_ruimte_tot, 'hh24:mi') eindtijd,
|
||
r.res_ruimte_nr fclt_f_ruimte,
|
||
o.res_opstelling_omschrijving opstelling,
|
||
rr.res_rsv_ruimte_bezoekers aantal,
|
||
rr.res_rsv_ruimte_omschrijving omschrijving,
|
||
mld.aant Meldingen,
|
||
voorzieningen,
|
||
rr.res_rsv_ruimte_key
|
||
FROM res_rsv_ruimte rr,
|
||
res_ruimte_opstelling ro,
|
||
res_opstelling o,
|
||
res_ruimte r,
|
||
res_alg_ruimte ar,
|
||
alg_v_ruimte_gegevens rg,
|
||
( SELECT res_rsv_ruimte_key,
|
||
'Ja (' || COUNT (res_rsv_ruimte_key) || ')' aant
|
||
FROM mld_melding
|
||
WHERE res_rsv_ruimte_key IS NOT NULL
|
||
GROUP BY res_rsv_ruimte_key) mld,
|
||
( SELECT res_rsv_ruimte_key,
|
||
LISTAGG (voorziening, CHR (13) || CHR (10))
|
||
WITHIN GROUP (ORDER BY voorziening)
|
||
AS Voorzieningen
|
||
FROM (SELECT res_rsv_ruimte_key,
|
||
res_deel_omschrijving voorziening
|
||
FROM res_deel rd, res_rsv_deel rrd
|
||
WHERE RES_RSV_DEEL_verwijder IS NULL
|
||
AND rd.res_deel_key = rrd.res_deel_key
|
||
AND res_rsv_ruimte_key IS NOT NULL)
|
||
GROUP BY res_rsv_ruimte_key) voorz
|
||
WHERE rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
|
||
AND o.res_opstelling_key = ro.res_opstelling_key
|
||
AND r.res_ruimte_key = ro.res_ruimte_key
|
||
AND r.res_discipline_key != 242
|
||
AND ar.res_ruimte_key = r.res_ruimte_key
|
||
AND ar.res_alg_ruimte_verwijder IS NULL
|
||
AND rg.alg_ruimte_key = ar.alg_ruimte_key
|
||
AND mld.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key
|
||
AND voorz.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key;
|
||
|
||
-- voor mobiel beperkt tot vandaag
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_mob_looplijst
|
||
AS
|
||
SELECT *
|
||
FROM nybu_v_rap_res_looplijst
|
||
WHERE TRUNC (datum) = TRUNC (SYSDATE);
|
||
|
||
-- Overzicht van reserveringen voor de komende 7 dagen die vandaag toegevoegd/gewijzigd zijn (tbv backoffice).
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_res_lastminutes
|
||
AS
|
||
SELECT ROUND (fac.safe_to_number (SYSDATE - t.fac_tracking_datum), 5)
|
||
|| rr.res_reservering_key
|
||
|| '/'
|
||
|| res_rsv_ruimte_volgnr
|
||
hide_f_srt,
|
||
TO_CHAR (t.fac_tracking_datum, 'DD-MM-YYYY') fclt_d_datum,
|
||
DECODE (
|
||
fac.safe_to_number (
|
||
TRUNC (SYSDATE) - TRUNC (t.fac_tracking_datum)),
|
||
0,
|
||
TO_CHAR (t.fac_tracking_datum, 'HH24:MI'),
|
||
TO_CHAR (t.fac_tracking_datum, 'DD-MM-YYYY HH24:MI'))
|
||
tijd,
|
||
pf.prs_perslid_naam_full door,
|
||
DECODE (sn.fac_srtnotificatie_code,
|
||
'RESUPD', 'Wijziging',
|
||
'RESNEW', 'Nieuw',
|
||
'RESDEL', 'Verwijderd')
|
||
fclt_f_actie,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("appl/res/res_reservering.asp?urole=fo&'
|
||
|| 'rsv_ruimte_key='
|
||
|| rr.res_rsv_ruimte_key
|
||
|| '")''>'
|
||
|| rr.res_reservering_key
|
||
|| '/'
|
||
|| res_rsv_ruimte_volgnr
|
||
|| '</a>'
|
||
html_reservering,
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'DD-MM-YYYY HH24:MI') aanvang,
|
||
rr.res_rsv_ruimte_omschrijving omschrijving,
|
||
t.fac_tracking_oms logtekst,
|
||
k.prs_kostenplaats_nr || ' - ' || k.prs_kostenplaats_omschrijving
|
||
pnummer
|
||
FROM fac_tracking t,
|
||
fac_srtnotificatie sn,
|
||
res_rsv_ruimte rr,
|
||
prs_v_perslid_fullnames pf,
|
||
prs_kostenplaats k
|
||
WHERE sn.fac_srtnotificatie_code IN ('RESUPD', 'RESNEW', 'RESDEL')
|
||
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND pf.prs_perslid_key = t.prs_perslid_key
|
||
AND rr.res_rsv_ruimte_key = t.fac_tracking_refkey
|
||
AND k.prs_kostenplaats_key = rr.prs_kostenplaats_key
|
||
AND TRUNC (fac_tracking_datum) >= TRUNC (SYSDATE - 21)
|
||
AND TRUNC (rr.res_rsv_ruimte_van) BETWEEN TRUNC (SYSDATE)
|
||
AND TRUNC (SYSDATE) + 14;
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_res_mut_events
|
||
AS
|
||
-- Verwijderde reserveringen
|
||
SELECT ROUND (fac.safe_to_number (SYSDATE - t.fac_tracking_datum), 5)
|
||
|| rr.res_reservering_key
|
||
|| '/'
|
||
|| res_rsv_ruimte_volgnr
|
||
hide_f_srt,
|
||
TO_CHAR (t.fac_tracking_datum, 'DD-MM-YYYY') fclt_d_datum,
|
||
DECODE (
|
||
fac.safe_to_number (
|
||
TRUNC (SYSDATE) - TRUNC (t.fac_tracking_datum)),
|
||
0,
|
||
TO_CHAR (t.fac_tracking_datum, 'HH24:MI'),
|
||
TO_CHAR (t.fac_tracking_datum, 'DD-MM-YYYY HH24:MI'))
|
||
tijd,
|
||
pf.prs_perslid_naam_full door,
|
||
'Verwijderd' fclt_f_actie,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("appl/res/res_reservering.asp?urole=fo&'
|
||
|| 'rsv_ruimte_key='
|
||
|| rr.res_rsv_ruimte_key
|
||
|| '")''>'
|
||
|| rr.res_reservering_key
|
||
|| '/'
|
||
|| res_rsv_ruimte_volgnr
|
||
|| '</a>'
|
||
html_reservering,
|
||
-- TO_CHAR(rr.res_rsv_ruimte_van, 'DD-MM-YYYY HH24:MI') aanvang,
|
||
sf.res_status_fo_omschrijving fclt_f_status,
|
||
rr.res_rsv_ruimte_omschrijving omschrijving,
|
||
COALESCE (t.fac_tracking_oms, lx.oms) logtekst,
|
||
NULL fclt_f_voorziening
|
||
FROM fac_tracking t,
|
||
fac_srtnotificatie sn,
|
||
res_rsv_ruimte rr,
|
||
prs_v_perslid_fullnames pf,
|
||
res_status_fo sf,
|
||
(SELECT fac_locale_xsl_label,
|
||
COALESCE (fac_locale_xsl_cust, fac_locale_xsl_tekst) oms
|
||
FROM fac_locale_xsl
|
||
WHERE fac_locale_xsl_label LIKE 'lcl_res_is_%'
|
||
AND fac_locale_xsl_lang = lcl.getuserlanguage ()) lx
|
||
WHERE sn.fac_srtnotificatie_code = 'RESDEL'
|
||
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND lx.fac_locale_xsl_label(+) =
|
||
'lcl_res_is_' || LOWER (sn.fac_srtnotificatie_code)
|
||
AND rr.res_rsv_ruimte_key = t.fac_tracking_refkey
|
||
AND pf.prs_perslid_key = t.prs_perslid_key
|
||
AND sf.res_status_fo_key = rr.res_status_fo_key
|
||
AND TRUNC (fac_tracking_datum) >= TRUNC (SYSDATE - 61)
|
||
UNION ALL
|
||
-- Mutaties/verwijdering hotelkamers + inhuur voorzieningen
|
||
SELECT ROUND (fac.safe_to_number (SYSDATE - t.fac_tracking_datum), 5)
|
||
|| rr.res_reservering_key
|
||
|| '/'
|
||
|| res_rsv_ruimte_volgnr
|
||
hide_f_srt,
|
||
TO_CHAR (t.fac_tracking_datum, 'DD-MM-YYYY') fclt_d_datum,
|
||
DECODE (
|
||
fac.safe_to_number (
|
||
TRUNC (SYSDATE) - TRUNC (t.fac_tracking_datum)),
|
||
0,
|
||
TO_CHAR (t.fac_tracking_datum, 'HH24:MI'),
|
||
TO_CHAR (t.fac_tracking_datum, 'DD-MM-YYYY HH24:MI'))
|
||
tijd,
|
||
pf.prs_perslid_naam_full door,
|
||
DECODE (sn.fac_srtnotificatie_code,
|
||
'RESUPD', 'Wijziging/Nieuw',
|
||
'RESNEW', 'Nieuw',
|
||
'RESDEL', 'Verwijderd')
|
||
actie,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("appl/res/res_reservering.asp?urole=fo&'
|
||
|| 'rsv_ruimte_key='
|
||
|| rr.res_rsv_ruimte_key
|
||
|| '")''>'
|
||
|| rr.res_reservering_key
|
||
|| '/'
|
||
|| res_rsv_ruimte_volgnr
|
||
|| '</a>'
|
||
html_reservering,
|
||
-- TO_CHAR(rr.res_rsv_ruimte_van, 'DD-MM-YYYY HH24:MI') aanvang,
|
||
sf.res_status_fo_omschrijving fclt_f_status,
|
||
rr.res_rsv_ruimte_omschrijving,
|
||
COALESCE (t.fac_tracking_oms, lx.oms),
|
||
ra.ins_discipline_omschrijving
|
||
|| ' / '
|
||
|| ra.res_artikel_omschrijving
|
||
FROM fac_tracking t,
|
||
fac_srtnotificatie sn,
|
||
res_rsv_ruimte rr,
|
||
prs_v_perslid_fullnames pf,
|
||
res_status_fo sf,
|
||
(SELECT fac_locale_xsl_label,
|
||
COALESCE (fac_locale_xsl_cust, fac_locale_xsl_tekst) oms
|
||
FROM fac_locale_xsl
|
||
WHERE fac_locale_xsl_label LIKE 'lcl_res_is_%'
|
||
AND fac_locale_xsl_lang = lcl.getuserlanguage ()) lx,
|
||
(SELECT ins_discipline_omschrijving, res_artikel_omschrijving
|
||
FROM res_artikel a, res_discipline d
|
||
WHERE a.res_discipline_key IN (462, 581)
|
||
AND d.ins_discipline_key = a.res_discipline_key) ra
|
||
WHERE sn.fac_srtnotificatie_code LIKE 'RES%'
|
||
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND lx.fac_locale_xsl_label(+) =
|
||
'lcl_res_is_' || LOWER (sn.fac_srtnotificatie_code)
|
||
AND rr.res_rsv_ruimte_key = t.fac_tracking_refkey
|
||
AND pf.prs_perslid_key = t.prs_perslid_key
|
||
AND sf.res_status_fo_key = rr.res_status_fo_key
|
||
AND TRUNC (fac_tracking_datum) >= TRUNC (SYSDATE - 61)
|
||
AND fac_tracking_oms LIKE
|
||
'%Arti___ %' || ra.res_artikel_omschrijving || '%';
|
||
|
||
-- Lijst externe reserveringen, met link om offerte uit te draaien
|
||
-- alleen voor kostenplaatsen externe reserveringen
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_res_offertes
|
||
AS
|
||
SELECT rr.res_reservering_key hide_f_srt,
|
||
TO_CHAR (rr.res_reservering_key) fclt_f_reservering,
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'YYYY-MM-DD') datum,
|
||
rr.res_rsv_ruimte_omschrijving omschrijving,
|
||
k.prs_kostenplaats_nr fclt_f_budgetnr,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("appl/fac/fac_report.asp?usrrap_key=282&mode=list&fclt_f_reservering='
|
||
|| rr.res_reservering_key
|
||
|| '", "Offerte '
|
||
|| rr.res_reservering_key
|
||
|| '")''>Print offerte</a>'
|
||
html_offerte
|
||
FROM res_rsv_ruimte rr,
|
||
prs_kostenplaats k,
|
||
( SELECT res_reservering_key, MIN (res_rsv_ruimte_volgnr) volgnr
|
||
FROM res_rsv_ruimte rrr, prs_kostenplaats pk
|
||
WHERE res_rsv_ruimte_van >= SYSDATE
|
||
AND res_status_bo_key IN (2)
|
||
AND rrr.res_status_fo_key IN (1, 2, 3)
|
||
AND res_rsv_ruimte_verwijder IS NULL
|
||
AND rrr.prs_kostenplaats_key = pk.prs_kostenplaats_key
|
||
AND pk.prs_kostenplaats_extern = 1
|
||
GROUP BY res_reservering_key) eerste
|
||
WHERE rr.res_reservering_key = eerste.res_reservering_key
|
||
AND rr.res_rsv_ruimte_volgnr = eerste.volgnr
|
||
AND k.prs_kostenplaats_key = rr.prs_kostenplaats_key;
|
||
|
||
-- Alle gegevens van een externe reservering die nodig zijn om een offerte-bon te kunnen maken.
|
||
-- kenmerk 201 = Bedrijf klant
|
||
-- kenmerk 141 = Contactpersoon bedrijf klant
|
||
-- kenmerk 55 = Alternative description
|
||
-- kenmerk 281 = referentie/kenmerk klant (bedrijf)
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_res_offerte
|
||
AS
|
||
SELECT *
|
||
FROM (SELECT *
|
||
FROM ( -- reservering
|
||
SELECT rr.res_reservering_key fclt_key,
|
||
TO_CHAR (rr.res_reservering_key)
|
||
fclt_f_reservering,
|
||
COALESCE (
|
||
altdesc.res_kenmerkreservering_waarde,
|
||
rr.res_rsv_ruimte_omschrijving)
|
||
omschrijving,
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'DD') dag,
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'MM') maand,
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'YYYY') jaar,
|
||
rr.res_rsv_ruimte_bezoekers totaal_aantal,
|
||
cp.prs_contactpersoon_naam_full
|
||
bedrijf_contactpersoon,
|
||
b.prs_bedrijf_naam bedrijf_naam,
|
||
b.prs_bedrijf_post_adres bedrijf_adres,
|
||
b.prs_bedrijf_post_postcode bedrijf_pc,
|
||
b.prs_bedrijf_post_plaats bedrijf_plaats,
|
||
b.prs_bedrijf_post_land bedrijf_land,
|
||
km.res_kenmerkreservering_waarde
|
||
bedrijf_kenmerk,
|
||
prog.res_kenmerkreservering_waarde programma,
|
||
p.prs_perslid_voornaam user_voornaam,
|
||
p.prs_perslid_tussenvoegsel user_tv,
|
||
p.prs_perslid_naam user_naam
|
||
FROM res_rsv_ruimte rr,
|
||
prs_bedrijf b,
|
||
nybu_v_contactpersoon cp,
|
||
(SELECT *
|
||
FROM res_kenmerkwaarde
|
||
WHERE res_kenmerkwaarde_verwijder IS NULL
|
||
AND res_kenmerk_key = 201) bedr,
|
||
(SELECT *
|
||
FROM res_kenmerkwaarde
|
||
WHERE res_kenmerkwaarde_verwijder IS NULL
|
||
AND res_kenmerk_key = 141) cont,
|
||
(SELECT *
|
||
FROM res_kenmerkwaarde
|
||
WHERE res_kenmerkwaarde_verwijder IS NULL
|
||
AND res_kenmerk_key = 55) altdesc,
|
||
(SELECT *
|
||
FROM res_kenmerkwaarde
|
||
WHERE res_kenmerkwaarde_verwijder IS NULL
|
||
AND res_kenmerk_key = 281) km,
|
||
(SELECT *
|
||
FROM res_kenmerkwaarde
|
||
WHERE res_kenmerkwaarde_verwijder IS NULL
|
||
AND res_kenmerk_key = 243) prog,
|
||
prs_perslid p
|
||
WHERE rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND bedr.res_rsv_ruimte_key(+) =
|
||
rr.res_rsv_ruimte_key
|
||
AND b.prs_bedrijf_key(+) =
|
||
fac.safe_to_number (
|
||
bedr.res_kenmerkreservering_waarde)
|
||
AND cont.res_rsv_ruimte_key(+) =
|
||
rr.res_rsv_ruimte_key
|
||
AND cp.prs_contactpersoon_key(+) =
|
||
fac.safe_to_number (
|
||
cont.res_kenmerkreservering_waarde)
|
||
AND altdesc.res_rsv_ruimte_key(+) =
|
||
rr.res_rsv_ruimte_key
|
||
AND km.res_rsv_ruimte_key(+) =
|
||
rr.res_rsv_ruimte_key
|
||
AND prog.res_rsv_ruimte_key(+) =
|
||
rr.res_rsv_ruimte_key
|
||
AND rr.res_rsv_ruimte_key =
|
||
(SELECT MIN (res_rsv_ruimte_key)
|
||
FROM res_rsv_ruimte
|
||
WHERE res_reservering_key =
|
||
rr.res_reservering_key
|
||
AND res_rsv_ruimte_verwijder IS NULL)
|
||
AND p.prs_perslid_key =
|
||
rr.res_rsv_ruimte_contact_key) r1
|
||
LEFT OUTER JOIN
|
||
( -- ruimtes
|
||
SELECT 'ruimte' soort,
|
||
reservering,
|
||
ruimte,
|
||
max_bez,
|
||
aantal,
|
||
datum,
|
||
van,
|
||
tot,
|
||
disc,
|
||
opstel,
|
||
ROUND (
|
||
DECODE (btw_incl,
|
||
0, prijs,
|
||
1, prijs / (1 + (btw_perc / 100))),
|
||
2)
|
||
prijs_ex,
|
||
ROUND (
|
||
DECODE (btw_incl,
|
||
0, prijs * (1 + (btw_perc / 100)),
|
||
1, prijs),
|
||
2)
|
||
prijs_in
|
||
FROM (SELECT rr.res_reservering_key reservering,
|
||
rog.res_ruimte_nr ruimte,
|
||
rog.res_ruimte_opstel_bezoekers max_bez,
|
||
rr.res_rsv_ruimte_bezoekers aantal,
|
||
TO_CHAR (rr.res_rsv_ruimte_van,
|
||
'DD-MM-YYYY')
|
||
datum,
|
||
TO_CHAR (rr.res_rsv_ruimte_van,
|
||
'HH24:MI')
|
||
van,
|
||
TO_CHAR (rr.res_rsv_ruimte_tot,
|
||
'HH24:MI')
|
||
tot,
|
||
d.ins_discipline_key disc,
|
||
rog.res_opstelling_omschrijving opstel,
|
||
res.getruimteprijs (
|
||
rr.res_rsv_ruimte_key)
|
||
- COALESCE (res_rsv_ruimte_korting, 0)
|
||
prijs,
|
||
21 btw_perc,
|
||
COALESCE (ks.prs_kostensoort_btw, 1)
|
||
btw_incl
|
||
FROM res_rsv_ruimte rr,
|
||
res_v_ruimte_opstel_gegevens rog,
|
||
res_ruimte r,
|
||
res_discipline d,
|
||
prs_kostensoort ks
|
||
WHERE rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rog.res_ruimte_opstel_key =
|
||
rr.res_ruimte_opstel_key
|
||
AND r.res_ruimte_key =
|
||
rog.res_ruimte_key
|
||
AND d.ins_discipline_key =
|
||
r.res_discipline_key
|
||
AND ks.prs_kostensoort_key(+) =
|
||
d.prs_kostensoort_key)
|
||
UNION ALL
|
||
-- objecten
|
||
SELECT 'deel' soort,
|
||
reservering,
|
||
deel,
|
||
NULL bez_max,
|
||
aantal,
|
||
datum,
|
||
van,
|
||
tot,
|
||
disc,
|
||
NULL opstel,
|
||
ROUND (
|
||
DECODE (btw_incl,
|
||
0, prijs,
|
||
1, prijs / (1 + (btw_perc / 100))),
|
||
2)
|
||
prijs_ex,
|
||
ROUND (
|
||
DECODE (btw_incl,
|
||
0, prijs * (1 + (btw_perc / 100)),
|
||
1, prijs),
|
||
2)
|
||
prijs_in
|
||
FROM (SELECT rr.res_reservering_key reservering,
|
||
d.res_deel_omschrijving deel,
|
||
rd.res_rsv_deel_aantal aantal,
|
||
TO_CHAR (rr.res_rsv_ruimte_van,
|
||
'DD-MM-YYYY')
|
||
datum,
|
||
TO_CHAR (rd.res_rsv_deel_van, 'HH24:MI')
|
||
van,
|
||
TO_CHAR (rd.res_rsv_deel_tot, 'HH24:MI')
|
||
tot,
|
||
d.ins_discipline_key disc,
|
||
res.getdeelprijs (rd.res_rsv_deel_key)
|
||
prijs,
|
||
21 btw_perc,
|
||
COALESCE (ks.prs_kostensoort_btw, 1)
|
||
btw_incl
|
||
FROM res_rsv_ruimte rr,
|
||
res_rsv_deel rd,
|
||
res_deel d,
|
||
res_discipline d,
|
||
prs_kostensoort ks
|
||
WHERE rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rd.res_rsv_ruimte_key =
|
||
rr.res_rsv_ruimte_key
|
||
AND rd.res_rsv_deel_verwijder IS NULL
|
||
AND d.res_deel_key = rd.res_deel_key
|
||
AND d.ins_discipline_key =
|
||
d.res_discipline_key
|
||
AND ks.prs_kostensoort_key(+) =
|
||
d.prs_kostensoort_key)
|
||
UNION ALL
|
||
-- artikelen
|
||
SELECT 'artikel' soort,
|
||
reservering,
|
||
artikel,
|
||
volgnr bez_max,
|
||
aantal,
|
||
datum,
|
||
van,
|
||
NULL tot,
|
||
disc,
|
||
NULL opstel,
|
||
ROUND (
|
||
DECODE (btw_incl,
|
||
0, prijs,
|
||
1, prijs / (1 + (btw_perc / 100))),
|
||
2)
|
||
prijs_ex,
|
||
ROUND (
|
||
DECODE (btw_incl,
|
||
0, prijs * (1 + (btw_perc / 100)),
|
||
1, prijs),
|
||
2)
|
||
prijs_in
|
||
FROM (SELECT rr.res_reservering_key reservering,
|
||
a.res_artikel_omschrijving artikel,
|
||
ra.res_rsv_artikel_aantal aantal,
|
||
TO_CHAR (ra.res_rsv_artikel_levering,
|
||
'DD-MM-YYYY')
|
||
datum,
|
||
TO_CHAR (ra.res_rsv_artikel_levering,
|
||
'HH24:MI')
|
||
van,
|
||
d.ins_discipline_key disc,
|
||
a.res_artikel_volgnummer volgnr,
|
||
res.getartikelprijs (
|
||
ra.res_rsv_artikel_key)
|
||
prijs,
|
||
COALESCE (a.res_artikel_btw, 0) btw_perc,
|
||
COALESCE (ks.prs_kostensoort_btw, 1)
|
||
btw_incl
|
||
FROM res_rsv_ruimte rr,
|
||
res_rsv_artikel ra,
|
||
res_artikel a,
|
||
res_discipline d,
|
||
prs_kostensoort ks
|
||
WHERE rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND ra.res_rsv_ruimte_key =
|
||
rr.res_rsv_ruimte_key
|
||
AND ra.res_rsv_artikel_verwijder IS NULL
|
||
AND a.res_artikel_key =
|
||
ra.res_artikel_key
|
||
AND d.ins_discipline_key =
|
||
a.res_discipline_key
|
||
AND ks.prs_kostensoort_key(+) =
|
||
d.prs_kostensoort_key)) r2
|
||
ON r1.fclt_key = r2.reservering);
|
||
|
||
------- Overig Reserveringen ---------------------------------------------------
|
||
|
||
-- Voor kenmerkdomein contactpersoon (RES)
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_contactpersoon
|
||
AS
|
||
SELECT prs_contactpersoon_key,
|
||
DECODE (prs_contactpersoon_aanhef,
|
||
NULL, 'dhr/mevr ',
|
||
prs_contactpersoon_aanhef || ' ')
|
||
|| DECODE (prs_contactpersoon_voorletters,
|
||
NULL, '',
|
||
prs_contactpersoon_voorletters || ' ')
|
||
|| DECODE (prs_contactpersoon_tussenv,
|
||
NULL, '',
|
||
prs_contactpersoon_tussenv || ' ')
|
||
|| prs_contactpersoon_naam
|
||
prs_contactpersoon_naam_full,
|
||
b.prs_bedrijf_naam
|
||
FROM prs_contactpersoon p, prs_bedrijf b
|
||
WHERE p.prs_bedrijf_key = b.prs_bedrijf_key;
|
||
|
||
-- Notificatiejob res_reminder: 4 weken voor aanvang (obv 24/7)
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_noti_resreminder
|
||
(
|
||
CODE,
|
||
SENDER,
|
||
RECEIVER,
|
||
TEXT,
|
||
KEY,
|
||
XKEY
|
||
)
|
||
AS
|
||
SELECT 'RESINF',
|
||
NULL,
|
||
rsvr.res_rsv_ruimte_contact_key,
|
||
'Reservering '
|
||
|| res.res_reservering_key
|
||
|| ': U heeft op '
|
||
|| TO_CHAR (rsvr.res_rsv_ruimte_van, 'DD-MM')
|
||
|| ' van '
|
||
|| TO_CHAR (rsvr.res_rsv_ruimte_van, 'HH24:MI')
|
||
|| ' tot '
|
||
|| TO_CHAR (rsvr.res_rsv_ruimte_tot, 'HH24:MI')
|
||
|| ' ruimte '
|
||
|| r.res_ruimte_nr
|
||
|| ' gereserveerd.',
|
||
res.res_reservering_key,
|
||
rsvr.res_rsv_ruimte_key
|
||
FROM res_v_aanwezigreservering res,
|
||
res_v_aanwezigrsv_ruimte rsvr,
|
||
res_ruimte_opstelling opst,
|
||
res_disc_params rdp,
|
||
res_ruimte r
|
||
WHERE r.res_discipline_key = rdp.res_ins_discipline_key
|
||
AND rdp.res_disc_params_noti_dagen IS NOT NULL
|
||
AND res.res_reservering_key = rsvr.res_reservering_key
|
||
AND opst.res_ruimte_opstel_key = rsvr.res_ruimte_opstel_key
|
||
AND opst.res_ruimte_key = r.res_ruimte_key
|
||
AND rsvr.res_status_fo_key <= 5
|
||
AND rsvr.res_rsv_ruimte_van BETWEEN SYSDATE
|
||
+ res_disc_params_noti_dagen
|
||
AND SYSDATE
|
||
+ res_disc_params_noti_dagen
|
||
+ 1
|
||
AND rsvr.res_rsv_ruimte_van >= SYSDATE
|
||
UNION ALL
|
||
SELECT 'RESINF',
|
||
NULL,
|
||
res_rsv_ruimte_contact_key,
|
||
'Reservering '
|
||
|| res_reservering_key
|
||
|| ': U heeft op '
|
||
|| TO_CHAR (MIN (van), 'dd-mm')
|
||
|| DECODE (
|
||
MIN (van),
|
||
MAX (tot),
|
||
' om ' || TO_CHAR (MIN (van), 'hh24:mi'),
|
||
' van '
|
||
|| TO_CHAR (MIN (van), 'hh24:mi')
|
||
|| ' tot '
|
||
|| TO_CHAR (MAX (tot), 'hh24:mi'))
|
||
|| ' in ruimte ('
|
||
|| (SELECT alg_gebouw_code
|
||
|| '-'
|
||
|| alg_verdieping_code
|
||
|| '-'
|
||
|| alg_ruimte_nr
|
||
FROM alg_v_onroerendgoed_gegevens arg
|
||
WHERE arg.alg_ruimte_key = ruimte_key)
|
||
|| ') '
|
||
|| COUNT (res_reservering_key)
|
||
|| ' voorziening(en) gereserveerd.',
|
||
res_reservering_key,
|
||
res_rsv_ruimte_key
|
||
FROM (SELECT rsvr.res_rsv_ruimte_contact_key,
|
||
res.res_reservering_key,
|
||
rsvd.res_rsv_deel_van van,
|
||
rsvd.res_rsv_deel_tot tot,
|
||
rsvr.res_rsv_ruimte_key,
|
||
rsvr.alg_ruimte_key ruimte_key
|
||
FROM res_v_aanwezigreservering res,
|
||
res_v_aanwezigrsv_ruimte rsvr,
|
||
res_disc_params rdp,
|
||
res_rsv_deel rsvd,
|
||
res_deel rd
|
||
WHERE rsvd.res_rsv_ruimte_key = rsvr.res_rsv_ruimte_key
|
||
AND rd.res_deel_key = rsvd.res_deel_key
|
||
AND rd.res_discipline_key = rdp.res_ins_discipline_key
|
||
AND rdp.res_disc_params_noti_dagen IS NOT NULL
|
||
AND res.res_reservering_key = rsvr.res_reservering_key
|
||
AND rsvr.res_ruimte_opstel_key IS NULL
|
||
AND rsvr.res_status_fo_key <= 5
|
||
AND rsvd.res_rsv_deel_verwijder IS NULL
|
||
AND rsvd.res_rsv_deel_van BETWEEN SYSDATE
|
||
+ res_disc_params_noti_dagen
|
||
AND SYSDATE
|
||
+ res_disc_params_noti_dagen
|
||
+ 1
|
||
AND rsvd.res_rsv_deel_van >= SYSDATE
|
||
UNION ALL
|
||
SELECT rsvr.res_rsv_ruimte_contact_key,
|
||
res.res_reservering_key,
|
||
rsva.res_rsv_artikel_levering van,
|
||
rsva.res_rsv_artikel_levering tot,
|
||
rsvr.res_rsv_ruimte_key,
|
||
rsvr.alg_ruimte_key ruimte_key
|
||
FROM res_v_aanwezigreservering res,
|
||
res_v_aanwezigrsv_ruimte rsvr,
|
||
res_disc_params rdp,
|
||
res_rsv_artikel rsva,
|
||
res_artikel ra
|
||
WHERE rsva.res_rsv_ruimte_key = rsvr.res_rsv_ruimte_key
|
||
AND ra.res_discipline_key = rdp.res_ins_discipline_key
|
||
AND rsva.res_artikel_key = ra.res_artikel_key
|
||
AND rdp.res_disc_params_noti_dagen IS NOT NULL
|
||
AND res.res_reservering_key = rsvr.res_reservering_key
|
||
AND rsvr.res_ruimte_opstel_key IS NULL
|
||
AND rsvr.res_status_fo_key <= 5
|
||
AND rsva.res_rsv_artikel_verwijder IS NULL
|
||
AND rsva.res_rsv_artikel_levering BETWEEN SYSDATE
|
||
+ res_disc_params_noti_dagen
|
||
AND SYSDATE
|
||
+ res_disc_params_noti_dagen
|
||
+ 1
|
||
AND rsva.res_rsv_artikel_levering >= SYSDATE)
|
||
GROUP BY res_rsv_ruimte_contact_key,
|
||
res_reservering_key,
|
||
res_rsv_ruimte_key,
|
||
ruimte_key;
|
||
|
||
-- Alle door Vermaat geleverde artikelen
|
||
-- - N<> 1-1-2014, want pas sinds die datum leverancier
|
||
-- - Met 3D-scoping op catalogi
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_vermaat
|
||
AS
|
||
SELECT res_reservering_key,
|
||
res_rsv_ruimte_volgnr,
|
||
res_rsv_ruimte_key,
|
||
res_rsv_ruimte_van,
|
||
res_rsv_artikel_levering,
|
||
TO_CHAR (res_rsv_artikel_levering, 'DD-MM-YYYY') datum,
|
||
TO_CHAR (res_rsv_artikel_levering, 'HH24:MI') tijd,
|
||
res_srtactiviteit_key,
|
||
res_artikel_key,
|
||
artikelnr,
|
||
artikeloms,
|
||
ins_discipline_key,
|
||
catalogus,
|
||
status,
|
||
aantal,
|
||
res_rsv_artikel_prijs,
|
||
res_artikel_prijs,
|
||
eenheid,
|
||
eenheidsprijs,
|
||
res_artikel_btw,
|
||
btw,
|
||
DECODE (prs_kostensoort_btw, 0, totaalprijs, 1, totaalprijs / btw)
|
||
totaalprijs_ex,
|
||
DECODE (prs_kostensoort_btw, 0, totaalprijs * btw, 1, totaalprijs)
|
||
totaalprijs_in,
|
||
DECODE (prs_kostensoort_btw,
|
||
0, totaalprijs * (btw - 1),
|
||
1, totaalprijs - totaalprijs / btw)
|
||
totaal_btw,
|
||
prs_kostenplaats_nr,
|
||
prs_kostenplaats_omschrijving,
|
||
SUBSTR (prs_kostenplaatsgrp_oms,
|
||
1,
|
||
INSTR (prs_kostenplaatsgrp_oms, ' - ') - 1)
|
||
kpngrp_nr,
|
||
SUBSTR (prs_kostenplaatsgrp_oms,
|
||
INSTR (prs_kostenplaatsgrp_oms, ' - ') + 3)
|
||
kpngrp_oms,
|
||
prs_perslid_key,
|
||
prs_perslid_naam_full
|
||
FROM (SELECT rr.res_reservering_key,
|
||
rr.res_rsv_ruimte_volgnr,
|
||
rr.res_rsv_ruimte_key,
|
||
rr.res_rsv_ruimte_van,
|
||
ra.res_rsv_artikel_levering,
|
||
act.res_srtactiviteit_key,
|
||
a.res_artikel_key,
|
||
a.res_artikel_nr artikelnr,
|
||
a.res_artikel_omschrijving artikeloms,
|
||
d.ins_discipline_key,
|
||
d.ins_discipline_omschrijving catalogus,
|
||
ra.res_status_bo_key status,
|
||
ra.res_rsv_artikel_aantal aantal,
|
||
ra.res_rsv_artikel_prijs,
|
||
a.res_artikel_prijs,
|
||
a.res_artikel_eenheid eenheid,
|
||
a.res_artikel_prijs eenheidsprijs,
|
||
a.res_artikel_btw,
|
||
COALESCE (1 + (a.res_artikel_btw / 100), 1) btw,
|
||
res.getartikelprijs (ra.res_rsv_artikel_key) totaalprijs,
|
||
k.prs_kostenplaats_nr,
|
||
k.prs_kostenplaats_omschrijving,
|
||
kg.prs_kostenplaatsgrp_oms,
|
||
ks.prs_kostensoort_btw,
|
||
pf.prs_perslid_key,
|
||
pf.prs_perslid_naam_full
|
||
FROM res_rsv_artikel ra,
|
||
res_artikel a,
|
||
res_discipline d,
|
||
res_rsv_ruimte rr,
|
||
res_activiteit act,
|
||
prs_kostenplaats k,
|
||
prs_kostenplaatsgrp kg,
|
||
prs_kostensoort ks,
|
||
prs_v_perslid_fullnames pf
|
||
WHERE ra.res_rsv_artikel_verwijder IS NULL
|
||
AND ra.res_rsv_artikel_levering >=
|
||
TO_DATE ('01-01-2014', 'DD-MM-YYYY')
|
||
AND a.res_artikel_key = ra.res_artikel_key
|
||
AND d.ins_discipline_key = a.res_discipline_key
|
||
AND d.ins_discipline_min_level = 2
|
||
AND d.ins_discipline_key NOT IN (462, 581)
|
||
AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
|
||
AND act.res_activiteit_key = rr.res_activiteit_key
|
||
AND k.prs_kostenplaats_key = rr.prs_kostenplaats_key
|
||
AND kg.prs_kostenplaatsgrp_key(+) =
|
||
k.prs_kostenplaatsgrp_key
|
||
AND ks.prs_kostensoort_key(+) = d.prs_kostensoort_key
|
||
AND pf.prs_perslid_key = rr.res_rsv_ruimte_contact_key);
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_vermaat
|
||
AS
|
||
SELECT res_rsv_artikel_levering hide_f_sort,
|
||
res_reservering_key || '/' || res_rsv_ruimte_volgnr
|
||
fclt_f_reservering,
|
||
datum fclt_d_datum,
|
||
tijd,
|
||
artikelnr,
|
||
artikeloms fclt_f_artikel,
|
||
catalogus fclt_f_catalogus,
|
||
aantal,
|
||
eenheid,
|
||
eenheidsprijs,
|
||
ROUND (totaalprijs_ex, 2) totaalprijs_excl,
|
||
ROUND (totaalprijs_in, 2) totaalprijs_incl,
|
||
prs_kostenplaats_nr || ' - ' || prs_kostenplaats_omschrijving
|
||
fclt_f_pnummer,
|
||
kpngrp_nr || ' - ' || kpngrp_oms fclt_f_kostenplaats,
|
||
ins_discipline_key fclt_3d_discipline_key
|
||
FROM nybu_v_vermaat;
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_vermaat_cumulatief
|
||
AS
|
||
SELECT datum fclt_d_datum,
|
||
TO_CHAR (res_rsv_artikel_levering, 'YYYY-MM-DD') hide_f_levering,
|
||
catalogus || artikeloms hide_f_regel,
|
||
artikelnr,
|
||
artikeloms fclt_f_artikel,
|
||
eenheid,
|
||
catalogus fclt_f_catalogus,
|
||
COALESCE (SUM (totaalprijs_ex), 0) totaalprijs_ex,
|
||
COALESCE (SUM (totaalprijs_in), 0) totaalprijs_in,
|
||
ins_discipline_key fclt_3d_discipline_key
|
||
FROM nybu_v_vermaat
|
||
GROUP BY datum,
|
||
TO_CHAR (res_rsv_artikel_levering, 'YYYY-MM-DD'),
|
||
artikelnr,
|
||
artikeloms,
|
||
eenheid,
|
||
catalogus,
|
||
ins_discipline_key;
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_vermaat_kpn
|
||
AS
|
||
SELECT datum fclt_d_datum,
|
||
TO_CHAR (res_rsv_artikel_levering, 'YYYY-MM-DD') hide_f_levering,
|
||
prs_kostenplaats_nr || artikeloms hide_f_regel,
|
||
artikelnr,
|
||
artikeloms fclt_f_artikel,
|
||
eenheid,
|
||
prs_kostenplaats_nr || ' - ' || prs_kostenplaats_omschrijving
|
||
fclt_f_pnummer,
|
||
kpngrp_nr || ' - ' || kpngrp_oms fclt_f_kostenplaats,
|
||
COALESCE (SUM (totaalprijs_ex), 0) totaalprijs_ex,
|
||
COALESCE (SUM (totaalprijs_in), 0) totaalprijs_in,
|
||
ins_discipline_key fclt_3d_discipline_key
|
||
FROM nybu_v_vermaat
|
||
GROUP BY datum,
|
||
TO_CHAR (res_rsv_artikel_levering, 'YYYY-MM-DD'),
|
||
artikelnr,
|
||
artikeloms,
|
||
eenheid,
|
||
prs_kostenplaats_nr,
|
||
prs_kostenplaats_omschrijving,
|
||
kpngrp_nr,
|
||
kpngrp_oms,
|
||
ins_discipline_key;
|
||
|
||
--res_srtkenmerk External contact 41
|
||
--res_srtkenmerk Company 81
|
||
--res_srtkenmerk Referentie klant 121
|
||
--res_srtactiviteit Extern 10
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_vermaat_facturatie
|
||
AS
|
||
SELECT TO_CHAR (r.res_rsv_ruimte_van, 'YYYYMMDDHH24MI-')
|
||
|| r.res_reservering_key
|
||
|| '/'
|
||
|| res_rsv_ruimte_volgnr
|
||
hide_f_sort,
|
||
r.res_reservering_key || '/' || res_rsv_ruimte_volgnr
|
||
fclt_f_reservering,
|
||
r.prs_kostenplaats_nr || ' - ' || r.prs_kostenplaats_omschrijving
|
||
fclt_x_pnummer,
|
||
r.kpngrp_nr || ' - ' || r.kpngrp_oms fclt_x_kostenplaats,
|
||
r.prs_kostenplaats_nr pnummer,
|
||
r.prs_kostenplaats_omschrijving pnummer_oms,
|
||
r.kpngrp_nr kostenplaats,
|
||
r.kpngrp_oms kostenplaats_oms,
|
||
r.datum fclt_d_datum,
|
||
REPLACE (r.prs_perslid_naam_full, 'INACTIEF: ', '')
|
||
fclt_f_contactpersoon,
|
||
ROUND (COALESCE (l.ex_btw, 0), 2) excl_btw_laag,
|
||
ROUND (COALESCE (l.btw, 0), 2) btw_laag,
|
||
ROUND (COALESCE (h.ex_btw, 0), 2) excl_btw_hoog,
|
||
ROUND (COALESCE (h.btw, 0), 2) btw_hoog,
|
||
ROUND (COALESCE (l.ex_btw, 0) + COALESCE (h.ex_btw, 0), 2)
|
||
totaal_excl,
|
||
ROUND (COALESCE (l.btw, 0) + COALESCE (h.btw, 0), 2) totaal_btw,
|
||
ROUND (COALESCE (l.totaal, 0) + COALESCE (h.totaal, 0), 2)
|
||
totaal_incl,
|
||
-- a.totaal chck,
|
||
res_kenmerkreservering_waarde referentie_klant,
|
||
prs_contactpersoon_aanhef klant_aanhef,
|
||
prs_contactpersoon_voorletters klant_voorletters,
|
||
prs_contactpersoon_voornaam klant_voornaam,
|
||
prs_contactpersoon_tussenv klant_tussenvoegsel,
|
||
prs_contactpersoon_naam klant_achternaam,
|
||
prs_contactpersoon_telefoon_1 klant_tel1,
|
||
prs_contactpersoon_telefoon_2 klant_tel2,
|
||
prs_contactpersoon_email klant_email,
|
||
prs_bedrijf_naam bedrijf_naam,
|
||
prs_bedrijf_post_adres bedrijf_postadres,
|
||
prs_bedrijf_post_postcode bedrijf_postcode,
|
||
prs_bedrijf_post_plaats bedrijf_plaats,
|
||
prs_bedrijf_post_land bedrijf_land,
|
||
prs_bedrijf_telefoon bedrijf_tel,
|
||
prs_bedrijf_email bedrijf_email,
|
||
prs_leverancier_nr bedrijf_debiteurnr
|
||
FROM (SELECT DISTINCT res_rsv_ruimte_key,
|
||
res_reservering_key,
|
||
res_rsv_ruimte_volgnr,
|
||
res_rsv_ruimte_van,
|
||
prs_kostenplaats_nr,
|
||
prs_kostenplaats_omschrijving,
|
||
kpngrp_nr,
|
||
kpngrp_oms,
|
||
datum,
|
||
prs_perslid_naam_full,
|
||
'Extern' extern,
|
||
cp.prs_contactpersoon_aanhef,
|
||
cp.prs_contactpersoon_voorletters,
|
||
cp.prs_contactpersoon_tussenv,
|
||
cp.prs_contactpersoon_naam,
|
||
cp.prs_contactpersoon_voornaam,
|
||
cp.prs_contactpersoon_telefoon_1,
|
||
cp.prs_contactpersoon_telefoon_2,
|
||
cp.prs_contactpersoon_email,
|
||
b.prs_bedrijf_naam,
|
||
b.prs_bedrijf_post_adres,
|
||
b.prs_bedrijf_post_postcode,
|
||
b.prs_bedrijf_post_plaats,
|
||
b.prs_bedrijf_post_land,
|
||
b.prs_bedrijf_telefoon,
|
||
b.prs_bedrijf_email,
|
||
b.prs_leverancier_nr,
|
||
rf.res_kenmerkreservering_waarde
|
||
FROM nybu_v_vermaat v,
|
||
(SELECT kw.res_rsv_ruimte_key cp_rsv_ruimte_key, p.*
|
||
FROM res_kenmerkwaarde kw,
|
||
res_kenmerk k,
|
||
prs_contactpersoon p
|
||
WHERE kw.res_kenmerkwaarde_verwijder IS NULL
|
||
AND k.res_kenmerk_verwijder IS NULL
|
||
AND k.res_kenmerk_key = kw.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 41
|
||
AND p.prs_contactpersoon_key =
|
||
fac.safe_to_number (
|
||
kw.res_kenmerkreservering_waarde)) cp,
|
||
(SELECT kw.res_rsv_ruimte_key b_rsv_ruimte_key, b.*
|
||
FROM res_kenmerkwaarde kw,
|
||
res_kenmerk k,
|
||
prs_v_aanwezigbedrijf b
|
||
WHERE kw.res_kenmerkwaarde_verwijder IS NULL
|
||
AND k.res_kenmerk_verwijder IS NULL
|
||
AND k.res_kenmerk_key = kw.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 81
|
||
AND b.prs_bedrijf_key =
|
||
fac.safe_to_number (
|
||
kw.res_kenmerkreservering_waarde)) b,
|
||
(SELECT kw.res_rsv_ruimte_key rf_rsv_ruimte_key,
|
||
res_kenmerkreservering_waarde
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
WHERE kw.res_kenmerkwaarde_verwijder IS NULL
|
||
AND k.res_kenmerk_verwijder IS NULL
|
||
AND k.res_kenmerk_key = kw.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 121) rf
|
||
WHERE v.res_srtactiviteit_key = 10
|
||
AND cp.cp_rsv_ruimte_key(+) = v.res_rsv_ruimte_key
|
||
AND b.b_rsv_ruimte_key(+) = v.res_rsv_ruimte_key
|
||
AND rf.rf_rsv_ruimte_key(+) = v.res_rsv_ruimte_key
|
||
UNION ALL
|
||
SELECT DISTINCT res_rsv_ruimte_key,
|
||
res_reservering_key,
|
||
res_rsv_ruimte_volgnr,
|
||
res_rsv_ruimte_van,
|
||
prs_kostenplaats_nr,
|
||
prs_kostenplaats_omschrijving,
|
||
kpngrp_nr,
|
||
kpngrp_oms,
|
||
datum,
|
||
prs_perslid_naam_full,
|
||
'Intern' extern,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL
|
||
FROM nybu_v_vermaat
|
||
WHERE res_srtactiviteit_key != 10) r
|
||
LEFT OUTER JOIN ( SELECT res_rsv_ruimte_key,
|
||
SUM (totaalprijs_ex) ex_btw,
|
||
SUM (totaal_btw) btw,
|
||
SUM (totaalprijs_in) totaal
|
||
FROM nybu_v_vermaat
|
||
WHERE res_artikel_btw = 6
|
||
GROUP BY res_rsv_ruimte_key) l
|
||
ON l.res_rsv_ruimte_key = r.res_rsv_ruimte_key
|
||
LEFT OUTER JOIN ( SELECT res_rsv_ruimte_key,
|
||
SUM (totaalprijs_ex) ex_btw,
|
||
SUM (totaal_btw) btw,
|
||
SUM (totaalprijs_in) totaal
|
||
FROM nybu_v_vermaat
|
||
WHERE res_artikel_btw = 21
|
||
GROUP BY res_rsv_ruimte_key) h
|
||
ON h.res_rsv_ruimte_key = r.res_rsv_ruimte_key
|
||
-- LEFT OUTER JOIN (
|
||
-- SELECT res_rsv_ruimte_key,
|
||
-- SUM(totaalprijs_ex) ex_btw,
|
||
-- SUM(totaal_btw) btw,
|
||
-- SUM(totaalprijs_in) totaal
|
||
-- FROM nybu_v_vermaat
|
||
-- GROUP BY res_rsv_ruimte_key
|
||
-- ) a
|
||
-- ON a.res_rsv_ruimte_key = r.res_rsv_ruimte_key
|
||
;
|
||
---------------------------------------------------------------------------------
|
||
-- Rapportages goedkeuring catering
|
||
--
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_res_approve
|
||
(
|
||
hide_f_srt,
|
||
datum,
|
||
contact_key,
|
||
collega_key,
|
||
contact,
|
||
rsv_ruimte_key,
|
||
goedgekeurd,
|
||
melding,
|
||
html_nieuwe_opmerking,
|
||
bedrag,
|
||
catering,
|
||
status,
|
||
export,
|
||
html_reservering,
|
||
html_reservering_bo,
|
||
aanvang,
|
||
omschrijving,
|
||
pnummer,
|
||
intern_extern
|
||
)
|
||
AS
|
||
SELECT ROUND (fac.safe_to_number (SYSDATE - res_rsv_ruimte_van), 5)
|
||
|| rr.res_reservering_key
|
||
|| '/'
|
||
|| res_rsv_ruimte_volgnr
|
||
hide_f_srt,
|
||
res_rsv_ruimte_van datum,
|
||
rr.res_rsv_ruimte_contact_key,
|
||
c.prs_perslid_key_alt collega_key,
|
||
pfc.prs_perslid_naam_friendly contact,
|
||
rr.res_rsv_ruimte_key,
|
||
DECODE (rr.res_rsv_ruimte_afgerond, 1, 'Ja', 'Nee') goedgekeurd,
|
||
mld_melding_key,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("default.asp?u=YDsGBTulSHsSiCwP&rsv_ruimte_key='
|
||
|| rr.res_rsv_ruimte_key
|
||
|| '&txt=Opmerking over reservering: '
|
||
|| rr.res_reservering_key
|
||
|| '/'
|
||
|| res_rsv_ruimte_volgnr
|
||
|| '")''>Opmerking</a>'
|
||
nieuwe_opmerking,
|
||
res.getdeelresprijs (rr.res_rsv_ruimte_key) bedrag,
|
||
COALESCE (
|
||
(SELECT SUM (res.getartikelprijs (res_rsv_artikel_key))
|
||
FROM res_rsv_artikel rra, res_artikel ra
|
||
WHERE res_rsv_artikel_verwijder IS NULL
|
||
AND rra.res_artikel_key = ra.res_artikel_key
|
||
AND ra.res_discipline_key NOT IN (462, 581, 741) -- hotelkamers, inhuur voorzieningen, linnen
|
||
AND rra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key),
|
||
0)
|
||
catering,
|
||
DECODE (res_kenmerkreservering_waarde,
|
||
NULL, s.res_status_bo_omschrijving,
|
||
'Verwerkt')
|
||
status,
|
||
res_kenmerkreservering_waarde export,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("appl/res/res_reservering.asp?urole=fe&'
|
||
|| 'rsv_ruimte_key='
|
||
|| rr.res_rsv_ruimte_key
|
||
|| '")''>'
|
||
|| rr.res_reservering_key
|
||
|| '/'
|
||
|| res_rsv_ruimte_volgnr
|
||
|| '</a>'
|
||
html_reservering,
|
||
'<a class="details" onclick=''FcltMgr.openDetail("appl/res/res_reservering.asp?urole=fo&'
|
||
|| 'rsv_ruimte_key='
|
||
|| rr.res_rsv_ruimte_key
|
||
|| '")''>'
|
||
|| rr.res_reservering_key
|
||
|| '/'
|
||
|| res_rsv_ruimte_volgnr
|
||
|| '</a>'
|
||
html_reservering_bo,
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'DD-MM-YYYY HH24:MI') aanvang,
|
||
rr.res_rsv_ruimte_omschrijving omschrijving,
|
||
k.prs_kostenplaats_nr || ' - ' || k.prs_kostenplaats_omschrijving
|
||
pnummer,
|
||
DECODE (
|
||
(SELECT res_kenmerkwaarde_key
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 321 -- Reservering bevat catering op externe kostenpaats.
|
||
AND kw.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND fac.safe_to_number (
|
||
kw.res_kenmerkreservering_waarde) = 1),
|
||
NULL,
|
||
DECODE (prs_kostenplaats_extern, 0, 'Intern', 'Extern'),
|
||
'Extern')
|
||
bevatextcat
|
||
FROM res_rsv_ruimte rr,
|
||
(SELECT prs_perslid_key_alt, prs_perslid_key FROM prs_collega
|
||
UNION ALL
|
||
SELECT prs_perslid_key, prs_perslid_key FROM prs_perslid) c,
|
||
prs_v_perslid_fullnames pfc,
|
||
prs_kostenplaats k,
|
||
res_status_bo s,
|
||
( SELECT res_rsv_ruimte_key, MAX (mld_melding_key) mld_melding_key
|
||
FROM mld_melding
|
||
WHERE mld_stdmelding_key = 1301
|
||
GROUP BY res_rsv_ruimte_key) m, -- opmerking over catering
|
||
(SELECT res_kenmerkreservering_waarde, res_rsv_ruimte_key
|
||
FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
WHERE kw.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 202) e,
|
||
( SELECT MIN (res_status_bo_key) res_status_bo_key,
|
||
res_rsv_ruimte_key
|
||
FROM (SELECT res_status_bo_key, rr1.res_rsv_ruimte_key
|
||
FROM res_rsv_ruimte rr1
|
||
WHERE rr1.res_rsv_ruimte_verwijder IS NULL
|
||
UNION ALL
|
||
SELECT res_status_bo_key, rd1.res_rsv_ruimte_key
|
||
FROM res_rsv_deel rd1
|
||
WHERE rd1.res_rsv_deel_verwijder IS NULL
|
||
UNION ALL
|
||
SELECT res_status_bo_key, ra1.res_rsv_ruimte_key
|
||
FROM res_rsv_artikel ra1
|
||
WHERE ra1.res_rsv_artikel_verwijder IS NULL)
|
||
GROUP BY res_rsv_ruimte_key) bo_stat
|
||
WHERE rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rr.res_rsv_ruimte_contact_key = c.prs_perslid_key
|
||
AND pfc.prs_perslid_key = rr.res_rsv_ruimte_contact_key
|
||
AND k.prs_kostenplaats_key = rr.prs_kostenplaats_key
|
||
AND bo_stat.res_status_bo_key = s.res_status_bo_key
|
||
AND bo_stat.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND rr.res_rsv_ruimte_key = e.res_rsv_ruimte_key(+)
|
||
AND m.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key
|
||
AND s.res_status_bo_key = 5
|
||
AND NOT EXISTS
|
||
(SELECT fin_verkoopfactuur_refkey
|
||
FROM fin_verkoopfactuur
|
||
WHERE fin_verkoopfactuur_datum IS NOT NULL
|
||
AND COALESCE (fin_verkoopfactuur_c4, 'NOP') =
|
||
'catering'
|
||
AND fin_verkoopfactuur_refkey = rr.res_rsv_ruimte_key)
|
||
AND rr.res_rsv_ruimte_van > TO_DATE ('20160101', 'yyyymmdd');
|
||
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_rap_res_approve
|
||
AS
|
||
SELECT *
|
||
FROM nybu_v_res_approve
|
||
WHERE catering > 0;
|
||
|
||
-- notificatie naar contactpersoon als de reservering goedgekeurd moet worden. De mail wordt
|
||
-- drie werkdagen na de reservering verzonden. Aangezien er ook in het weekend gereserveerd
|
||
-- kan worden controleert de view of dezelfde notificatie ook gisteren verstuurd zou zijn.
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_noti_goedkeuring_cat
|
||
(
|
||
CODE,
|
||
SENDER,
|
||
RECEIVER,
|
||
TEXT,
|
||
KEY,
|
||
XKEY
|
||
)
|
||
AS
|
||
SELECT 'CUST01',
|
||
NULL,
|
||
res_rsv_ruimte_contact_key,
|
||
'Akkoord cateringkosten',
|
||
res_rsv_ruimte_key,
|
||
NULL
|
||
FROM res_rsv_ruimte rrr
|
||
WHERE fac.datumtijdplusuitvoertijd (TRUNC (SYSDATE),
|
||
-4,
|
||
'DAGEN',
|
||
0,
|
||
24,
|
||
1) <>
|
||
fac.datumtijdplusuitvoertijd (TRUNC (SYSDATE - 1),
|
||
-4,
|
||
'DAGEN',
|
||
0,
|
||
24,
|
||
1)
|
||
AND res_rsv_ruimte_tot BETWEEN fac.datumtijdplusuitvoertijd (
|
||
TRUNC (SYSDATE - 1),
|
||
-4,
|
||
'DAGEN',
|
||
0,
|
||
24,
|
||
1)
|
||
AND fac.datumtijdplusuitvoertijd (
|
||
TRUNC (SYSDATE),
|
||
-4,
|
||
'DAGEN',
|
||
0,
|
||
24,
|
||
1)
|
||
AND COALESCE (
|
||
(SELECT SUM (res.getartikelprijs (res_rsv_artikel_key))
|
||
FROM res_rsv_artikel rra, res_artikel ra
|
||
WHERE res_rsv_artikel_verwijder IS NULL
|
||
AND rra.res_artikel_key = ra.res_artikel_key
|
||
AND ra.res_discipline_key NOT IN (462, 581, 741) -- hotelkamers, inhuur voorzieningen, linnen
|
||
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key),
|
||
0) > 0;
|
||
|
||
---------------------------------------------------------------------------------
|
||
-- Koppeling met VIPS.
|
||
-- Deze view wordt gebruikt in soap-service: zie FSN#29345.
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_vips_koppeling
|
||
AS
|
||
SELECT rr.res_reservering_key,
|
||
rr.res_rsv_ruimte_volgnr,
|
||
rr.res_rsv_ruimte_key,
|
||
r.res_ruimte_key,
|
||
r.res_ruimte_nr,
|
||
l.alg_locatie_code,
|
||
l.alg_locatie_omschrijving,
|
||
g.alg_gebouw_code,
|
||
g.alg_gebouw_naam,
|
||
v.alg_verdieping_volgnr,
|
||
v.alg_verdieping_omschrijving,
|
||
ar.alg_ruimte_nr,
|
||
ar.alg_ruimte_omschrijving,
|
||
op.res_opstelling_key,
|
||
op.res_opstelling_omschrijving,
|
||
rr.res_rsv_ruimte_van,
|
||
rr.res_rsv_ruimte_omschrijving,
|
||
rr.res_rsv_ruimte_opmerking,
|
||
rr.res_rsv_ruimte_bezoekers,
|
||
rr.res_status_fo_key,
|
||
rr.res_status_bo_key,
|
||
ra.res_rsv_artikel_levering,
|
||
TO_CHAR (ra.res_rsv_artikel_levering, 'DD-MM-YYYY') datum,
|
||
TO_CHAR (ra.res_rsv_artikel_levering, 'HH24:MI') tijd,
|
||
ra.res_rsv_artikel_aantal aantal,
|
||
a.res_artikel_key,
|
||
a.res_artikel_nr artikelnr,
|
||
a.res_artikel_omschrijving artikeloms,
|
||
d.ins_discipline_key,
|
||
d.ins_discipline_omschrijving catalogus,
|
||
ra.res_rsv_artikel_prijs,
|
||
a.res_artikel_prijs,
|
||
a.res_artikel_prijs eenheidsprijs,
|
||
res.getartikelprijs (ra.res_rsv_artikel_key) totaalprijs,
|
||
c.prs_perslid_naam contact_naam,
|
||
c.prs_perslid_tussenvoegsel contact_tussenvoegsel,
|
||
c.prs_perslid_voorletters contact_voorletters,
|
||
c.prs_perslid_voornaam contact_voornaam,
|
||
DECODE (c.prs_perslid_geslacht, 0, 'V', 1, 'M', '')
|
||
contact_geslacht,
|
||
c.prs_perslid_email contact_email,
|
||
c.prs_perslid_telefoonnr contact_telefoonnr,
|
||
c.prs_perslid_mobiel contact_mobiel,
|
||
h.prs_perslid_naam host_naam,
|
||
h.prs_perslid_tussenvoegsel host_tussenvoegsel,
|
||
h.prs_perslid_voorletters host_voorletters,
|
||
h.prs_perslid_voornaam host_voornaam,
|
||
DECODE (h.prs_perslid_geslacht, 0, 'V', 1, 'M', '') host_geslacht,
|
||
h.prs_perslid_email host_email,
|
||
h.prs_perslid_telefoonnr host_telefoonnr,
|
||
h.prs_perslid_mobiel host_mobiel,
|
||
k.prs_kostenplaats_nr,
|
||
(SELECT w.res_kenmerkreservering_waarde
|
||
FROM res_kenmerkwaarde w, res_kenmerk k
|
||
WHERE w.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND w.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 161
|
||
AND w.res_kenmerkwaarde_verwijder IS NULL)
|
||
Dieet_wensen,
|
||
(SELECT w.res_kenmerkreservering_waarde
|
||
FROM res_kenmerkwaarde w, res_kenmerk k
|
||
WHERE w.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND w.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 102
|
||
AND w.res_kenmerkwaarde_verwijder IS NULL)
|
||
Aanvullende_wensen,
|
||
(SELECT w.res_kenmerkreservering_waarde
|
||
FROM res_kenmerkwaarde w, res_kenmerk k
|
||
WHERE w.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND w.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 101
|
||
AND w.res_kenmerkwaarde_verwijder IS NULL)
|
||
Programmatijden,
|
||
(SELECT b.prs_bedrijf_naam
|
||
FROM PRS_V_AANWEZIGBEDRIJF b, res_kenmerkwaarde w, res_kenmerk k
|
||
WHERE b.prs_bedrijf_key =
|
||
fac.safe_to_number (w.res_kenmerkreservering_waarde)
|
||
AND w.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND w.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 81
|
||
AND w.res_kenmerkwaarde_verwijder IS NULL)
|
||
extern_bedrijf,
|
||
(SELECT cp.prs_contactpersoon_naam_full
|
||
FROM NYBU_V_CONTACTPERSOON cp,
|
||
res_kenmerkwaarde w,
|
||
res_kenmerk k
|
||
WHERE cp.prs_contactpersoon_key =
|
||
fac.safe_to_number (w.res_kenmerkreservering_waarde)
|
||
AND w.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND w.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 41
|
||
AND w.res_kenmerkwaarde_verwijder IS NULL)
|
||
extern_contact
|
||
FROM res_rsv_artikel ra,
|
||
res_artikel a,
|
||
res_discipline d,
|
||
res_rsv_ruimte rr,
|
||
res_ruimte_opstelling ro,
|
||
res_opstelling op,
|
||
res_ruimte r,
|
||
alg_ruimte ar,
|
||
alg_verdieping v,
|
||
alg_gebouw g,
|
||
alg_locatie l,
|
||
prs_perslid c,
|
||
prs_kostenplaats k,
|
||
prs_perslid h
|
||
WHERE rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rr.res_rsv_ruimte_van >= SYSDATE - (4 * 7 * 24) / 24
|
||
AND rr.res_rsv_ruimte_van <= SYSDATE + (4 * 7 * 24) / 24
|
||
AND a.res_artikel_key = ra.res_artikel_key
|
||
AND d.ins_discipline_key = a.res_discipline_key
|
||
AND d.ins_discipline_key NOT IN (462, 581)
|
||
AND d.ins_discipline_min_level = 2
|
||
AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
|
||
AND rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key(+)
|
||
AND ro.res_ruimte_key = r.res_ruimte_key(+)
|
||
AND ro.res_opstelling_key = op.res_opstelling_key(+)
|
||
AND rr.alg_ruimte_key = ar.alg_ruimte_key(+)
|
||
AND ar.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(+)
|
||
AND rr.res_rsv_ruimte_contact_key = c.prs_perslid_key
|
||
AND k.prs_kostenplaats_key = rr.prs_kostenplaats_key
|
||
AND rr.res_rsv_ruimte_host_key = h.prs_perslid_key
|
||
AND rr.res_rsv_ruimte_dirtlevel = 0;
|
||
|
||
---------------------------------------------------------------------------------
|
||
|
||
-- notificatiejob voor Delivery at Servicepoint (stdmelding 961)
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_noti_deliveryreminder
|
||
(
|
||
CODE,
|
||
SENDER,
|
||
RECEIVER,
|
||
TEXT,
|
||
KEY,
|
||
XKEY
|
||
)
|
||
AS
|
||
SELECT 'MLDINF',
|
||
NULL,
|
||
prs_perslid_key_voor,
|
||
'Reminder: Delivery at Servicepoint',
|
||
mld_melding_key,
|
||
NULL
|
||
FROM mld_melding
|
||
WHERE mld_stdmelding_key = 961
|
||
AND mld_melding_status IN (0, 2, 3, 4, 7)
|
||
AND TRUNC (mld_melding_datum) = TRUNC (SYSDATE - 7);
|
||
|
||
------- USRGRAPHS ---------------------------------------------------------------
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_graph_mld_ppi_uitv
|
||
(
|
||
FCLT_XAS_AANTAL,
|
||
FCLT_YAS_TOTAAL,
|
||
FCLT_3D_DISCIPLINE_KEY
|
||
)
|
||
AS
|
||
SELECT TO_CHAR (SUM (uitvoeringoptijd)) aantal,
|
||
COUNT (mld_key) totaal,
|
||
MAX (ins_discipline_key)
|
||
FROM (SELECT DISTINCT
|
||
m.mld_melding_key mld_key,
|
||
md.ins_discipline_key,
|
||
CASE
|
||
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NULL
|
||
THEN
|
||
CASE SIGN(fac.datumtijdplusuitvoertijd (
|
||
m.mld_melding_datum,
|
||
m.mld_melding_t_uitvoertijd.tijdsduur,
|
||
m.mld_melding_t_uitvoertijd.eenheid)
|
||
- COALESCE (
|
||
fac.gettrackingdate (
|
||
'MLDREJ',
|
||
m.mld_melding_key),
|
||
fac.gettrackingdate (
|
||
'MLDAFM',
|
||
m.mld_melding_key),
|
||
SYSDATE))
|
||
WHEN -1
|
||
THEN
|
||
0
|
||
ELSE
|
||
1
|
||
END
|
||
ELSE
|
||
1
|
||
END
|
||
uitvoeringoptijd
|
||
FROM mld_melding m,
|
||
mld_discipline md,
|
||
mld_stdmelding std,
|
||
fac_groeprechten gr
|
||
WHERE md.ins_discipline_key = std.mld_ins_discipline_key
|
||
AND std.mld_stdmelding_key = m.mld_stdmelding_key
|
||
AND mld_melding_status IN (2, 3, 4, 7, 0)
|
||
AND gr.ins_discipline_key = std.mld_ins_discipline_key
|
||
AND gr.fac_groep_key = 21
|
||
AND gr.fac_functie_key = 33);
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_graph_mld_ppi_accept
|
||
(
|
||
FCLT_XAS_AANTAL,
|
||
FCLT_YAS_TOTAAL,
|
||
FCLT_3D_DISCIPLINE_KEY
|
||
)
|
||
AS
|
||
SELECT -- ROUND ( (SUM (acceptoptijd) / COUNT (mld_key)) * 100) acceptoptijd,
|
||
TO_CHAR (SUM (acceptoptijd)) aantal,
|
||
COUNT (mld_key) totaal,
|
||
MAX (ins_discipline_key)
|
||
FROM (SELECT DISTINCT
|
||
m.mld_melding_key mld_key,
|
||
md.ins_discipline_key,
|
||
CASE SIGN(fac.datumtijdplusuitvoertijd (
|
||
fac.gettrackingdate ('MLDNEW',
|
||
m.mld_melding_key),
|
||
std.mld_stdmelding_t_accepttijd.tijdsduur,
|
||
std.mld_stdmelding_t_accepttijd.eenheid)
|
||
- SYSDATE)
|
||
WHEN -1
|
||
THEN
|
||
0
|
||
ELSE
|
||
1
|
||
END
|
||
acceptoptijd
|
||
FROM mld_melding m,
|
||
mld_discipline md,
|
||
mld_stdmelding std,
|
||
fac_groeprechten gr
|
||
WHERE md.ins_discipline_key = std.mld_ins_discipline_key
|
||
AND std.mld_stdmelding_key = m.mld_stdmelding_key
|
||
AND mld_melding_status IN (2, 3)
|
||
AND gr.ins_discipline_key = std.mld_ins_discipline_key
|
||
AND gr.fac_groep_key = 21
|
||
AND gr.fac_functie_key = 33);
|
||
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_graph_busyxdiscipline
|
||
(
|
||
FCLT_XAS_,
|
||
FCLT_YAS_,
|
||
FCLT_URL,
|
||
FCLT_3D_DISCIPLINE_KEY
|
||
)
|
||
AS
|
||
SELECT discipline_omschrijving,
|
||
SUM (aantal),
|
||
'appl/mld/mld_search.asp?urole=bo&autosearch=1&chkSelf=1&chkNew=0&disc_key_str='
|
||
|| ins_discipline_key,
|
||
ins_discipline_key
|
||
FROM (SELECT d.ins_discipline_key,
|
||
sd.ins_srtdiscipline_prefix
|
||
|| '-'
|
||
|| d.ins_discipline_omschrijving
|
||
discipline_omschrijving,
|
||
aantal
|
||
FROM ( SELECT mld_stdmelding_key, COUNT ( * ) aantal
|
||
FROM mld_melding
|
||
WHERE mld_melding_status IN (4, 7, 0)
|
||
GROUP BY mld_stdmelding_key) m2,
|
||
mld_stdmelding std,
|
||
ins_tab_discipline d,
|
||
ins_srtdiscipline sd
|
||
WHERE m2.mld_stdmelding_key(+) = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND aantal IS NOT NULL)
|
||
GROUP BY discipline_omschrijving, ins_discipline_key;
|
||
|
||
-- Aantal open (te behandelen) meldingen per discipline
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_graph_todoxdiscipline
|
||
(
|
||
FCLT_XAS_,
|
||
FCLT_YAS_,
|
||
FCLT_URL,
|
||
FCLT_3D_DISCIPLINE_KEY
|
||
)
|
||
AS
|
||
SELECT discipline_omschrijving,
|
||
SUM (aantal),
|
||
'appl/mld/mld_search.asp?urole=bo&autosearch=1&disc_key_str='
|
||
|| ins_discipline_key,
|
||
ins_discipline_key
|
||
FROM (SELECT d.ins_discipline_key,
|
||
sd.ins_srtdiscipline_prefix
|
||
|| '-'
|
||
|| d.ins_discipline_omschrijving
|
||
discipline_omschrijving,
|
||
aantal
|
||
FROM ( SELECT mld_stdmelding_key, COUNT ( * ) aantal
|
||
FROM mld_melding
|
||
WHERE mld_melding_status IN (2, 3)
|
||
GROUP BY mld_stdmelding_key) m2,
|
||
mld_stdmelding std,
|
||
ins_tab_discipline d,
|
||
ins_srtdiscipline sd
|
||
WHERE m2.mld_stdmelding_key(+) = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND aantal IS NOT NULL)
|
||
GROUP BY discipline_omschrijving, ins_discipline_key;
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_graph_mldnieuw_verloop
|
||
(
|
||
FCLT_XAS_,
|
||
FCLT_YAS_
|
||
)
|
||
AS
|
||
SELECT tijd || ':00', 0
|
||
FROM ( SELECT TRIM (TO_CHAR (LEVEL, '09')) tijd, LEVEL nivo
|
||
FROM DUAL
|
||
CONNECT BY LEVEL <= 24)
|
||
WHERE nivo >= 7 AND nivo <= 19
|
||
AND NOT EXISTS
|
||
(SELECT ''
|
||
FROM mld_melding m
|
||
WHERE TRUNC (m.mld_melding_datum) = TRUNC (SYSDATE)
|
||
AND TO_CHAR (m.mld_melding_datum, 'hh24') = tijd)
|
||
UNION
|
||
SELECT TO_CHAR (m.mld_melding_datum, 'hh24') || ':00', COUNT ( * ) aantal
|
||
FROM mld_melding m, fac_groeprechten gr, mld_stdmelding s
|
||
WHERE TRUNC (m.mld_melding_datum) = TRUNC (SYSDATE)
|
||
AND gr.fac_groep_key = 21
|
||
AND gr.fac_functie_key = 33
|
||
AND gr.ins_discipline_key = s.mld_ins_discipline_key
|
||
AND m.mld_stdmelding_key = s.mld_stdmelding_key
|
||
GROUP BY TO_CHAR (m.mld_melding_datum, 'hh24');
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_graph_aanafgemeld
|
||
(
|
||
FCLT_XAS_,
|
||
FCLT_YAS_AANGEMELD,
|
||
FCLT_YAS2_AFGEMELD,
|
||
DATUM
|
||
)
|
||
AS
|
||
-- 21 "ICT Servicedesk"
|
||
-- 33 WEB_MLDBOF
|
||
SELECT TO_CHAR (dt.datum, 'DD-MM') datum_label,
|
||
COALESCE (aan.aantal, 0) aangemeld,
|
||
COALESCE (af.aantal, 0) afgemeld,
|
||
dt.datum datum
|
||
FROM ( SELECT TRUNC (SYSDATE + 1 - ROWNUM) datum
|
||
FROM DUAL
|
||
CONNECT BY ROWNUM <= (SYSDATE - ADD_MONTHS (SYSDATE, -1))) dt
|
||
LEFT OUTER JOIN ( -- 36 = MLDAFM, 41 = MLDREJ
|
||
SELECT TRUNC (t.fac_tracking_datum) datum,
|
||
COUNT ( * ) aantal
|
||
FROM fac_tracking t,
|
||
mld_melding m,
|
||
fac_groeprechten gr,
|
||
mld_stdmelding s
|
||
WHERE fac_srtnotificatie_key IN (36, 41)
|
||
AND TRUNC (fac_tracking_datum) BETWEEN ADD_MONTHS (
|
||
SYSDATE,
|
||
-1)
|
||
AND TRUNC(SYSDATE)
|
||
AND m.mld_melding_key =
|
||
t.fac_tracking_refkey
|
||
AND m.mld_stdmelding_key =
|
||
s.mld_stdmelding_key
|
||
AND gr.ins_discipline_key =
|
||
s.mld_ins_discipline_key
|
||
AND gr.fac_groep_key = 21
|
||
AND gr.fac_functie_key = 33
|
||
GROUP BY TRUNC (fac_tracking_datum)) af
|
||
ON af.datum = dt.datum
|
||
LEFT OUTER JOIN ( SELECT TRUNC (m.mld_melding_datum) datum,
|
||
COUNT ( * ) aantal
|
||
FROM mld_melding m,
|
||
fac_groeprechten gr,
|
||
mld_stdmelding s
|
||
WHERE gr.fac_groep_key = 21
|
||
AND gr.fac_functie_key = 33
|
||
AND gr.ins_discipline_key =
|
||
s.mld_ins_discipline_key
|
||
AND m.mld_stdmelding_key =
|
||
s.mld_stdmelding_key
|
||
AND TRUNC (m.mld_melding_datum) BETWEEN ADD_MONTHS (
|
||
SYSDATE,
|
||
-1)
|
||
AND TRUNC(SYSDATE)
|
||
GROUP BY TRUNC (m.mld_melding_datum)) aan
|
||
ON aan.datum = dt.datum
|
||
ORDER BY datum;
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_graph_aanaf_vandaag
|
||
(
|
||
FCLT_XAS_,
|
||
FCLT_YAS_,
|
||
FCLT_YAS2_
|
||
)
|
||
AS
|
||
SELECT 'Aangemeld', fclt_yas_aangemeld, 0 af
|
||
FROM nybu_v_graph_aanafgemeld
|
||
WHERE datum = TRUNC (SYSDATE)
|
||
UNION ALL
|
||
SELECT 'Afgemeld', 0, fclt_yas2_afgemeld
|
||
FROM nybu_v_graph_aanafgemeld
|
||
WHERE datum = TRUNC (SYSDATE);
|
||
|
||
CREATE OR REPLACE VIEW nybu_v_budgethouders
|
||
(
|
||
perslid_key,
|
||
naam
|
||
)
|
||
AS
|
||
SELECT prs_perslid_key, prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames
|
||
WHERE prs_perslid_key IN
|
||
(SELECT DISTINCT k.prs_perslid_key
|
||
FROM prs_kostenplaats k
|
||
WHERE K.PRS_KOSTENPLAATS_VERWIJDER IS NULL
|
||
AND (TRUNC (K.PRS_KOSTENPLAATS_EIND) >
|
||
TRUNC (SYSDATE)
|
||
OR K.PRS_KOSTENPLAATS_EIND IS NULL));
|
||
|
||
CREATE OR REPLACE VIEW NYBU_V_ICT_LEVERANCIERS
|
||
(
|
||
bedrijf_key,
|
||
naam_leverancier
|
||
)
|
||
AS
|
||
SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam
|
||
FROM prs_v_leverancierbedrijf b, prs_kenmerklink k
|
||
WHERE K.PRS_LINK_KEY = B.PRS_BEDRIJF_KEY AND K.PRS_KENMERK_KEY = 1260;
|
||
|
||
CREATE OR REPLACE VIEW NYBU_V_RAP_WIJZIGINGSVERZOEKEN
|
||
(
|
||
MELDINGNR,
|
||
MELDING,
|
||
DATUM,
|
||
STATUS,
|
||
AANVRAGER,
|
||
APPLICATIE,
|
||
ONDERWERP,
|
||
URGENTIE,
|
||
BEHANDELAAR
|
||
)
|
||
AS
|
||
SELECT m.mld_melding_key meldingnr,
|
||
m.mld_melding_key melding,
|
||
TO_DATE (m.mld_melding_datum) datum,
|
||
CASE m.mld_melding_status
|
||
WHEN 1 THEN 'Afgewezen'
|
||
WHEN 2 THEN 'Nieuw'
|
||
WHEN 3 THEN 'Te accepteren'
|
||
WHEN 4 THEN 'In behandeling'
|
||
WHEN 5 THEN 'Afgemeld'
|
||
WHEN 6 THEN 'Historie'
|
||
WHEN 7 THEN 'Uitgegeven'
|
||
END
|
||
status,
|
||
a.prs_perslid_naam_friendly aanvrager,
|
||
appl.fac_usrdata_code applicatie,
|
||
ond.mld_kenmerkmelding_waarde onderwerp,
|
||
urgw.fac_usrdata_code urgentie,
|
||
B.PRS_PERSLID_NAAM_FRIENDLY behandelaar
|
||
FROM mld_melding m,
|
||
prs_v_perslid_fullnames_all b,
|
||
prs_v_perslid_fullnames_all a,
|
||
mld_kenmerkmelding ka,
|
||
fac_usrdata appl,
|
||
mld_kenmerkmelding ond,
|
||
mld_kenmerkmelding urg,
|
||
fac_usrdata urgw
|
||
WHERE m.mld_stdmelding_key = 1821 --- wijzigingsverzoek
|
||
AND m.prs_perslid_key_voor = a.prs_perslid_key
|
||
AND m.mld_melding_behandelaar_key = b.prs_perslid_key(+)
|
||
AND ka.mld_melding_key = m.mld_melding_key
|
||
AND ka.mld_kenmerk_key = 1801 --- applicatie
|
||
AND ka.mld_kenmerkmelding_waarde = appl.fac_usrdata_key
|
||
AND ond.mld_melding_key = m.mld_melding_key
|
||
AND ond.mld_kenmerk_key = 1803 ---onderwerp
|
||
AND urg.mld_melding_key = m.mld_melding_key
|
||
AND urg.mld_kenmerk_key = 1805 --- urentie
|
||
AND urg.mld_kenmerkmelding_waarde = urgw.fac_usrdata_key;
|
||
|
||
CREATE OR REPLACE VIEW NYBU_V_RAP_ADV_WIJZIGINGSVERZ
|
||
(
|
||
MELDINGNR,
|
||
MELDING,
|
||
DATUM,
|
||
STATUS,
|
||
AANVRAGER,
|
||
APPLICATIE,
|
||
ONDERWERP,
|
||
URGENTIE,
|
||
BEHANDELAAR,
|
||
CATEGORIE
|
||
)
|
||
AS
|
||
SELECT m.mld_melding_key,
|
||
m.mld_melding_key meldingnr,
|
||
TO_DATE (m.mld_melding_datum) datum,
|
||
CASE m.mld_melding_status
|
||
WHEN 1 THEN 'Afgewezen'
|
||
WHEN 2 THEN 'Nieuw'
|
||
WHEN 3 THEN 'Te accepteren'
|
||
WHEN 4 THEN 'In behandeling'
|
||
WHEN 5 THEN 'Afgemeld'
|
||
WHEN 6 THEN 'Historie'
|
||
WHEN 7 THEN 'Uitgegeven'
|
||
END
|
||
status,
|
||
p.prs_perslid_naam_friendly aanvrager,
|
||
applw.fac_usrdata_code applicatie,
|
||
ond.mld_kenmerkmelding_waarde onderwerp,
|
||
urgw.fac_usrdata_code urgentie,
|
||
b.prs_perslid_naam_friendly behandelaar,
|
||
CASE cat.mld_kenmerkmelding_waarde
|
||
WHEN '921' THEN 'Categorie 1 - functioneel beheerder beslist'
|
||
WHEN '922' THEN 'Categorie 2 - het wijzigingsoverleg beslist'
|
||
WHEN '923' THEN 'Categorie 3 - College van Bestuur beslist'
|
||
END
|
||
categorie
|
||
FROM mld_melding m,
|
||
prs_v_perslid_fullnames_all p,
|
||
prs_v_perslid_fullnames_all b,
|
||
mld_kenmerkmelding appl,
|
||
fac_usrdata applw,
|
||
mld_kenmerkmelding ond,
|
||
mld_kenmerkmelding urg,
|
||
fac_usrdata urgw,
|
||
mld_kenmerkmelding cat
|
||
WHERE m.mld_stdmelding_key = 1821 --- wijzigingsverzoek
|
||
AND p.prs_perslid_key = m.prs_perslid_key_voor
|
||
AND b.prs_perslid_key(+) = m.mld_melding_behandelaar_key
|
||
AND appl.mld_melding_key = m.mld_melding_key
|
||
AND appl.mld_kenmerk_key = 1801 --- applicatie
|
||
AND appl.mld_kenmerkmelding_waarde = applw.fac_usrdata_key
|
||
AND ond.mld_melding_key = m.mld_melding_key
|
||
AND ond.mld_kenmerk_key = 1803 ---onderwerp
|
||
AND urg.mld_melding_key = m.mld_melding_key
|
||
AND urg.mld_kenmerk_key = 1805 --- urentie
|
||
AND urg.mld_kenmerkmelding_waarde = urgw.fac_usrdata_key
|
||
AND cat.mld_melding_key = m.mld_melding_key
|
||
AND cat.mld_kenmerk_key = 1861 --- categorie
|
||
AND NOT EXISTS
|
||
(SELECT besw.fac_usrdata_code besluit
|
||
FROM mld_kenmerkmelding bes, fac_usrdata besw
|
||
WHERE bes.mld_melding_key(+) = m.mld_melding_key
|
||
AND bes.mld_kenmerk_key = 1862
|
||
AND bes.mld_kenmerkmelding_waarde =
|
||
besw.fac_usrdata_key);
|
||
|
||
-- NYBU#36783 controle rapport facturatieproces reserveringen
|
||
CREATE OR REPLACE VIEW NYBU_V_RAP_CONTR_FACT_RESV
|
||
(
|
||
EXP,
|
||
TAAK,
|
||
UITGEVOERD
|
||
)
|
||
AS
|
||
select
|
||
CASE S.IMP_SCHEDULE_NAME
|
||
WHEN 'RES_CODA' THEN 'Zaalhuur'
|
||
WHEN 'RES_VERWERK' THEN 'Zaalhuur'
|
||
WHEN 'RES_CAT' THEN 'Catering'
|
||
WHEN 'RES_CAT_VERWERK' THEN 'Catering'
|
||
WHEN 'T_HUUR_CODA' THEN 'Campus'
|
||
WHEN 'HUUR_CODA' THEN 'Campus'
|
||
END
|
||
EXPORT,
|
||
CASE S.IMP_SCHEDULE_NAME
|
||
WHEN 'RES_CODA' THEN 'Export Coda'
|
||
WHEN 'RES_VERWERK' THEN 'Afsluiten facturatie'
|
||
WHEN 'RES_CAT' THEN 'Export Coda'
|
||
WHEN 'RES_CAT_VERWERK' THEN 'Afsluiten facturatie'
|
||
WHEN 'T_HUUR_CODA' THEN 'Controle factuuregels'
|
||
WHEN 'HUUR_CODA' THEN 'Export Coda'
|
||
END
|
||
TAAK,
|
||
S.IMP_SCHEDULE_DONE UITGEVOERD
|
||
from IMP_SCHEDULE s
|
||
where S.IMP_SCHEDULE_NAME in ('RES_CODA', 'RES_VERWERK', 'RES_CAT', 'RES_CAT_VERWERK', 'T_HUUR_CODA', 'HUUR_CODA')
|
||
order by EXPORT, S.IMP_SCHEDULE_DONE desc;
|
||
|
||
CREATE OR REPLACE FORCE VIEW NYBU_V_RAP_WERKPLEKKEN_KPLGRP
|
||
(
|
||
KOSTENPLAATSGROEP,
|
||
BEDRAG
|
||
)
|
||
AS
|
||
SELECT fclt_f_kostenplaatsgroep kostenplaatsgroep, ROUND (SUM (prijs), 2) bedrag
|
||
FROM nybu_v_rap_werkplekken
|
||
GROUP BY fclt_f_kostenplaatsgroep;
|
||
|
||
|
||
CREATE OR REPLACE VIEW NYBU_V_RAP_RESERVERING_INT_EXT
|
||
(
|
||
KEY,
|
||
NUMMER,
|
||
RES_OMSCHRIJVING,
|
||
INVOERDATUM,
|
||
DATUM,
|
||
GASTHEER,
|
||
CONTACT,
|
||
INVOERDER,
|
||
KOSTENSOORTGROEP,
|
||
KOSTENSOORT,
|
||
KPN,
|
||
KPN_OMSCHRIJVING,
|
||
KNP_EXTERN,
|
||
FCLT_3D_AFDELING_KEY,
|
||
AFDELING_CODE,
|
||
AFDELING_OMSCHRIJVING,
|
||
REGIO_OMSCHRIJVING,
|
||
DISTRICT_OMSCHIJVING,
|
||
FCLT_3D_LOCATIE_KEY,
|
||
LOCATIE,
|
||
LOCATIE_OMSCHRIJVING,
|
||
LOCATIE_PLAATS,
|
||
GEBOUW,
|
||
VERDIEPING,
|
||
RUIMTE,
|
||
OPSTELLING,
|
||
CAPACITEIT,
|
||
NO_SHOW,
|
||
MANDAAT,
|
||
PERSONEELSNR,
|
||
FCLT_3D_DISCIPLINE_KEY,
|
||
CATALOGUS_KEY,
|
||
CATALOGUS,
|
||
RESERVEERBARE_RUIMTE,
|
||
BEZOEKERS,
|
||
VAN,
|
||
TOT,
|
||
DUUR,
|
||
STATUS,
|
||
BOSTATUS,
|
||
ACTIVITEIT,
|
||
SRTACTIVITEIT_KEY,
|
||
ACTIVITEITSOORT,
|
||
VOORZIENING_DISCIPLINE_KEY,
|
||
VOORZIENING_TYPE,
|
||
VOORZIENING_CATALOGUS,
|
||
VOORZIENING_PRODUCT_KEY,
|
||
VOORZIENING_PRODUCT,
|
||
VOORZIENING_TOTAALPRIJS,
|
||
VOORZIENING_VAN,
|
||
VOORZIENING_TOT,
|
||
VOORZIENING_AANTAL,
|
||
VOORZIENING_PRIJS
|
||
)
|
||
AS
|
||
SELECT rrr.res_rsv_ruimte_key,
|
||
res.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
|
||
rrr.res_rsv_ruimte_omschrijving,
|
||
COALESCE (rrr.res_rsv_ruimte_aanmaak, voorz.van),
|
||
COALESCE (rrr.res_rsv_ruimte_van, voorz.van),
|
||
(SELECT prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames_all pf
|
||
WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_host_key),
|
||
(SELECT prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames_all pf
|
||
WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_contact_key),
|
||
(SELECT pf.prs_perslid_naam_full
|
||
FROM fac_tracking tr,
|
||
fac_srtnotificatie str,
|
||
prs_v_perslid_fullnames_all pf
|
||
WHERE tr.prs_perslid_key = pf.prs_perslid_key
|
||
AND str.fac_srtnotificatie_code = 'RESNEW'
|
||
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
|
||
AND tr.fac_tracking_refkey = rrr.res_rsv_ruimte_key),
|
||
(SELECT ksg.prs_kostensoortgrp_oms
|
||
FROM prs_kostensoortgrp ksg, prs_kostensoort ks
|
||
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key
|
||
AND ks.prs_kostensoort_key =
|
||
(SELECT disc.prs_kostensoort_key
|
||
FROM res_discipline disc
|
||
WHERE disc.ins_discipline_key =
|
||
COALESCE (
|
||
voorz.ins_discipline_key,
|
||
(SELECT ins_discipline_key
|
||
FROM ins_tab_discipline d,
|
||
res_ruimte_opstelling ro,
|
||
res_ruimte rr
|
||
WHERE rrr.res_ruimte_opstel_key =
|
||
ro.res_ruimte_opstel_key
|
||
AND ro.res_ruimte_key =
|
||
rr.res_ruimte_key
|
||
AND rr.res_discipline_key =
|
||
d.ins_discipline_key))))
|
||
kostensoortgroep,
|
||
(SELECT ks.prs_kostensoort_oms
|
||
FROM prs_kostensoort ks
|
||
WHERE ks.prs_kostensoort_key =
|
||
(SELECT disc.prs_kostensoort_key
|
||
FROM res_discipline disc
|
||
WHERE disc.ins_discipline_key =
|
||
COALESCE (
|
||
voorz.ins_discipline_key,
|
||
(SELECT ins_discipline_key
|
||
FROM ins_tab_discipline d,
|
||
res_ruimte_opstelling ro,
|
||
res_ruimte rr
|
||
WHERE rrr.res_ruimte_opstel_key =
|
||
ro.res_ruimte_opstel_key
|
||
AND ro.res_ruimte_key =
|
||
rr.res_ruimte_key
|
||
AND rr.res_discipline_key =
|
||
d.ins_discipline_key))))
|
||
kostensoort,
|
||
k.prs_kostenplaats_nr,
|
||
k.prs_kostenplaats_omschrijving,
|
||
DECODE (k.prs_kostenplaats_extern,
|
||
0, 'Intern',
|
||
1, 'Extern',
|
||
'Intern'),
|
||
a.prs_afdeling_key,
|
||
a.prs_afdeling_naam,
|
||
a.prs_afdeling_omschrijving,
|
||
(SELECT rg.alg_regio_omschrijving
|
||
FROM alg_regio rg,
|
||
alg_district d,
|
||
alg_locatie l,
|
||
alg_gebouw G,
|
||
alg_verdieping v,
|
||
alg_ruimte r
|
||
WHERE rg.alg_regio_key = d.alg_regio_key
|
||
AND d.alg_district_key = l.alg_district_key
|
||
AND l.alg_locatie_key = g.alg_locatie_key
|
||
AND g.alg_gebouw_key = v.alg_gebouw_key
|
||
AND v.alg_verdieping_key = r.alg_verdieping_key
|
||
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
|
||
(SELECT d.alg_district_omschrijving
|
||
FROM alg_district d,
|
||
alg_locatie l,
|
||
alg_gebouw G,
|
||
alg_verdieping v,
|
||
alg_ruimte r
|
||
WHERE d.alg_district_key = l.alg_district_key
|
||
AND l.alg_locatie_key = g.alg_locatie_key
|
||
AND g.alg_gebouw_key = v.alg_gebouw_key
|
||
AND v.alg_verdieping_key = r.alg_verdieping_key
|
||
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
|
||
(SELECT l.alg_locatie_key
|
||
FROM alg_locatie l,
|
||
alg_gebouw G,
|
||
alg_verdieping v,
|
||
alg_ruimte r
|
||
WHERE l.alg_locatie_key = g.alg_locatie_key
|
||
AND g.alg_gebouw_key = v.alg_gebouw_key
|
||
AND v.alg_verdieping_key = r.alg_verdieping_key
|
||
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
|
||
(SELECT alg_locatie_code
|
||
FROM alg_locatie l,
|
||
alg_gebouw G,
|
||
alg_verdieping v,
|
||
alg_ruimte r
|
||
WHERE l.alg_locatie_key = g.alg_locatie_key
|
||
AND g.alg_gebouw_key = v.alg_gebouw_key
|
||
AND v.alg_verdieping_key = r.alg_verdieping_key
|
||
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
|
||
(SELECT alg_locatie_omschrijving
|
||
FROM alg_locatie l,
|
||
alg_gebouw G,
|
||
alg_verdieping v,
|
||
alg_ruimte r
|
||
WHERE l.alg_locatie_key = g.alg_locatie_key
|
||
AND g.alg_gebouw_key = v.alg_gebouw_key
|
||
AND v.alg_verdieping_key = r.alg_verdieping_key
|
||
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
|
||
(SELECT alg_locatie_plaats
|
||
FROM alg_locatie l,
|
||
alg_gebouw G,
|
||
alg_verdieping v,
|
||
alg_ruimte r
|
||
WHERE l.alg_locatie_key = g.alg_locatie_key
|
||
AND g.alg_gebouw_key = v.alg_gebouw_key
|
||
AND v.alg_verdieping_key = r.alg_verdieping_key
|
||
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
|
||
(SELECT alg_gebouw_code
|
||
FROM alg_gebouw G, alg_verdieping v, alg_ruimte r
|
||
WHERE g.alg_gebouw_key = v.alg_gebouw_key
|
||
AND v.alg_verdieping_key = r.alg_verdieping_key
|
||
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
|
||
(SELECT alg_verdieping_code
|
||
FROM alg_verdieping v, alg_ruimte r
|
||
WHERE v.alg_verdieping_key = r.alg_verdieping_key
|
||
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
|
||
r2a.ruimte_nr,
|
||
r2a.opstelling,
|
||
r2a.capaciteit,
|
||
rrr.res_rsv_ruimte_noshow,
|
||
NVL ( (SELECT pr.fac_profiel_limiet
|
||
FROM fac_profiel pr
|
||
WHERE p.fac_profiel_key = pr.fac_profiel_key), 0),
|
||
prs_perslid_nr,
|
||
COALESCE (
|
||
voorz.ins_discipline_key,
|
||
(SELECT ins_discipline_key
|
||
FROM ins_tab_discipline d,
|
||
res_ruimte_opstelling ro,
|
||
res_ruimte rr
|
||
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
|
||
AND ro.res_ruimte_key = rr.res_ruimte_key
|
||
AND rr.res_discipline_key = d.ins_discipline_key)),
|
||
(SELECT ins_discipline_key
|
||
FROM ins_tab_discipline d,
|
||
res_ruimte_opstelling ro,
|
||
res_ruimte rr
|
||
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
|
||
AND ro.res_ruimte_key = rr.res_ruimte_key
|
||
AND rr.res_discipline_key = d.ins_discipline_key),
|
||
(SELECT ins_discipline_omschrijving
|
||
FROM ins_tab_discipline d,
|
||
res_ruimte_opstelling ro,
|
||
res_ruimte rr
|
||
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
|
||
AND ro.res_ruimte_key = rr.res_ruimte_key
|
||
AND rr.res_discipline_key = d.ins_discipline_key),
|
||
DECODE (rrr.alg_ruimte_key, NULL, 'Ja', 'Nee'),
|
||
rrr.res_rsv_ruimte_bezoekers,
|
||
rrr.res_rsv_ruimte_van,
|
||
rrr.res_rsv_ruimte_tot,
|
||
COALESCE ( (rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24,
|
||
0),
|
||
(SELECT res_status_fo_omschrijving
|
||
FROM res_status_fo rs
|
||
WHERE rs.res_status_fo_key = rrr.res_status_fo_key),
|
||
(SELECT res_status_bo_omschrijving
|
||
FROM res_status_bo rs
|
||
WHERE rs.res_status_bo_key = rrr.res_status_bo_key),
|
||
ra.res_activiteit_omschrijving,
|
||
rsa.res_srtactiviteit_key,
|
||
rsa.res_srtactiviteit_omschrijving,
|
||
voorz.ins_discipline_key,
|
||
voorz.vtype,
|
||
voorz.catalogus,
|
||
voorz.product_key,
|
||
voorz.product,
|
||
voorz.totaalprijs,
|
||
TO_CHAR (voorz.van, 'hh24:mi'),
|
||
TO_CHAR (voorz.tot, 'hh24:mi'),
|
||
voorz.aantal,
|
||
voorz.prijs
|
||
FROM res_v_aanwezigrsv_ruimte rrr,
|
||
res_activiteit ra,
|
||
res_srtactiviteit rsa,
|
||
res_reservering res,
|
||
prs_kostenplaats K,
|
||
prs_perslid P,
|
||
prs_afdeling A,
|
||
( SELECT res_rsv_ruimte_key,
|
||
MAX (o.res_opstelling_omschrijving) opstelling,
|
||
MAX (ro.res_ruimte_opstel_bezoekers) capaciteit,
|
||
MAX (ra.alg_ruimte_key) alg_ruimte_key,
|
||
MAX (rr.res_ruimte_nr) ruimte_nr
|
||
FROM res_rsv_ruimte r,
|
||
res_ruimte_opstelling ro,
|
||
res_opstelling o,
|
||
res_ruimte rr,
|
||
res_alg_ruimte ra
|
||
WHERE r.res_rsv_ruimte_verwijder IS NULL
|
||
AND r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
|
||
AND ro.res_ruimte_key = rr.res_ruimte_key
|
||
AND ro.res_opstelling_key = o.res_opstelling_key
|
||
AND rr.res_ruimte_key = ra.res_ruimte_key
|
||
GROUP BY res_rsv_ruimte_key
|
||
UNION ALL
|
||
SELECT res_rsv_ruimte_key,
|
||
'' opstelling,
|
||
NULL capaciteit,
|
||
rrr.alg_ruimte_key,
|
||
r.alg_ruimte_nr
|
||
FROM res_rsv_ruimte rrr, alg_ruimte r
|
||
WHERE rrr.alg_ruimte_key IS NOT NULL
|
||
AND r.alg_ruimte_key = rrr.alg_ruimte_key) r2a,
|
||
(SELECT rrd.res_rsv_ruimte_key res_rsv_ruimte_key,
|
||
-rd.res_deel_key product_key,
|
||
rd.res_deel_omschrijving product,
|
||
DECODE (
|
||
rd.res_deel_prijs_vast,
|
||
1,
|
||
NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs),
|
||
(rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van)
|
||
* 24
|
||
* NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs))
|
||
totaalprijs,
|
||
rrd.res_rsv_deel_van van,
|
||
rrd.res_rsv_deel_tot tot,
|
||
(rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24 aantal,
|
||
NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs) prijs,
|
||
c.ins_discipline_key ins_discipline_key,
|
||
c.ins_discipline_omschrijving catalogus,
|
||
'object' vtype
|
||
FROM res_v_aanwezigrsv_deel rrd,
|
||
res_deel rd,
|
||
ins_deel d,
|
||
ins_tab_discipline C
|
||
WHERE rrd.res_deel_key = rd.res_deel_key
|
||
AND d.ins_deel_key = rd.res_ins_deel_key
|
||
AND rrd.res_rsv_ruimte_key IS NOT NULL
|
||
AND c.ins_discipline_key = rd.res_discipline_key
|
||
UNION ALL
|
||
SELECT rra.res_rsv_ruimte_key res_rsv_ruimte_key,
|
||
ra.res_artikel_key product_key,
|
||
ra.res_artikel_omschrijving product,
|
||
NVL (rra.res_rsv_artikel_prijs,
|
||
rra.res_rsv_artikel_aantal * res_artikel_prijs)
|
||
totaalprijs,
|
||
rra.res_rsv_artikel_levering van,
|
||
NULL tot,
|
||
rra.res_rsv_artikel_aantal aantal,
|
||
NVL (
|
||
rra.res_rsv_artikel_prijs / rra.res_rsv_artikel_aantal,
|
||
res_artikel_prijs)
|
||
prijs,
|
||
c.ins_discipline_key ins_discipline_key,
|
||
c.ins_discipline_omschrijving catalogus,
|
||
'consumable' vtype
|
||
FROM res_v_aanwezigrsv_artikel rra,
|
||
res_artikel ra,
|
||
ins_tab_discipline C
|
||
WHERE rra.res_artikel_key = ra.res_artikel_key
|
||
AND ra.res_discipline_key = c.ins_discipline_key) voorz
|
||
WHERE rrr.res_reservering_key = res.res_reservering_key
|
||
AND rrr.res_rsv_ruimte_key = r2a.res_rsv_ruimte_key(+)
|
||
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND rrr.res_rsv_ruimte_key = voorz.res_rsv_ruimte_key(+)
|
||
AND rrr.res_activiteit_key = ra.res_activiteit_key
|
||
AND ra.res_srtactiviteit_key = rsa.res_srtactiviteit_key
|
||
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND (rrr.res_ruimte_opstel_key IS NOT NULL
|
||
OR voorz.res_rsv_ruimte_key IS NOT NULL)
|
||
AND rrr.res_rsv_ruimte_van >= TO_DATE ('01-01-2009', 'DD-MM-YYYY');
|
||
|
||
------ 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 |