VGLD#64059: Geen fiatteur bekend.

svn path=/Website/trunk/; revision=48828
This commit is contained in:
Maykel Geerdink
2020-11-16 16:05:52 +00:00
parent b19cec9480
commit 8d01b5405f
4 changed files with 31 additions and 10 deletions

View File

@@ -669,7 +669,7 @@
+ " , " + staffel_info.totaalbedrag + " , " + staffel_info.totaalbedrag
+ " , sg.ins_discipline_key" + " , sg.ins_discipline_key"
+ " , COALESCE(b.bes_bestelling_fiatbedrag, 0)" // Bij een kpg fiatteur moeten we de volgende hebben en niet de laatste, daarom (fiatbedrag >= 0) meegeven. + " , COALESCE(b.bes_bestelling_fiatbedrag, 0)" // Bij een kpg fiatteur moeten we de volgende hebben en niet de laatste, daarom (fiatbedrag >= 0) meegeven.
+ " ) fiatteur_kp_key" + " ) fiatteur_kp_key" // De kostenplaats verantwoordelijke/fiatteur/budgethouder.
+ " , kg.prs_perslid_key fiatteur_kpg_key" + " , kg.prs_perslid_key fiatteur_kpg_key"
+ " , kg.prs_kostenplaatsgrp_fiat2_key" + " , kg.prs_kostenplaatsgrp_fiat2_key"
+ " , kg.prs_kostenplaatsgrp_fiat3_key" + " , kg.prs_kostenplaatsgrp_fiat3_key"
@@ -759,11 +759,23 @@
var exclude_fiatter = var exclude_fiatter =
bes_bestelling.bes_bestelling_fiat_user || (staffel_info.totaalbedrag <= S("can_selfapprove")? -1 : bes_bestelling.perslid_key); bes_bestelling.bes_bestelling_fiat_user || (staffel_info.totaalbedrag <= S("can_selfapprove")? -1 : bes_bestelling.perslid_key);
var totaalbedrag = "(SELECT SUM(i1.bes_bestelling_item_aantal * COALESCE(i1.bes_bestelling_item_prijs, 0))"
+ " FROM bes_bestelling_item i1"
+ " WHERE i1.bes_bestelling_key = b.bes_bestelling_key)";
// Deze mag/hoeft niet meer te fiatteren
var exclude_fiatter = " COALESCE(b.bes_bestelling_fiat_user, "
+ " CASE"
+ " WHEN " + totaalbedrag + " <= " + S("can_selfapprove")
+ " THEN -1"
+ " ELSE b.prs_perslid_key"
+ " END)";
// Nu de info die indirect uit de bestelaanvraag regels afgeleid moet worden // Nu de info die indirect uit de bestelaanvraag regels afgeleid moet worden
// Merk op dat het datamodel bestellingen uit meerdere catalogi ondersteund maar // 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 // 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" var sql = "SELECT MAX(bsg.ins_discipline_key) ins_discipline_key"
+ " , prs.nextfiatteur(" + bes_key + ", 'BES') fiatteur_key" // Voor de BES module wordt de pexcludekey toch niet gebruikt. + " , prs.nextfiatteur(" + bes_key + ", 'BES', " + exclude_fiatter + ") fiatteur_key"
+ " , SUM(bi.bes_bestelling_item_aantal * bi.bes_bestelling_item_prijs) totaal" + " , SUM(bi.bes_bestelling_item_aantal * bi.bes_bestelling_item_prijs) totaal"
+ " , SUM(bi.bes_bestelling_item_aantalontv) aantalontv" + " , 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 + " , MAX(bsg.bes_srtgroep_key) bes_srtgroep_key" // Wordt gebruikt tbv. singlegroep en dan is er maar eentje
@@ -776,7 +788,8 @@
+ " , MAX(bdp.bes_disc_params_contract) bes_disc_params_contract" + " , MAX(bdp.bes_disc_params_contract) bes_disc_params_contract"
+ " , MIN(bsd.prs_bedrijf_key) prs_bedrijf_key" + " , MIN(bsd.prs_bedrijf_key) prs_bedrijf_key"
+ " , COUNT(DISTINCT prs_bedrijf_key) aantal_bedrijf" + " , COUNT(DISTINCT prs_bedrijf_key) aantal_bedrijf"
+ " FROM bes_bestelling_item bi" + " FROM bes_bestelling b"
+ " , bes_bestelling_item bi"
+ " , bes_srtdeel bsd" + " , bes_srtdeel bsd"
+ " , bes_srtgroep bsg" + " , bes_srtgroep bsg"
+ " , bes_discipline bd" + " , bes_discipline bd"
@@ -785,7 +798,11 @@
+ " AND bsd.bes_srtgroep_key = bsg.bes_srtgroep_key" + " AND bsd.bes_srtgroep_key = bsg.bes_srtgroep_key"
+ " AND bsg.ins_discipline_key = bd.ins_discipline_key" + " AND bsg.ins_discipline_key = bd.ins_discipline_key"
+ " AND bsg.ins_discipline_key = bdp.bes_ins_discipline_key" + " AND bsg.ins_discipline_key = bdp.bes_ins_discipline_key"
+ " AND bes_bestelling_key = " + bes_bestelling.bes_key; + " AND bi.bes_bestelling_key = b.bes_bestelling_key"
+ " AND b.bes_bestelling_key = " + bes_bestelling.bes_key
+ " GROUP BY b.bes_bestelling_fiat_user"
+ " , b.bes_bestelling_key"
+ " , b.prs_perslid_key"
oRs = Oracle.Execute(sql); oRs = Oracle.Execute(sql);
if (oRs("ins_discipline_key").Value == null) if (oRs("ins_discipline_key").Value == null)

View File

@@ -156,7 +156,10 @@ for (var i = 0; i < ingesloten.length; i++)
// Fiatteringsproces moet gevolgd worden op de naam van de "voor wie" (bestelling voor) // 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 // Als bes_disc_params_for_others niet is gezet zijn perslid_key en perslid_key_voor identiek
// 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. // 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') kpg_fiatteur_key" // Voor de BES module wordt de pexcludekey toch niet gebruikt.
// Als er al een keer is gefiatteerd (er is BESFIT tracking) dan doet nextfiatteur niets met pexcludekey parameter.
// De functie nextfiatteur kijkt dan zelf welke kpg verantwoordelijke nu aan de beurt is.
sql = "SELECT prs.nextfiatteur(b.bes_bestelling_key, 'BES') kpg_fiatteur_key"
+ " FROM bes_bestelling b" + " FROM bes_bestelling b"
+ " WHERE b.bes_bestelling_key = " + ingesloten[i].bes_key; + " WHERE b.bes_bestelling_key = " + ingesloten[i].bes_key;
var oRs = Oracle.Execute(sql); var oRs = Oracle.Execute(sql);
@@ -177,4 +180,4 @@ for (var i = 0; i < ingesloten.length; i++)
Response.Write(JSON.stringify(result)); Response.Write(JSON.stringify(result));
%> %>
<% ASPPAGE_END(); %> <% ASPPAGE_END(); %>

View File

@@ -914,7 +914,7 @@ else // nieuwe bestelling. Defaults bepalen
%> <tr id="buttons_tr"><td colspan="2"> %> <tr id="buttons_tr"><td colspan="2">
<div class="buttoncontainer besartbtns"><% <div class="buttoncontainer besartbtns"><%
buttons = []; buttons = [];
buttons.push({tooltip: L("lcl_bes_add_btn"), "fa-cart-plus", xclass: "bescart", action:"AddFreeArticleItem('"+urole+"')"}); buttons.push({tooltip: L("lcl_bes_add_btn"), icon: "fa-cart-plus", xclass: "bescart", action:"AddFreeArticleItem('"+urole+"')"});
CreateButtons(buttons, { showIcons: true }) CreateButtons(buttons, { showIcons: true })
%></div> %></div>
</td></tr> </td></tr>
@@ -986,7 +986,7 @@ else // nieuwe bestelling. Defaults bepalen
id="faicon" id="faicon"
style="display: none"><%=I("fa-question")%> style="display: none"><%=I("fa-question")%>
</span> </span>
<img class="besphoto" <img class="besphoto"
src="../Pictures/no_photo.gif" src="../Pictures/no_photo.gif"
id="photo" id="photo"

View File

@@ -56,7 +56,7 @@ function getSqlFiatBes(fiatstatus, prsKeys, params)
+ " FROM prs_v_perslid_fullnames_all p2" + " FROM prs_v_perslid_fullnames_all p2"
+ " WHERE p2.prs_perslid_key =" + " WHERE p2.prs_perslid_key ="
+ (fiatstatus == "open" + (fiatstatus == "open"
? " prs.nextfiatteur(b.bes_bestelling_key, 'BES'))" // Open. Toon wie de fiatteur is. Voor de BES module wordt de pexcludekey toch niet gebruikt. ? " prs.nextfiatteur(b.bes_bestelling_key, 'BES', " + exclude_fiatter + "))" // Open. Toon wie de fiatteur is. Voor de BES module wordt de pexcludekey toch niet gebruikt.
: " b.bes_bestelling_fiat_user)") // Gefiatteerd en afgewezen. Toon wie dat is geweest. (Afwijzer werd voorheen niet opgeslagen, nu wel) : " b.bes_bestelling_fiat_user)") // Gefiatteerd en afgewezen. Toon wie dat is geweest. (Afwijzer werd voorheen niet opgeslagen, nu wel)
// Tijdens het uiteindelijk fiatteren wordt gekeken afhankelijk van totaalbedrag of er wellicht na kostenplaatsverantwoordelijke ook nog door kostenplaatsgroepverantwoordelijke moet worden gefiatteerd. // Tijdens het uiteindelijk fiatteren wordt gekeken afhankelijk van totaalbedrag of er wellicht na kostenplaatsverantwoordelijke ook nog door kostenplaatsgroepverantwoordelijke moet worden gefiatteerd.
@@ -123,7 +123,7 @@ function getSqlFiatBes(fiatstatus, prsKeys, params)
+ " ELSE 4" + " ELSE 4"
+ " END" + " END"
/* A1 */ + " AND ((bes_bestelling_fiat_user IS NULL AND" /* A1 */ + " AND ((bes_bestelling_fiat_user IS NULL AND"
+ " prs.nextfiatteur(b.bes_bestelling_key, 'BES') IN (" + prsKeys + ")" + ")" // Voor de BES module wordt de pexcludekey toch niet gebruikt. + " prs.nextfiatteur(b.bes_bestelling_key, 'BES', " + exclude_fiatter + ") IN (" + prsKeys + ")" + ")" // Voor de BES module wordt de pexcludekey toch niet gebruikt.
/* A2 */ + " OR (bes_bestelling_fiat_user IS NOT NULL AND" /* A2 */ + " OR (bes_bestelling_fiat_user IS NOT NULL AND"
+ " ((ver.prs_perslid_key IN (" + prsKeys + ") AND prijs.bestelling_bedrag < " + S("mld_opdr_kpg_fin_limit1") + ")" + " ((ver.prs_perslid_key IN (" + prsKeys + ") AND prijs.bestelling_bedrag < " + S("mld_opdr_kpg_fin_limit1") + ")"
+ " OR (ver.prs_kostenplaatsgrp_fiat2_key IN (" + prsKeys + ") AND prijs.bestelling_bedrag >= " + S("mld_opdr_kpg_fin_limit1") + " AND prijs.bestelling_bedrag < " + S("mld_opdr_kpg_fin_limit2") + ")" + " OR (ver.prs_kostenplaatsgrp_fiat2_key IN (" + prsKeys + ") AND prijs.bestelling_bedrag >= " + S("mld_opdr_kpg_fin_limit1") + " AND prijs.bestelling_bedrag < " + S("mld_opdr_kpg_fin_limit2") + ")"
@@ -1315,6 +1315,7 @@ function fiattering_sql(params)
+ " FROM (" + sqlkp + " UNION " + sqlkpg + ")"; + " FROM (" + sqlkp + " UNION " + sqlkpg + ")";
var oRsbud = Oracle.Execute(sqlbud); var oRsbud = Oracle.Execute(sqlbud);
var benBudgethouder = oRsbud("aantal").Value > 0; var benBudgethouder = oRsbud("aantal").Value > 0;
oRsbud.Close();
var alleModules = params.betreft.length == 0; var alleModules = params.betreft.length == 0;
if (benBudgethouder && (inArray("BES", params.betreft) || alleModules)) if (benBudgethouder && (inArray("BES", params.betreft) || alleModules))