FCLT#55647: Gebouwkostenplaats selecteren op basis van werkplek.

svn path=/Website/branches/v2018.2/; revision=40160
This commit is contained in:
Maykel Geerdink
2018-12-11 08:39:54 +00:00
parent 0763d6c8b5
commit ba7581a236
4 changed files with 59 additions and 48 deletions

View File

@@ -510,6 +510,7 @@ lcl.set_dialect(mld_melding.srtdisc, "MLD_SRTDISCIPLINE_KEY");
var fromkb = <%=fromkb? 1 : 0%> == 1;
var melddatum = <%=mld_melding.melddatum.getTime()%>;
var alg_level = <%=mld_melding.alg_level%>;
var mld_kk = <%= mld_melding.mld_kk? 1 : 0 %> == 1;
// Voor bestaande meldingen
var canFlexChange = (<%=this_mld.canFlexChange? 1 : 0%> == 1);
@@ -681,11 +682,14 @@ lcl.set_dialect(mld_melding.srtdisc, "MLD_SRTDISCIPLINE_KEY");
{
var urlAdd_account = [{ urlParam: "prs_key", field: (frontend && S("mld_allow_for_others") == 1 && S("prs_dep_default_kpn_voor") == 1? "personFor" : "person") },
{ urlParam: "showeigenkp", field: "eigenkp" }];
if (frontend)
{ // Alleen voor de frontend nodig indien de user geen rechten heeft voor de gebouwkostenplaats.
// De gebouwkostenplaats kan dan toch geselecteerd/getoond worden.
if (frontend && !mld_melding.mld_kk)
{ // Indien frontend en kostenklant vinkje is uit, dan moet alleen de kostenplaats van het geselecteerde gebouw gekozen kunnen worden.
// LET OP!: Persoon hoeft niet gemandateerd te zijn voor deze kostenplaats.
// De kostenplaats van het geselecteerde gebouw wordt meegegeven aan de FCLTkostenplaatsselector
// zodat alleen deze kostenplaats als resultaat opgeleverd gaat worden.
urlAdd_account.push({ urlParam: "kp_key", field: "account_bld" });
}
FCLTkostenplaatsselector("account",
"sgAccount",
mld_melding.melder_key,
@@ -702,13 +706,19 @@ lcl.set_dialect(mld_melding.srtdisc, "MLD_SRTDISCIPLINE_KEY");
hidden: (urole == "fe") },
required: (!(mld_key > 0 && !this_mld.canKostChange)? mld_melding.kpnverplicht : false)
});
var sqlg = "SELECT g.prs_kostenplaats_key"
+ " FROM alg_gebouw g"
+ " WHERE g.alg_gebouw_key = " + mld_melding.bld_key;
var oRsg = Oracle.Execute(sqlg);
if (frontend && !mld_melding.mld_kk)
{ // Indien frontend en kostenklant vinkje is uit, dan moet alleen de kostenplaats van het geselecteerde gebouw gekozen kunnen worden.
// LET OP!: Persoon hoeft niet gemandateerd te zijn voor deze kostenplaats.
// De kostenplaats van het gekozen gebouw wordt in een hidden input veld opgeslagen/bijgehouden.
// Deze wordt meegegeven aan de FCLTkostenplaatsselector.
var sqlg = "SELECT g.prs_kostenplaats_key"
+ " FROM alg_gebouw g"
+ " WHERE g.alg_gebouw_key = " + mld_melding.bld_key;
var oRsg = Oracle.Execute(sqlg);
%>
<input type="hidden" id="account_bld" name="account_bld" value="<%=!oRsg.eof? oRsg("prs_kostenplaats_key").Value : -1%>">
<% oRsg.Close();
<input type="hidden" id="account_bld" name="account_bld" value="<%=!oRsg.eof? oRsg("prs_kostenplaats_key").Value : -1%>">
<% oRsg.Close();
}
if (S("show_ordernr") != 0)
{

View File

@@ -227,12 +227,13 @@ function process_gebouw_info(data, textStatus)
if (textStatus == "success")
{ // Vervang de kostenplaats indien het gebouw er <20><>n heeft anders kostenplaats leegmaken.
// setValue(key, txt, doonChange, checkExist, extraParam, lastTry);
if (frontend && !mld_kk)
$("#account_bld").val(data.alg_kostenplaats_key > 0? data.alg_kostenplaats_key : -1);
if (data && data.alg_kostenplaats_key > 0)
{
// lastTry is true zodat suggestbox wordt leeggemaakt indien waarde niet voorkomt (en niet de laatst waarde wordt getoond)
// In de frontend kan er de gebouwkostenplaats ingevuld worden terwijl de user er geen mandaat op heeft.
// De kostenplaats in "account_bld" wordt voor de frontend ook mee gequeried. checkExist mag dan ook getest worden.
$("#account_bld").val(data.alg_kostenplaats_key);
// De kostenplaats in "account_bld" wordt voor de frontend ook mee gequeried indien kostenklan = 0 (Uit). checkExist mag dan ook getest worden.
sgAccount.setValue(data.alg_kostenplaats_key, data.kostenplaats_omschrijving, true, true, data.kostenplaats_module, true);
}
else
@@ -600,6 +601,8 @@ function process_melder_info(data)
// MNNL#41012: ins_has_loc => is het object een persoonsgebonden object, dan alsnog locatie automatisch selecteren.
if (show_alg && typeof sgLoc != "undefined" && (ins_key < 0 || ins_has_loc === false))
{
if (frontend && !mld_kk)
$("#account_bld").val(-1); // Het veld met de kostenplaats van het gekozen gebouw leegmaken.
plaatsselector.preferWerkplekken(data.werkplekken); // Selecteert automatisch
}
};

View File

@@ -40,7 +40,7 @@ var filtcode = getQParam("filtcode", "M"); // default waarvoor ik gemandateerd b
var showeigenkp = getQParamInt("showeigenkp", 0) == 1;
var inzage = getQParamInt("inzage", 0) == 1;
var mine = getQParamInt("mine", 0) == 1;
var kp_key = getQParamInt("kp_key", -1);
var kp_key = getQParamInt("kp_key", -2);
chars = chars.replace(/\*/g,"%");

View File

@@ -55,42 +55,40 @@ function getFiltClauseKostenplaats(pfiltcode, params)
default: // waar ik op mag boeken
// Geen autorisatie bij kostenplaatsen (prs_kostenplaats)
// Niet persoon of plaats afhankelijk
lfiltClause.from += " , prs_perslidkostenplaats pk";
lfiltClause.where += " AND pk.prs_kostenplaats_key = k.prs_kostenplaats_key"
+ (params.inzage
? " AND pk.prs_perslidkostenplaats_inzage = 1"
: " AND pk.prs_perslidkostenplaats_boeken = 1")
+ " AND pk.prs_perslid_key = " + params.prs_key
+ AAfilter
// van eigen afdeling erbij (S("prs_dep_default_kpn") is setting en showeigenkp is waarde van database setting mld_disc_params_default_kpn)
+ (S("prs_dep_default_kpn") == 1 || params.showeigenkp == 1
? " UNION"
+ " SELECT k.prs_kostenplaats_key kpkey"
+ ", " + S("prs_kpn_string") + " kpstring"
+ ", (SELECT kg.prs_kostenplaatsgrp_oms FROM prs_kostenplaatsgrp kg WHERE kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key) descr"
+ ", UPPER(" + S("prs_kpn_string") + ") upperkpstring"
+ params.extraInf
+ " FROM prs_perslid p"
+ ", prs_afdeling a"
+ ", prs_v_aanwezigkostenplaats k"
//+ (reado?", prs_kostenplaats k":", prs_v_aanwezigkostenplaats k")
+ " WHERE UPPER(" + S("prs_kpn_string") + ") LIKE " + safe.quoted_sql_wild((params.chars? params.chars : "") + "%")
+ " AND p.prs_afdeling_key = a.prs_afdeling_key"
+ " AND p.prs_perslid_key = " + params.prs_key
+ " AND a.prs_kostenplaats_key = k.prs_kostenplaats_key"
+ AAfilter
: "")
+ (params.kp_key > 0 // Deze kostenplaats ook opleveren.
? " UNION"
+ " SELECT k.prs_kostenplaats_key kpkey"
+ ", " + S("prs_kpn_string") + " kpstring"
+ ", (SELECT kg.prs_kostenplaatsgrp_oms FROM prs_kostenplaatsgrp kg WHERE kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key) descr"
+ ", UPPER(" + S("prs_kpn_string") + ") upperkpstring"
+ params.extraInf
+ " FROM prs_v_aanwezigkostenplaats k"
+ " WHERE k.prs_kostenplaats_key = " + params.kp_key
+ AAfilter
: "");
// De kp_key is -1 of groter als meegegeven. Dan alleen deze kostenplaats opleveren.
// De kp_key is -2 als niet meegegeven.
if (params.kp_key > -2)
lfiltClause.where += " AND k.prs_kostenplaats_key = " + params.kp_key
+ AAfilter;
else
{
lfiltClause.from += " , prs_perslidkostenplaats pk";
lfiltClause.where += " AND pk.prs_kostenplaats_key = k.prs_kostenplaats_key"
+ (params.inzage
? " AND pk.prs_perslidkostenplaats_inzage = 1"
: " AND pk.prs_perslidkostenplaats_boeken = 1")
+ " AND pk.prs_perslid_key = " + params.prs_key
+ AAfilter
// van eigen afdeling erbij (S("prs_dep_default_kpn") is setting en showeigenkp is waarde van database setting mld_disc_params_default_kpn)
+ (S("prs_dep_default_kpn") == 1 || params.showeigenkp == 1
? " UNION"
+ " SELECT k.prs_kostenplaats_key kpkey"
+ ", " + S("prs_kpn_string") + " kpstring"
+ ", (SELECT kg.prs_kostenplaatsgrp_oms FROM prs_kostenplaatsgrp kg WHERE kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key) descr"
+ ", UPPER(" + S("prs_kpn_string") + ") upperkpstring"
+ params.extraInf
+ " FROM prs_perslid p"
+ ", prs_afdeling a"
+ ", prs_v_aanwezigkostenplaats k"
//+ (reado?", prs_kostenplaats k":", prs_v_aanwezigkostenplaats k")
+ " WHERE UPPER(" + S("prs_kpn_string") + ") LIKE " + safe.quoted_sql_wild((params.chars? params.chars : "") + "%")
+ " AND p.prs_afdeling_key = a.prs_afdeling_key"
+ " AND p.prs_perslid_key = " + params.prs_key
+ " AND a.prs_kostenplaats_key = k.prs_kostenplaats_key"
+ AAfilter
: "");
}
break;
}
}