WZUV#62274: Naam fiatteur.
svn path=/Database/trunk/; revision=47023
This commit is contained in:
@@ -251,14 +251,18 @@ AS
|
||||
-- De functie levert de prs_perslid_key op van de perslid die een item (opdracht/bestelling) van
|
||||
-- discipline pdisckey boven bedrag COALESCE(pfiatbedrag, pondergrens) mag fiatteren
|
||||
-- volgens de door ons gedefinieerde regels. Werkt analoog aan getkpverantwoordelijke
|
||||
-- Maar houdt hierbij rekening met de profielen van de budgethouders als prs_approvemethod==3
|
||||
-- Maar houdt hierbij rekening met de profielen van de budgethouders als prs_approvemethod == 3
|
||||
--
|
||||
-- Levert dus in eerste instantie de kostenplaatsverantwoordelijke (budgethouder) op.
|
||||
-- Levert de kostenplaatsgroepverantwoordelijke op indien geen goede budgethouder
|
||||
-- wordt gevonden.
|
||||
-- Afhankelijk van de pfiatbedrag levert de functie dan de kostenplaatsgroepverantwoordelijke op
|
||||
-- die boven het bedrag van COALESCE(pfiatbedrag, pondergrens) mag fiatteren.
|
||||
-- De parameter pondergrens wordt ook gebruikt voor mode 3 om het profiel van de budgethouder te controleren. Daarom extra parameter pfiatbedrag nodig.
|
||||
-- 1) Levert dus in eerste instantie de kostenplaatsverantwoordelijke (budgethouder) op.
|
||||
-- 2) Levert de kostenplaatsgroepverantwoordelijke op indien geen goede budgethouder wordt gevonden.
|
||||
-- Afhankelijk van de pfiatbedrag levert de functie dan de kostenplaatsgroepverantwoordelijke op
|
||||
-- die boven het bedrag van COALESCE(pfiatbedrag, pondergrens) mag fiatteren.
|
||||
-- Als er in dat geval WEL een pfiatbedrag wordt meegegeven dan wordt de VOLGENDE (kpg) fiatteur opgeleverd.
|
||||
-- Als er in dat geval GEEN pfiatbedrag wordt meegegeven dan wordt de LAATSTE (kpg) fiatteur opgeleverd.
|
||||
-- De parameter pondergrens wordt ook gebruikt voor mode 3 om het profiel van de budgethouder te controleren. Daarom extra parameter pfiatbedrag nodig.
|
||||
--
|
||||
-- Als pexcludekey gevuld is, dan is dit de kp verantwoordelijke. Niet vullen met een kpGROEP verantwoordelijke, want dan wordt de kp verantwoordelijke teruggegeven.
|
||||
-- Het fiatbedrag (of pondergrens) zorgt er wel voor dat je juiste kpg verantwoordelijke wordt teruggegeven.
|
||||
--
|
||||
FUNCTION getfiatteur (pkostenplaats_key IN NUMBER,
|
||||
pexcludekey IN NUMBER,
|
||||
@@ -294,13 +298,13 @@ AS
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
-- kostenplaats bestaat niet
|
||||
-- Kostenplaats bestaat niet.
|
||||
RETURN -1;
|
||||
END;
|
||||
dbms_output.put_line('Budgethouder: '||lkpverantwkey);
|
||||
-- lkpverantwkey is (mits gedefinieerd) de budgethouder van de kp. Het is nog niet gezegd of dit de gevraagde fiatteur is
|
||||
-- De 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
|
||||
-- Zo ja, dan is in dat geval lkpverantwkey de pexcludekey.
|
||||
IF pexcludekey > 0 AND lkpverantwkey <> pexcludekey THEN
|
||||
SELECT COUNT(prs_perslid_key)
|
||||
INTO lexcludeisvervanger
|
||||
@@ -318,16 +322,16 @@ AS
|
||||
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
|
||||
lkpverantwkey := -1; -- Niet meer interessant wie dit was.
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
IF (lkpverantwkey = -1 OR lkpverantwkey = pexcludekey OR lexcludeisvervanger = 1)
|
||||
AND (lmethode = 2 OR lmethode = 3)
|
||||
-- doorloop de boom naar boven, met allerlei aannames
|
||||
-- Doorloop de boom naar boven, met allerlei aannames.
|
||||
THEN
|
||||
dbms_output.put_line('We gaan de boom in');
|
||||
-- waar hoort deze kp bij?
|
||||
-- Waar hoort deze kp bij?
|
||||
BEGIN
|
||||
SELECT prs_afdeling_key, prs_afdeling_parentkey
|
||||
INTO afdkey, parentafdkey
|
||||
@@ -336,10 +340,10 @@ AS
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
-- kp is niet aan een afdeling gerelateerd, dan weet ik het met deze methode niet
|
||||
-- De kostenplaats is niet aan een afdeling gerelateerd, dan weet ik het met deze methode niet.
|
||||
RETURN -1;
|
||||
END;
|
||||
-- Zolang nog geen goede en we kunnen hogerop
|
||||
-- Zolang nog geen goede en we kunnen hogerop.
|
||||
WHILE (lkpverantwkey = -1 OR lkpverantwkey = pexcludekey OR lexcludeisvervanger = 1)
|
||||
AND parentafdkey IS NOT NULL
|
||||
LOOP
|
||||
@@ -351,12 +355,12 @@ AS
|
||||
AND a.prs_afdeling_key = parentafdkey;
|
||||
dbms_output.put_line('Volgende budgethouder: '||lkpverantwkey);
|
||||
|
||||
IF lmethode = 3 THEN -- ook profiel budgethouder controleren
|
||||
IF lmethode = 3 THEN -- Ook profiel budgethouder controleren.
|
||||
lkpverantwlimiet := prs.getprofiellimiet (lkpverantwkey, pdisckey);
|
||||
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
|
||||
lkpverantwkey := -1; -- Niet meer interessant wie dit was.
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
@@ -368,13 +372,16 @@ AS
|
||||
AND prs_perslid_key = lkpverantwkey;
|
||||
END IF;
|
||||
END LOOP;
|
||||
-- nu heb ik er een of kan ik er geen vinden
|
||||
-- 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
|
||||
-- Als 1) de methode 1 is of
|
||||
-- 2) de methode 2 of 3 is en dit niemand opleverde (ondanks afdelingskostenplaats) of
|
||||
-- 3) de opgeleverde kostenplaatsverandwoordelijke de exclude(vervanger) is
|
||||
-- dan kpngroepverantwoordelijken opvragen en kijken wie van hen de gevraagde fiatteur is.
|
||||
IF lkpverantwkey = -1 OR lkpverantwkey = pexcludekey OR lexcludeisvervanger = 1
|
||||
THEN
|
||||
-- vindt de kostenplaatsGROEPverantwoordelijke van de altijd meegegeven kp
|
||||
-- Vindt de kostenplaatsGROEPverantwoordelijken van de altijd meegegeven kostenplaats.
|
||||
BEGIN
|
||||
SELECT COALESCE(kg.prs_perslid_key, -1),
|
||||
COALESCE(kg.prs_kostenplaatsgrp_fiat2_key, -1),
|
||||
@@ -397,13 +404,13 @@ AS
|
||||
lfoundfiatteur := 0;
|
||||
lfiatteur := -1;
|
||||
|
||||
-- Als er een fiatbedrag is meegegeven dan de volgende fiatteur opleveren en niet de laatste die moet fiatteren.
|
||||
-- Dan het de ondergrens het fiatbedrag en niet het totale opdrachtbedrag.
|
||||
-- Als er WEL een fiatbedrag is meegegeven dan de VOLGENDE fiatteur opleveren. De ondergrens is dan het fiatbedrag (pfiatbedrag).
|
||||
-- Als er GEEN fiatbedrag is meegegeven dan de LAATSTE fiatteur opleveren. De ondergrens is dan pondergrens (normaalgesproken het totale opdrachtbedrag).
|
||||
IF pfiatbedrag >= 0
|
||||
THEN
|
||||
lgrens := pfiatbedrag;
|
||||
lgrens := pfiatbedrag; // De volgende fiatteur opleveren.
|
||||
ELSE
|
||||
lgrens := pondergrens;
|
||||
lgrens := pondergrens; // De laatste fiatteur opleveren.
|
||||
END IF;
|
||||
|
||||
WHILE lteller <= 3 AND lfoundfiatteur = 0
|
||||
|
||||
Reference in New Issue
Block a user