Merge DB32b patches
svn path=/Database/trunk/; revision=36154
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user