<%@ language = "JavaScript" %> <% /* $Revision$ $Id$ File: res_show_objcat.asp (oude rsv_voorziening_view.inc) Description: Show the objects en voorzieningen of a reservation part Parameters: res_rsv_ruimte RES_RSV_RUIMTE_KEY, de deelreservering Context: in een frame binnen het reserveringsscherm in de inline? */ %> <% FCLTHeader.Requires({js: []}); var urole = getQParamSafe("urole"); var rsv_ruimte_key = getQParamInt("rsv_ruimte_key"); var embedded = getQParamInt("embedded", 0) == 1; var verynew = getQParamInt("verynew", 0) == 1; // Merk op: (later) verwijderde records of parkeerplaatsen zouden we hier weer kunnen // uitsluiten. Dat is echter al weer te complex/ licht risicovol cache.whenNoRecords("SELECT 1 FROM res_rsv_deel WHERE res_rsv_ruimte_key = " + rsv_ruimte_key + " UNION ALL SELECT 1 FROM res_rsv_artikel WHERE res_rsv_ruimte_key = " + rsv_ruimte_key); res.res_set_dialect(rsv_ruimte_key); var this_res = res.func_enabled(rsv_ruimte_key); // Wat heb ik zoal aan rechten op deze specifieke reservering user.auth_required_or_abort(this_res.canReadAny); var resdeleted = this_res.rsv_ruimte_verwijder != null; %>
<% FCLTHeader.Generate() %>
<% var buttons = []; if (this_res.canChangeCV) buttons.push( {title: L("lcl_change"), icon: "wijzigen.png", action: "res_change()"}); %>
<% if (rsv_ruimte_key > 0) { var total_price = 0; var r_price = 0; function fnOmschrijving(oRs) { return oRs("res_deel_omschrijving").value + " " + (oRs("inclBTW").value? L("lcl_shared_inclBTW") : L("lcl_shared_exclBTW")) + (oRs("verval").value == 0? L("lcl_inactive_data_suffix") : ""); } function fnVantijd(oRs) { if (oRs("vanbinnentijd").value == 1) return toTimeString(new Date(oRs("res_rsv_deel_van").value)); else return "" + toTimeString(new Date(oRs("res_rsv_deel_van").value)) + ""; } function fnTottijd(oRs) { if (oRs("totbinnentijd").value == 1) return (new Date(oRs("res_rsv_deel_tot").value).midnight().getTime() != new Date(oRs("res_rsv_deel_van").value).midnight().getTime() ? toDateTimeString(new Date(oRs("res_rsv_deel_tot").value)) : toTimeString(new Date(oRs("res_rsv_deel_tot").value))); else return "" + toTimeString(new Date(oRs("res_rsv_deel_tot").value)) + ""; } function fnTijd(oRs) { if ( oRs("levbinnentijd").value == 1 ) return toTimeString(new Date(oRs("res_rsv_artikel_levering").value)); else return "" + toTimeString(new Date(oRs("res_rsv_artikel_levering").value)) + ""; } var anyDirty = false; function fnRowClassObj(oRs) { if (oRs("verval").value == 0 || oRs("res_rsv_deel_dirtlevel").value & (res.dirtlevel.deel.notavailable | res.dirtlevel.deel.notallowed)) { anyDirty = true; return "res_fatal"; } else { return "xx"; } } function fnRowClassCat(oRs) { var active_artikel = (oRs("ingang").value == 1 && oRs("verval").value == 1); if (!active_artikel || (oRs("res_rsv_artikel_dirtlevel").value & (res.dirtlevel.artikel.notallowed))) { anyDirty = true; return "res_fatal"; } else return "xx"; } function fnrowActionEnabler(oRs) { var data = {eLendOut: false, eReceive: false, eAdapt: false }; if (oRs("ins_srtdeel_uitleenbaar").Value == 1) { // TODO: We negeren de 3D scope vooralsnog. Veel te ingewikkeld met org-velden en dergelijke // Eerst maar even praktijkgeluiden afwachten // user.checkAutorisation cache't per discipline dus dat is te overzien. // LET OP: Hier dus de ins_discipline_key, niet de res_discipline_key var authparams = user.checkAutorisation("WEB_INSFOF", true, oRs("ins_discipline_key").Value); if (authparams && authparams.PRSwritelevel < 9) { data.eLendOut = oRs("ins_alg_ruimte_key_org").value == null; data.eReceive = !data.eLendOut; if (oRs("bewerkbaar").Value == 1) { data.eAdapt = data.eReceive; } } } return data; } var sql = "SELECT "+ lcl.xsqla('rd.res_deel_omschrijving', 'rd.res_deel_key') + " , id.ins_alg_ruimte_key_org" + " , id.ins_deel_key" + " , id.ins_discipline_key" + " , ins_srtdeel_uitleenbaar" + " , rd.res_discipline_key" + " , rrd.res_rsv_deel_key" + " , rrd.res_rsv_deel_aantal" + " , res.getdeelprijs(rrd.res_rsv_deel_key) res_rsv_deel_prijs" + " , rrd.res_rsv_deel_van" + " , rrd.res_rsv_deel_tot" + " , rrd.res_rsv_deel_dirtlevel" + " , CASE WHEN k.km900 > 0 THEN 1 ELSE 0 END bewerkbaar" + " , rrd.res_rsv_deel_verwijder ddVerwijder" + " , CASE " + " WHEN (rrd.res_rsv_deel_van BETWEEN res_rsv_ruimte_van " + " AND res_rsv_ruimte_tot " + " ) " + " THEN 1 " + " ELSE 0 " + " END vanbinnentijd, " + " CASE " + " WHEN (rrd.res_rsv_deel_tot BETWEEN res_rsv_ruimte_van " + " AND res_rsv_ruimte_tot " + " ) " + " THEN 1 " + " ELSE 0 " + " END totbinnentijd" + " , res_rsv_deel_dirtlevel" + " , CASE WHEN id.ins_alg_ruimte_type_org IS NOT NULL AND ins_alg_ruimte_type = 'P'" + " THEN (SELECT " + S("prs_pers_string") + " FROM prs_perslid p" + " WHERE p.prs_perslid_key = id.ins_alg_ruimte_key)" // TODO: Ondersteuning contactpersonen? + " WHEN id.ins_alg_ruimte_type_org IS NOT NULL AND ins_alg_ruimte_type = 'C'" + " THEN (SELECT c.prs_contactpersoon_naam" + " FROM prs_contactpersoon c" + " WHERE id.ins_alg_ruimte_key = c.prs_contactpersoon_key)" + " END eigenaar" + " , COALESCE (ks.prs_kostensoort_btw, 0) inclbtw" + ", CASE" + " WHEN (rd.res_deel_vervaldatum IS NULL OR rd.res_deel_vervaldatum > rr.res_rsv_ruimte_tot)" + " THEN 1" + " ELSE 0" + " END verval" + " FROM res_rsv_deel rrd" + " , res_rsv_ruimte rr" + " , res_deel rd" + " , res_discipline d" + " , prs_kostensoort ks" + " , ins_deel id" + " , ins_srtdeel isd" + " , ( SELECT sd.ins_srtdeel_key, " + " COUNT (km.ins_kenmerk_volgnummer) km900 " + " FROM ins_srtkenmerk sk, " + " ins_kenmerk km, " + " ins_srtdeel sd, " + " ins_srtgroep gr " + " WHERE km.ins_srtkenmerk_key = sk.ins_srtkenmerk_key" + " AND gr.ins_srtgroep_key = sd.ins_srtgroep_key" + " AND km.ins_kenmerk_verwijder IS NULL" + " AND sk.ins_srtkenmerk_verwijder IS NULL" + " AND ( (km.ins_srtinstallatie_key = sd.ins_srtdeel_key" + " AND km.ins_kenmerk_niveau = 'S')" + " OR (km.ins_srtinstallatie_key = sd.ins_srtgroep_key" + " AND km.ins_kenmerk_niveau = 'G')" + " OR (km.ins_srtinstallatie_key = gr.ins_discipline_key" + " AND km.ins_kenmerk_niveau = 'D'))" + " AND km.ins_kenmerk_volgnummer >= 900" + " GROUP BY sd.ins_srtdeel_key) k" + " WHERE rrd.res_rsv_ruimte_key = rr.res_rsv_ruimte_key" + " AND rr.res_rsv_ruimte_key = " + rsv_ruimte_key + " AND id.ins_deel_key = rd.res_ins_deel_key" + " AND rrd.res_deel_key = rd.res_deel_key" + " AND ks.prs_kostensoort_key(+) = d.prs_kostensoort_key" + " AND d.ins_discipline_key = rd.res_discipline_key" + " AND id.ins_srtdeel_key = isd.ins_srtdeel_key" + (S("vis_parking_key") != -1 ? " AND rd.res_discipline_key != " + S("vis_parking_key") : "") + (!resdeleted? " AND rrd.res_rsv_deel_verwijder IS NULL" : "") + " AND isd.ins_srtdeel_key = k.ins_srtdeel_key(+)" + " ORDER BY ins_discipline_volgnr, 1"; // Niet super efficient maar ach.... var oRs = Oracle.Execute("SELECT COUNT(*) FROM (" + sql + ") WHERE ins_srtdeel_uitleenbaar = 1" ); var ErisUitleenbaar = oRs(0).value > 0; // Leesrechten WEB_INSFOF is grof maar beter dan niets var showUitleenbaar = ErisUitleenbaar && user.checkAutorisation("WEB_INSFOF", true); oRs.Close(); var rst1 = new ResultsetTable({sql: sql, rstableCount: 2, rstableNr: 1, keyColumn: "res_rsv_deel_key", ID: "resvtable" + (embedded? "tiny" : ""), noPrint: true, rowClass: fnRowClassObj, rowActionEnabler: fnrowActionEnabler, summaryShow: function () {}, emptySetString : L("lcl_no_objects"), title: L("lcl_res_frame_voorziening"), buttons: (this_res.rsv_ruimte_verwijder != null? null : buttons) }); rst1.addColumn(new Column({caption: L("lcl_reserved_object"), content: fnOmschrijving})); if (showUitleenbaar) rst1.addColumn(new Column({caption: L("lcl_ins_lent_res"), content: "eigenaar", hasActions: true })); rst1.addColumn(new Column({caption: L("lcl_from"), content: fnVantijd})); rst1.addColumn(new Column({caption:L("lcl_to"), content: fnTottijd})); rst1.addColumn(new Column({caption: L("lcl_r_price5"), content: "res_rsv_deel_prijs", datatype: "currency"})); if (resdeleted) rst1.addColumn(new Column({caption:L("lcl_deleted"), content: "ddVerwijder", datatype: "datetime"})); if (showUitleenbaar) { rst1.addAction({ action: "insCheckOut", caption: L("lcl_obj_lend_out"), enabler: "eLendOut"}); rst1.addAction({ action: "insCheckIn", caption: L("lcl_obj_receive"), enabler: "eReceive"}); rst1.addAction({ action: "insAdapt", caption: L("lcl_ins_adapt"), enabler: "eAdapt"}); } var cnt1 = rst1.processResultset(); function fnArtikeltekst(oRs) { var active_artikel = (oRs("ingang").value == 1 && oRs("verval").value == 1); return oRs("res_artikel_omschrijving").value + (oRs("res_artikel_eenheid").value ? " (" + oRs("res_artikel_eenheid").value + ")" : "") + " " + (oRs("inclBTW").value? L("lcl_shared_inclBTW") : L("lcl_shared_exclBTW")) + (!active_artikel? L("lcl_inactive_data_suffix") : ""); } sql = "SELECT "+ lcl.xsqla('a.res_artikel_omschrijving','a.res_artikel_key') + ", "+ lcl.xsqla('a.res_artikel_eenheid','a.res_artikel_key') + ", ra.res_rsv_artikel_key" + ", ra.res_rsv_artikel_aantal" + ", res.getartikelprijs(ra.res_rsv_artikel_key) res_rsv_artikel_prijs" + ", ra.res_rsv_artikel_levering" + ", rr.res_rsv_ruimte_tot" + ", ra.res_rsv_artikel_verwijder ddVerwijder" + ", CASE " + " WHEN (ra.res_rsv_artikel_levering BETWEEN res_rsv_ruimte_van " + " AND res_rsv_ruimte_tot " + " ) " + " THEN 1 " + " ELSE 0 " + " END levbinnentijd" + ", res_rsv_artikel_dirtlevel" + ", COALESCE (ks.prs_kostensoort_btw, 0) inclbtw" + ", CASE" + " WHEN (a.res_artikel_ingangsdatum IS NULL OR a.res_artikel_ingangsdatum <= rr.res_rsv_ruimte_van)" + " THEN 1" + " ELSE 0" + " END ingang" + ", CASE" + " WHEN (a.res_artikel_vervaldatum IS NULL OR a.res_artikel_vervaldatum > rr.res_rsv_ruimte_van)" + " THEN 1" + " ELSE 0" + " END verval" + " FROM res_rsv_artikel ra" + ", res_rsv_ruimte rr" + ", res_artikel a" + ", res_discipline d" + ", prs_kostensoort ks" + " WHERE ra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key" + " AND rr.res_rsv_ruimte_key = " + rsv_ruimte_key + " AND ra.res_artikel_key = a.res_artikel_key " + " AND ks.prs_kostensoort_key(+) = d.prs_kostensoort_key" + " AND d.ins_discipline_key = a.res_discipline_key" + (!resdeleted? " AND ra.res_rsv_artikel_verwijder IS NULL" : "") + " ORDER BY res_artikel_volgnummer" + ", " + lcl.xsql('res_artikel_omschrijving', 'a.res_artikel_key') + ", res_rsv_artikel_levering"; var rst2 = new ResultsetTable({sql:sql, rstableCount: 2, rstableNr: 2, keyColumn: "res_rsv_artikel_key", ID: "resctable"+(embedded?"tiny":""), noPrint:true, rowClass: fnRowClassCat, summaryShow: function () {}, emptySetString : L("lcl_no_artikels") }); rst2.addColumn(new Column({caption: L("lcl_consumable_objects"), content: fnArtikeltekst })); rst2.addColumn(new Column({caption: L("lcl_count"), content: "res_rsv_artikel_aantal"})); rst2.addColumn(new Column({caption: L("lcl_time"), content: fnTijd})); rst2.addColumn(new Column({caption: L("lcl_to"), content: "res_rsv_ruimte_tot", datatype: "time"})); rst2.addColumn(new Column({caption: L("lcl_r_price7"), content: "res_rsv_artikel_prijs", datatype: "currency"})); if (resdeleted) rst2.addColumn(new Column({caption: L("lcl_deleted"), content: "ddVerwijder", datatype: "datetime"})); var cnt2 = rst2.processResultset(); if (anyDirty) { %>
<% } } %>