DJIN#41674: DJIN - BES/INS: Objecten vanuit bestellingen kunnen aanmaken.
svn path=/Website/trunk/; revision=36896
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
<!-- #include file="../shared/budget.inc" -->
|
||||
<!-- #include file="../shared/kpl_ksrt_validate.inc" -->
|
||||
<!-- #include file="../mld/mld.inc" -->
|
||||
<!-- #include file="../prs/prs.inc" -->
|
||||
<!-- #include file="./model_notes.inc"-->
|
||||
<!-- #include file="./model_custom_fields.inc"-->
|
||||
<!-- #include file="./model_fac_tracking.inc"-->
|
||||
@@ -532,9 +533,16 @@ function model_orders(opdr_key, params)
|
||||
{
|
||||
// Wie moet op verzoek goedkeuren voor deze kostenplaats, terwijl het bedrag wellicht onbekend is?
|
||||
// Eerste fiatteur (pkey) mag niet fiatteren want het zit boven zijn profiel limiet.
|
||||
// De melder van de melding (user_key) mag niet zelf goedkeuren boven het bedrag can_selfapprove.
|
||||
// De melder van de melding (user_key) mag niet zelf goedkeuren boven het bedrag can_selfapprove (functie prs.getApprover() regelt dat).
|
||||
// tot_kosten > can_selfapprove => user_key als exclude key meegeven.
|
||||
approver_key = prs.getFiatteur(kostenplaats_key, (tot_kosten > S("can_selfapprove"))?user_key:-1, tot_kosten, disc_key);
|
||||
// De functie prs.getFiatteur() vervangen door de functie prs.getFiatteur().
|
||||
// De functie prs.getApprover() levert de eerste fiatteur op en checkt daarnaast nog
|
||||
// of het totaalbedrag door iemand gefiatteerd kan worden.
|
||||
var params = {prs_key: user_key,
|
||||
dis_key: disc_key,
|
||||
kp_key: kostenplaats_key,
|
||||
totaalbedrag: tot_kosten};
|
||||
approver_key = prs.getApprover(params);
|
||||
for_approval = true;
|
||||
}
|
||||
}
|
||||
@@ -559,6 +567,8 @@ function model_orders(opdr_key, params)
|
||||
|
||||
if (for_approval && kp_fiat)
|
||||
{
|
||||
// Als approver_key -1 was, dan had de functie prs.getApprover() al een abort_with_warning afgegeven
|
||||
// maar de functie mld.getFirstApprover() nog niet. Daarom hier nog even testen.
|
||||
if (approver_key == -1)
|
||||
abort_with_warning(L("lcl_bes_exceed_limit"));
|
||||
else
|
||||
|
||||
@@ -589,6 +589,10 @@
|
||||
+ " , m.mld_adres_key"
|
||||
+ " , b.bes_bestelling_leverdatum"
|
||||
+ " , b.bes_bestelling_retourvan_key"
|
||||
+ " , prs.getfiatteur (b.prs_kostenplaats_key, -1, " + staffel_info.totaalbedrag + ", sg.ins_discipline_key) fiatteur_kp_key"
|
||||
+ " , kg.prs_perslid_key fiatteur_kpg_key"
|
||||
+ " , kg.prs_kostenplaatsgrp_fiat2_key"
|
||||
+ " , kg.prs_kostenplaatsgrp_fiat3_key"
|
||||
+ " , b.bes_bestelling_fiat_user"
|
||||
+ " , b.bes_bestelling_korting"
|
||||
+ " , b.bes_bestelling_levkosten"
|
||||
@@ -606,9 +610,22 @@
|
||||
+ " FROM bes_bestelling b"
|
||||
+ " , prs_perslid p"
|
||||
+ " , mld_adres m"
|
||||
+ " , bes_bestelling_item bi"
|
||||
+ " , bes_srtdeel sd"
|
||||
+ " , bes_srtgroep sg"
|
||||
+ " , prs_kostenplaats k"
|
||||
+ " , prs_kostenplaatsgrp kg"
|
||||
+ " WHERE b.bes_bestelling_key = " + bes_key
|
||||
+ " AND p.prs_perslid_key = b.prs_perslid_key"
|
||||
+ " AND m.mld_adres_key(+) = b.mld_adres_key_lev";
|
||||
+ " AND m.mld_adres_key(+) = b.mld_adres_key_lev"
|
||||
+ " AND b.bes_bestelling_key = bi.bes_bestelling_key"
|
||||
+ " AND bi.bes_bestelling_item_key = (SELECT MAX(bi2.bes_bestelling_item_key)"
|
||||
+ " FROM bes_bestelling_item bi2"
|
||||
+ " WHERE bi2.bes_bestelling_key = " + bes_key + ")"
|
||||
+ " AND bi.bes_srtdeel_key = sd.bes_srtdeel_key"
|
||||
+ " AND sd.bes_srtgroep_key = sg.bes_srtgroep_key"
|
||||
+ " AND b.prs_kostenplaats_key = k.prs_kostenplaats_key(+)" // kostenplaats van de opdracht kan leeg zijn
|
||||
+ " AND k.prs_kostenplaatsgrp_key = kg.prs_kostenplaatsgrp_key(+)";
|
||||
|
||||
var oRs = Oracle.Execute(sql);
|
||||
if (oRs.Eof)
|
||||
@@ -632,7 +649,11 @@
|
||||
afleverruimte : oRs("bes_bestelling_plaats").Value,
|
||||
rfoDeliverydate : new Date(oRs("bes_bestelling_leverdatum").Value),
|
||||
rfoRetourVan : oRs("bes_bestelling_retourvan_key").Value,
|
||||
bes_bestelling_fiat_user : oRs("bes_bestelling_fiat_user").Value, // degene die al geweest is
|
||||
fiatteur_kp_key : oRs("fiatteur_kp_key").Value || -1,
|
||||
fiatteur_kpg_key : oRs("fiatteur_kpg_key").Value || -1,
|
||||
fiatteur2_kpg_key : oRs("prs_kostenplaatsgrp_fiat2_key").Value || -1,
|
||||
fiatteur3_kpg_key : oRs("prs_kostenplaatsgrp_fiat3_key").Value || -1,
|
||||
bes_bestelling_fiat_user : oRs("bes_bestelling_fiat_user").Value, // Degene als laatste heeft gefiatteerd.
|
||||
rfoBesKosten : oRs("bes_bestelling_korting").Value,
|
||||
rfoLevKosten : oRs("bes_bestelling_levkosten").Value,
|
||||
rfoOpmerking : oRs("bes_bestelling_opmerking").Value,
|
||||
@@ -659,7 +680,7 @@
|
||||
// Merk op dat het datamodel bestellingen uit meerdere catalogi ondersteund maar
|
||||
// de interface niet. Daarom kan hieronder de MAX(bsg.ins_discipline_key) om <20><>n record te krijgen
|
||||
var sql = "SELECT MAX(bsg.ins_discipline_key) ins_discipline_key"
|
||||
+ " , prs.getfiatteur (" + bes_bestelling.kostenplaats_key + ", " + exclude_fiatter + ", " + staffel_info.totaalbedrag + ", MAX(bsg.ins_discipline_key)) fiatteur_key"
|
||||
+ " , prs.nextfiatteur(" + bes_key + ", 'BES', COALESCE(" + bes_bestelling.bes_bestelling_fiat_user + ", -1)) fiatteur_key"
|
||||
+ " , SUM(bi.bes_bestelling_item_aantal * bi.bes_bestelling_item_prijs) totaal"
|
||||
+ " , SUM(bi.bes_bestelling_item_aantalontv) aantalontv"
|
||||
+ " , MAX(bsg.bes_srtgroep_key) bes_srtgroep_key" // Wordt gebruikt tbv. singlegroep en dan is er maar eentje
|
||||
@@ -688,7 +709,7 @@
|
||||
shared.internal_error("BES: no item lines.");
|
||||
|
||||
bes_bestelling.dis_key = oRs("ins_discipline_key").Value;
|
||||
bes_bestelling.fiatteur_key = oRs("fiatteur_key").Value; // degene die het moet doen
|
||||
bes_bestelling.fiatteur_key = oRs("fiatteur_key").Value; // De volgende fiatteur. Degene die het moet doen.
|
||||
bes_bestelling.srtgroep = oRs("bes_srtgroep_key").Value;
|
||||
bes_bestelling.singlegroep = oRs("singlegroep").Value == 1;
|
||||
bes_bestelling.inclBTW = oRs("inclBTW").Value || 0;
|
||||
@@ -1557,42 +1578,6 @@
|
||||
|
||||
},
|
||||
|
||||
getApprover: function(params)
|
||||
{ // Bepaalde de fiatteur (KP verantwoordelijke of KPG verantwoordlijke).
|
||||
// Levert altijd de eerste fiatteur op maar controleert wel alvast of (als zijn
|
||||
// budget niet echt genoeg is) of de KPG verantwoordelijke wel voldoende budget
|
||||
// heeft. Anders stokt het verderop in het proces.
|
||||
var prs_key = params.prs_key;
|
||||
var dis_key = params.dis_key;
|
||||
var kp_key = params.kp_key;
|
||||
var totaalbedrag = params.totaalbedrag;
|
||||
|
||||
var approver_key = prs.getFiatteur(kp_key, totaalbedrag > S("can_selfapprove")?prs_key:-1, totaalbedrag, dis_key);
|
||||
__Log('Eerstgevonden fiatteur: ' + approver_key);
|
||||
if (approver_key == -1) {
|
||||
// geen fiatteur gevonden, bestellen niet mogelijk
|
||||
__Log('bestelling afgebroken');
|
||||
abort_with_warning(L("lcl_bes_no_fiatteur"));
|
||||
}
|
||||
// Bij methode 3 heeft getfiatteur() al gekeken naar de profielen en heeft daarbij al
|
||||
// tot en met de kpgroepverantwoordelijke gekeken. Als de opgeleverde perslid die
|
||||
// kpgroepverantw is, ga je hier geen hogere meer vinden. Niet doen dan dus.
|
||||
if (S("prs_approvemethod") != 3 && budget.exceeds_profiel(totaalbedrag, approver_key, dis_key))
|
||||
{ // de gevonden fiatteur heeft onvoldoende profiel, is er een hogere (kpngroepverantwoordelijke)
|
||||
// Let wel: alleen controle of hij er bestaat. Wie het is doen we nog niets mee hier.
|
||||
__Log('voldoet niet');
|
||||
var nextapprover_key = prs.getFiatteur(kp_key, approver_key, totaalbedrag, dis_key);
|
||||
__Log('Vervolgensgevonden fiatteur: ' + nextapprover_key);
|
||||
if (nextapprover_key == -1 || budget.exceeds_profiel(totaalbedrag, nextapprover_key, dis_key))
|
||||
{
|
||||
__Log('voldoet ook niet');
|
||||
abort_with_warning(L("lcl_bes_exceed_limit"));
|
||||
}
|
||||
}
|
||||
return approver_key;
|
||||
},
|
||||
|
||||
|
||||
// Levert de 'Is ter fiattering aangeboden bij approver' op.
|
||||
sendNeedApprovalNotification: function(bes_key, approver)
|
||||
{
|
||||
|
||||
@@ -183,7 +183,7 @@ for (var i = 0; i < ingesloten.length; i++)
|
||||
ter_finfiattering = bes.checkFiat(bes_key, params);
|
||||
if (ter_finfiattering)
|
||||
{
|
||||
var approver_key = bes.getApprover(params);
|
||||
var approver_key = prs.getApprover(params);
|
||||
__Log("Fiatteur: " + approver_key);
|
||||
apprmessage = bes.sendNeedApprovalNotification(bes_key, approver_key);
|
||||
}
|
||||
|
||||
@@ -41,6 +41,11 @@ for (var i = 0; i < bes_key_arr.length; i++)
|
||||
rfoBesKosten: bes_bestelling.rfoBesKosten,
|
||||
rfoLevKosten: bes_bestelling.rfoLevKosten,
|
||||
fiatteur_key: bes_bestelling.fiatteur_key, // LET OP: De huidige fiatteur wordt opgehaald (Ook als de user_key een vervanger is).
|
||||
fiatteur_kp_key: bes_bestelling.fiatteur_kp_key, // De kostenplaats verantwoordelijke/fiatteur.
|
||||
fiatteur_kpg_key: bes_bestelling.fiatteur_kpg_key, // De kostenplaatsgroep verantwoordelijke/fiatteur.
|
||||
fiatteur2_kpg_key: bes_bestelling.fiatteur2_kpg_key, // De tweede kostenplaatsgroep verantwoordelijke/fiatteur.
|
||||
fiatteur3_kpg_key: bes_bestelling.fiatteur3_kpg_key, // De derde kostenplaatsgroep verantwoordelijke/fiatteur.
|
||||
bes_bestelling_fiat_user: bes_bestelling.bes_bestelling_fiat_user, // Degene als laatste heeft gefiatteerd.
|
||||
dis_key: bes_bestelling.dis_key,
|
||||
perslid_key_voor: bes_bestelling.perslid_key_voor,
|
||||
disc_params_fiatflow: bes_disc_info.disc_params_fiatflow,
|
||||
@@ -55,23 +60,70 @@ user.anything_todo_or_abort(tobeapproved > 0); // We klagen niet over enkele wel
|
||||
for (var i = 0; i < ingesloten.length; i++)
|
||||
{
|
||||
// Blijkbaar mogen we Approve'n
|
||||
var totaal = ingesloten[i].totaal - ingesloten[i].rfoBesKosten + ingesloten[i].rfoLevKosten;
|
||||
// als het valt binnen onze limiet (of eigenlijk: degene die nu moet fiatteren als we vervanger zijn) dan zijn we klaar
|
||||
// NB: de fiatteur kan nu direct de kpg-er zijn
|
||||
|
||||
// Check welk profiel gebruikt moet worden als ik vervanger van de budgethouder ben.
|
||||
var profile_user_key = user_key;
|
||||
|
||||
if (user.isCollega(ingesloten[i].fiatteur_kp_key)) {
|
||||
profile_user_key = ingesloten[i].fiatteur_kp_key;
|
||||
}
|
||||
|
||||
var fiatbedrag = 0;
|
||||
var bijnaklaar = false;
|
||||
var fiat_key = ingesloten[i].bes_bestelling_fiat_user; // is deze opdracht al een keer gefiatterd
|
||||
|
||||
// Vrijwillige fiattering komt bij bestellingen niet voor en het totaalbedrag is groter dan 0 want er valt iets te fiatteren.
|
||||
if (!budget.exceeds_profiel(totaal, profile_user_key, ingesloten[i].dis_key) && !fiat_key) // Het valt binnen onze limiet en alleen voor de budgethouder.
|
||||
{
|
||||
fiatbedrag = budget.get_pgblimiet(profile_user_key, -1);
|
||||
bijnaklaar = true;
|
||||
}
|
||||
else // een kpgroep verantwoordelijke moet fiatteren
|
||||
{ // dat zijn wij of collega daarvan, anders was this_opdr.canApprove false geweest
|
||||
// || user.isCollega(ingesloten[i].nextfiatteur_kpg_key) // wij zijn de groepverantwoordelijke1,2,3 of de vervanger van de groepverantwoordelijke.
|
||||
if ( ingesloten[i].fiatteur3_kpg_key > 0 && user.isCollega(ingesloten[i].fiatteur3_kpg_key) )
|
||||
{
|
||||
fiatbedrag = totaal;
|
||||
bijnaklaar = true;
|
||||
}
|
||||
else if (ingesloten[i].fiatteur2_kpg_key > 0 && user.isCollega(ingesloten[i].fiatteur2_kpg_key))
|
||||
{
|
||||
fiatbedrag = S("mld_opdr_kpg_fin_limit2");
|
||||
if (totaal <= S("mld_opdr_kpg_fin_limit2"))
|
||||
{
|
||||
bijnaklaar = true;
|
||||
}
|
||||
}
|
||||
else if (ingesloten[i].fiatteur_kpg_key > 0 && user.isCollega(ingesloten[i].fiatteur_kpg_key)) // we zijn (collega van) ingesloten[i].fiatteur_kpg_key.
|
||||
{
|
||||
fiatbedrag = S("mld_opdr_kpg_fin_limit1");
|
||||
if (totaal <= S("mld_opdr_kpg_fin_limit1"))
|
||||
{
|
||||
bijnaklaar = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // budgethouder en profiel is niet toereikend.
|
||||
fiatbedrag = budget.get_pgblimiet(profile_user_key, -1);
|
||||
}
|
||||
}
|
||||
|
||||
var sql = "UPDATE bes_bestelling"
|
||||
+ " SET bes_bestelling_fiat_user = " + user_key // als we vervanger zijn wordt *onze* naam geregistrerd
|
||||
+ " SET bes_bestelling_fiatbedrag = " + fiatbedrag
|
||||
+ " , bes_bestelling_fiat_user = " + user_key // Als we vervanger zijn wordt *onze* naam geregistreerd.
|
||||
+ " WHERE bes_bestelling_key = " + ingesloten[i].bes_key;
|
||||
Oracle.Execute(sql);
|
||||
// Gequeuede berichten/notificaties en portalberichten van de approver verwijderen.
|
||||
sql = "BEGIN fac.clrnotifications ('BESAP1', " + ingesloten[i].bes_key + "); END;";
|
||||
Oracle.Execute(sql);
|
||||
|
||||
var totaal = ingesloten[i].totaal - ingesloten[i].rfoBesKosten + ingesloten[i].rfoLevKosten;
|
||||
// als het valt binnen onze limiet (of eigenlijk: degene die nu moet fiatteren als we vervanger zijn) dan zijn we klaar
|
||||
// TODO in de volgende versie (zie docu PF) meerlaags fiattering met prs.getfiatteur() vgl opdr_approve.asp
|
||||
// NB: de fiatteur kan nu direct de kpg-er zijn
|
||||
|
||||
if (!budget.exceeds_profiel(totaal, ingesloten[i].fiatteur_key, ingesloten[i].dis_key))
|
||||
if (bijnaklaar)
|
||||
{
|
||||
// Klaar met fiatteren.
|
||||
bes.setbestellingstatus(ingesloten[i].bes_key, 3); // helemaal Gefiatteerd
|
||||
bes.setbestellingstatus(ingesloten[i].bes_key, 3); // Gefiatteerd, trackt zelf BESFIT
|
||||
|
||||
// Afhankelijk van de fiatterings/acceptatie flow zijn dit de acties:
|
||||
// 1) "Fiatteur -> BESBOF": bes_disc_params_fiatflow = 0 (fiatteren en dan accepteren).
|
||||
@@ -104,15 +156,13 @@ for (var i = 0; i < ingesloten.length; i++)
|
||||
// vervolgens naar de volgende/kostenplaatsgroep fiatteur sturen
|
||||
// Fiatteringsproces moet gevolgd worden op de naam van de "voor wie" (bestelling voor)
|
||||
// Als bes_disc_params_for_others niet is gezet zijn perslid_key en perslid_key_voor identiek
|
||||
// Haal de kostenplaatsgroep verantwoordelijke/fiatteur op. De kolom b.bes_bestelling_fiat_user is gevuld met de user_key).
|
||||
// Geen methode 3 dus bedrag/ discipline hoeft er niet in. Strikt genomen wordt hier gewoon de volgende bepaald omdat we de
|
||||
// eerste uitsluiten, volgens de huidige structuren is dat de kpgverantwoordelijk maar dat is niet cruciaal.
|
||||
sql = "SELECT prs.getfiatteur (b.prs_kostenplaats_key, COALESCE (b.bes_bestelling_fiat_user, -1), NULL, NULL) kpg_fiatteur_key"
|
||||
// Haal de volgende kostenplaatsgroep verantwoordelijke/fiatteur op in de rij van drie. De kolom b.bes_bestelling_fiat_user is gevuld met de user_key.
|
||||
sql = "SELECT prs.nextfiatteur(b.bes_bestelling_key, 'BES', COALESCE(b.bes_bestelling_fiat_user, -1)) kpg_fiatteur_key"
|
||||
+ " FROM bes_bestelling b"
|
||||
+ " WHERE b.bes_bestelling_key = " + ingesloten[i].bes_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var nextapprover_key = oRs("kpg_fiatteur_key").Value;
|
||||
if (nextapprover_key == -1 || budget.exceeds_profiel(totaal, nextapprover_key, ingesloten[i].dis_key))
|
||||
if (nextapprover_key == -1)
|
||||
{ // Deze bestelling overschrijdt het mandaat van de budgethouder (kostenplaatsgroep verantwoordelijke/fiatteur) van de opgegeven kostenplaats en/of de budgethouder is onbekend.
|
||||
result.message = L("lcl_bes_exceed_limit");
|
||||
}
|
||||
|
||||
@@ -185,7 +185,7 @@ if (!isCorrectie)
|
||||
// De melder van de melding (prs_key) mag niet zelf goedkeuren boven het bedrag can_selfapprove.
|
||||
// staffel_info.totaalbedrag > can_selfapprove => prs_key als exclude key meegeven.
|
||||
// prs_key heeft altijd een waarde (prs_key > 0) (required).
|
||||
approver_key = bes.getApprover(params);
|
||||
approver_key = prs.getApprover(params);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,9 +50,7 @@ for (var i = 0; i < ingesloten.length; i++)
|
||||
// Blijkbaar mogen we Approve'n
|
||||
var mld_opdr = ingesloten[i].mld_opdr;
|
||||
|
||||
// TODO in de volgende versie (zie docu PF) meerlaags fiattering met prs.getfiatteur() vgl bes_approve.asp
|
||||
|
||||
// check welk profiel gebruikt moet worden als ik vervanger van de budgethouder ben.
|
||||
// Check welk profiel gebruikt moet worden als ik vervanger van de budgethouder ben.
|
||||
var profile_user_key = user_key;
|
||||
|
||||
if (user.isCollega(mld_opdr.fiatteur_kp_key)) {
|
||||
@@ -67,37 +65,38 @@ for (var i = 0; i < ingesloten.length; i++)
|
||||
bijnaklaar = true;
|
||||
else if (!budget.exceeds_profiel(mld_opdr.t_cost, profile_user_key, -1) && !fiat_key) // het valt binnen onze limiet (geen disicpline) en alleen voor de budgethouder.
|
||||
{
|
||||
bijnaklaar = true;
|
||||
fiatbedrag = budget.get_pgblimiet(profile_user_key, -1);
|
||||
fiatbedrag = budget.get_pgblimiet(profile_user_key, -1);
|
||||
bijnaklaar = true;
|
||||
}
|
||||
else // een kpgroep verantwoordelijke moet fiatteren
|
||||
{ // dat zijn wij of collega daarvan, anders was this_opdr.canApprove false geweest
|
||||
// || user.isCollega(mld_opdr.nextfiatteur_kpg_key) // wij zijn de groepverantwoordelijke1,2,3 of de vervanger van de groepverantwoordelijke.
|
||||
if ( mld_opdr.fiatteur3_kpg_key > 0 && user.isCollega(mld_opdr.fiatteur3_kpg_key) )
|
||||
{ // dat zijn wij of collega daarvan, anders was this_opdr.canApprove false geweest
|
||||
// || user.isCollega(mld_opdr.nextfiatteur_kpg_key) // wij zijn de groepverantwoordelijke1,2,3 of de vervanger van de groepverantwoordelijke.
|
||||
if ( mld_opdr.fiatteur3_kpg_key > 0 && user.isCollega(mld_opdr.fiatteur3_kpg_key) )
|
||||
{
|
||||
fiatbedrag = mld_opdr.t_cost;
|
||||
bijnaklaar = true;
|
||||
}
|
||||
else if ( mld_opdr.fiatteur2_kpg_key > 0 && user.isCollega(mld_opdr.fiatteur2_kpg_key) )
|
||||
{
|
||||
fiatbedrag = S("mld_opdr_kpg_fin_limit2");
|
||||
if (mld_opdr.t_cost <= S("mld_opdr_kpg_fin_limit2"))
|
||||
{
|
||||
bijnaklaar = true;
|
||||
bijnaklaar = true;
|
||||
}
|
||||
else if ( mld_opdr.fiatteur2_kpg_key > 0 && user.isCollega(mld_opdr.fiatteur2_kpg_key) )
|
||||
}
|
||||
else if ( mld_opdr.fiatteur_kpg_key > 0 && user.isCollega(mld_opdr.fiatteur_kpg_key) ) // we zijn (collega van) mld_opdr.fiatteur_kpg_key
|
||||
{
|
||||
fiatbedrag = S("mld_opdr_kpg_fin_limit1");
|
||||
if (mld_opdr.t_cost <= S("mld_opdr_kpg_fin_limit1"))
|
||||
{
|
||||
fiatbedrag = S("mld_opdr_kpg_fin_limit2");
|
||||
if (mld_opdr.t_cost <= S("mld_opdr_kpg_fin_limit2"))
|
||||
{
|
||||
bijnaklaar = true;
|
||||
}
|
||||
}
|
||||
else if ( mld_opdr.fiatteur_kpg_key > 0 && user.isCollega(mld_opdr.fiatteur_kpg_key) ) // we zijn (collega van) mld_opdr.fiatteur_kpg_key
|
||||
{
|
||||
fiatbedrag = S("mld_opdr_kpg_fin_limit1");
|
||||
if (mld_opdr.t_cost <= S("mld_opdr_kpg_fin_limit1"))
|
||||
{
|
||||
bijnaklaar = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// budgethouder en profiel is niet toereikend.
|
||||
fiatbedrag = budget.get_pgblimiet(profile_user_key, -1);
|
||||
bijnaklaar = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// budgethouder en profiel is niet toereikend.
|
||||
fiatbedrag = budget.get_pgblimiet(profile_user_key, -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -228,6 +228,46 @@ prs =
|
||||
return res;
|
||||
},
|
||||
|
||||
getApprover: function(params)
|
||||
{ // Bepaalde de fiatteur (KP verantwoordelijke of KPG verantwoordlijke).
|
||||
// Levert altijd de eerste fiatteur op maar controleert wel alvast of (als zijn
|
||||
// budget niet echt genoeg is) of de KPG verantwoordelijke wel voldoende budget
|
||||
// heeft. Anders stokt het verderop in het proces.
|
||||
var prs_key = params.prs_key;
|
||||
var dis_key = params.dis_key;
|
||||
var kp_key = params.kp_key;
|
||||
var totaalbedrag = params.totaalbedrag;
|
||||
|
||||
// Eerst de kostenplaatsverantwoordelijke (budgethouder) opvragen.
|
||||
var approver_key = prs.getFiatteur(kp_key, totaalbedrag > S("can_selfapprove")?prs_key:-1, totaalbedrag, dis_key);
|
||||
__Log('Eerstgevonden fiatteur: ' + approver_key);
|
||||
if (approver_key == -1) {
|
||||
// geen fiatteur gevonden, bestellen niet mogelijk
|
||||
__Log('bestelling afgebroken');
|
||||
abort_with_warning(L("lcl_bes_no_fiatteur"));
|
||||
}
|
||||
// Bij methode 3 heeft getfiatteur() al gekeken naar de profielen en heeft daarbij al
|
||||
// tot en met de kpgroepverantwoordelijke gekeken. Als de opgeleverde perslid die
|
||||
// kpgroepverantw is, ga je hier geen hogere meer vinden. Niet doen dan dus.
|
||||
if (S("prs_approvemethod") != 3 && budget.exceeds_profiel(totaalbedrag, approver_key, dis_key))
|
||||
{ // de gevonden fiatteur heeft onvoldoende profiel, is er een hogere (kpngroepverantwoordelijke)
|
||||
// Let wel: alleen controle of hij er bestaat. Wie het is doen we nog niets mee hier.
|
||||
__Log('voldoet niet');
|
||||
// Nu de kostenplaatsverantwoordelijke opvragen die het totaalbedrag mag/kan goedkeuren.
|
||||
// Ter controle of de bestelling geheel goed gekeurd kan worden.
|
||||
// Deze fiatteur wordt niet opgeleverd! De eerste fiatteur/kostenplaatsverantwoordelijke wordt opgelever.
|
||||
var nextapprover_key = prs.getFiatteur(kp_key, approver_key, totaalbedrag, dis_key);
|
||||
__Log('Vervolgensgevonden fiatteur: ' + nextapprover_key);
|
||||
if (nextapprover_key == -1 || budget.exceeds_profiel(totaalbedrag, nextapprover_key, dis_key))
|
||||
{
|
||||
__Log('voldoet ook niet');
|
||||
abort_with_warning(L("lcl_bes_exceed_limit"));
|
||||
}
|
||||
}
|
||||
return approver_key;
|
||||
},
|
||||
|
||||
|
||||
getLocationSql: function(loc_key, alias)
|
||||
{
|
||||
var sql = " (prs_bedrijfdienstlocatie.alg_locatie_key IN (" + loc_key + ")"
|
||||
|
||||
Reference in New Issue
Block a user