svn path=/Website/trunk/; revision=39
This commit is contained in:
Jos Groot Lipman
2009-11-03 15:59:44 +00:00
parent 9aee56c91d
commit 70a2cc2437
5 changed files with 853 additions and 0 deletions

210
APPL/RES/res.css Normal file
View File

@@ -0,0 +1,210 @@
/*
* $Revision: 1 $
* $Modtime: 3-11-09 14:29 $
*/
#resselector option {
background-color: #94F6C4;
}
#resselector .fatal {
background-color: red;
color: yellow;
}
#selectedDates{
float: right;
}
/* RES planboard noot: res kan per id, obj gaat via class */
#tab_room_sched tr, .tab_obj_sched tr {background-color: #ddd;}
#tab_room_sched tr:hover, .tab_obj_sched tr:hover {background-color: #CCC;}
#tab_room_sched tr.selected, .tab_obj_sched tr.selected { background-color: #808080; font-weight: bold; }
#tab_room_sched tr.selected,
.tab_obj_sched tr.selected,
table.planbord tr label { font-weight: normal;overflow: hidden; white-space: nowrap; }
table.planbord td.label { width: 180px; padding-left: 5px; }
table.planbord label { width: 180px; font-weight: normal; overflow: hidden; white-space: nowrap; }
table.planbord td.capaciteit { width: 55px;
text-align: right;
padding-right:15px; };
div.res_remark { display: none;
float: right;
position:absolute;
z-index:1;
width:200px;
top:50px;
left:500px;
}
table.planbord48 tr td.between div { width:24px;};
table.planbord48 tr td.post div { width:16px;};
table.planbord48 td.reserv { background-image:url(../pictures/plan48x16.png) }
table.planbord48 div.res_cleaning { border-left-width:11px; border-right-width:11px; }
table.planbord24 tr td.between div { width:24px;};
table.planbord24 tr td.post div { width:16px;};
table.planbord24 td.reserv { background-image:url(../pictures/plan24x16.png) }
table.planbord24 div.res_cleaning { border-left-width:5px; border-right-width:5px; }
table.planbord16 tr td.between div { width:24px;};
table.planbord16 tr td.post div { width:8px;};
table.planbord16 td.reserv { background-image:url(../pictures/plan16x16.png) }
table.planbord16 div.res_cleaning { border-left-width:2px; border-right-width:2px; }
table.planbord8 tr td.between div { width:10px;};
table.planbord8 tr td.post div { width:3px;};
table.planbord8 td.reserv { background-image:url(../pictures/plan08x16.png) }
table.planbord8 div.res_cleaning { border-left-width:0px; border-right-width:0px; }
table.planbord4 tr td.between div { width:2px;};
table.planbord4 tr td.post div { width:0px;};
table.planbord4 td.reserv { background-image:url(../pictures/plan04x16.png) }
table.planbord4 div.res_cleaning { border-left-width:0px; border-right-width:0px; }
table.planbord { border: 1px solid #808080 ; margin-top:5px; margin-right: 5px; }
table.planbord td.plantd { position: relative; padding:0px; }
table.planbord td.plantd.tijdbalk { }
table.planbord label { font-weight: normal; }
table.planbord tr { height: 18px; }
table.planbord td.reserv { background-repeat: repeat-x;
background-position:1px 1px;}
table.planbord tr td.between { };
table.planbord tr td.post { padding:0px; };
table.planbord div.gepland{ position: absolute;
height: 16px;
top:1px;
}
div.gepland{ height: 16px;
top:1px;
}
table.planbord div.begintijd{ position: absolute;
height: 16px;
left: 0px;
background-color: #ddd;
top:1px; }
table.planbord div.eindtijd { position: absolute;
height: 16px;
background-color: #ddd;
top:1px; }
table.planbord tr:hover div.begintijd,
table.planbord tr:hover div.eindtijd {background-color: #CCC;}
div.plantime { position: absolute;
text-align: center;
height: 16px;
width:40px;
top:1px;}
table.planbord div.click { cursor: pointer;}
table.planbord input[type=checkbox] { height:16px; width: 16px; }
table.planbord input[type=radio] { height:16px; width: 16px; }
div.res_optie { background-color: #31398C; } /* Optie: blauw */
div.res_definitief { background-color: #990000; } /* Definitief: rood */
div.res_blok { background-color: #000000; } /* Blokkade: zwart */
div.res_vervallen { background-color: #990099; } /* Vervallen: paars */
div.res_nietvrij { background-color: #D6D80E; } /* Niet beschikbaar: geel */
div.res_cleaning { border-left-style: solid;
border-left-color: #808080;
border-right-style: solid;
border-right-color: #808080;
}
tr.selected div.res_current { background-color: #F00; }
div.overflowleft { background-image:url(../pictures/moreleft.png);
background-position:left top;
background-repeat:no-repeat;
}
div.overflowleft.res_cleaning { border-left-width: 0px!important; };
div.continueleft.res_cleaning { border-left-width: 0px!important; };
div.overflowright { background-image:url(../pictures/moreright.png);
background-position:right top;
background-repeat:no-repeat;
}
div.overflowright.res_cleaning { border-right-width: 0px!important; };
div.continueright.res_cleaning { border-right-width: 0px!important; };
tr.selected div.overflowright { background-image:url(../pictures/moreright_sel.png); }
tr.selected div.overflowleft { background-image:url(../pictures/moreleft_sel.png); }
table.planbord tr td.between div { height:16px; };
tr div.res_nieuw { display: none; }
tr.selected div.res_nieuw { display: block;
background-color: #0F0;
}
/* De volgende regels overrulen mogelijk bovenstaande. */
tr.res_nofit { display: none; }
tr.res_nofit.selected { display: block!important; }
tr.res_nofit td { color: #808080; }
tr.res_nofit label { color: red; }
tr.unselected div.res_current { background-color: #F00;
background-repeat: repeat-x;
background-image:url(../pictures/delete.png); }
.planbordlegenda td {
background-color: white;
}
div.objcatline { padding-left: 20px;
background-repeat:no-repeat;
background-image:url(../Pictures/tree_min.gif);
cursor: pointer;
}
div.objcatline.closed { background-image:url(../Pictures/tree_plus.gif);}
div.objcatline.closed div.objcatdiv { display: none;}
div.objcatline.notavailable { background-image:none;
cursor: default;
}
div.objcatline.existing { font-weight: bold;
color: #31398C;
}
div.objcatdiv { font-weight: normal;
color: black;
}
#resCat {}
#resObj {}
tr div.res_fatal { background-color: #F00;
background-repeat: repeat-x;
background-image:url(../pictures/delete.png)!important;
z-index: 1; }
tr.res_fatal td { background-color: #F88;
border 1px solid red;
background-repeat: no-repeat;
background-image:url(../pictures/delete.png)!important;
padding-left : 20px;
z-index: 1; }
@media print
{ /* in print-mode doe we de kleuren als border. Daarmee werkt cleaning echter niet echt meer */
div.res_optie { height:0px!important; border-top:7px solid #31398C; border-bottom:7px solid #31398C; } /* Optie: blauw */
div.res_definitief { height:0px!important; border-top:7px solid #990000; border-bottom:7px solid #990000; } /* Definitief: rood */
div.res_blok { height:0px!important; border-top:7px solid #000000; border-bottom:7px solid #000000; } /* Blokkade: zwart */
div.res_vervallen { height:0px!important; border-top:7px solid #990099; border-bottom:7px solid #990099; } /* Vervallen: paars */
div.res_nietvrij { height:0px!important; border-top:7px solid #D6D80E; border-bottom:7px solid #D6D80E; } /* Niet beschikbaar: geel */
table.planbord div.res_cleaning { border-left-width:0px; border-right-width:0px; }
table.planbord48 div.res_cleaning { margin-left:11px; margin-right:11px; }
table.planbord24 div.res_cleaning { margin-left:5px; margin-right:5px; }
table.planbord16 div.res_cleaning { margin-left:2px; margin-right:2px; }
table.planbord4 div.res_cleaning { margin-left:0px; margin-right:0px; }
table.planbord td.reserv { border:1px solid #888;}
}

View File

@@ -0,0 +1,72 @@
<%@ language = "JavaScript" %>
<% /*
$Revision: 1 $
$Modtime: 3-11-09 10:24 $
File: res_load_title_rsv.asp
Description: Genereer HTML title voor een Reservering in het planbord
Parameters: res_rsv_ruimte_key een reservering
Context: asynchrone aanroep vanuit setResRsvTitle()
Notes:
*/ %>
<% DOCTYPE_Disable = 1;
%>
<!--#include file="../../cust/install.inc"-->
<!--#include file="../Shared/escape.inc"-->
<!--#include file="./res.inc"-->
<%
rsv_ruimte_key = getQParamInt("rsv_ruimte_key");
sql = "SELECT "
+ " COALESCE(rr.res_rsv_ruimte_omschrijving,'-') res_rsv_ruimte_omschrijving"
+ ", " + prs_pers_string + " naam"
+ ", coalesce(rr.res_rsv_ruimte_telefoon,'-') res_rsv_ruimte_telefoon"
+ ", rr.res_rsv_ruimte_van"
+ ", rr.res_rsv_ruimte_tot"
+ ", rr.res_rsv_ruimte_dirtlevel"
+ ", rr.res_reservering_key"
+ ", rr.res_rsv_ruimte_volgnr"
+ ", rr.res_ruimte_opstel_key"
+ ", rr.alg_ruimte_key"
+ " FROM res_rsv_ruimte rr,"
+ " prs_perslid p"
+ " WHERE rr.res_rsv_ruimte_key = " + rsv_ruimte_key
+ " AND p.prs_perslid_key = rr.res_rsv_ruimte_contact_key";
var oRs = Oracle.Execute(sql);
var txt = lcl_reservation + ": " + oRs("res_reservering_key") + "/" + oRs("res_rsv_ruimte_volgnr")
+ " " + toTimeString(new Date(oRs("res_rsv_ruimte_van")))
+ "-" + toTimeString(new Date(oRs("res_rsv_ruimte_tot")));
if (oRs("res_rsv_ruimte_dirtlevel").Value & res.dirtlevel.ruimte.notavailable)
txt += "\n" + lcl_res_dirtyroom;
txt += "\n" + oRs("res_rsv_ruimte_omschrijving")
+ "\n" + oRs("naam") + " (" + oRs("res_rsv_ruimte_telefoon") +")"
if (oRs("res_ruimte_opstel_key").Value != null)
{
sql = "select res_ruimte_nr"
+ " from res_ruimte rr,"
+ " res_ruimte_opstelling ro"
+ " where res_ruimte_opstel_key = " + oRs("res_ruimte_opstel_key").Value
+ " and rr.res_ruimte_key = ro.res_ruimte_key"
oRs2 = Oracle.Execute(sql);
txt += "\nZaal: " + oRs2("res_ruimte_nr");
oRs2.Close();
}
else // Alg_ruimte_key zal gevuld zijn
{
sql = "select alg_plaatsaanduiding"
+ " from alg_v_plaatsaanduiding"
+ " where alg_onroerendgoed_keys = " + oRs("alg_ruimte_key").Value
oRs2 = Oracle.Execute(sql);
txt += "\nRuimte: " + oRs2("alg_plaatsaanduiding");
oRs2.Close();
}
oRs.Close();
Response.Write(txt);
%>

View File

@@ -0,0 +1,315 @@
<%@ language = "JavaScript" %>
<% /*
$Revision: 1 $
$Modtime: 3-11-09 16:00 $
File: res_search_plan_obj.asp
Status: 75%
Remark: Toon objecten planbord
Parameters:
Context: vanuit res_search.asp
*/
%>
<!--#include file="../../cust/install.inc"-->
<!--#include file="../Shared/funcodes.inc"-->
<!--#include file="../shared/date_sql.inc"-->
<!--#include file="../shared/datetime.inc"-->
<!--#include file="../shared/escape.inc"-->
<!--#include file="../shared/iface.inc"-->
<!--#include file="../Shared/discxalg3d.inc"-->
<!--#include file="res_plan_obj.inc"-->
<!--#include file="res.inc"-->
<%
FCLTHeader.Requires({plugins: ["jQuery", "datepicker"],
js: ["date.js", "jquery-ui.js", "./res_plan.js"]})
var urole = getQParam("urole");
var rsv_ruimte_key = getQParamInt("rsv_ruimte_key", -1); // TODO: En hoe dan vanuit planbord?
var dis_key = getQParamInt("dis_key", -1); // (Alleen) default openklappen
var dateoffset=0; // TODO deeplinking??
var date_from = getFParamDate("date_from", new Date((new Date).getTime() + dateoffset));
var date_to = getFParamDate("date_to", new Date(date_from.getTime() + dateoffset));
var show_park = getFParamInt("park", 0);
// var res_van = new Date(oRs("res_rsv_ruimte_van").value);
// var res_tot = new Date(oRs("res_rsv_ruimte_tot").value);
// alg_ruimte_key = oRs("alg_ruimte_key").value||-1;
var fronto = (urole == "fo");
var backo = (urole == "bo");
var frontend = (urole == "fe");
var ch_obj_mode = Request.QueryString("ch_obj_mode");
var portal_alg_ruimte_key = Request.QueryString("portal_alg_ruimte_key");
var newres = Request.QueryString("reservNew")=="1";
if (urole=="fo")
var autfunction = "WEB_RESFOF";
else if (urole=="bo")
var autfunction = "WEB_RESBOF";
else // fe
var autfunction = "WEB_RESUSE";
var authparams = user.checkAutorisation(autfunction);
var disc_key = getQParamInt("disc", -1);
%>
<html>
<head>
<% FCLTHeader.Generate() %>
<%
var width_px = parseInt( getQParamInt("width_px", 1024));
var nr_days = 1+(date_to.midnight() - date_from.midnight())/24/60/60/1000;
var nr_hours = nr_days*(res_t2-res_t1);
var targethour_px = (width_px-250)/nr_hours;
var hour_px = 48;
if (targethour_px < 48) hour_px = 24;
if (targethour_px < 24) hour_px = 16;
if (targethour_px < 16) hour_px = 8;
if (targethour_px < 8) hour_px = 4;
%>
<style>
table.planbord div.sizer { width:<%=hour_px*(res_t2-res_t1)+1%>px;};
</style>
<script type="text/javascript" src='../LocalScripts/num2curr.js'></script>
<script type="text/javascript" src='../LocalScripts/date.js'></script>
<script type="text/javascript" src='../LocalScripts/num2curr.js'></script>
<% res.clientTimeVars(); %>
<script type="text/javascript">
var hour_px = <%=hour_px%>;
var res_t1 = <% = " " + res_t1 %>;
var res_t2 = <% = " " + res_t2 %>;
var res_h = <% = " " + res_h %>;
var res_dur = <% = " " + res_dur %>;
var res_cat_t1 = <%=res_cat_t1%>
var res_cat_t2 = <%=res_cat_t2%>
var rsv_ruimte_key = -1;
var urole = "<%=urole%>";
var ch_obj_mode = '<%=Request.QueryString("ch_obj_mode")%>';
// Worden in res_plan.js gebruikt:
var res_van = new Date(<%=date_from.getTime()%>);
var res_tot = new Date(<%=date_to.getTime()%>);
function res_print()
{
window.print();
}
$(document).ready(function () {
$('.plantd').droppable({
drop: function(event, ui) {
var jtr = $(this).closest('tr');
var dx = ui.offset.left - jtr.find('.plantd').offset().left;
dx = (dx-1)/<%=hour_px%> + <%=res_t1%>;
var res_deel_key = $(this).closest('tr')[0].id;
if (res_deel_key)
{
var url = "./res_update_obj.asp?rsv_deel_key="+ui.draggable[0].rsv_deel_key
+ "&res_deel_key="+$(this).closest('tr')[0].id
+ "&fres_van="+dx;
FcltMgr.openModalDetail(url, "TODO Hallo",
{ callback: function (data) {
if (data.refresh)
window.location.reload()} }
);
}
}
});
$('table.planbord').each(function ()
{
$(this).find('div.gepland:not(.overflowleft,.overflowright)').draggable({ //containment: '#table_dis136',
containment: $(this), //.find("td.plantd"),
start: function(event, ui) { ui.helper[0].title="Sleep naar nieuw tijdstip";
this.beingdragged = true; /* to prevent onclick */ },
stop: function(event, ui) { //this.beingdragged = false; doet rsv_click wel
var ttl = "Top: " + ui.offset.top + " Left: " + ui.offset.left;
//alert(ttl);
var ttl = "Top: " + ui.helper.closest('table').offset().top + " Left: " + ui.helper.closest('table').offset().left;
//alert(ttl);
var dx = ui.offset.left - ui.helper.closest('table').offset().left;
var dy = ui.offset.top - ui.helper.closest('table').offset().top;
var ttl = "dx: " + dx + " dy:" + dy;
//alert(ttl);
},
drag: function(event, ui) { var dx = ui.offset.left - ui.helper.closest('table').offset().left;
var dy = ui.offset.top - ui.helper.closest('table').offset().top;
var ttl = "dx: " + dx + " dy:" + dy;
ui.helper[0].title = ttl;
//this.beingdragged = false; doet rsv_click wel
},
helper: 'clone' ,
opacity: 0.50,
appendTo: this,
grid: [<%=hour_px*res_h%>, 20],
scroll: false,
xaxis: 'y' });
});
});
</script>
</head>
<%
if( !func_enabled[backo?"WEB_RESBOF":fronto?"WEB_RESFOF":"WEB_RESUSE"] )
{
Response.write("<p>"+ lcl_no_auth + "</p>: res_Search_plan_obj.asp")
Response.end
}
%>
<body id="editbody">
<%
var buttons = [ { icon: "palette.png", title: lcl_res_legenda, action: 'openLegenda()' },
{ icon: "print.png", title: lcl_print_table, action: 'res_print()' },
{ icon: "excel.png", title: lcl_export_to_excel, action: 'doOutput(2)' }
];
IFRAMER_HEADER(lcl_res_frame_voorziening, buttons);
%>
<div id="list">
<form name=u2 method=post action="res_edit_objcat_save.asp?urole=<%=urole%>&rsv_ruimte_key=<%=rsv_ruimte_key%>">
<%
var params = { hour_px: hour_px,
loc_key: getFParamInt("locatiekey", -1)
}
// ==========================================================================
// Description: Bouwen van het voorzieningen edit blok voor een reservering
// Tel in elke catalogus hoeveel objecten in de gekozen ruimte echt gereservererd kunnen worden.
// Als dat er nul zijn dan tonen we de discipline namelijk niet.
sql_aantal = " 1 aantal ";
if (params.loc_key>0) {
var sql_aantal = " ( " + getReservedObjectTypes(-1, -1, " count(*) ", params.loc_key, "dis.ins_discipline_key", "") + ") aantal ";
}
sql= "select dis.INS_DISCIPLINE_KEY,"
+ " dis.INS_DISCIPLINE_OMSCHRIJVING,"
+ " DIS.INS_DISCIPLINE_KPNVERPLICHT,"
+ sql_aantal
+ " from RES_v_aanwezigDISCIPLINE dis"
+ " WHERE ins_discipline_min_level=1"
+ " AND dis.INS_DISCIPLINE_KEY IN("
+ " SELECT g.ins_discipline_key FROM FAC_V_WEBGEBRUIKER g, FAC_FUNCTIE f "
+ " WHERE g.fac_functie_key = f.fac_functie_key "
+ " AND f.fac_functie_code = '" + autfunction + "'"
+ " AND g.fac_gebruiker_alg_level_read < 9"
+ " AND g.PRS_PERSLID_KEY ="+user_key
+ " )"
+ " AND dis.INS_DISCIPLINE_KEY IN"
+ " (SELECT res_discipline_key" /* DISTINCT */
+ " from res_deel R, ins_deel D"
+ " where r.res_deel_verwijder IS NULL"
+ " and R.res_ins_deel_key=D.ins_deel_key)";
if (show_park)
sql += " AND dis.INS_DISCIPLINE_KEY = " + vis_parking_key;
else if (vis_parking_key>0)
sql += " AND dis.INS_DISCIPLINE_KEY != " + vis_parking_key
if (disc_key>0) sql=sql + " and dis.ins_discipline_key ="+disc_key;
if (res_fe_discs_only_in_res != -1 && !fronto && !backo && restype=='CV')
sql=sql + " and dis.ins_discipline_key NOT IN ("+res_fe_discs_only_in_res+") ";
sql=sql + " ORDER BY 2";
oRs1 = Oracle.Execute( sql );
%>
<table>
<tr><td>
<%
// Toon van en tot bij meerdaags overzicht
if (date_from.midnight().getTime() != date_to.midnight().getTime())
{
Response.Write(toDateString(date_from.midnight()));
Response.Write(" "+lcl_res_totenmet +" "+ toDateString(date_to.midnight()));
}
%>
</td>
</tr>
<%
while( !oRs1.eof ) {
if (oRs1("aantal").Value > 0) {
%>
<tr>
<td>
<div class="objcatline">
<span onclick="$(this.parentElement).toggleClass('closed');">
<%=Server.HTMLencode(oRs1("INS_DISCIPLINE_OMSCHRIJVING").value)%>
</span>
<div class="objcatdiv"
style='overflow-x: auto; xwidth: 1000px'>
<%
make_plan_obj(oRs1("INS_DISCIPLINE_KEY").value, date_from, date_to, params);
%>
</div>
</div>
</td>
</tr>
<%
}
oRs1.MoveNext();
}
oRs1.close();
%>
</table>
<script>
function openLegenda()
{
params = { width: 125,
minWidth: 125,
height: 130,
minHeight: 130,
resizable: false,
position: ['right','top'],
title: "<%=lcl_res_legenda%>"
}
$('div#legenda').dialog(params).dialog('open');
}
</script>
<div id="legenda" style="display:none";>
<table width="100%" border="0">
<tr>
<td align="right"><img src="../Pictures/room_free.gif"></td>
<td><% = lcl_free %></td>
</tr>
<tr>
<td align="right"><img src="../Pictures/room_opt.gif"></td>
<td><% = lcl_optie %></td>
</tr>
<tr>
<td align="right"><img src="../Pictures/room_def.gif"></td>
<td><% = lcl_def %></td>
</tr>
<tr>
<td align="right"><img src="../Pictures/room_blk.gif"></td>
<td><% = lcl_blokkade %></td>
</tr>
<tr>
<td align="right"><img src="../Pictures/room_vvl.gif"></td>
<td><% = lcl_vervallen %></td>
</tr>
</table>
</div>
</form>
</div>
</body>
</html>

204
APPL/RES/res_update_obj.asp Normal file
View File

@@ -0,0 +1,204 @@
<%@ language = "JavaScript" %>
<% /*
$Revision: 1 $
$Modtime: 3-11-09 14:37 $
File: res_update_obj.asp
Description: update een onderdeel van een object-reservering na wijziging via planbord
Parameters:
rsv_deel_key RES_RSV_DEEL to update
res_deel_key Nieuw object
rsv_van nieuwe begintijd in uren
rsv_tot nieuwe eindtijd in uren
Context: Modal dialoog vanuit objecten planbord
Note: We ondersteunen drie varianten
- CV-reservering (met rsv_ruimte_key==>alg_ruimte_key)
Verticaal: We staan toe dat een ander object (res_deel) gekozen wordt
Horizontaal: Bij wijzigen tijd waarschuwen we dat andere objecten meegaan
(welbeschouwd wijzigen we res_rsv_ruimte_van en de rest cascadeert)
- R-reservering (met rsv_ruimte_key==>res_opstel_key)
Verticaal: We staan toe dat een ander object (res_deel) gekozen wordt
Horizontaal: Een ander tijdstip staan we niet toe ("Ga maar naar ruimte-planbord)
- Parkeerplaats bij afspraak (met bez_bezoekers_key)
Verticaal: We staan toe dat een ander object (res_deel) gekozen wordt
Horizontaal: Een ander tijdstip staan we niet toe ("Ga maar naar bezoekersscherm")
*/
%>
<!--#include file="../../cust/install.inc"-->
<!-- #include file="../Shared/json2.js" -->
<!--#include file="../shared/iface.inc" -->
<!--#include file="../shared/save2db.inc" -->
<!--#include file="res.inc"-->
<%
FCLTHeader.Requires({plugins: ["jQuery"]});
var rsv_deel_key = getQParamInt("rsv_deel_key");
var new_deel_key = getQParamInt("res_deel_key");
var new_van = (new Date).setFloatHours(getQParam("fres_van"), res_h);
//var rsv_tot = parseFloat(getQParam("rsv_tot"));
var submitting = getQParam("submit","0")=="1";
sql = "SELECT res_rsv_ruimte_key, "
+ " bez_bezoekers_key, "
+ " rrd.res_deel_key,"
+ " ins_deel_omschrijving,"
+ " res_rsv_deel_van"
+ " FROM ins_deel d,"
+ " res_deel rd,"
+ " res_rsv_deel rrd"
+ " WHERE rrd.res_rsv_deel_key = " + rsv_deel_key
+ " AND rrd.res_deel_key = rd.res_deel_key"
+ " AND rd.res_ins_deel_key = d.ins_deel_key" ;
var oRs = Oracle.Execute(sql);
var rsv_ruimte_key = oRs("res_rsv_ruimte_key").Value;
var bezoekers_key = oRs("bez_bezoekers_key").Value;
var old_van = new Date(oRs("res_rsv_deel_van").Value);
var old_deel_key = oRs("res_deel_key").Value;
var old_deel_oms = oRs("ins_deel_omschrijving").Value;
var bTimeChanged = old_van.getHours() != new_van.getHours() || old_van.getMinutes() != new_van.getMinutes();
if (old_deel_key != new_deel_key)
{
sql = "SELECT ins_deel_omschrijving"
+ " FROM ins_deel d,"
+ " res_deel rd"
+ " WHERE rd.res_deel_key = " + new_deel_key
+ " AND rd.res_ins_deel_key = d.ins_deel_key" ;
var oRs = Oracle.Execute(sql);
var new_deel_oms = oRs("ins_deel_omschrijving").Value;
}
%>
<html>
<head>
<% FCLTHeader.Generate()
if (submitting)
{
var fields = [ { dbs: "res_rsv_ruimte_van", typ: "time", val: new_van }
//, { dbs: "res_rsv_ruimte_tot", typ: "time", frm: "date_to" }
];
sql = buildUpdate("res_rsv_ruimte", fields)
+ " res_rsv_ruimte_key = " + rsv_ruimte_key;
// Nu de echte update.
// Daarbij ook diverse controles/ updates uitvoeren op 'andere zaken'
sql = "BEGIN "
+ sql + ";"
+ " res.set_ruimte_dirty (" + rsv_ruimte_key + "); " // Zelf dirty geworden?
+ " res.set_ruimtes_clean (" + oldvan.toSQL() + "); " // Anderen 'clean' geworden
+ " res.follow_artikel (" + rsv_ruimte_key + ", " + oldvan.toSQL(true) + ", " + oldtot.toSQL(true) + "); " // catering mee verplaatsen
+ " res.follow_deel (" + rsv_ruimte_key + ", " + oldvan.toSQL(true) + ", " + oldtot.toSQL(true) + "); " // objecten mee verplaatsen
+ "END;";
//Oracle.Execute( sql );
//res.trackaction("RESUPD", rsv_ruimte_key, "TODO lcl_deelreservering gewijzigd"); /* TODO zie boven */
%><script>FcltMgr.closeDetail(window, { refresh: true } );</script><%
Response.End;
}
%>
</head>
<body id="editbody"><%/*TODO stijl*/%>
<form name=u2 action=res_update_obj.asp?submit=1&rsv_ruimte_key=<%=rsv_ruimte_key%> method=post>
<%
var badmsg = "";
BLOCK_START("", lcl_res_frame_voorziening);
if (rsv_ruimte_key)
{
sql = "SELECT rr.res_rsv_ruimte_key"
+ ", rr.res_rsv_ruimte_omschrijving"
+ ", " + prs_pers_string + " naam"
+ ", coalesce(rr.res_rsv_ruimte_telefoon,'-') res_rsv_ruimte_telefoon"
+ ", rr.res_rsv_ruimte_van"
+ ", rr.res_rsv_ruimte_tot"
+ ", rr.res_reservering_key"
+ ", rr.res_rsv_ruimte_volgnr"
+ ", rr.res_ruimte_opstel_key"
+ ", rr.alg_ruimte_key"
+ " FROM res_rsv_ruimte rr,"
+ " prs_perslid p,"
+ " res_deel rd,"
+ " res_rsv_deel rrd"
+ " WHERE rrd.res_rsv_deel_key = " + rsv_deel_key
+ " AND rrd.res_deel_key = rd.res_deel_key"
+ " AND rrd.res_rsv_ruimte_key = rr.res_rsv_ruimte_key"
+ " AND p.prs_perslid_key = rr.res_rsv_ruimte_contact_key"
var oRs = Oracle.Execute(sql);
ROFIELDTR("fldresnum", lcl_reservation, oRs("res_reservering_key") + "/" + oRs("res_rsv_ruimte_volgnr"));
ROFIELDTR("fld", lcl_from, toDateTimeString(oRs("res_rsv_ruimte_van").Value));
ROFIELDTR("fld", lcl_to, toDateTimeString(oRs("res_rsv_ruimte_tot").Value));
ROFIELDTR("fldresdesc", lcl_descr, oRs("res_rsv_ruimte_omschrijving").Value||"-");
if (oRs("res_ruimte_opstel_key").Value != null)
{
if (bTimeChanged)
{
badmsg = "TODO: tijd wijzigen mag alleen via reservering of ruimte-planbord";
}
sql = "select res_ruimte_nr"
+ " from res_ruimte rr,"
+ " res_ruimte_opstelling ro"
+ " where res_ruimte_opstel_key = " + oRs("res_ruimte_opstel_key").Value
+ " and rr.res_ruimte_key = ro.res_ruimte_key"
oRs2 = Oracle.Execute(sql);
ROFIELDTR("fldresroom", lcl_room, oRs2("res_ruimte_nr").Value);
oRs2.Close();
}
else // Alg_ruimte_key zal gevuld zijn
{
sql = "select alg_plaatsaanduiding"
+ " from alg_v_plaatsaanduiding"
+ " where alg_onroerendgoed_keys = " + oRs("alg_ruimte_key").Value
oRs2 = Oracle.Execute(sql);
ROFIELDTR("fldresroom", lcl_room, oRs2("alg_plaatsaanduiding").Value);
oRs2.Close();
}
oRs.Close();
var this_res = res.func_enabled(rsv_ruimte_key); // Wat heb ik zoal aan rechten op deze specifieke reservering
if (!this_res.canChange)
{
badmsg = LCL.shared.no_auth;
}
}
else
{
if (bTimeChanged)
{
badmsg = "TODO: tijd wijzigen mag alleen via afspraak-scherm";
}
%>TODO: afspraak info tonen<%
}
BLOCK_END();
%>
</form>
<%= old_deel_oms %>
<%
if (badmsg!="") { %>
<font color=red><br><%=badmsg%></font>
<% } else {
if (old_deel_key != new_deel_key) { %>
TODO: Vervangen door: <%= new_deel_oms%>
<% }
if (bTimeChanged) { %>
<br>TODO Begintijdstip aanpassen van <%= toTimeString(old_van) %> naar <%= toTimeString(new_van) %>
<br>TODO: Let op: hele reservering wordt verplaats, andere voorzieningen gaan mee.
<% }
}
%>
<div id="buttons">
<%
BUTTONS_START();
if (badmsg=="")
CreateButton(lcl_submit, "u2.submit()", 100);
//if (rsv_ruimte_key)
// CreateButton(lcl_reservation, "FcltMgr.openDetail('appl/res/res_reservering.asp?rsv_ruimte_key="+rsv_ruimte_key+"')", 100);
//else if (bezoekers_key)
// CreateButton(lcl_vis_appointment, "FcltMgr.openDetail('appl/bez/bez_afspraak.asp?bezoekers_key="+bezoekers_key+"')", 100);
CreateButton(lcl_cancel, "FcltMgr.closeDetail(window, { cancel: true } )");
BUTTONS_END();
%>
</div>

View File

@@ -0,0 +1,52 @@
<%@ language = "JavaScript" %>
<% /*
$Revision: 1 $
$Modtime: 3-11-09 11:16 $
File: res_update_room.asp
Description: update een deel-reservering na wijziging via planbord
Parameters:
rsv_ruimte_key RES_RSV_RUIMTE to update
rsv_van nieuwe begintijd in uren
rsv_tot nieuwe eindtijd in uren
Context: Ajax call vanuit res_table.asp
Note:
*/
DOCTYPE_Disable = 1;
%>
<!--#include file="../../cust/install.inc"-->
<!-- #include file="../Shared/json2.js" -->
<!--#include file="../shared/save2db.inc" -->
<!--#include file="res.inc"-->
<%
FCLTHeader.Requires({plugins: ["jQuery"],
js: []})
var rsv_ruimte_key = getQParamInt("rsv_ruimte_key");
var rsv_van = parseFloat(getQParam("rsv_van"));
var rsv_tot = parseFloat(getQParam("rsv_tot"));
var this_res = res.func_enabled(rsv_ruimte_key); // Wat heb ik zoal aan rechten op deze specifieke reservering
if (!this_res.canChange)
{
result = { message: lcl_no_auth }; // Ongeldige aanroep
}
else
{
var fields = [ { dbs: "res_rsv_ruimte_van", typ: "time", frm: "date_from" },
{ dbs: "res_rsv_ruimte_tot", typ: "time", frm: "date_to" }
];
// update ruimte
// objects en articles are deleted automatically if the RES_RSV_RUIMTE is deleted
sql = "update RES_RSV_RUIMTE set RES_RSV_RUIMTE_VERWIJDER=SYSDATE"
// + ", RES_STATUS_FO_KEY = " + (cost_recharge? "4":"1") //status 1=optie, 4=vervallen
+ ", RES_RSV_RUIMTE_VERWIJDER_USER = "+ user_key
+ " where RES_RSV_RUIMTE_VERWIJDER IS NULL"
+ " and " + rsv_ruimte_key
// oRs = Oracle.Execute( sql );
result = { message: "TODO: Op de server is het updaten nog niet echt verwerkt" };
}
Response.Write(JSON.stringify(result));
%>