5 Commits

Author SHA1 Message Date
Jos Groot Lipman
d5de466dd2 Release DB32 patch C
svn path=/Database/branches/DB32/; revision=36714
2018-01-24 17:01:39 +00:00
Maykel Geerdink
8fb1f625d3 FCLT#51783: Instelling fin_enable_goedkeuren werkt inconseqeunt.
svn path=/Database/branches/DB32/; revision=36557
2018-01-11 11:35:04 +00:00
Jos Groot Lipman
1852fc278e Release DB32 patch B
svn path=/Database/branches/DB32/; revision=36146
2017-11-29 10:39:33 +00:00
Jos Groot Lipman
279b4d4e90 UWVA#51009 prs_approve_method 3 verbeterd
svn path=/Database/branches/DB32/; revision=36062
2017-11-21 11:40:54 +00:00
Jos Groot Lipman
a50c638d04 Branch DB32
svn path=/Database/branches/DB32/; revision=36061
2017-11-21 09:36:02 +00:00
3 changed files with 50 additions and 18 deletions

View File

@@ -62,7 +62,7 @@ PROJEXE=z:\Project\FACILITOR\BUILD
##
CURRENTVERSION=31
NEXTVERSION=32
FILEVERSION=a
FILEVERSION=c
NEXTCAREVERSION=32
NEXTROOT=DB$(NEXTVERSION)$(FILEVERSION)
CURRENTUPDATE=DB$(CURRENTVERSION)to$(NEXTVERSION)

View File

@@ -653,15 +653,29 @@ AS
-- Keurt een ingevoerde factuur (onvoorwaardelijk) goed of (als rejecttoo) af op basis van de matchingscriteria
PROCEDURE matchandsetfactuur (pfactuur_key IN NUMBER, prejecttoo IN BOOLEAN)
IS
lgoedkeurder fin_factuur.prs_perslid_key_goedkeur%TYPE;
BEGIN
CASE fin.matchfactuur (pfactuur_key)
WHEN 1
THEN
IF fac.getsetting('fin_enable_goedkeuren') <> 0
IF fac.getsetting('fin_enable_goedkeuren') = 0 -- validation unavailable
THEN
fin.setfactuurstatus (pfactuur_key, 6, NULL);
ELSIF fac.getsetting('fin_enable_goedkeuren') = 2 -- validation required
THEN
fin.setfactuurstatus (pfactuur_key, 5, NULL);
ELSE
fin.setfactuurstatus (pfactuur_key, 6, NULL);
ELSE -- validation optional (fin_enable_goedkeuren = 1)
SELECT f.prs_perslid_key_goedkeur
INTO lgoedkeurder
FROM fin_factuur f
WHERE fin_factuur_key = pfactuur_key;
IF lgoedkeurder IS NULL
THEN
fin.setfactuurstatus (pfactuur_key, 6, NULL);
ELSE
fin.setfactuurstatus (pfactuur_key, 5, NULL);
END IF;
END IF;
WHEN -1
THEN

View File

@@ -254,6 +254,8 @@ AS
-- methode 2 = 2-laagsmethode via afdelingsboom tot gedefinieerde budgethouder en dan kpgroep
-- methode 3 = als 2 maar houd rekening met de profiel van de budgethouders tov pondergrens
-- Met pexcludekey kan een perslid_key worden opgegeven die je niet wilt
-- dat kan zijn omdat je het niet voor jezelf mag (can_selfapprove) of
-- omdat je een lager niveau al gefiatteerd hebt
-- Geef -1 mee als je niemand wilt excluden
FUNCTION getfiatteur (pkostenplaats_key IN NUMBER,
pexcludekey IN NUMBER,
@@ -285,7 +287,7 @@ AS
-- lkpverantwkey is (mits gedefinieerd) de budgethouder van de kp. Het is nog niet gezegd of dit de gevraagde fiatteur is
-- Is de meegegeven pexcludekey wellicht een vervanger van kostenplaatsverantwoordelijke van de kostenplaats?
-- Zo ja, dan is in dat geval lkpverantwkey de pexcludekey
IF pexcludekey > 0 THEN
IF pexcludekey > 0 AND lkpverantwkey <> pexcludekey THEN
SELECT COUNT(prs_perslid_key)
INTO lexcludeisvervanger
FROM prs_collega
@@ -295,17 +297,18 @@ AS
dbms_output.put_line('ExcludeIsVervanger: '||lexcludeisvervanger);
lmethode := fac.getSetting('prs_approvemethod');
dbms_output.put_line('Approvemethod: '||lmethode);
IF lmethode = 3 THEN
dbms_output.put_line('Ondergrens: '||pondergrens);
IF lmethode = 3 THEN -- ook profiel budgethouder controleren
lkpverantwlimiet := prs.getprofiellimiet (lkpverantwkey, pdisckey);
dbms_output.put_line('Zijn limiet: '||lkpverantwlimiet);
IF (lkpverantwlimiet < pondergrens) -- lkpverantwkey != -1 is impliciet in die limiet
THEN -- het profiel van deze budgethouder is niet genoeg
lkpverantwkey := -1; -- niet meer interessant wie dit was
END IF;
END IF;
dbms_output.put_line('Ondergrens: '||pondergrens);
IF (lmethode = 3 AND lkpverantwlimiet >= pondergrens) -- lkpverantwkey != -1 is impliciet in die limiet
THEN
-- het profiel van de budgethouder is genoeg
RETURN lkpverantwkey;
END IF;
IF (lkpverantwkey = -1 OR lkpverantwkey = pexcludekey OR lexcludeisvervanger = 1 OR (lmethode = 3 AND lkpverantwlimiet < pondergrens))
IF (lkpverantwkey = -1 OR lkpverantwkey = pexcludekey OR lexcludeisvervanger = 1)
AND (lmethode = 2 OR lmethode = 3)
-- doorloop de boom naar boven, met allerlei aannames
THEN
@@ -322,7 +325,9 @@ AS
-- kp is niet aan een afdeling gerelateerd, dan weet ik het met deze methode niet
RETURN -1;
END;
WHILE lkpverantwkey = -1 AND parentafdkey IS NOT NULL AND (lmethode <> 3 OR lkpverantwlimiet < pondergrens)
-- Zolang nog geen goede en we kunnen hogerop
WHILE (lkpverantwkey = -1 OR lkpverantwkey = pexcludekey OR lexcludeisvervanger = 1)
AND parentafdkey IS NOT NULL
LOOP
SELECT COALESCE (k.prs_perslid_key, -1), prs_afdeling_parentkey
INTO lkpverantwkey, parentafdkey
@@ -331,16 +336,29 @@ AS
AND a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_key = parentafdkey;
dbms_output.put_line('Volgende budgethouder: '||lkpverantwkey);
IF lmethode = 3 THEN
IF lmethode = 3 THEN -- ook profiel budgethouder controleren
lkpverantwlimiet := prs.getprofiellimiet (lkpverantwkey, pdisckey);
dbms_output.put_line('Zijn limiet: '||lkpverantwlimiet);
dbms_output.put_line('Zijn limiet B: '||lkpverantwlimiet);
IF (lkpverantwlimiet < pondergrens)
THEN -- het profiel van deze budgethouder is niet genoeg
lkpverantwkey := -1; -- niet meer interessant wie dit was
END IF;
END IF;
IF pexcludekey > 0 AND lkpverantwkey <> pexcludekey THEN
SELECT COUNT(prs_perslid_key)
INTO lexcludeisvervanger
FROM prs_collega
WHERE prs_perslid_key_alt = pexcludekey
AND prs_perslid_key = lkpverantwkey;
END IF;
END LOOP;
-- nu heb ik er een of kan ik er geen vinden
END IF;
dbms_output.put_line('Gevonden budgethouder voor de kpgroep-tak: '||lkpverantwkey);
-- Nu: als ik methode 1 heb, of methode 2 niemand opleverde (ondanks afdelingskostenplaats): de kpngroepverantwoordelijke
IF lkpverantwkey = -1 OR lkpverantwkey = pexcludekey OR lexcludeisvervanger = 1 OR (lmethode = 3 AND lkpverantwlimiet < pondergrens)
IF lkpverantwkey = -1 OR lkpverantwkey = pexcludekey OR lexcludeisvervanger = 1
THEN
-- vindt de kostenplaatsGROEPverantwoordelijke van altijd de meegegeven kp
BEGIN
@@ -357,7 +375,7 @@ AS
RETURN -1;
END;
END IF;
dbms_output.put_line('Volgende budgethouder: '||lkpverantwkey);
dbms_output.put_line('Resultaat budgethouder: '||lkpverantwkey);
RETURN lkpverantwkey;
END;