YKPN#63398 -- Functie bes_checkrfo voor controle op valide bestelling

svn path=/Customer/trunk/; revision=48988
This commit is contained in:
Norbert Wassink
2020-11-27 13:10:40 +00:00
parent d863861770
commit e12a706f03

View File

@@ -50,6 +50,11 @@ AS
p_datum_tot IN DATE,
p_volgnr IN NUMBER)
RETURN VARCHAR2;
FUNCTION bes_checkrfo (p_user_key IN NUMBER,
p_urole in VARCHAR2,
p_srtdeel_keys in VARCHAR2)
RETURN VARCHAR2;
PROCEDURE res_after_insert (p_rsv_ruimte_key IN NUMBER);
@@ -886,6 +891,86 @@ AS
fac.writelog ('YKPN.mld_after_insert', 'E', v_errormsg, v_errorhint);
END;
-- Controleer of er eerder bestellingen van artikelen uit catalogus werkplek zijn gedaan en of er uit groep brureaus niet meerder artikelen zijn besteld
FUNCTION bes_checkrfo (p_user_key IN NUMBER,
p_urole in VARCHAR2,
p_srtdeel_keys in VARCHAR2)
RETURN VARCHAR2
AS
v_catalog CONSTANT NUMBER:= 3061; -- acc 2981 TEST 3061
v_groep CONSTANT NUMBER:= 321; -- acc 287 Test 321
CURSOR besteld
IS
SELECT item.bes_srtdeel_key key, srt.bes_srtgroep_key groep, count(item.bes_bestelling_item_aantal) aantal
FROM bes_bestelling bes,
bes_bestelling_item item,
bes_srtdeel srt,
bes_srtgroep grp
WHERE bes.prs_perslid_key = p_user_key -- alle bestelingen voor deze user
AND item.bes_bestelling_key=bes.bes_bestelling_key -- alle items bij de vreschllende bstelligen
AND srt.bes_srtdeel_key = item.bes_srtdeel_key
AND grp.bes_srtgroep_key = srt.bes_srtgroep_key
AND grp.ins_discipline_key=v_catalog
GROUP BY (item.bes_srtdeel_key, srt.bes_srtgroep_key);
v_result VARCHAR2(300);
v_count NUMBER;
v_srtdeel_key NUMBER;
v_bureauCount NUMBER;
v_amount NUMBER;
v_counter NUMBER;
v_currentgroep NUMBER:=0;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
BEGIN
v_result :='OK';
IF UPPER(p_urole) = 'FE'
THEN
v_bureauCount:=0;
v_counter:=0;
FOR rec IN besteld LOOP
IF rec.groep = v_groep AND rec.aantal>0
THEN
v_bureauCount:=v_bureauCount+1;
END IF;
v_counter:=1;
LOOP
FAC.imp_getField_nr(p_srtdeel_keys,',',v_counter,v_srtdeel_key);
IF rec.key = v_srtdeel_key
THEN
v_result:='Artikel is al eerder besteld';
END IF;
v_counter:=v_counter+1;
EXIT WHEN v_srtdeel_key IS NULL OR v_counter>20;
END LOOP;
END LOOP;
-- COntrole of er nu meerdere bureau besteld worden
SELECT count(*)
INTO v_count
FROM bes_srtdeel srt
WHERE srt.bes_srtgroep_key = v_groep
AND srt.bes_srtdeel_key IN (
SELECT regexp_substr(p_srtdeel_keys,'[^,]+', 1, level)
FROM DUAL
CONNECT BY regexp_substr(p_srtdeel_keys, '[^,]+', 1, level) IS NOT NULL);
IF (v_count+v_bureauCount>1)
THEN
v_result:='Er is al een artikel uit de groep bureau besteld.';
END IF;
END IF;
RETURN v_result;
END;
FUNCTION res_presave (p_user_key IN NUMBER,
p_rsv_ruimte_key IN NUMBER,
p_activiteit_key IN NUMBER,
@@ -899,7 +984,6 @@ AS
v_date DATE;
v_count NUMBER;
v_discipline_key NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);