STPH#47127: Verplichte selectie van kostenplaats bij mandatering.

svn path=/Website/trunk/; revision=37036
This commit is contained in:
Maykel Geerdink
2018-02-19 09:54:23 +00:00
parent 6071e359b7
commit cb66719ffe
2 changed files with 87 additions and 16 deletions

View File

@@ -133,24 +133,60 @@ else // nieuwe bestelling. Defaults bepalen
if (frontend)
{
var authForOwnAcoount = true;
if (S("prs_dep_default_kpn") == 0)
{ // Niet standaard geautoriseerd voor eigen kostenplaats. Dit hier checken
sql = "SELECT k.prs_kostenplaats_key kpkey"
+ " FROM prs_perslidkostenplaats pk"
+ " , prs_v_aanwezigkostenplaats k"
+ " WHERE pk.prs_kostenplaats_key = k.prs_kostenplaats_key(+)"
+ " AND pk.prs_perslidkostenplaats_boeken = 1"
+ " AND pk.prs_perslid_key = " + user_key
+ " AND (k.prs_kostenplaats_key = " + (user.afdeling().prs_kostenplaats_key() || -1)
+ " OR pk.prs_kostenplaats_key IS NULL)";
// Setting "prs_default_kpn_empty": Costcentre always default empty.
// Alleen van belang als er meerdere kostenplaatsen te selecteren zijn en als de kostenplaats verplicht is. Dit uitzoeken.
var show_empty_kp = false;
var kp_empty = S("prs_default_kpn_empty") == 1;
if (bes_disc_info.discipline_kpnverplicht && kp_empty)
{
sql = "SELECT COUNT(*) aantal"
+ " FROM (SELECT k.prs_kostenplaats_key kpkey"
+ " FROM prs_v_aanwezigkostenplaats k"
+ " , prs_perslidkostenplaats pk"
+ " WHERE pk.prs_kostenplaats_key = k.prs_kostenplaats_key"
+ " AND pk.prs_perslidkostenplaats_boeken = 1"
+ " AND pk.prs_perslid_key = " + user_key
+ " AND (k.prs_kostenplaats_eind IS NULL"
+ " OR k.prs_kostenplaats_eind > SYSDATE)"
+ " UNION"
+ " SELECT k.prs_kostenplaats_key kpkey"
+ " FROM prs_perslid p"
+ " , prs_afdeling a"
+ " , prs_v_aanwezigkostenplaats k"
+ " WHERE p.prs_afdeling_key = a.prs_afdeling_key"
+ " AND p.prs_perslid_key = " + user_key
+ " AND a.prs_kostenplaats_key = k.prs_kostenplaats_key"
+ " AND (k.prs_kostenplaats_eind IS NULL OR k.prs_kostenplaats_eind > SYSDATE)"
+ " )"
oRs = Oracle.Execute(sql);
authForOwnAcoount = (!oRs.eof);
show_empty_kp = oRs("aantal").Value > 0;
oRs.close();
}
if (user.afdeling().prs_kostenplaats_key() && authForOwnAcoount)
bes_bestelling.kostenplaats_key = user.afdeling().prs_kostenplaats_key();
if (show_empty_kp)
bes_bestelling.kostenplaats_key = -1;
else
bes_bestelling.kostenplaats_key = -1;
{
// Setting "prs_dep_default_kpn": A user can make costs for his own department by default {0=no | 1=yes}
var authForOwnAcoount = true;
if (S("prs_dep_default_kpn") == 0)
{ // Niet standaard geautoriseerd voor eigen kostenplaats. Dit hier checken
sql = "SELECT k.prs_kostenplaats_key kpkey"
+ " FROM prs_perslidkostenplaats pk"
+ " , prs_v_aanwezigkostenplaats k"
+ " WHERE pk.prs_kostenplaats_key = k.prs_kostenplaats_key(+)"
+ " AND pk.prs_perslidkostenplaats_boeken = 1"
+ " AND pk.prs_perslid_key = " + user_key
+ " AND (k.prs_kostenplaats_key = " + (user.afdeling().prs_kostenplaats_key() || -1)
+ " OR pk.prs_kostenplaats_key IS NULL)";
oRs = Oracle.Execute(sql);
authForOwnAcoount = (!oRs.eof);
}
if (user.afdeling().prs_kostenplaats_key() && authForOwnAcoount)
bes_bestelling.kostenplaats_key = user.afdeling().prs_kostenplaats_key();
else
bes_bestelling.kostenplaats_key = -1;
}
bes_bestelling.perslid_key = user_key;
bes_bestelling.perslid_key_voor = user_key;

View File

@@ -133,6 +133,41 @@ FCLTHeader.Requires({plugins: ["jQuery", "kenmerk"],
}
ab_mode = (ab_mode != null ? ab_mode : S("res_default_CVAB_mode"));
// Setting "prs_default_kpn_empty": Costcentre always default empty.
// Alleen van belang als er meerdere kostenplaatsen te selecteren zijn en als de kostenplaats verplicht is. Dit uitzoeken.
var show_empty_kp = false;
var kp_empty = S("prs_default_kpn_empty") == 1;
if (srtdisc_kpnverplicht && kp_empty)
{
sql = "SELECT COUNT(*) aantal"
+ " FROM (SELECT k.prs_kostenplaats_key kpkey"
+ " FROM prs_v_aanwezigkostenplaats k"
+ " , prs_perslidkostenplaats pk"
+ " WHERE pk.prs_kostenplaats_key = k.prs_kostenplaats_key"
+ " AND pk.prs_perslidkostenplaats_boeken = 1"
+ " AND pk.prs_perslid_key = " + user_key
+ " AND (k.prs_kostenplaats_eind IS NULL"
+ " OR k.prs_kostenplaats_eind > SYSDATE)"
+ " UNION"
+ " SELECT k.prs_kostenplaats_key kpkey"
+ " FROM prs_perslid p"
+ " , prs_afdeling a"
+ " , prs_v_aanwezigkostenplaats k"
+ " WHERE p.prs_afdeling_key = a.prs_afdeling_key"
+ " AND p.prs_perslid_key = " + user_key
+ " AND a.prs_kostenplaats_key = k.prs_kostenplaats_key"
+ " AND (k.prs_kostenplaats_eind IS NULL OR k.prs_kostenplaats_eind > SYSDATE)"
+ " )"
oRs = Oracle.Execute(sql);
show_empty_kp = oRs("aantal").Value > 0;
oRs.close();
}
if (show_empty_kp)
var kp_key = -1;
else
var kp_key = (S("prs_dep_default_kpn") == 1 ? user.afdeling().prs_kostenplaats_key() || -1 : -1)
var rrr = { rsv_ruimte_key : rsv_ruimte_key,
res_ruimte_key : res_ruimte_key,
reservering_key : -1,
@@ -153,7 +188,7 @@ FCLTHeader.Requires({plugins: ["jQuery", "kenmerk"],
host_key : getQParamInt("host_key", -1),
alg_locatie_key : user.alg_locatie_key(),
kostenplaats_key : (S("prs_dep_default_kpn") == 1 ? user.afdeling().prs_kostenplaats_key() || -1 : -1),
kostenplaats_key : kp_key,
kostenplaats_omschr : user.afdeling().kpn_string() || "",
kostenplaats_module : user.afdeling().kpn_module() || "",
descript_required : descript_required,