diff --git a/DLLG/DLLG.sql b/DLLG/DLLG.sql index f03abf333..7619479a5 100644 --- a/DLLG/DLLG.sql +++ b/DLLG/DLLG.sql @@ -17,6 +17,113 @@ SET DEFINE OFF ------ payload begin ------ + +CREATE OR REPLACE PACKAGE DLLG +AS + + FUNCTION res_presave (p_user_key IN NUMBER, + p_rsv_ruimte_key IN NUMBER, + p_activiteit_key IN NUMBER, + p_res_deel_key IN NUMBER, + p_datum_van IN DATE, + p_datum_tot IN DATE, + p_volgnr IN NUMBER) + RETURN VARCHAR2; + + PROCEDURE update_bezoeker (p_bezkey IN NUMBER); +END; +/ + +CREATE OR REPLACE PACKAGE BODY DLLG +AS + + FUNCTION res_presave (p_user_key IN NUMBER, + p_rsv_ruimte_key IN NUMBER, + p_activiteit_key IN NUMBER, + p_res_deel_key IN NUMBER, + p_datum_van IN DATE, + p_datum_tot IN DATE, + p_volgnr IN NUMBER) + RETURN VARCHAR2 + AS + v_result VARCHAR2 (300); + v_date DATE; + v_count NUMBER; + v_discipline_key NUMBER; + + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + v_errormsg VARCHAR2 (200); + v_errorhint VARCHAR2 (200); + BEGIN + v_result := 'OK'; + + v_errorhint := 'Controleer activiteit: ' || p_activiteit_key; + IF p_activiteit_key = 30 AND p_rsv_ruimte_key = -1 -- workplace en alleen nieuwe reserveringen + THEN + v_errorhint := 'Kijk hoeveel reserveringen er al zijn voor die dag'; + SELECT count(*) + INTO v_count + FROM res_rsv_ruimte rrr + WHERE rrr.res_rsv_ruimte_verwijder IS NULL + AND rrr.res_activiteit_key = 30 -- 30 workplace + AND TRUNC(res_rsv_ruimte_van) = TRUNC (p_datum_tot); + + IF v_count > 3 + THEN + v_result := 'Beste collega,' || CHR(10) || + 'We hebben deze maand al vier reserveringen van je gevonden. Je maximaal aantal te reserveren werkplekken per maand is dus bereikt.' || CHR(10) || + 'Hartelijke groet, KPN Facilities'; + END IF; + END IF; + + RETURN v_result; + 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 || ')'; + RETURN v_result; + END; + + PROCEDURE update_bezoeker (p_bezkey IN NUMBER) + AS + + CURSOR c + IS + SELECT pf.prs_perslid_naam_full, prs_perslid_email, prs_perslid_mobiel + FROM bez_bezoekers b, bez_afspraak a, prs_perslid p, prs_v_perslid_fullnames pf + WHERE bez_bezoekers_key = p_bezkey + AND b.bez_afspraak_key = a.bez_afspraak_key + AND a.bez_afspraak_host_key = p.prs_perslid_key + AND p.prs_perslid_key = pf.prs_perslid_key; + + BEGIN + FOR rec IN c + LOOP + -- Naam + IF FLX.getflex ('BEZ', 1020, p_bezkey) IS NULL + THEN + FLX.setflex ('BEZ', 1020, p_bezkey, rec.prs_perslid_naam_full); + END IF; + -- Email + IF FLX.getflex ('BEZ', 1021, p_bezkey) IS NULL + THEN + FLX.setflex ('BEZ', 1021, p_bezkey, rec.prs_perslid_email); + END IF; + -- Mobiel + IF FLX.getflex ('BEZ', 1022, p_bezkey) IS NULL + THEN + FLX.setflex ('BEZ', 1022, p_bezkey, rec.prs_perslid_mobiel); + END IF; + END LOOP; + END; + + +END; +/ + + -- Tijdelijk omdat de generieke import geen komma als scheidingsteken kent. CREATE OR REPLACE PROCEDURE DLLG_prs_import_perslid ( p_import_key IN NUMBER,