From 7c7a9bfa516bee1d1e6123c20316006f25658242 Mon Sep 17 00:00:00 2001 From: Maykel Geerdink Date: Tue, 2 Jun 2020 08:20:24 +0000 Subject: [PATCH] WZUV#62274: Naam fiatteur. svn path=/Database/trunk/; revision=47023 --- PRS/PRS_PAC.SRC | 55 ++++++++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/PRS/PRS_PAC.SRC b/PRS/PRS_PAC.SRC index d69561fd..202cebf3 100644 --- a/PRS/PRS_PAC.SRC +++ b/PRS/PRS_PAC.SRC @@ -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