UWVA#36431 fix

svn path=/Database/trunk/; revision=35091
This commit is contained in:
Peter Feij
2017-08-25 11:02:41 +00:00
parent 9bdf4df8ae
commit 442801663d

View File

@@ -249,11 +249,10 @@ AS
--
-- Levert de kostenplaatsgroepverantwoordelijke op indien geen goede budgethouder
-- wordt gevonden
-- Levert -1 op indien er geen gevonden wordt.
-- pmethode geeft .. inderdaad, waarbij
-- prs_approvemethod geeft methode aan:
-- methode 1 = 2-laagsmethode via kp - kpngroep
-- methode 2 = n-laagsmethode via afdelingsboom
-- methode 3 = als 2 maar houd rekening met de profiel van de fiatteur
-- 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
-- Geef -1 mee als je niemand wilt excluden
FUNCTION getfiatteur (pkostenplaats_key IN NUMBER,
@@ -263,6 +262,7 @@ AS
)
RETURN NUMBER
IS
lkpbudgethouder prs_perslid.prs_perslid_key%TYPE;
lkpverantwkey prs_perslid.prs_perslid_key%TYPE;
lexcludeisvervanger NUMBER;
lkpverantwlimiet fac_profiel.fac_profiel_limiet%TYPE;
@@ -271,8 +271,9 @@ AS
lmethode NUMBER;
BEGIN
BEGIN
lkpverantwkey := -1;
SELECT COALESCE (prs_perslid_key, -1)
INTO lkpverantwkey
INTO lkpbudgethouder
FROM prs_kostenplaats
WHERE prs_kostenplaats_key = pkostenplaats_key;
EXCEPTION
@@ -281,7 +282,7 @@ AS
-- kostenplaats bestaat niet
RETURN -1;
END;
-- lkpbudgethouder 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
@@ -293,9 +294,9 @@ AS
END IF;
lmethode := fac.getSetting('prs_approvemethod');
IF lmethode = 3 THEN
lkpverantwlimiet := prs.getprofiellimiet (lkpverantwkey, pdisckey);
lkpverantwlimiet := prs.getprofiellimiet (lkpbudgethouder, pdisckey);
END IF;
IF (lkpverantwkey = -1 OR lkpverantwkey = pexcludekey OR lexcludeisvervanger = 1) AND (lmethode = 2 OR lmethode = 3)
IF (lkpbudgethouder = -1 OR lkpbudgethouder = pexcludekey OR lexcludeisvervanger = 1 OR (lmethode = 3 AND lkpverantwlimiet < pondergrens)) AND (lmethode = 2 OR lmethode = 3)
-- doorloop de boom naar boven, met allerlei aannames
THEN
-- waar hoort deze kp bij?
@@ -310,7 +311,6 @@ 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)
LOOP
SELECT COALESCE (k.prs_perslid_key, -1), prs_afdeling_parentkey
@@ -325,7 +325,6 @@ AS
END LOOP;
-- nu heb ik er een of kan ik er geen vinden
END IF;
-- 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)
THEN
@@ -344,7 +343,6 @@ AS
RETURN -1;
END;
END IF;
RETURN lkpverantwkey;
END;