Files
Facilitor/APPL/RES/res_edit_rsv_ruimte.asp
Erik Groener c122640271 STAM#37774 Verkeerde plaatje wordt getoond voor ruimteopstelliing bij reservering
svn path=/Website/trunk/; revision=30798
2016-09-21 13:49:06 +00:00

1528 lines
74 KiB
Plaintext
Raw Blame History

<%@ language = "JavaScript" %>
<%
/* $Revision$
$Id$
File: res_edit_rsv_ruimte.asp
Description: Bouwen van het ruimte edit/select blok voor een reservering
In dit blok bepalen we met name de WANNEER en WAAR eigenschappen
Ofwel: res_rsv_ruimte records met begin/eind tijdstippen en een alg_ruimte
of res_ruimte (via opstelling) verwijzing
(zie verder res_edit_objcat
Parameters:
rsv_ruimte_key required, existing rsv_ruimte_key. Al het andere zoeken we er zelf bij
urole required
Context: (Altijd) subframe van res_reservering.asp
Note:
*/
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../res/res.inc" -->
<!-- #include file="res_flexkenmerk.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/calendar.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/plaatsselector.inc" -->
<!-- #include file="../Shared/persoonselector.inc" -->
<!-- #include file="../Shared/kostenplaatsselector.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="../prs/prs.inc" -->
<%
FCLTHeader.Requires({plugins: ["jQuery", "kenmerk"],
js: ["date.js", "jquery.timepicker-table.js"],
css: ["timePicker-table.css"]})
%>
<html>
<head>
<% FCLTHeader.Generate() %>
<%
// Required parameters
var urole = getQParamSafe("urole");
var rsv_ruimte_key = getQParamInt("rsv_ruimte_key", -1);
var autfunction = { fe: "WEB_RESUSE", bo: "WEB_RESBOF", fo: "WEB_RESFOF" } [urole];
var authparams = user.checkAutorisation(autfunction);
// Moeten we weten voor notfrontend bij activiteiten
var feonly = autfunction != "WEB_RESFOF" &&
autfunction != "WEB_RESBOF" &&
(user.checkAutorisation(["WEB_RESFOF", "WEB_RESBOF"], true) == null);
// Optional parameters
var rsv_copy_key = getQParamInt("rsv_copy_key", -1); // hier kopieren we veel uit
var for_undelete = getQParamInt("undelete", 0)==1; // fo-functie undelete reservering
if (rsv_ruimte_key == -1)
{
// Bepalen restype en kostenplaats verplicht uit srtactiviteit.
var srtact = getQParamInt("srtact"); // Deze is gegarandeerd voor nieuwe reserveringen
var sql = "SELECT sa.res_srtactiviteit_soort"
+ " , sa.res_srtactiviteit_kpnverplicht"
+ " , sa.res_srtactiviteit_metaantal"
+ " , sa.res_srtactiviteit_metomschr"
+ " , sa.res_srtactiviteit_metopmerk"
+ " FROM res_srtactiviteit sa"
+ " WHERE sa.res_srtactiviteit_key = " + srtact;
var oRs = Oracle.Execute(sql);
var restype = oRs("res_srtactiviteit_soort").value == 0? "R" : "CV";
var srtdisc_kpnverplicht = oRs("res_srtactiviteit_kpnverplicht").value;
var srtdisc_metaantal = oRs("res_srtactiviteit_metaantal").value;
var srtdisc_metomschr = oRs("res_srtactiviteit_metomschr").value;
var srtdisc_metopmerk = oRs("res_srtactiviteit_metopmerk").value;
oRs.Close();
var res_ruimte_key = getQParamInt("res_ruimte_key", -1);
var res_van = getQParamDate("res_van", null);
var res_tot = getQParamDate("res_tot", null);
if (rsv_copy_key > 0)
{
var this_res = res.func_enabled(rsv_copy_key); // wat mocht ik zoal op deze reservering
user.auth_required_or_abort(this_res.couldCreate);
}
else
this_res = {};
}
else
{
var this_res = res.func_enabled(rsv_ruimte_key); // wat mag ik zoal op deze reservering
user.auth_required_or_abort(this_res.canChange || !this_res.canChangeFEExtended);
}
var fronto = urole == "fo"; // DEPRECATED
var backo = urole == "bo";
var frontend = urole == "fe";
var readonlyFE = ( (rsv_ruimte_key != -1) && (frontend && !this_res.canChangeFEExtended) ? true : false);
// TODO??
rsv_ruimte_key = getQParamInt("next_rsv_ruimte_key", rsv_ruimte_key);
// TODO: Dit waren globals. Wat nu?
serie=false; // TODO: Hoe te doen? Vervalt, false is ok
// end TODO
// rrr is een belangrijke globale: hij bevat 'allerlei' info uit het res_rsv_ruimte record
// en eventueel wat daar 1-op-1 uit afgeleid kan worden
// conventie: altijd dezelfde naam als het database veld, maar dan zonder res_
var reado_alg = false;
var reado_level;
if (rsv_ruimte_key == -1 && rsv_copy_key == -1) // defaults zetten.
{
// bezorg-afhaal mode
var ab_mode = getQParamInt("ab_mode", S("res_default_CVAB_mode")); // 0=afhalen; 1=bezorgen, null=weetniet, +2=vast
var activiteit_key = getQParamInt("activiteit_key", -1);
var aantal_verplicht = false;
var descript_required = false;
if (activiteit_key > 0)
{
sql = "SELECT ac.res_activiteit_aantalverplicht,"
+ " res_activiteit_omsverplicht"
+ " FROM res_activiteit ac"
+ " WHERE res_activiteit_key = " + activiteit_key;
oRs = Oracle.Execute(sql);
aantal_verplicht = oRs("res_activiteit_aantalverplicht").value == 1;
descript_required = oRs("res_activiteit_omsverplicht").value == 1;
}
var rrr = { rsv_ruimte_key : rsv_ruimte_key,
res_ruimte_key : res_ruimte_key,
reservering_key : -1,
status_fo_key : urole=='fo'?S("res_default_fo_status_key"):2,
status_bo_key : 2, // default 2, ingevoerd
status_flag : 0,
activiteit_key : activiteit_key,
srtactiviteit_key : srtact,
alg_ruimte_key : getQParamInt("alg_ruimte_key", S("res_default_alg_ruimte_key")),
ruimte_opstel_key : -1,
rsv_ruimte_noshow : null,
rsv_ruimte_bezoekers: getQParamArray("bez_naam", [], true).length||null, // leeg! laten ipv '0', en QParam niet splitsen op komma (zie ook bez_show_bezoekers.asp
rsv_ruimte_volgnr : 1,
descript : getQParam("bez_omschr", ""), // vanuit Outlook
rsv_ruimte_dirtlevel: res.dirtlevel.ruimte.noroom,
rsv_ruimte_aanmaak : new Date(),
contact_key : (urole == 'fo' && !S("res_fo_default_user")? -1 : user_key),
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_omschr : user.afdeling().kpn_string() || "",
kostenplaats_module : user.afdeling().kpn_module() || "",
descript_required : descript_required,
aantal_verplicht : aantal_verplicht,
kosten_klant : S("kosten_klant_default") == 1,
resnrtxt : L("lcl_new"),
srtactiviteit_kpnverplicht : srtdisc_kpnverplicht,
srtactiviteit_metaantal : srtdisc_metaantal==1,
srtactiviteit_metomschr : srtdisc_metomschr==1,
srtactiviteit_metopmerk : srtdisc_metopmerk==1,
ab_mode : ab_mode,
res_ruimte_extern : false
}
if (res_ruimte_key > 0) // locatiekey opzoeken.
{
// Checken of ik de res_ruimte_key wel mag eigenlijk
// Zou niet mis moeten kunnen gaan behalve hacken?
// kan van een andere discipline zijn if (authparams.ALGwritelevel > -1)
{
sql = "SELECT 1"
+ " FROM " + res.fac_v_my_res_ruimte_write
+ " WHERE res_ruimte_key = " + res_ruimte_key
+ " AND fac_functie_key = " + authparams.autfunctionkey
+ " AND prs_perslid_key = " + user_key;
oRs = Oracle.Execute(sql);
user.auth_required_or_abort(!oRs.eof);
}
sql = "SELECT alg_locatie_key"
+ " FROM res_alg_ruimte rar,"
+ " alg_v_onrgoed_boom aob"
+ " WHERE rar.alg_ruimte_key = aob.alg_ruimte_key"
+ " AND res_ruimte_key = " + res_ruimte_key;
oRs = Oracle.Execute(sql);
rrr.alg_locatie_key = oRs("alg_locatie_key").Value;
if (rrr.activiteit_key == -1) // Toevallig maar <20><>n activiteit mogelijk voor onze ruimte?
{
sql = "select ra.res_activiteit_key"
+ " from res_activiteitdiscipline rad,"
+ " res_activiteit ra,"
+ " res_ruimte rr"
+ " where rr.res_ruimte_key = " + res_ruimte_key
+ " and rad.res_discipline_key = rr.res_discipline_key"
+ " and rad.res_activiteit_key = ra.res_activiteit_key";
if (feonly)
sql += " AND ra.res_activiteit_notfrontend = 0"
var oRs = Oracle.Execute(sql);
if (!oRs.Eof)
{
var act = oRs("res_activiteit_key").Value;
oRs.MoveNext();
if (oRs.Eof)
{
rrr.activiteit_key = act; // er was er maar eentje
// Dan voor deze activiteit ook kijken of het aantal bezoeker en/of omschrijving verplicht is.
%> <script type="text/javascript">
$(document).ready(function()
{
checkVeldenVerplicht();
});
</script>
<% }
}
}
}
if (rrr.host_key == -1)
{
if (urole=='fe' && !S("res_fe_init_host_empty"))
rrr.host_key = user_key;
else
if (urole != 'fe' && S("res_fo_default_user")) // frontoffice
rrr.host_key = user_key;
}
if (rrr.host_key > 0)
var host_info = new prs.prs_perslid(rrr.host_key);
else
{ // FSN#20439 workaround, moet beter
host_info = { kostenplaats_key: -1 };
}
ordernr_reado = false;
if (res_van)
{
rrr.rsv_ruimte_van = res_van.addFloatHours(0, S("res_h")); // afronden op S("res_h") interval
// default eindtijd bepalen?
if (res_tot)
rrr.rsv_ruimte_tot = res_tot.addFloatHours(0, S("res_h"));
else
rrr.rsv_ruimte_tot = rrr.rsv_ruimte_van.addFloatHours(S("res_dur"), S("res_h"));
}
else
{
rrr.rsv_ruimte_van = new Date().setFloatHours(S("res_t1"), S("res_h"));
rrr.rsv_ruimte_tot = rrr.rsv_ruimte_van.addFloatHours(S("res_dur"), S("res_h"));
}
if (restype == "CV" && rrr.host_key == user_key && rrr.alg_ruimte_key == -1)
{
rrr.alg_locatie_key = user.alg_locatie_key();
rrr.alg_gebouw_key = user.alg_gebouw_key();
rrr.alg_verdieping_key = user.alg_verdieping_key();
rrr.alg_ruimte_key = user.alg_ruimte_key();
}
// Als een voorgeselecteerd object/discipline/activiteit een strakke scope-heeft vullen we die alvast in
var res_deel_key = getQParamInt("res_deel_key", -1);
if (res_deel_key > 0)
{
sql = "SELECT res_deel_alg_level"
+ " , res_discipline_key"
+ " FROM res_deel rd"
+ " WHERE res_deel_key = " + res_deel_key;
oRs = Oracle.Execute(sql);
rrr.res_deel_alg_level = oRs("res_deel_alg_level").value;
rrr.res_discipline_key = oRs("res_discipline_key").value;
if (oRs("res_deel_alg_level").value == 5) // Hij kan alleen in eigen ruimte
rrr.ab_mode = 2; // automatisch afhalen-vast
// Alg_ruimte gegevens van res_deel_key ofwel ins_deel_key op zoeken.
sql = "SELECT rg.alg_locatie_key"
+ " , rg.alg_gebouw_key"
+ " , rg.alg_verdieping_key"
+ " , rg.alg_ruimte_key"
+ " , rd.res_deel_alg_level"
+ " FROM res_deel rd"
+ " , ins_deel d"
+ " , alg_v_ruimte_gegevens_all rg"
+ " WHERE rd.res_ins_deel_key = d.ins_deel_key"
+ " AND COALESCE(d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key) = rg.alg_ruimte_key"
+ " AND res_deel_key = " + res_deel_key;
oRs = Oracle.Execute(sql);
rrr.alg_locatie_key = oRs("alg_locatie_key").value;
rrr.alg_gebouw_key = oRs("alg_gebouw_key").value;
rrr.alg_verdieping_key = oRs("alg_verdieping_key").value;
rrr.alg_ruimte_key = oRs("alg_ruimte_key").value;
if (oRs("res_deel_alg_level").Value >= 5) reado_alg = true; // Als de alg_level kleiner is dan 5 dan zijn er waarschijnlijk meerdere plekken te kiezen
}
// disc_key en act_key worden door RESA filter opgelost in de plaatsselector
// Als een voorgeselecteerd artikel een strakke scope-heeft vullen we die alvast in
var res_artikel_key = getQParamInt("res_artikel_key", -1);
if (res_artikel_key > 0)
{
sql = "SELECT ra.res_discipline_key"
+ " , sao.alg_onrgoed_key"
+ " , sao.alg_onrgoed_niveau"
+ " FROM res_artikel ra"
+ " , res_srtartikel_onrgoed sao"
+ " WHERE ra.res_discipline_key = sao.res_discipline_key"
+ " AND ra.res_artikel_key = " + res_artikel_key;
oRs = Oracle.Execute(sql);
rrr.res_discipline_key = oRs("res_discipline_key").value;
var alg_onrgoed_key = oRs("alg_onrgoed_key").value;
var alg_onrgoed_niveau = oRs("alg_onrgoed_niveau").value;
oRs.MoveNext();
if (oRs.Eof)
{ // Er is maar 1 scope. Dan kan deze ingevuld worden.
if (alg_onrgoed_niveau == "L")
{ // Artikel scope is een locatie
rrr.alg_locatie_key = alg_onrgoed_key;
rrr.alg_gebouw_key = -1;
rrr.alg_verdieping_key = -1;
rrr.alg_ruimte_key = -1;
reado_level = 2;
}
else
{ // Artikel scope is een ruimte of een gebouw
sql = "SELECT aor.alg_locatie_key"
+ " , aor.alg_gebouw_key"
+ " , aor.alg_verdieping_key"
+ " , aor.alg_ruimte_key"
+ " , aor.alg_type"
+ " FROM alg_v_allonroerendgoed aor"
+ " WHERE aor.alg_onroerendgoed_keys = " + alg_onrgoed_key
+ " AND aor.alg_type = " + safe.quoted_sql(alg_onrgoed_niveau);
oRs = Oracle.Execute(sql);
rrr.alg_locatie_key = oRs("alg_locatie_key").value;
rrr.alg_gebouw_key = oRs("alg_gebouw_key").value;
rrr.alg_verdieping_key = oRs("alg_verdieping_key").value;
rrr.alg_ruimte_key = oRs("alg_ruimte_key").value;
if (alg_onrgoed_niveau == "G")
reado_level = 3;
if (alg_onrgoed_niveau == "V")
reado_level = 4;
if (alg_onrgoed_niveau == "R")
reado_level = 5;
}
}
//else wordt wel de eigen kamer ingevuld die hiervoor al bepaald is.
}
rrr.flex_defaults = {};
var flex_defaults = getQParam("flex_defaults", "").split("&"); //bsn=12345678&plaats=Enschede&postcode=1234AB
for (var i in flex_defaults)
{
var nm = flex_defaults[i].split("=")[0].toLowerCase();
var val = flex_defaults[i].split("=")[1];
rrr.flex_defaults[nm] = val;
}
}
else // Bestaande reservering
{ // Zoek zo snel mogelijk info van res_rsv_ruimte op.
sql = "SELECT rr.res_reservering_key, "
+ " rr.res_reservering_ispool, "
+ " rrr.res_status_fo_key, "
+ " rrr.res_status_bo_key, "
+ " rrr.res_rsv_ruimte_flag, "
+ " rrr.res_rsv_ruimte_van, "
+ " rrr.res_rsv_ruimte_tot, "
+ " rrr.res_activiteit_key, "
+ " ra.res_activiteit_omsverplicht, "
+ " ra.res_activiteit_aantalverplicht, "
+ " sa.res_srtactiviteit_prefix, "
+ " res_rsv_ruimte_noshow, "
+ " res_rsv_ruimte_bezoekers, "
+ " res_rsv_ruimte_bezoekers_shown, "
+ " res_rsv_ruimte_volgnr, "
+ " res_rsv_ruimte_dirtlevel, "
+ " res_rsv_ruimte_aanmaak, "
+ " alg_ruimte_key, "
+ " rrr.res_ruimte_opstel_key,"
+ " ro.res_opstelling_omschrijving,"
+ " res_ruimte_opstel_bezoekers,"
+ " COALESCE(res_rsv_ruimte_opmerking,'') res_rsv_ruimte_opmerking,"
+ " rrr.res_rsv_ruimte_contact_key,"
+ " rrr.res_rsv_ruimte_host_key,"
+ " rrr.res_rsv_ruimte_omschrijving,"
+ " rrr.res_rsv_ruimte_ordernr,"
+ " res_rsv_ruimte_totaal,"
+ " res_rsv_ruimte_korting,"
+ " COALESCE (res_rsv_ruimte_kosten_klant, -1) res_rsv_ruimte_kosten_klant, "
+ " kp.prs_kostenplaats_nr,"
+ " COALESCE (kp.prs_kostenplaats_key, -1) prs_kostenplaats_key, "
+ " COALESCE((SELECT " + S("prs_kpn_string")
+ " FROM prs_kostenplaats k"
+ " WHERE k.prs_kostenplaats_key = kp.prs_kostenplaats_key), "
+ " '') prs_kostenplaats_omschr,"
+ " kp.prs_kostenplaats_module,"
+ " sa.res_srtactiviteit_key,"
+ " sa.res_srtactiviteit_kpnverplicht,"
+ " sa.res_srtactiviteit_metaantal,"
+ " sa.res_srtactiviteit_metomschr,"
+ " sa.res_srtactiviteit_metopmerk,"
+ " rrr.res_rsv_ruimte_cvab_mode"
+ " FROM res_rsv_ruimte rrr, "
+ " res_activiteit ra, "
+ " res_srtactiviteit sa, "
+ " res_reservering rr,"
+ " prs_kostenplaats kp,"
+ " res_ruimte_opstelling rro, "
+ " res_opstelling ro"
+ " WHERE res_rsv_ruimte_key = " + (rsv_ruimte_key > 0? rsv_ruimte_key : rsv_copy_key)
+ " AND rrr.res_reservering_key = rr.res_reservering_key"
+ " AND rrr.res_activiteit_key = ra.res_activiteit_key"
+ " AND ra.res_srtactiviteit_key = sa.res_srtactiviteit_key"
+ " AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)"
+ " AND rro.res_opstelling_key = ro.res_opstelling_key(+)"
+ " AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)";
oRs = Oracle.Execute(sql);
var srtact = oRs("res_srtactiviteit_key").value;
var rrr = { rsv_ruimte_key : rsv_ruimte_key,
reservering_key : oRs("res_reservering_key").value,
reservering_ispool : oRs("res_reservering_ispool").value == 1,
status_fo_key : oRs("res_status_fo_key").value,
status_bo_key : oRs("res_status_bo_key").value||2, // default 2, ingevoerd
status_flag : oRs("res_rsv_ruimte_flag").value||0,
activiteit_key : oRs("res_activiteit_key").value,
srtactiviteit_key : srtact,
rsv_ruimte_van : new Date(oRs("res_rsv_ruimte_van").value),
rsv_ruimte_tot : new Date(oRs("res_rsv_ruimte_tot").value),
alg_ruimte_key : oRs("alg_ruimte_key").value,
ruimte_opstel_key : oRs("res_ruimte_opstel_key").value,
opstelling_omschrijving: oRs("res_opstelling_omschrijving").Value,
opstel_bezoekers : oRs("res_ruimte_opstel_bezoekers").Value,
rsv_ruimte_noshow : oRs("res_rsv_ruimte_noshow").value,
rsv_ruimte_bezoekers: oRs("res_rsv_ruimte_bezoekers").value,
bezoekers_shown : oRs("res_rsv_ruimte_bezoekers_shown").value,
rsv_ruimte_volgnr : oRs("res_rsv_ruimte_volgnr").value,
rsv_ruimte_dirtlevel: oRs("res_rsv_ruimte_dirtlevel").value,
rsv_ruimte_aanmaak : new Date(oRs("res_rsv_ruimte_aanmaak").value),
contact_key : oRs("res_rsv_ruimte_contact_key").value,
host_key : oRs("res_rsv_ruimte_host_key").value,
rsv_ruimte_opmerking : oRs("res_rsv_ruimte_opmerking").value,
descript : oRs("res_rsv_ruimte_omschrijving").value,
descript_required : oRs("res_activiteit_omsverplicht").value==1,
aantal_verplicht : oRs("res_activiteit_aantalverplicht").value==1,
res_ordernr : oRs("res_rsv_ruimte_ordernr").value,
ruimte_korting : oRs("res_rsv_ruimte_korting").value,
ruimte_totaal : oRs("res_rsv_ruimte_totaal").value,
kosten_klant : oRs("res_rsv_ruimte_kosten_klant").value == 1,
kostenplaats_key : oRs("prs_kostenplaats_key").value,
kostenplaats_omschr: oRs("prs_kostenplaats_omschr").value,
kostenplaats_module: oRs("prs_kostenplaats_module").value,
resnrtxt : (oRs("res_srtactiviteit_prefix").value? oRs("res_srtactiviteit_prefix").value : "") + String(oRs("res_reservering_key").value) + "/"+ (rsv_copy_key == -1?oRs("res_rsv_ruimte_volgnr").value:L("lcl_new")),
srtactiviteit_kpnverplicht : oRs("res_srtactiviteit_kpnverplicht").value,
srtactiviteit_metaantal : oRs("res_srtactiviteit_metaantal").value == 1,
srtactiviteit_metomschr : oRs("res_srtactiviteit_metomschr").value == 1,
srtactiviteit_metopmerk : oRs("res_srtactiviteit_metopmerk").value == 1,
ab_mode : oRs("res_rsv_ruimte_cvab_mode").value
}
// Afgeleide informatie
if(oRs("res_ruimte_opstel_key").value)
restype = "R";
else
restype = "CV";
// When *any* part of the reservation has status_bo >=5 (uitgevoerd) then
// host/department/order get read-only
// Other RES_RESERVATION fields can (autorisation controlled) always be edited
// (not time/status constrained)
max_bo_key = this_res.max_bo || 2; // Ingevoerd
oRs.close();
ordernr_reado = (max_bo_key == 6)
if (restype == "R") // zal rrr.ruimte_opstel_key gevuld zijn
{
sql = "SELECT ro.res_ruimte_key"
+ " , alg_locatie_key"
+ " , res_ruimte_extern_id"
+ " FROM res_ruimte_opstelling ro"
+ " , res_v_res_ruimte_gegevens_all rrg"
+ " WHERE ro.res_ruimte_opstel_key = " + rrr.ruimte_opstel_key
+ " AND rrg.res_ruimte_key = ro.res_ruimte_key"
+ " ORDER BY rrg.res_alg_ruimte_verwijder DESC NULLS FIRST";
oRs = Oracle.Execute(sql);
rrr.res_ruimte_key = rsv_ruimte_key > 0? oRs("res_ruimte_key").Value : -1;
rrr.alg_locatie_key = oRs("alg_locatie_key").Value;
rrr.res_ruimte_extern = oRs("res_ruimte_extern_id").Value != null;
oRs.close();
} else { // CV
rrr.status_bo_key = max_bo_key; // Voor CV geldt de rsv_ruimte bo-status niet
sql = "SELECT rg.alg_ruimte_aanduiding,"
+ " rg.alg_locatie_key,"
+ " rg.alg_gebouw_key,"
+ " rg.alg_verdieping_key,"
+ " rg.alg_ruimte_key"
+ " FROM alg_v_ruimte_gegevens_all rg"
+ " WHERE rg.alg_ruimte_key = " + rrr.alg_ruimte_key
oRs = Oracle.Execute(sql);
rrr.alg_locatie_key = oRs("alg_locatie_key").Value;
rrr.alg_gebouw_key = oRs("alg_gebouw_key").Value;
rrr.alg_verdieping_key = oRs("alg_verdieping_key").Value;
rrr.alg_ruimte_key = rsv_ruimte_key > 0 ? oRs("alg_ruimte_key").Value : -1;
}
// Script zorgt ervoor dat ook bij het openen van het scherm de image achter het label komt te staan.
%>
<script type="text/javascript">
$(document).ready(function()
{
OnChangeSubstatus();
});
</script>
<%
}
lcl.set_dialect(srtact, "RES_SRTACTIVITEIT_KEY");
// Afhankelijk van activiteitsoort de eerstvolgende dag waarop deze reservering mag worden gedaan bepalen.
var sql = "SELECT fac.DatumTijdPlusUitvoerTijd(SYSDATE, MIN(rd.res_disc_params_expire_dagen), 'DAGEN')-SYSDATE"
+ " FROM res_activiteit ra"
+ " , res_activiteitdiscipline ad"
+ " , res_disc_params rd"
+ " WHERE ad.res_discipline_key = rd.res_ins_discipline_key"
+ " AND ad.res_activiteit_key = ra.res_activiteit_key"
+ " AND ra.res_srtactiviteit_key = " + srtact;
if (feonly)
sql += " AND ra.res_activiteit_notfrontend = 0"
var oRsa = Oracle.Execute(sql);
rrr.fe_expire_dagen = oRsa(0).Value || 0;
oRsa.Close();
%>
<script type="text/javascript">
function res_submit_callback(json)
{
if (json.success)
{
if (json.park_na < json.park_voor)
{
alert_text = json.park_na + L("lcl_park_alert1") + json.park_voor + L("lcl_park_alert2");
alert(alert_text);
}
FcltMgr.closeDetail(window, json);
}
else
iface.button.enable("btn_res_submit");
}
function res_submit()
{
if (!validateForm("u2"))
return false;
if (rsv_ruimteOnSubmit())
{
$.post($("form[name=u2]")[0].action, $("[name=u2]").serialize(), FcltCallbackAndThenAlways(res_submit_callback), "json");
return true;
}
else
return false;
}
function res_cancel()
{
FcltMgr.closeDetail(window, { cancel: true } );
}
var sel_room = {RoomConfigs: [], // Hierin houden we clientside informatie over onze gekozen ruimte bij
org_opstel_key : <%= rsv_ruimte_key>0?rrr.ruimte_opstel_key||-1:-1 %>
};
</script>
<%
var reado_rsv_ruimte = false;
if (rsv_ruimte_key > 0)
{
var reado_rsv_ruimte = rrr.status_bo_key == 6;
}
// last_minute mag frontend niet meer de zaal of tijdstippen wijzigen
// (noch de catering zelf maar dat regelt res_show_objcat.asp)
var fe_lastminute = false;
if (restype == "CV")
{
reado_rsv_ruimte = ordernr_reado;
if (rsv_ruimte_key > 0) // Existing reservation
{
if (rrr.rsv_ruimte_van < this_res.earliest_expire_change)
last_minute = true;
else
last_minute = false;
fe_lastminute = (urole=="fe" && last_minute);
}
} // restype = "CV"
%>
<script type="text/javascript">
var srtdisc_kpnverplicht = <%=rrr.srtactiviteit_kpnverplicht%>;
var srtdisc_metaantalvis = <%=rrr.srtactiviteit_metaantal ? "true" : "false"%>;
var frontend = <%=frontend? 1 : 0%> == 1;
// Room choice has changed
// Show different little schedule and update room description/picture
/* params
res_ruimte_key: res_ruimte_key
res_ruimte_oms: ruimte omschrijving
def_conf: default configuratie key
*/
// Process de ruimte-data die van de Ajax terugkomt.
// Functie wordt ook initieel aangeroepen.
function process_res_ruimte_info(data)
{
var date_from = new Date(parseInt($("#date_from").val()));
var vervaldatum = data.vervaldatum? new Date(data.vervaldatum) : null;
var roomChanged = ($("#sel_room").val() != data.ruimte_nr + (vervaldatum && vervaldatum < date_from? L("lcl_inactive_data_suffix") : ""));
var opstel_selected = -1;
var opstel_img_count = 0;
// sel_room is globaal!
sel_room.RoomConfigs = data.RoomConfigs;
sel_room.res_ruimte_key = data.res_ruimte_key;
sel_room.kosten = data.kosten;
sel_room.kpnverplicht = data.kpnverplicht;
sel_room.default_opstel_key = data.default_opstel_key;
sel_room.imagePath = data.imagePath; // ruimtefoto
if (srtdisc_kpnverplicht != 1)
{ // Indien kostenplaats niet verplicht is volgens srtactiviteit, dan kan de ruimte discipline hiervoor zorgen.
$("#account_show").toggleClass("required", sel_room.kpnverplicht == 1);
}
// Afhankelijk van het extern van de ruimte de opstellingen listbox bijwerken.
var extern = data.extern_id != null;
if (extern)
var ruimte_opstel = document.u2.ruimte_opstel_ro; //
else
{ // Werk opstellingen listbox bij
var ruimte_opstel = document.u2.ruimte_opstel;
for( i=ruimte_opstel.options.length-1; i>=0; i-- )
ruimte_opstel.options.remove(i);
if (sel_room.default_opstel_key == -1 && sel_room.RoomConfigs.length > 1)
{
oOption = document.createElement("OPTION");
oOption.text = "";
oOption.value = -1;
ruimte_opstel.options.add(oOption);
}
for( i=0; i<sel_room.RoomConfigs.length; i++ )
{
if (!sel_room.RoomConfigs[i].verwijderd)
{
oOption = document.createElement("OPTION");
oOption.text = sel_room.RoomConfigs[i].opstelling_omschrijving + " (" + sel_room.RoomConfigs[i].bezoekers + " " + L("lcl_res_pers") + ")";
oOption.value = sel_room.RoomConfigs[i].ruimte_opstel_key;
oOption.rcIndex = i; // Bewaar deze index bij de optie als referentie naar sel_room.RoomConfigs[i] voor het ophalen van opstelling-image in de onChange
if (sel_room.RoomConfigs[i].ruimte_opstel_key == (sel_room.org_opstel_key>0?sel_room.org_opstel_key:sel_room.default_opstel_key))
{
oOption.selected = true;
opstel_selected = i;
}
if (sel_room.RoomConfigs[i].imagePath != "")
opstel_img_count++;
ruimte_opstel.options.add(oOption);
}
}
}
$("#sel_room").val(data.ruimte_nr + (vervaldatum && vervaldatum < date_from? L("lcl_inactive_data_suffix") : "")); // Tekst bijwerken
if (vervaldatum && vervaldatum < date_from)
$("#sel_room").addClass("res_fatal")
else
$("#sel_room").removeClass("res_fatal")
if (data.imagePath || opstel_img_count > 0)
{
var imagePath = (data.imagePath ? data.imagePath : ""); // default ruimtefoto
var imageOms = L("lcl_res_image_room");
if (opstel_selected != -1)
{
var opstelling = sel_room.RoomConfigs[opstel_selected];
imagePath = (opstelling.imagePath ? opstelling.imagePath : imagePath);
imageOms = (opstelling.imagePath ? L("lcl_res_image_config") : imageOms);
}
if (imagePath)
{
$('#resphoto').show()[0].src = imagePath;
$('#resphoto').unbind("click");
$('#resphoto').click(function(){ res_info(imagePath); });
$('#resphoto').prop("title", imageOms);
}
else
$('#resphoto').hide();
RuimteOpstelChanged();
}
if (data.ruimte_omschrijving)
$('#resdescript').show().html(data.ruimte_omschrijving.replace(/\n/,"<br>"));
else
$('#resdescript').hide();
if (data.ruimte_info_url)
{
var ref = '<span class="details" readonly onclick="FcltMgr.stopPropagation(event);res_info(\''+data.ruimte_info_url+'\');">'+L("lcl_more_info")+'</span>';
$('#resinfo').show().html(ref);
$('#resinfo').unbind("click");
$('#resinfo').click(function(){ res_info(data.ruimte_info_url); })
}
else
$('#resinfo').hide();
// Alleen voor de frontend, en de ruimte moet wel veranderd zijn.
// Bij initialisatie alleen als er een ruimte (res_ruimte_key) is meegegeven.
if (frontend && (!data.init || (data.init && <%=res_ruimte_key||-1%> > 0)) && roomChanged)
{
$("#status_fo").val(data.status_fo_key > 0? data.status_fo_key : <%=S("res_default_fe_status_key")%>); // Overruling default fe status key door status_fo_key van de res_ruimte?
$("#status_fo_ro").val(data.status_fo_key > 0? data.status_fo_string : "<%=safe.jsstring(res.getfostatustext(S("res_default_fe_status_key")))%>");
}
FcltMgr.resized();
};
function RuimteOpstelChanged()
{
var opstel_selected = $("#ruimte_opstel")[0].selectedIndex;
if ($("#ruimte_opstel option:first").val() == -1) // lege optie toegevoegd
opstel_selected = opstel_selected - 1;
var imagePath = null;
var imageOms = L("lcl_res_image_room");
var i_index = $("#ruimte_opstel option:selected")[0].rcIndex; // De index van sel_room.RoomConfigs[i] !!
if (opstel_selected > -1 && sel_room.RoomConfigs[i_index].imagePath)
{
imagePath = sel_room.RoomConfigs[i_index].imagePath;
imageOms = L("lcl_res_image_config");
}
else
{
imagePath = (sel_room.imagePath ? sel_room.imagePath : null);
}
if (imagePath)
{
$('#resphoto').show()[0].src = imagePath;
$('#resphoto').unbind("click");
$('#resphoto').click(function(){ res_info(imagePath); });
$('#resphoto').prop("title", imageOms);
}
}
function onLocChanged()
{
process_res_ruimte_info({ ruimte_nr: L("lcl_res_select_room"), // Kies een ruimte
RoomConfigs: [],
res_ruimte_key: -1
});
}
// Aangeroepen bij sluiten van planbord popup!
// Ruimte gewijzigd: haal informatie op en
function SelRoomChanged(params)
{
if (params.res_ruimte_key)
{
sel_room.res_ruimte_key = params.res_ruimte_key;
$("#sel_room").attr("hasvalue", "1");
$.getJSON("get_res_info_ajax.asp?req_info=res_ruimte&res_ruimte_key=" + sel_room.res_ruimte_key, // Gastheer key meegeven voor bepaling kostenplaats aanvrager.
process_res_ruimte_info);
// pas op: asynchroon
$("#res_ruimte_key").val(params.res_ruimte_key);
// Indien kostenplaats niet gevuld is dan deze default vullen.
if (($("#account").val() == -1) && (<%=rrr.srtactiviteit_kpnverplicht%> < 2))
// setValue(key, txt, doonChange, checkExist, extraParam, lastTry);
sgAccount.setValue($("#default_kostenplaats_person_key").val(), $("#default_kostenplaats_person_omschr").val(), true, true, $("#default_kostenplaats_module").val(), true);
}
}
// Kies in een modal popupje een geschikte ruimte
function FindAvailableRooms(relaxed)
{
// Deze moeten minimaal ingevuld zijn.
if (!validateForm("u2", { checkOnly: ["sel_activity", "show_date_from", "time_from_date_from",
"show_date_to", "time_from_date_to", "locatie"],
relaxed: relaxed
}))
return false;
var date_from = new Date(parseInt($("#date_from").val()));
var date_to = new Date(parseInt($("#date_to").val()));
// FSN#36654 door een oude bug zijn er gepinde tabbladen naar 'nieuwe reservering' die tot AiAi's leiden
// Dat lossen we hier silent op (tot we ooit die foutieve tabbladen hebben opgeruimd)
// Merk op dat *heel* incidenteel een gebruiker het via de gewone interface ook lukte
// deze error te krijgen. Dat was dan niet relaxed en die AiAi willen we wel blijven zien
// en hopelijk ooit oplossen
if (relaxed && !(date_from && date_from.getTime() && date_to && date_to.getTime()))
return;
date_to.setFullYear(date_from.getFullYear()); // We hebben alleen een tijdstip namelijk
date_to.setMonth(date_from.getMonth());
date_to.setDate(date_from.getDate());
var url= "../res/res_select_room.asp?urole=<%=urole%>&rsv_ruimte_key=<%=rsv_ruimte_key%>"
if (sel_room.res_ruimte_key)
url += "&res_ruimte_key=" + sel_room.res_ruimte_key; // default
url += "&date_from=" + date_from.getTime();
url += "&date_to=" + date_to.getTime();
url += "&locatie_key=" + $('#locatiekey').val();
url += "&activiteit_key=" + $('#sel_activity').val();
url += "&width_px=" + $(window).width();
var visheader = "";
if (srtdisc_metaantalvis)
{
var nbez = (parseInt($('#bezoekers').val(), 10)||0);
url += "&vis=" + nbez; // nog niet moeilijk doen over ongeldige waarden
visheader = nbez ? " (" + nbez + L("lcl_res_nrpers_inplanbord") + ")": "";
}
FcltMgr.fixActiveelementError(); // Ging soms mis met IE8
FcltMgr.openModalDetail(url,
L("lcl_res_select_inplanbord") + $('#sel_activity :selected').text() + visheader,
{ resizable: false,
callback: SelRoomChanged,
minHeight: 300} // Voor de omschrijving popup
);
}
// Let op dat validateForm de basis controles al gedaan heeft
// Verder alleen client side controles die een vraag stellen, de rest gaat via de server
// return false als submit niet toegestaan
function rsv_ruimteOnSubmit()
{
// check if visitors will fit
for( i=0; i<sel_room.RoomConfigs.length; i++ ) {
if( sel_room.RoomConfigs[i].ruimte_opstel_key == document.u2.ruimte_opstel.value &&
sel_room.RoomConfigs[i].bezoekers > 0 &&
sel_room.RoomConfigs[i].bezoekers < document.u2.bezoekers.value ) {
if( ! confirm( L("lcl_res_too_many_visitors") ) ) return false;
}
}
<% if (S("res_247organisation") != 1) { /* Geen popup voor 24/7 organisation */ %>
var startDate = new Date(parseInt($('#date_from').val()));
if( cal_isVrijeDag(startDate) || cal_isWeekend(startDate))
{
if( ! confirm( "<%=L("lcl_holiday")%>" ) )
return false;
}
<% } %>
<% if ((S("res_hide_remark")==0) || ((S("res_hide_remark")==2) && (rsv_ruimte_key>=0))) { %>
if(document.forms.u2.opmerk)
{
s = document.forms.u2.opmerk.value;
if (s.length > 2000 )
document.forms.u2.opmerk.value = s.substring(0,2000);
}
<% } %>
return true;
}
function onChangeStarttijd()
{
<% if (rsv_ruimte_key < 0) { /* alleen bij nieuwe */ %>
autosetEindtijd();
<% } %>
}
function checkVeldenVerplicht()
{
// Afhankelijk van de geselecteerde waarde voor activiteit
// moet het veld omschrijving en/of aantalbezoekers verplicht worden gemaakt.
var opt = $("#sel_activity").find("option:selected");
var oms_verplicht = opt[0].getAttribute("res_activiteit_omsverplicht");
var bez_verplicht = opt[0].getAttribute("res_activiteit_aantalverplicht");
$("#descript").toggleClass("required", oms_verplicht == "1");
$("#bezoekers").toggleClass("required", bez_verplicht == 1);
}
function OnChangeActivity()
{
var act_key = document.u2.sel_activity.value;
if (isNaN(act_key) || act_key<0) act_key = -1;
var s = "load_kenmerk.asp?urole=<%=urole%>&act_key=" + act_key + "<%=(serie?"&serie=1":"")%>&act_change=1";
s += "&rsv_ruimte_key=<%=rsv_ruimte_key%>";
s += "&readofe="+(<%=rsv_ruimte_key%>==-1 ? 0 : 1);
$("#resFlexList,#resFlex2List").load(s, function ()
{
$("#resFlex,#resFlex2").toggle($("#k_all").val()>0); // verbergen als leeg
FcltMgr.resized();
} );
checkVeldenVerplicht();
autosetEindtijd();
}
function OnChangeSubstatus()
{
var i = $("#resflag").val();
$('label[for="resflag"]').html(L("lcl_res_flags") + ":&nbsp;" + " " + "<img src='../Pictures/resflag"+i+".png'>");
}
function onAfhaalBezorgClick()
{
$("#ab_mode_filtcode").val( $("#afhaal").prop("checked")? "RESA" : "RESB" );
// Check of de waarden nog geldig zijn want voor afhaal/bezorg worden verschillende filtercodes gebruikt
// setValue(key, txt, doonChange, checkExist, extraParam, lastTry)
// lastTry is true zodat suggestbox wordt leeggemaakt indien waarde niet voorkomt (en niet de laatst waarde wordt getoond)
sgLoc.setValue($("#locatiekey")[0].value, $("#locatie")[0].value, false, true, null, true);
sgBld.setValue($("#gebouwkey")[0].value, $("#gebouw")[0].value, false, true, $("#bttype")[0].value, true);
sgFlr.setValue($("#verdiepingkey")[0].value, $("#verdieping")[0].value, false, true, null, true);
sgRoom.setValue($("#ruimtekey")[0].value, $("#ruimte")[0].value, false, true, null, true);
}
function autosetEindtijd()
{
if ($("#sel_activity")[0].tagName == "SELECT")
{ // Activiteit is een selectbox
var opt = $("#sel_activity").find("option:selected");
// De extraParamValue is opgeslagen als text. De res_activiteit_duur is een float met mogelijk een komma i.p.v. een punt als decemaal scheidingsteken.
var res_duur = parseFloat((String(opt[0].getAttribute("res_activiteit_duur"))).replace(',','.'));
}
else
{ // Activiteit is een inputbox: $("#sel_activity")[0].tagName == "INPUT")
var res_duur = parseFloat($("#sel_activity")[0].getAttribute("res_activiteit_duur"))
}
if (res_duur)
{
var startDate = new Date(parseInt($('#date_from').val()));
var endDate = new Date(parseInt($('#date_to').val()));
var estEndDate = startDate.addFloatHours(res_duur, <%=safe.jsfloat(S("res_h"))%>);
if (!isNaN(startDate) && endDate.getTime() != estEndDate.getTime())
{
$("#show_date_to").datepicker('setDate',new Date(estEndDate));
$("#date_to").val(estEndDate.getTime());
$("#time_from_date_to").val(toTimeString(estEndDate)).css("color", "red");
}
}
}
function res_info(url)
{
var wnd = window.open(url);
try { wnd.focus() } catch(e) {};
}
jQuery(document).ready(function() {
$('textarea').resize(function () { FcltMgr.resized(window) } );
$('textarea').autogrow();
<% if (restype == "R" && rrr.res_ruimte_key == -1 && rsv_copy_key == -1) { /* nog geen ruimte en alle defaults zijn ingevuld? */ %>
FindAvailableRooms(true);
<% } %>
<% if (restype == "R") { /* plaats van-tijd voor tot-tijd */ %>
$("#time_from_date_from").insertBefore($("#time_from_date_to")).after("&nbsp;" + L("lcl_tot") + "&nbsp;");
<% } %>
});
</script>
</head>
<body id="editbody">
<%
var buttons = [ {title: L("lcl_submit"), icon:"opslaan.png", action:"res_submit()", singlepress: true, id:"btn_res_submit" },
{title: L("lcl_cancel"), icon: "undo.png", action:"res_cancel()" } ];
IFRAMER_HEADER(L("lcl_res_frame_algemeen"), buttons);
%>
<form name="u2"
action="res_edit_rsv_ruimte_save.asp?x=x<%=buildTransitParam(["urole","rsv_ruimte_key", "rsv_copy_key", "rsv_is_serie", "res_deel_key", "res_artikel_key", "pool", "undelete"])%>"
method="post">
<div id="edit">
<input type='hidden' id='restype' name='restype' value='<%= restype %>'>
<div class='leftcontainer'>
<%
BLOCK_START("resPlaats" , L("lcl_res_plaats"));
FCLTcalendar( "date_from",
{ label : restype == "CV"? L("lcl_res_starttime_CV") : L("lcl_date"),
datum : rrr.rsv_ruimte_van,
minFuture: ((urole=="fe")?rrr.fe_expire_dagen:null),
maxPast : ((urole=="fe")?0:S("res_reservering_limiet")),
maxFuture: ((urole=="fe"&&S("res_fe_reservering_limiet")>0)?S("res_fe_reservering_limiet"):S("res_reservering_limiet")),
initEmpty: (rsv_ruimte_key<0 && rsv_copy_key<0 && !res_van),
timeField: true,
timeStep : S("res_h")*60,
startTime: S("res_t1"),
calendars: (rsv_ruimte_key<0?2:1),
endTime : S("res_t2"),
autoopen : (rsv_ruimte_key<0 && rsv_copy_key<0 && !res_van),
readonly : fe_lastminute || (rsv_copy_key > 0 && rrr.reservering_ispool) || rrr.res_ruimte_extern || readonlyFE,
saveValue: (rsv_copy_key > 0 && rrr.reservering_ispool),
volgnr : 1,
required : true,
onChange : "onChangeStarttijd()"
});
//======= FIELD 'Activiteit' =======
var sql = "SELECT a.res_activiteit_key"
+ " , " + "CASE WHEN sa.res_srtactiviteit_prefix IS NULL"
+ " THEN ''"
+ " ELSE sa.res_srtactiviteit_prefix || '-'"
+ " END"
+ " || " + lcl.xsqla("a.res_activiteit_omschrijving", "a.res_activiteit_key")
+ " , a.res_activiteit_duur"
+ " , a.res_activiteit_omsverplicht"
+ " , a.res_activiteit_aantalverplicht"
+ " FROM res_activiteit a"
+ " , res_srtactiviteit sa"
+ (res_deel_key > 0 || res_artikel_key > 0
? " , res_activiteitdiscipline rad"
: "")
+ " WHERE res_activiteit_verwijder IS NULL"
+ " AND a.res_srtactiviteit_key = sa.res_srtactiviteit_key"
+ " AND sa.res_srtactiviteit_key = " + srtact
+ " AND sa.res_srtactiviteit_soort = " + (restype == "R"? "0" : "1")
+ " AND EXISTS (SELECT res_activiteit_key"
+ " FROM res_activiteitdiscipline rad,"
+ " ins_tab_discipline disc"
+ " , fac_v_my_disciplines md"
+ " WHERE rad.res_discipline_key = md.ins_discipline_key"
+ " AND md.prs_perslid_key = " + user_key
+ " AND md.fac_functie_code = " + safe.quoted_sql(autfunction)
+ " AND fac_gebruiker_alg_level_write < 9"
+ " AND fac_gebruiker_prs_level_write < 9"
+ " AND rad.res_discipline_key = disc.ins_discipline_key"
+ " AND rad.res_activiteit_key = a.res_activiteit_key"
+ " AND ins_discipline_verwijder IS NULL"
+ (restype == "R"
? " AND ins_discipline_min_level = 3" // 1; Reserveerbaar object; 2; Verbruiksartikel; 3; Ruimte
: " AND ins_discipline_min_level IN (1,2)") // 1; Reserveerbaar object; 2; Verbruiksartikel; 3; Ruimte
+ " )"
+ (getQParamInt("activiteit_key", -1) > 0
? " AND a.res_activiteit_key = " + getQParamInt("activiteit_key", -1)
: "")
+ (feonly
? " AND a.res_activiteit_notfrontend = 0"
: "")
+ (res_deel_key > 0 || res_artikel_key > 0
? " AND rad.res_activiteit_key = a.res_activiteit_key"
+ " AND rad.res_discipline_key = " + rrr.res_discipline_key
: "")
+ " ORDER BY res_activiteit_volgnr, sa.res_srtactiviteit_prefix, UPPER(" + lcl.xsql('a.res_activiteit_omschrijving', 'a.res_activiteit_key') +")";
var result = FCLTselector("sel_activity", sql,
{ label: L("lcl_activity"),
emptyOption: rrr.activiteit_key == -1? L("lcl_res_select_activity") : null,
initKey: rrr.activiteit_key,
onChange: "OnChangeActivity()",
extraParamValue: "res_activiteit_duur,res_activiteit_omsverplicht,res_activiteit_aantalverplicht",
readonly: getQParamInt("activiteit_key", -1) > -1 || rrr.res_ruimte_extern || readonlyFE,
required: true
}
);
// Als meegeven dan is het readonly hierboven en moeten we het maar hidden oplossen.
if ((getQParamInt("activiteit_key", rrr.activiteit_key) > 0) || rrr.res_ruimte_extern || readonlyFE)
{
oRs = Oracle.Execute(sql);
var resDuur = 0;
if (!oRs.Eof)
{
resDuur = oRs("res_activiteit_duur").Value;
}
%>
<input type="hidden" id="sel_activity" name="sel_activity" value="<%=rrr.res_ruimte_extern? rrr.activiteit_key : getQParamInt("activiteit_key",rrr.activiteit_key)%>" res_activiteit_duur="<%=resDuur%>">
<%
}
if (result.justone)
{
rrr.activiteit_key = result.initKey; // voor de flexkenmerken
%>
<script type="text/javascript">
$(document).ready(function()
{
checkVeldenVerplicht();
<% if (rrr.reservering_key < 0) { %>
autosetEindtijd();
<% } %>
});
</script>
<% }
FCLTcalendar( "date_to",
{ label : restype == "CV"? L("lcl_res_endtime_CV") : L("lcl_time"),
datum : rrr.rsv_ruimte_tot,
minFuture: ((urole=="fe")?rrr.fe_expire_dagen:null),
maxFuture: ((urole=="fe"&&S("res_fe_reservering_limiet")>0)?S("res_fe_reservering_limiet"):S("res_reservering_limiet")),
timeField: true,
timeStep : S("res_h")*60,
startTime: S("res_t1"),
endTime : S("res_t2"),
volgnr : 2,
readonly : fe_lastminute || (rsv_copy_key > 0 && rrr.reservering_ispool) || rrr.res_ruimte_extern || readonlyFE,
saveValue: (rsv_copy_key>0 && rrr.reservering_ispool),
hidden : (restype == "R"), // Meerdaags ruimte ondersteunen we nog niet echt
required : true,
onChange : '$("#time_from_date_to").css("color", "auto")'
});
//======= FIELD 'Aantal personen/nr visitors' =======
if (rrr.srtactiviteit_metaantal)
{
RWFIELDTR("bezoekers", "fldbezcnt", L("lcl_visitors"), rrr.rsv_ruimte_bezoekers, {datatype: "number", required: rrr.aantal_verplicht, readonly: rrr.res_ruimte_extern });
if (rrr.res_ruimte_extern)
{
%>
<input type="hidden" name="bezoekers" id="bezoekers" value="<%=rrr.rsv_ruimte_bezoekers%>" />
<%
}
}
else
{
%>
<input type="hidden" name="bezoekers" id="bezoekers" value="<%=rrr.rsv_ruimte_bezoekers%>" />
<%
}
// Voor bestaande reserveringen en back-rechten kan het werkelijk aantal deelnemers
// ook hier worden ingevuld (in detailed noshow mode)
if (rrr.rsv_ruimte_key > 0 && S("res_noshow_detailed") == 1 && backo) {
RWFIELDTR("bezshown", "fldnoshow", L("lcl_res_real_visitors"), rrr.bezoekers_shown, {datatype: "number", maxlength: 5});
}
if (restype == "R")
{
//======= FIELD 'Ruimte' =======
if (rrr.res_ruimte_key > 0)
{ // Vullen client-side sel_room variabele en invullen configurations
var rri = res.res_ruimte_info(rrr.res_ruimte_key);
rri.init = true;
var rvi = res.res_voorzieningen_info(rsv_ruimte_key);
rri.kpnverplicht = (rri.kpnverplicht || rvi.kpnverplicht)? 1 : 0; // Voorzieningen verplichtheid meenemen met ruimte verplichtheid.
if ((rrr.srtactiviteit_kpnverplicht == 2) && rri.kpnverplicht)
{ // Kostenplaats is niet verplicht (Niet tonen(2)) via srt activiteit maar wel via de discipline. Dan moet kostenplaats veld toch getoond worden.
rrr.srtactiviteit_kpnverplicht = 0;
}
%>
<script type="text/javascript">
$(document).ready(function()
{
var JSONdata = '(<%=safe.jsstring(JSON.stringify(rri))%>)';
process_res_ruimte_info(eval('(' + JSONdata + ')'));
});
</script>
<% }
FCLTplaatsselector(authparams.ALGwritelevel, { locatiekey: rrr.alg_locatie_key,
startlevel: 2,/*locatie*/
eindlevel: 2,/*locatie*/
readonly: reado_rsv_ruimte || fe_lastminute || rrr.res_ruimte_extern || readonlyFE,
filtercode: "RES", /*strict genomen alleen voor FE/FO, maar readonly maakt dit vanzelf goed toch? */
urlAdd: [{ urlParam: "act_key", field: "sel_activity" }],
no_table: true,
onLocChange: "onLocChanged()",
requiredlevel: (S("res_search_require_locatie")==1 ? 2 : null)
});
var attrValue = "hasvalue='" + (rsv_ruimte_key == -1 && rrr.res_ruimte_key == -1? "0" : "1") + "'";
%>
<tr><td class="label"><label for='sel_room'><%=L("lcl_room")%>:</label></td>
<td><div id='req_sel_room'>
<input type="text" id="sel_room"
class="<%=!rrr.res_ruimte_extern? "button fldresroomedit required" : ""%> fldresroom"
readonly
<% if (!rrr.res_ruimte_extern && !readonlyFE) { %> onclick="FindAvailableRooms()" <% } %>
value="<%=L("lcl_res_select_room")%>"
name="sel_room" <%=attrValue%> />
</div>
</td>
</tr>
<!-- Opstelling -->
<tr><td class="label"><label for='ruimte_opstel<%=rrr.res_ruimte_extern? "_ro" : ""%>'><%=L("lcl_config") %>:</label></td>
<td>
<!--[if lt IE 8]><div id='req_ruimte_opstel' class='fldopstel required'><![endif]-->
<% if (rrr.res_ruimte_extern)
{ %>
<input class="fld" type="text" name="ruimte_opstel_ro" id="ruimte_opstel_ro" value="<%=safe.html(rrr.opstelling_omschrijving) + " (" + rrr.opstel_bezoekers + " " + L("lcl_res_pers") + ")"%>" readonly />
<% }
else
{ %>
<select class="fldopstel required" <%=reado_rsv_ruimte? "disabled" : ""%>
name='ruimte_opstel' id='ruimte_opstel'
onChange='RuimteOpstelChanged()'>
<% /* Will be filled automatically */ %>
</select>
<% } %>
<!--[if lt IE 8]></div><![endif]-->
<% if (rrr.res_ruimte_extern)
{ %>
<input type="hidden" name="ruimte_opstel" id="ruimte_opstel" value="<%=rrr.ruimte_opstel_key%>" />
<% } %>
</td>
</tr>
<% }
else
{ // restype == "CV")
if (rsv_ruimte_key > 0)
{ // Vullen client-side sel_room variabele en invullen configurations
var rvi = res.res_voorzieningen_info(rsv_ruimte_key);
}
if (rrr.ab_mode & 2) // dan vast
{
// Filter voor de plaatsselector is afhankelijk van de de huidige gekozen waarde (rrr.ab_mode)
urlAdd = [{urlParam: "filtcode", val: (rrr.ab_mode & 1? "RESB" : "RESA"), init: (rrr.ab_mode & 1? "RESB" : "RESA")}];
%><tr><td class="label">
<label><%=(rrr.ab_mode & 1)? L("lcl_res_bezorgen_fixed") : L("lcl_res_afhalen_fixed")%>:</label>
</td><td><input type="hidden" id="ab_mode" name="ab_mode" value="<%=rrr.ab_mode%>"></td></tr>
<% }
else // toggle bezorg/afhaal
{
// Filter voor de plaatsselector is afhankelijk van de de huidige gekozen waarde (rrr.ab_mode)
urlAdd = [{urlParam: "filtcode", jqfield: "#ab_mode_filtcode", init: (rrr.ab_mode & 1? "RESB" : "RESA")}];
%>
<tr><td></td>
<td><label class="lt"><input type="radio" id="afhaal" name="ab_mode" value="0" <%=!(rrr.ab_mode & 1)? "checked" : ""%> onClick="onAfhaalBezorgClick()"><%=L("lcl_res_afhalen")%></label>
<label class="lt"><input type="radio" id="bezorg" name="ab_mode" value="1" <%=rrr.ab_mode & 1? "checked" : ""%> onClick="onAfhaalBezorgClick()"><%=L("lcl_res_bezorgen")%></label>
<input type="hidden" id="ab_mode_filtcode" name="ab_mode_filtcode" value="<%=(rrr.ab_mode & 1? "RESB" : "RESA")%>">
</td>
</tr>
<%
//TODO: Hierboven ook iets doen op de onChange
}
// Plaatsselector is altijd afhankelijk van activiteit
urlAdd.push({urlParam: "act_key", val: rrr.activiteit_key, init: rrr.activiteit_key});
if (getQParamInt("disc_key", -1) > 0)
urlAdd.push({urlParam: "disc_key", val: getQParamInt("disc_key"), init: getQParamInt("disc_key")});
if (getQParamInt("res_deel_key", -1) > 0)
urlAdd.push({urlParam: "res_deel_key", val: res_deel_key, init: res_deel_key});
// Bij afhalen is locatie verplicht en de rest wat minder, maar die hebben we toch nodig
// Het kan (zal) zijn dat bij onChange wat gereset moet worden?
FCLTplaatsselector(authparams.ALGwritelevel, { locatiekey: rrr.alg_locatie_key,
gebouwkey: rrr.alg_gebouw_key,
verdiepingkey: rrr.alg_verdieping_key,
ruimtekey: rrr.alg_ruimte_key,
// readonlylevel: rrr.res_deel_alg_level,
startlevel: 2, /*locatie*/
eindlevel: 5, /*ruimte*/
initfiltercode: (rrr.ab_mode & 1)? 'RESB' : 'RESA', // Filter voor de plaatsselector is afhankelijk van de de huidige gekozen waarde (rrr.ab_mode)
urlAdd: urlAdd,
readonly: reado_rsv_ruimte || fe_lastminute || getQParamInt("alg_ruimte_key", -1) > 0 || reado_alg,
readonlylevel: reado_level,
no_table: true,
required: true
});
}
//======= FIELD 'Status' (alleen te editen door FO) =======
sql = "SELECT 1, " + safe.quoted_sql(res.getfostatustext(1)) + " FROM DUAL"
+ " UNION SELECT 2, " + safe.quoted_sql(res.getfostatustext(2)) + " FROM DUAL"
+ " UNION SELECT 3, " + safe.quoted_sql(res.getfostatustext(3)) + " FROM DUAL"
+ " UNION SELECT 4, " + safe.quoted_sql(res.getfostatustext(4)) + " FROM DUAL"
+ (for_undelete ? " UNION SELECT -1, '' FROM DUAL" : "")
+ " ORDER BY 2 NULLS FIRST";
FCLTselector('status_fo', sql,
{ label: L("lcl_status_FO"),
initKey: (rsv_ruimte_key > 0 ? (for_undelete ? -1 : rrr.status_fo_key )
: (fronto ? S("res_default_fo_status_key") : S("res_default_fe_status_key"))),
readonly: reado_rsv_ruimte || !fronto || rrr.res_ruimte_extern || readonlyFE,
required: (for_undelete ? true : false)
}
);
// In de frontend mode kan voor elke reserveringsruimte aangegeven worden welke initi<74>el FO-status de reservering moet krijgen (res_ruimte.res_status_fo_key).
// Voor de frontend deze status voor de gekozen ruimte bijhouden.
if (frontend)
{ %>
<input type="hidden" id="status_fo" name="status_fo" value="<%=rsv_ruimte_key > 0? rrr.status_fo_key : S("res_default_fe_status_key")%>">
<% }
if (S("res_noshow_detailed") == 0 && backo)
{ // Allow editing of No show
CHECKBOXTR(L("lcl_res_no_show"), "", "res_noshow", rrr.rsv_ruimte_noshow, { html: (reado_rsv_ruimte || rrr.res_ruimte_extern? "disabled" : "")});
}
BLOCK_END()
BLOCK_START("resUser",L("lcl_res_info"));
%>
<script type="text/javascript">
// Process de data die van de gastheer via Ajax terugkomt.
function process_host_info(data)
{
if ($("#kostenklant").prop("checked"))
// Zet eigen (default) kostenplaats alleen als kostenklant AAN. Indien niet aanwezig dan wordt suggestbox automatisch leeg gemaakt.
sgAccount.setValue(data.kostenplaats_key, data.kpn_string, true, true, data.module, true);
$("#default_kostenplaats_person_key").val(data.kostenplaats_key);
$("#default_kostenplaats_person_omschr").val(data.kpn_string);
$("#default_kostenplaats_module").val(data.kpn_module);
<% if (1 || restype == "CV") { %>
var callerinfo=FcltMgr.getCaller();
if (callerinfo && callerinfo.prs_key == data.prs_perslid_key && data.werkplekken.length && confirm(L("lcl_shared_use_caller_werkplek")))
plaatsselector.preferWerkplekken(data.werkplekken); // Selecteert automatisch
<% } %>
};
function changeKostK(zelf)
{
if (zelf)
{ // Aanroep van onchange van kostenklant vinkje. zelf is dan checkbox object
if ($("#person").val() > 0)
{ // Persoon is ingevuld.
acc_key = $("#default_kostenplaats_person_key").val();
acc_oms = $("#default_kostenplaats_person_omschr").val();
// setValue(key, txt, doonChange, checkExist, extraParam, lastTry)
// lastTry is true zodat suggestbox wordt leeggemaakt indien waarde niet voorkomt (en niet de laatst waarde wordt getoond)
sgAccount.setValue(acc_key, acc_oms, true, true, null, true);
}
}
}
function changeName(p_key, txt) // Change contact/aanvrager name
{
if (p_key > 0)
{
sgHost.setValue(p_key, txt);
changeNameH(p_key);
}
}
// Wijzigen van de gastheer heeft geen invloed op de inhoud van de kostenplaats listboxen
// maar wel invloed op de geselecteerd in die listbox (namelijk de kostenplaats van de
// afdeling van de gastheer)
function changeNameH(p_key) { // On change host name change dept
if (p_key > 0)
{
$.getJSON("../prs/get_prs_info_ajax.asp",
{ req_info: "prs_perslid",
prs_werkplek: 1,
prs_perslid_key: p_key
},
process_host_info);
}
}
</script>
<% //======= FIELD 'Aanvrager/contact' =======
FCLTpersoonselector("person",
"sgPerson",
{ label: L("lcl_name"),
perslidKey: rrr.contact_key,
onChange: "changeName",
moreinfo: urole!='fe',
autlevel: authparams.PRSwritelevel,
readonly: urole!='fo' || ordernr_reado || rrr.res_ruimte_extern,
required: true
});
//======= FIELD 'Gastheer/host' =======
FCLTpersoonselector("personH",
"sgHost",
{ label: L("lcl_host"),
perslidKey: (S("res_allow_for_others")?rrr.host_key : rrr.contact_key),
autlevel: authparams.PRSwritelevel,
onChange: "changeNameH",
moreinfo: urole!='fe',
readonly: authparams.PRSwritelevel==9 || ordernr_reado,
required: true,
trclass: (S("res_allow_for_others")?"":"hidden")
});
//======= FIELD 'Kostenplaats' =======
if (rrr.srtactiviteit_kpnverplicht < 2)
{
FCLTkostenplaatsselector("account",
"sgAccount",
rrr.kosten_klant? rrr.contact_key : user_key,
{ label: L("lcl_res_inf_kostenklant"),
kostenplaatsKey: rrr.kostenplaats_key,
filtercode: "AA", // Alleen actieve kostenplaatsen kunnen selecteren "All Active". Huidige waarde als initi<74>le waarde kan bij kostenplaatsen altijd.
urlAdd: [{ urlParam: "prs_key", field: "person" }],
readonly: ordernr_reado,
kptoggle: { ischecked: rrr.kosten_klant,
onChange: "changeKostK(this);",
readonly: ordernr_reado,
hidden: (frontend) },
required: rrr.srtactiviteit_kpnverplicht == 1 ||
((rrr.res_ruimte_key > 0 && restype == "R" && rri.kpnverplicht) ||
(rsv_ruimte_key > 0 && rvi.kpnverplicht))
});
}
else
{
%>
<input type="hidden" id="account" name="account" value="-1" />
<%
}
%>
<input type="hidden" id="default_kostenplaats_person_key" value="<%=(rsv_ruimte_key==-1 && rsv_copy_key == -1)? host_info.kostenplaats_key : rrr.kostenplaats_key%>">
<input type="hidden" id="default_kostenplaats_person_omschr" value="<%=(rsv_ruimte_key==-1 && rsv_copy_key == -1)? safe.htmlattr(host_info.kpn_string) : safe.htmlattr(rrr.kostenplaats_omschr)%>">
<input type="hidden" id="default_kostenplaats_module" value="<%=(rsv_ruimte_key==-1 && rsv_copy_key == -1)? safe.htmlattr(host_info.kpn_module) : safe.htmlattr(rrr.kostenplaats_module)%>">
<%
if (S("show_ordernr") != 0)
{
RWFIELDTR("ordernr", "fldordernr", L("lcl_mld_inf_Ordernr"), rrr.res_ordernr,
{readonly: ordernr_reado, maxlength: 30});
}
if (rrr.srtactiviteit_metomschr)
{
%>
<tr>
<td class="label"><label for="descript"><%=L("lcl_descr")%>:</label></td>
<td><input class="fldresdesc<%=rrr.descript_required && !rrr.res_ruimte_extern? " required":""%>" name="descript" id="descript" <%=ordernr_reado || rrr.res_ruimte_extern ? "readonly " : ""%>
maxlength="60" value="<%=safe.htmlattr(rrr.descript)%>">
</td>
</tr>
<%
}
if (rrr.srtactiviteit_metopmerk)
{
RWTEXTAREATR("opmerk", "fldomschr", L("lcl_remark"), rrr.rsv_ruimte_opmerking, {html: "rows='4'" + (ordernr_reado ? " readonly" : ""), maxlength: 2000});
}
%>
<% BLOCK_END();
%></div><% // div.leftcontainer
// ============================================================================================================
BLOCK_START("resInfo", rsv_ruimte_key > -1 ? L("lcl_reservation") + " " + rrr.resnrtxt : L("lcl_res_new_reservation"));
if (rsv_ruimte_key > 0)
{
ROFIELDTR("fldresstatus", L("lcl_status_BO"), res.getbostatustext(rrr.status_bo_key),
{ infoPointer: { Url: "appl/shared/status_info.asp?rsv_ruimte_key="+rsv_ruimte_key + "&urole=" + urole,
Title: L("lcl_status_details") + " " + rrr.resnrtxt
}
});
}
if (S("res_reservering_flags") > 0)
{
if (urole != "fe")
{
flag_array = [];
for (i=0; i<S("res_reservering_flags"); i++)
{
flag_array.push("SELECT "+i+", "+safe.quoted_sql(L("lcl_res_flag"+i))+" FROM DUAL");
}
sql = flag_array.join(" UNION ");
FCLTselector( "resflag"
, sql
, { initKey: rrr.status_flag
, label: L("lcl_res_flags")
, onChange: "OnChangeSubstatus()"
}
);
}
else
{
ROFIELDTR("fld", L("lcl_res_flags")
, L("lcl_res_flag"+rrr.status_flag)
, { html: "style='padding-left: 20px; background-repeat: no-repeat; background-image: url(../Pictures/resflag"+rrr.status_flag+".png)'"
, suppressEmpty: true
}
);
}
}
if (restype == "R" || (S("res_roompricingkorting") & 4)) // Misschien kortingveld tonen/ ook voor catering?
{
if (this_res.canChangeKorting)
RWFIELDTR("ruimte_korting", "fldshort", L("lcl_res_ruimtekorting") + " " + S("currency_pref"),
safe.curreditable(rrr.ruimte_korting), { datatype: "currency" } );
else
ROFIELDTR("fldshort", L("lcl_res_ruimtekorting") + " " + S("currency_pref"), safe.curr(rrr.ruimte_korting),
{suppressEmpty: true, datatype: "currency"} );
}
if (restype == "R" || (S("res_roompricingtotaal") & 4)) // Misschien totaalveld tonen/ ook voor catering?
{
if (this_res.canChangeTotaal)
RWFIELDTR("ruimte_totaal", "fldshort", L("lcl_res_ruimtetotaal") + " " + S("currency_pref"),
safe.curreditable(rrr.ruimte_totaal), { datatype: "currency" } );
else
ROFIELDTR("fldshort", L("lcl_res_ruimtetotaal") + " " + S("currency_pref"), safe.curr(rrr.ruimte_totaal),
{suppressEmpty: true, datatype: "currency"} );
}
if (restype == "R")
{
%>
<tr><td colspan="2" class="resroominfo"><img style="display:none" id="resphoto"></td></tr>
<tr><td colspan="2" class="resroominfo"><div id="resdescript"></div></td></tr>
<tr><td colspan="2" class="details"><div id="resinfo"></div></td></tr>
<%
}
BLOCK_END();
%> <div id='resFlexList'><% // Wrapper div voor dynamisch herladen
generateFlexKenmerkBlock({urole: urole,
res_key : rrr.reservering_key,
act_key : rrr.activiteit_key,
defaults : rrr.flex_defaults, // pacta: { bsn: "12345678", plaats: "Enschede", postcode:"1234AB" }
rsv_ruimte_key : ((restype == "CV" && rsv_copy_key > -1) ? rsv_copy_key : rsv_ruimte_key), // ook bij 'ruimte erbij'
reado: false,
readofe: (rsv_ruimte_key == -1 ? true : readonlyFE),
flexcolumns: S("res_flexcolumns"),
hide: rrr.activiteit_key<0
});
%> </div>
</div> <!-- edit -->
<% IFACE.FORM_END(); %>
</form>
</body>
</html>