1597 lines
78 KiB
Plaintext
1597 lines
78 KiB
Plaintext
<%@ 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.canChange && this_res.canChangeFEExtended);
|
||
|
||
// 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;
|
||
var met_eindtijd = true;
|
||
if (activiteit_key > 0)
|
||
{
|
||
sql = "SELECT ac.res_activiteit_aantalverplicht,"
|
||
+ " res_activiteit_omsverplicht,"
|
||
+ " res_activiteit_meteindtijd"
|
||
+ " 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;
|
||
met_eindtijd = oRs("res_activiteit_meteindtijd").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,
|
||
met_eindtijd : met_eindtijd,
|
||
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 (urole=="fe")
|
||
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, "
|
||
+ " ra.res_activiteit_meteindtijd, "
|
||
+ " 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,
|
||
met_eindtijd : oRs("res_activiteit_meteindtijd").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>
|
||
<%
|
||
} // einde Bestaande reservering
|
||
|
||
lcl.set_dialect(srtact, "RES_SRTACTIVITEIT_KEY");
|
||
|
||
// Afhankelijk van activiteitsoort de eerstvolgende dag waarop deze reservering mag worden gedaan bepalen.
|
||
// Wordt alleen gebruikt voor een fe-user.
|
||
// Voor 24/7 organisaties moet de parameter mode=2 worden meegegeven zodat vrije dagen en weekends niet mee worden geteld.
|
||
var sql = "SELECT fac.DatumTijdPlusUitvoerTijd(SYSDATE, MIN(rd.res_disc_params_expire_dagen), 'DAGEN'"
|
||
+ (S("res_247organisation")==1? " , null, null, 2" : "") + ")-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 (urole=="fe")
|
||
sql += " AND ra.res_activiteit_notfrontend = 0"
|
||
var oRsa = Oracle.Execute(sql);
|
||
rrr.fe_expire_dagen = oRsa(0).Value || 0;
|
||
oRsa.Close();
|
||
|
||
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">
|
||
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");
|
||
FcltMgr.alert(alert_text);
|
||
}
|
||
FcltMgr.closeDetail(window, json);
|
||
}
|
||
else
|
||
iface.button.enable("btn_res_submit");
|
||
}
|
||
|
||
function res_submit()
|
||
{
|
||
if (!validateForm("u2"))
|
||
return false;
|
||
|
||
rsv_ruimteOnSubmit();
|
||
}
|
||
|
||
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 %>
|
||
};
|
||
|
||
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 date_to = new Date(parseInt($("#date_to").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;
|
||
var min_duur = data.min_duur;
|
||
var ruimte_opstel_RO = $("#ruimte_opstel_ro").length; // Is het veld ruimte_opstel_ro aanwezig, dan is ruimte-opstelling readonly.
|
||
// 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(min_duur)
|
||
{
|
||
var estEndDate = date_from.addFloatHours(min_duur, <%=safe.jsfloat(S("res_h"))%>);
|
||
|
||
if (date_to < estEndDate)
|
||
{
|
||
FcltMgr.topmanager().window.$.toast(
|
||
{ text: L("lcl_res_room_min_duration").format(min_duur),
|
||
icon: "success",
|
||
position : 'top-center'
|
||
});
|
||
//$("#time_from_date_to").addClass("missing");
|
||
}
|
||
}
|
||
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;
|
||
if (!ruimte_opstel_RO)
|
||
{
|
||
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();
|
||
|
||
if (!ruimte_opstel_RO)
|
||
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()
|
||
{
|
||
var plentyOfRoom = true;
|
||
|
||
// 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 )
|
||
plentyOfRoom = false;
|
||
}
|
||
|
||
FcltMgr.confirm(L("lcl_res_too_many_visitors"), { autoconfirm: plentyOfRoom, fncancel: function() { iface.button.enable("btn_res_submit"); } }, function() {
|
||
|
||
<% 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);
|
||
}
|
||
<% } %>
|
||
|
||
<% if (S("res_247organisation") != 1) { /* Geen popup voor 24/7 organisation */ %>
|
||
var startDate = new Date(parseInt($('#date_from').val()));
|
||
var isHoliday = cal_isVrijeDag(startDate) || cal_isWeekend(startDate);
|
||
|
||
FcltMgr.confirm("<%=L("lcl_holiday")%>", { autoconfirm: !isHoliday, fncancel: function() { iface.button.enable("btn_res_submit") } }, function() {
|
||
$.post($("form[name=u2]")[0].action, $("[name=u2]").serialize(), FcltCallbackAndThenAlways(res_submit_callback), "json");
|
||
});
|
||
<% }
|
||
else
|
||
{ %>
|
||
$.post($("form[name=u2]")[0].action, $("[name=u2]").serialize(), FcltCallbackAndThenAlways(res_submit_callback), "json");
|
||
<% } %>
|
||
});
|
||
}
|
||
|
||
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 sel_opt = $("#sel_activity").find("option:selected");
|
||
if (sel_opt.length)
|
||
{
|
||
var oms_verplicht = sel_opt[0].getAttribute("res_activiteit_omsverplicht");
|
||
var bez_verplicht = sel_opt[0].getAttribute("res_activiteit_aantalverplicht");
|
||
}
|
||
else
|
||
{
|
||
var oms_verplicht = $("#sel_activity").attr("res_activiteit_omsverplicht")
|
||
var bez_verplicht = $("#sel_activity").attr("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=<%=readonlyFE?1:0%>";
|
||
|
||
$("#resFlexList,#resFlex2List").load(s, function ()
|
||
{
|
||
$("#resFlex,#resFlex2").toggle($("#k_all").val()>0); // verbergen als leeg
|
||
FcltMgr.resized();
|
||
} );
|
||
var sel_opt = $("#sel_activity").find("option:selected");
|
||
var opt = (sel_opt.length
|
||
? sel_opt[0].getAttribute("res_activiteit_meteindtijd")
|
||
: $("#sel_activity").attr("res_activiteit_meteindtijd")
|
||
);
|
||
var met_eindtijd = (act_key != -1 ? opt : 1) == 1;
|
||
<% if (restype == "R") { %>
|
||
$("#time_from_date_to").prev().toggle(met_eindtijd);
|
||
$("#time_from_date_to").toggle(met_eindtijd);
|
||
$("#date_to").prev().toggle(met_eindtijd);
|
||
<% } else { %>
|
||
$(".date_to_wrapper").toggle(met_eindtijd);
|
||
<% } %>
|
||
|
||
checkVeldenVerplicht();
|
||
autosetEindtijd();
|
||
}
|
||
|
||
function OnChangeSubstatus()
|
||
{
|
||
var i = $("#resflag").val();
|
||
$('label[for="resflag"]').html(L("lcl_res_flags") + ": " + " " + "<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") { /* verplaats van-tijd naar voor tot-tijd */ %>
|
||
var clocksymbol = $("#time_from_date_from").next();
|
||
$("#time_from_date_from").insertBefore($("#time_from_date_to"))
|
||
.after("<span> " + L("lcl_tot") + " </span>")
|
||
.after(clocksymbol)
|
||
.after(" ");
|
||
<% } %>
|
||
OnChangeActivity();
|
||
});
|
||
|
||
</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"
|
||
+ " , a.res_activiteit_meteindtijd"
|
||
+ " 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 rad.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)
|
||
: "")
|
||
+ (urole=="fe"
|
||
? " 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,res_activiteit_meteindtijd",
|
||
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", -1) > 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="<%=safe.jsfloat(resDuur)%>"
|
||
res_activiteit_omsverplicht="<%=rrr.descript_required%>"
|
||
res_activiteit_aantalverplicht="<%=rrr.aantal_verplicht%>"
|
||
res_activiteit_meteindtijd="<%=rrr.met_eindtijd ? 1 : 0%>">
|
||
<%
|
||
}
|
||
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
|
||
trclass : (restype == "R" ? "" : "date_to_wrapper"),
|
||
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 || readonlyFE });
|
||
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 && !readonlyFE) ? "button fldresroomedit required" : "")%> fldresroom"
|
||
readonly
|
||
<% if (!rrr.res_ruimte_extern && !readonlyFE) { %>
|
||
onclick="FindAvailableRooms()"
|
||
value="<%=L("lcl_res_select_room")%>"
|
||
<% } else {%>
|
||
value="<%=safe.htmlattr(rri.ruimte_nr)%>"
|
||
<% } %>
|
||
name="sel_room" <%=attrValue%> />
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
|
||
<!-- Opstelling -->
|
||
<tr><td class="label"><label for='ruimte_opstel<%=rrr.res_ruimte_extern || readonlyFE ? "_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 || readonlyFE)
|
||
{ %>
|
||
<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 || readonlyFE)
|
||
{ %>
|
||
<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)
|
||
{
|
||
FcltMgr.confirm(L("lcl_shared_use_caller_werkplek"), function() {
|
||
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: readonlyFE,
|
||
flexcolumns: S("res_flexcolumns"),
|
||
hide: rrr.activiteit_key<0
|
||
});
|
||
%> </div>
|
||
</div> <!-- edit -->
|
||
<% IFACE.FORM_END(); %>
|
||
</form>
|
||
</body>
|
||
</html>
|