Merge DB32b patches

svn path=/Database/trunk/; revision=36154
This commit is contained in:
Jos Groot Lipman
2017-11-29 13:03:15 +00:00
parent d393a30b6d
commit 09c7ab8722

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;