VGLD#51622: Mandaat overschrijden van Budgethouder.
svn path=/Database/trunk/; revision=36593
This commit is contained in:
@@ -238,6 +238,8 @@ CREATE_TABLE(bes_bestelling, 0)
|
||||
bes_bestelling_fiat_user
|
||||
NUMBER(10)
|
||||
CONSTRAINT bes_r_bes_bestelling_fiat REFERENCES prs_perslid(prs_perslid_key),
|
||||
bes_bestelling_fiatbedrag /* Tot zover gefiatteerd */
|
||||
NUMBER(11,2),
|
||||
mld_adres_key_lev
|
||||
NUMBER(10)
|
||||
CONSTRAINT bes_r_mld_adres_key_lev REFERENCES mld_adres(mld_adres_key),
|
||||
|
||||
189
PRS/PRS_PAC.SRC
189
PRS/PRS_PAC.SRC
@@ -83,10 +83,16 @@ AS
|
||||
FUNCTION getfiatteur (pkostenplaats_key IN NUMBER,
|
||||
pexcludekey IN NUMBER,
|
||||
pondergrens IN NUMBER,
|
||||
pdisckey IN NUMBER
|
||||
pdisckey IN NUMBER,
|
||||
pfiatbedrag IN NUMBER DEFAULT -1
|
||||
)
|
||||
RETURN NUMBER;
|
||||
|
||||
FUNCTION nextfiatteur (pkey IN NUMBER,
|
||||
pmodule IN VARCHAR2,
|
||||
pexcludekey IN NUMBER DEFAULT -1)
|
||||
RETURN NUMBER;
|
||||
|
||||
PROCEDURE setpassword(pperslidkey IN NUMBER, pwachtwoord IN VARCHAR2);
|
||||
|
||||
FUNCTION testpassword(pperslidkey IN NUMBER, pwachtwoord IN VARCHAR2)
|
||||
@@ -242,8 +248,8 @@ AS
|
||||
RETURN llimiet;
|
||||
END;
|
||||
|
||||
-- Levert de prs_perslid_key op van de perslid die een item (opdracht/bestelling) van
|
||||
-- discipline pdisckey boven bedrag pondergrens mag fiatteren
|
||||
-- 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
|
||||
--
|
||||
@@ -257,19 +263,35 @@ AS
|
||||
-- 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
|
||||
--
|
||||
-- Afhankelijk van de pfiatbedrag levert de functie dus
|
||||
-- a) De laatste fiatteur op die moet fiatteren (geen fiatbedrag meegegeven).
|
||||
-- Als de opdracht uberhaupt niet goed gekeurd kan worden wordt -1 opgeleverd
|
||||
-- b) De volgende fiatteur op die moet fiatteren (fiatbedrag meegegeven).
|
||||
FUNCTION getfiatteur (pkostenplaats_key IN NUMBER,
|
||||
pexcludekey IN NUMBER,
|
||||
pondergrens IN NUMBER,
|
||||
pdisckey IN NUMBER
|
||||
pdisckey IN NUMBER,
|
||||
pfiatbedrag IN NUMBER DEFAULT -1
|
||||
)
|
||||
RETURN NUMBER
|
||||
IS
|
||||
lkpverantwkey prs_kostenplaats.prs_perslid_key%TYPE;
|
||||
lkpgverantwkey prs_kostenplaatsgrp.prs_perslid_key%TYPE;
|
||||
lkpgverantwkey1 prs_kostenplaatsgrp.prs_perslid_key%TYPE;
|
||||
lkpgverantwkey2 prs_kostenplaatsgrp.prs_kostenplaatsgrp_fiat2_key%TYPE;
|
||||
lkpgverantwkey3 prs_kostenplaatsgrp.prs_kostenplaatsgrp_fiat3_key%TYPE;
|
||||
lexcludeisvervanger NUMBER;
|
||||
lexcludeiskpgverantw NUMBER;
|
||||
lkpverantwlimiet fac_profiel.fac_profiel_limiet%TYPE;
|
||||
afdkey prs_afdeling.prs_afdeling_key%TYPE;
|
||||
parentafdkey prs_afdeling.prs_afdeling_parentkey%TYPE;
|
||||
lmethode NUMBER;
|
||||
lteller NUMBER;
|
||||
lfoundfiatteur NUMBER;
|
||||
lfiatteur prs_kostenplaats.prs_perslid_key%TYPE;
|
||||
llastfiat BOOLEAN;
|
||||
lgrens NUMBER;
|
||||
BEGIN
|
||||
BEGIN
|
||||
lkpverantwkey := -1;
|
||||
@@ -360,23 +382,164 @@ AS
|
||||
-- Nu: als ik methode 1 heb, of methode 2 niemand opleverde (ondanks afdelingskostenplaats): de kpngroepverantwoordelijke
|
||||
IF lkpverantwkey = -1 OR lkpverantwkey = pexcludekey OR lexcludeisvervanger = 1
|
||||
THEN
|
||||
-- vindt de kostenplaatsGROEPverantwoordelijke van altijd de meegegeven kp
|
||||
-- vindt de kostenplaatsGROEPverantwoordelijke van de altijd meegegeven kp
|
||||
BEGIN
|
||||
SELECT COALESCE (kg.prs_perslid_key, -1)
|
||||
INTO lkpverantwkey -- variabele bvat nu een kpg-verantwoordelijke, naam klopt niet 100%
|
||||
FROM prs_kostenplaats k, prs_kostenplaatsgrp kg
|
||||
SELECT COALESCE(kg.prs_perslid_key, -1),
|
||||
COALESCE(kg.prs_kostenplaatsgrp_fiat2_key, -1),
|
||||
COALESCE(kg.prs_kostenplaatsgrp_fiat3_key, -1)
|
||||
INTO lkpgverantwkey1,
|
||||
lkpgverantwkey2,
|
||||
lkpgverantwkey3
|
||||
FROM prs_kostenplaats k,
|
||||
prs_kostenplaatsgrp kg
|
||||
WHERE prs_kostenplaats_key = pkostenplaats_key
|
||||
AND kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key
|
||||
AND kg.prs_perslid_key NOT IN (lkpverantwkey, pexcludekey);
|
||||
AND kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
-- er is geen kpgroep bij, of het is de excludekey
|
||||
-- Er is geen kpgroep bij.
|
||||
RETURN -1;
|
||||
END;
|
||||
|
||||
lteller := 1;
|
||||
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.
|
||||
IF pfiatbedrag >= 0
|
||||
THEN
|
||||
lgrens := pfiatbedrag;
|
||||
ELSE
|
||||
lgrens := pondergrens;
|
||||
END IF;
|
||||
dbms_output.put_line('Resultaat budgethouder: '||lkpverantwkey);
|
||||
RETURN lkpverantwkey;
|
||||
|
||||
WHILE lteller <= 3 AND lfoundfiatteur = 0
|
||||
LOOP
|
||||
CASE
|
||||
WHEN lteller = 1
|
||||
THEN
|
||||
lkpgverantwkey := lkpgverantwkey1;
|
||||
llastfiat := lgrens < fac.getsetting ('mld_opdr_kpg_fin_limit1');
|
||||
WHEN lteller = 2
|
||||
THEN
|
||||
lkpgverantwkey := lkpgverantwkey2;
|
||||
llastfiat := lgrens < fac.getsetting ('mld_opdr_kpg_fin_limit2');
|
||||
WHEN lteller = 3
|
||||
THEN
|
||||
lkpgverantwkey := lkpgverantwkey3;
|
||||
llastfiat := lgrens >= fac.getsetting ('mld_opdr_kpg_fin_limit2');
|
||||
END CASE;
|
||||
|
||||
IF lkpgverantwkey = pexcludekey
|
||||
THEN
|
||||
lexcludeiskpgverantw := 1;
|
||||
ELSE
|
||||
SELECT CASE
|
||||
WHEN COUNT(prs_perslid_key) > 0
|
||||
THEN 1
|
||||
ELSE 0
|
||||
END
|
||||
INTO lexcludeiskpgverantw
|
||||
FROM prs_collega
|
||||
WHERE prs_perslid_key_alt = pexcludekey
|
||||
AND prs_perslid_key = lkpgverantwkey;
|
||||
END IF;
|
||||
|
||||
IF lexcludeiskpgverantw = 0 AND llastfiat
|
||||
THEN
|
||||
lfiatteur := lkpgverantwkey;
|
||||
lfoundfiatteur := 1;
|
||||
END IF;
|
||||
lteller := lteller + 1;
|
||||
END LOOP;
|
||||
ELSE
|
||||
lfiatteur := lkpverantwkey;
|
||||
END IF;
|
||||
dbms_output.put_line('Resultaat budgethouder: '||lfiatteur);
|
||||
RETURN lfiatteur;
|
||||
END;
|
||||
|
||||
-- Levert de volgende fiatteur in de rij op. Indien geen volgende fiatteur gevonden kan worden wordt -1 teruggegeven.
|
||||
-- Er wordt hier niet gecontroleerd of de opdracht gefiatteerd dient te worden. Dat dien je voor de aanroep te bepalen.
|
||||
FUNCTION nextfiatteur (pkey IN NUMBER,
|
||||
pmodule IN VARCHAR2,
|
||||
pexcludekey IN NUMBER DEFAULT -1)
|
||||
RETURN NUMBER
|
||||
IS
|
||||
lnextfiatteur prs_kostenplaats.prs_perslid_key%TYPE;
|
||||
BEGIN
|
||||
CASE pmodule
|
||||
WHEN 'MLD'
|
||||
THEN
|
||||
SELECT CASE
|
||||
WHEN NOT EXISTS (SELECT prs_perslid_key
|
||||
FROM fac_tracking t,
|
||||
fac_srtnotificatie st
|
||||
WHERE t.fac_srtnotificatie_key = st.fac_srtnotificatie_key
|
||||
AND st.fac_srtnotificatie_code = 'ORDFOK'
|
||||
AND fac_tracking_refkey = o.mld_opdr_key)
|
||||
THEN
|
||||
prs.getfiatteur(o.prs_kostenplaats_key, pexcludekey, mld_opdr_kosten, std.mld_ins_discipline_key, COALESCE(mld_opdr_fiatbedrag, 0))
|
||||
WHEN mld_opdr_fiatbedrag >= fac.getsetting ('mld_opdr_kpg_fin_limit2')
|
||||
THEN
|
||||
COALESCE(prs_kostenplaatsgrp_fiat3_key, -1)
|
||||
WHEN mld_opdr_fiatbedrag >= fac.getsetting ('mld_opdr_kpg_fin_limit1')
|
||||
THEN
|
||||
COALESCE(prs_kostenplaatsgrp_fiat2_key, -1)
|
||||
ELSE
|
||||
COALESCE(kpg.prs_perslid_key, -1)
|
||||
END nextfiatteur
|
||||
INTO lnextfiatteur
|
||||
FROM mld_opdr o,
|
||||
mld_melding m,
|
||||
mld_stdmelding std,
|
||||
prs_kostenplaats kp,
|
||||
prs_kostenplaatsgrp kpg
|
||||
WHERE o.mld_melding_key = m.mld_melding_key
|
||||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||||
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
|
||||
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
|
||||
AND o.mld_opdr_key = pkey;
|
||||
WHEN 'BES'
|
||||
THEN
|
||||
SELECT CASE
|
||||
WHEN NOT EXISTS
|
||||
(SELECT prs_perslid_key
|
||||
FROM fac_tracking t,
|
||||
fac_srtnotificatie st
|
||||
WHERE t.fac_srtnotificatie_key = st.fac_srtnotificatie_key
|
||||
AND st.fac_srtnotificatie_code = 'ORDFOK'
|
||||
AND fac_tracking_refkey = b.bes_bestelling_key)
|
||||
THEN
|
||||
prs.getfiatteur(b.prs_kostenplaats_key, -1, binfo.totaal, binfo.ins_discipline_key, COALESCE(bes_bestelling_fiatbedrag, 0))
|
||||
WHEN bes_bestelling_fiatbedrag >= fac.getsetting('mld_opdr_kpg_fin_limit2')
|
||||
THEN
|
||||
COALESCE(prs_kostenplaatsgrp_fiat3_key, -1)
|
||||
WHEN bes_bestelling_fiatbedrag >= fac.getsetting('mld_opdr_kpg_fin_limit1')
|
||||
THEN
|
||||
COALESCE(prs_kostenplaatsgrp_fiat2_key, -1)
|
||||
ELSE
|
||||
COALESCE(kpg.prs_perslid_key, -1)
|
||||
END
|
||||
nextfiatteur
|
||||
INTO lnextfiatteur
|
||||
FROM bes_bestelling b,
|
||||
(SELECT MAX(bsg.ins_discipline_key) ins_discipline_key,
|
||||
SUM(bi.bes_bestelling_item_aantal * bi.bes_bestelling_item_prijs) totaal
|
||||
FROM bes_bestelling_item bi,
|
||||
bes_srtdeel bsd,
|
||||
bes_srtgroep bsg
|
||||
WHERE bi.bes_srtdeel_key = bsd.bes_srtdeel_key
|
||||
AND bsd.bes_srtgroep_key = bsg.bes_srtgroep_key
|
||||
AND bes_bestelling_key = pkey) binfo,
|
||||
prs_kostenplaats kp,
|
||||
prs_kostenplaatsgrp kpg
|
||||
WHERE b.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
|
||||
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
|
||||
AND b.bes_bestelling_key = pkey;
|
||||
END CASE;
|
||||
RETURN lnextfiatteur;
|
||||
END;
|
||||
|
||||
PROCEDURE setpassword(pperslidkey IN NUMBER, pwachtwoord IN VARCHAR2)
|
||||
|
||||
@@ -13,12 +13,6 @@ ALTER TABLE res_activiteit
|
||||
NUMBER(1)
|
||||
CONSTRAINT res_c_res_activiteit_cvab_mode CHECK(res_activiteit_cvab_mode IN (0,1,2,3));
|
||||
|
||||
UPDATE res_activiteit
|
||||
SET res_activiteit_cvab_mode =
|
||||
(SELECT COALESCE(fac_setting_pvalue, fac_setting_default) waarde
|
||||
FROM fac_setting
|
||||
WHERE fac_setting_name = 'res_default_cvab_mode');
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////// FCLT#41463
|
||||
UPDATE fac_menuitems
|
||||
SET fac_menuitems_url = 'appl/mgt/prs_kostenplaats.asp'
|
||||
@@ -151,13 +145,13 @@ INSERT INTO fac_locale_xsl (fac_locale_xsl_label,
|
||||
fac_locale_xsl_lang,
|
||||
fac_locale_xsl_tekst,
|
||||
fac_locale_xsl_cust)
|
||||
SELECT 'lcl_WEB_USER_' || SUBSTR (fac_functie_code, 9, 2) || '_info',
|
||||
SELECT 'lcl_WEB_USER' || SUBSTR (fac_functie_code, 9, 2) || '_info',
|
||||
'ASP',
|
||||
fac_version_lang,
|
||||
'Zelfdefinieerbare autorisatiefunctie ' || SUBSTR (fac_functie_code, 9, 2),
|
||||
fac_functie_info
|
||||
FROM fac_functie, fac_version
|
||||
WHERE fac_functie_code LIKE 'WEB_USER__'
|
||||
WHERE fac_functie_code LIKE 'WEB_USER%'
|
||||
AND fac_functie_info <> 'Zelfdefinieerbare autorisatiefunctie ' || SUBSTR (fac_functie_code, 9, 2);
|
||||
|
||||
INSERT INTO fac_locale_xsl (fac_locale_xsl_label,
|
||||
@@ -165,15 +159,20 @@ INSERT INTO fac_locale_xsl (fac_locale_xsl_label,
|
||||
fac_locale_xsl_lang,
|
||||
fac_locale_xsl_tekst,
|
||||
fac_locale_xsl_cust)
|
||||
SELECT 'lcl_WEB_USER_' || SUBSTR (fac_functie_code, 9, 2),
|
||||
SELECT 'lcl_WEB_USER' || SUBSTR (fac_functie_code, 9, 2),
|
||||
'ASP',
|
||||
fac_version_lang,
|
||||
'Overig ' || SUBSTR (fac_functie_code, 9, 2),
|
||||
fac_functie_omschrijving
|
||||
FROM fac_functie, fac_version
|
||||
WHERE fac_functie_code LIKE 'WEB_USER__'
|
||||
WHERE fac_functie_code LIKE 'WEB_USER%'
|
||||
AND fac_functie_omschrijving <> 'Overig ' || SUBSTR (fac_functie_code, 9, 2);
|
||||
|
||||
UPDATE fac_functie
|
||||
SET fac_functie_omschrijving = 'lcl_WEB_USER' || SUBSTR (fac_functie_code, 9, 2),
|
||||
fac_functie_info = 'lcl_WEB_USER' || SUBSTR (fac_functie_code, 9, 2) || '_info'
|
||||
WHERE fac_functie_code like 'WEB_USER%';
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////// PLAT#41688
|
||||
ALTER TABLE ins_tab_discipline MODIFY ins_discipline_omschrijving VARCHAR2(60);
|
||||
ALTER TABLE fac_imp_mld MODIFY ins_discipline_omschrijving VARCHAR2(60);
|
||||
@@ -228,6 +227,14 @@ SELECT mld_stdmelding_key, ins_srtinst_key, ins_srtinst_niveau
|
||||
WHERE ins_srtinst_niveau IS NOT NULL
|
||||
AND mld_stdmelding_verwijder IS NULL;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////// VGLD#51622
|
||||
ALTER TABLE bes_bestelling
|
||||
ADD bes_bestelling_fiatbedrag
|
||||
NUMBER(11,2);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////// FCLT#51790
|
||||
UPDATE fac_setting SET fac_setting_pvalue = REPLACE(fac_setting_pvalue, 'menuitemhovercolor', 'menuitemhoverbackgroundcolor')
|
||||
WHERE fac_setting_name = 'csstemplate';
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////// XXXX#12345
|
||||
|
||||
|
||||
Reference in New Issue
Block a user