STAM#52848 QR code uitlenen / innemen

svn path=/Website/trunk/; revision=39116
This commit is contained in:
Alex Tiehuis
2018-09-11 15:27:17 +00:00
parent d81c4379e3
commit 3d52abbce5
4 changed files with 427 additions and 250 deletions

View File

@@ -1885,6 +1885,8 @@ ins = {checkAutLevel:
+ ", i.ins_deel_key"
+ ", i.ins_alg_ruimte_type"
+ ", i.res_rsv_deel_key" // gereserveerde object
+ ", i.ins_alg_ruimte_type_org"
+ ", " + sqlLentOutFrom + " uitgegeven_vanuit"
+ ", rs.res_rsv_deel_van"
+ ", rs.res_rsv_deel_tot"
+ ", " + sqlInspectie_select
@@ -1906,8 +1908,6 @@ ins = {checkAutLevel:
+ ", ins_deel_upper"
+ ", s.ins_srtdeel_uitleenbaar"
+ ", i.ins_alg_ruimte_key_org"
+ ", i.ins_alg_ruimte_type_org"
+ ", " + sqlLentOutFrom + " uitgegeven_vanuit"
+ ", rd.res_deel_key"
+ ", rd.res_deel_opmerking"
+ ", rd.res_deel_count"
@@ -2092,6 +2092,8 @@ ins = {checkAutLevel:
+ ", i.ins_deel_key"
+ ", i.ins_alg_ruimte_type"
+ ", i.res_rsv_deel_key" // gereserveerde object
+ ", i.ins_alg_ruimte_type_org"
+ ", " + sqlLentOutFrom + " uitgegeven_vanuit"
+ ", rs.res_rsv_deel_van"
+ ", rs.res_rsv_deel_tot"
+ ", " + sqlInspectie_select
@@ -2113,8 +2115,6 @@ ins = {checkAutLevel:
+ ", ins_deel_upper" // filtering only
+ ", s.ins_srtdeel_uitleenbaar"
+ ", i.ins_alg_ruimte_key_org"
+ ", i.ins_alg_ruimte_type_org"
+ ", " + sqlLentOutFrom + " uitgegeven_vanuit"
+ ", rd.res_deel_key"
+ ", rd.res_deel_opmerking"
+ ", rd.res_deel_count"

View File

@@ -938,8 +938,8 @@ function ins_list (pautfunction, params)
rst.addColumn(new Column({caption: L("lcl_obj_identification"), content: "ins_deel_omschrijving"}));
rst.addColumn(new Column({caption: L("lcl_ins_opmerking"), content: "ins_deel_opmerking"}));
rst.addColumn(new Column({caption: L("lcl_obj_position"), content: fnPlace}));
rst.addColumn(new Column({caption: "gereserveerd van", content: fnGereserveerdVan}));
rst.addColumn(new Column({caption: "gereserveerd tot", content: fnGereserveerdTot}));
rst.addColumn(new Column({caption: L("lcl_res_reservation_from"), content: fnGereserveerdVan}));
rst.addColumn(new Column({caption: L("lcl_res_reservation_until"), content: fnGereserveerdTot}));
rst.addColumn(new Column({caption: L("lcl_obj_lent_out_to"), content: fnLentOutTo}));
if (excel)
rst.addColumn(new Column({caption: L("lcl_prs_email"), content: fnLentOutToEmail}));

View File

@@ -25,6 +25,11 @@
<!-- #include file="./iface.inc" -->
<%
FCLTHeader.Requires({ plugins:["jQuery", "suggest"],
js: ["jquery-ui.js"]
});
var urole= getQParamSafe("urole", "bo");
var fronto = (urole == "fo");
var ins_score_enabled = S("ins_score_enabled") == 1;
var ins_key = getQParamInt("ins_key");
var qrc = getQParamInt("qrc", 0) != 0;
@@ -79,6 +84,7 @@ var sql = " SELECT id.ins_deel_omschrijving"
+ " , id.ins_deel_parent_key"
+ " , id.ins_alg_ruimte_type"
+ " , id.ins_alg_ruimte_key"
+ " , id.ins_alg_ruimte_key_org"
+ " , id.prs_perslid_key_beh"
+ " , id.ins_deel_verwijder"
+ " , id.ins_deel_mjb_score1"
@@ -90,6 +96,7 @@ var sql = " SELECT id.ins_deel_omschrijving"
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
var ins_alg_ruimte_key_org = oRs("ins_alg_ruimte_key_org").Value;
var ins_deel_verwijderd = oRs("ins_deel_verwijder").value != null;
var ins_deel_omschrijving = oRs("ins_deel_omschrijving").Value;
var ins_srtdeel_omschrijving = oRs("ins_srtdeel_omschrijving").Value;
@@ -104,6 +111,14 @@ if (!oRs.eof)
perslid_key_beh = oRs("prs_perslid_key_beh").Value || -1;
var plaats_afdeling = ins.getBindingItemString(ruimte_type, ruimte_key, ins_parent_key);
var eLendOut = false;
var eReceive = false;
if (fronto)
{
eLendOut = ins_alg_ruimte_key_org == null;
eReceive = !eLendOut;
}
switch (ruimte_type)
{
case 'R':
@@ -155,7 +170,30 @@ oRs.Close();
$(function() {
jqToast(L("lcl_mobile_data_saved"));
});
<% } %>
<% }
else
{
%>
$(function() {
if (window.sessionStorage.getItem("mobile_data_saved"))
{
window.sessionStorage.removeItem("mobile_data_saved");
jqToast(L("lcl_mobile_data_saved"));
}
});
<%
}
%>
function insCheckOut()
{
window.location.href = "<%=rooturl%>/appl/pda/ins_deel_free.asp?ins_key=" + <%=ins_key%>, L("lcl_ins_lend_out");
}
function insCheckIn(ins_key)
{
window.location.href = "<%=rooturl%>/appl/pda/ins_deel_free.asp?ins_key=" + <%=ins_key%>, L("lcl_ins_insinn");
}
</script>
</head>
<body>
@@ -239,6 +277,12 @@ oRs.Close();
CONTROLGROUP_START()
if (fronto && eLendOut) { // uitleenmodule
BUTTON(L("lcl_obj_lend_out"), {click: "insCheckIn()", dataicon: "arrow-u", dataajax: 'false'});
}
if (fronto && eReceive) { // uitleenmodule
BUTTON(L("lcl_obj_receive"), {click: "insCheckOut()", dataicon: "arrow-d", dataajax: 'false'});
}
if (canInspect) {
BUTTON(L("lcl_mobile_inspecties"), {linkid: "./ins_inspect.asp?ins_key="+ins_key + transitParam, dataicon: "search", dataajax: 'false'});
}

View File

@@ -18,6 +18,7 @@
<!-- #include file="./resultset_table.inc" -->
<!-- #include file="./mobile.inc" -->
<!-- #include file="./iface.inc" -->
<!-- #include file="../ins/ins.inc" -->
<html>
<head>
@@ -25,8 +26,56 @@
</head>
<%
var autfunction = "WEB_INSUSE";
var urole= getQParamSafe("urole", "bo");
var fronto = (urole == "fo");
var autfunction = "";
switch(urole)
{
case "fo": autfunction = "WEB_INSFOF";
break;
default: autfunction = "WEB_INSUSE";
break;
}
var authparams = user.checkAutorisation(autfunction);
var outputmode = getQParamInt("outputmode", 0); // 0 = screen, 1 = print, 2 = excel etc
var showall = getQParamInt("showall", 0) == 1;
// Voor velden die de user in kan typen valideren we zodanig dat we er tegen kunnen
var loc_key = getQParamInt("locatiekey", -1); // Locatie
var bld_key = getQParamInt("gebouwkey", -1); // Gebouw
var bttype = getQParam("bttype", ""); // Type van gebouw/terrein ("B", "T"). Bepaald of bld_key een gebouw of terreinsector key bevat.
var terr_key = -1; // Terrein
var flr_key = getQParamInt("verdiepingkey", -1); // Verdieping
var room_key = getQParamInt("ruimtekey", -1); // Ruimte
var wpl_key = getQParamInt("werkplekkey", -1); // Werkplek
var deel = getQParam("deel", ""); // Identieficatie
var disc_key = getQParamInt("disc", -1); // Discipline
var insgroup_key = getQParamInt("srtgroup", -1); // Groep
var objsrt_key = getQParamInt("srtdeel", -1); // Objectsoort
var dep_key = getQParamInt("sDept_key", -1); // Organisatie key
var persoon_key = getQParamInt("sName_key", -1); // Persoon key
var cpersoon_key = getQParamInt("cps_key", -1); // Contactpersoon key
var mld_key = getQParamInt("mld_key", -1); // Melding key (voor daaraan gekoppelde objecten)
var checkout = getQParamInt("checkout", 0) == 1; // Tijdens uitchecken bezoeker.
var insObjIncl = getQParamInt("insObjIncl", 0) == 1; // Ook onderdelen
var expObjIncl = getQParamInt("expObjIncl", 0) == 1; // Ook vervallen objecten
var insLentOut = getQParamInt("insLentOut", 1) == 1; // Uitgegeven
var insAvail = getQParamInt("insAvail", 1) == 1; // Beschikbaar
var inacObjIncl = getQParamInt("inacObjIncl", 0) == 1; // Ook inactieve objecten
var insPhotoIncl = getQParamInt("insPhotoIncl", 0) == 1; // Ook afbeeldingen
// FGII parameters
var fgraph = getQParamInt("fgraph", 0) == 1;
//var ins_key_arr = getQParamIntArray("ins_key", []); // Was obj_key
var parent_key = getQParamInt("parent_key", -1);
var koppel_key = getQParamInt("koppel_key", -1);
var terr_key = getQParamInt("terr", -1); // Terrein
var room_key_arr = getQParamIntArray("rooms", []); // Ruimten
var comp_key = getQParamInt("company", -1);
var embedded = getQParamInt("embedded", -1);
var tiny = getQParamInt("tiny", -1);
/***** End get webform parameters *****/
var locatie_key = getQParamInt("locatie_key", user.alg_locatie_key({withcurrent: true})); // Locatie
var gebouw_key = getQParamInt("gebouw_key", user.alg_gebouw_key({withcurrent: true})); // Gebouw, kan -1 zijn, dan niet gebruiken
@@ -97,40 +146,56 @@ else
var url = "";
if (grp_sel == "")
{
url = "../pda/ins_list.asp?grp=" + safe.url(oRs("ins_srtgroep_omschrijving").Value) + (ruimte_key>-1 ? "&ruimte_key="+ ruimte_key : "");
url = "../pda/ins_list.asp?urole=" + urole + "&grp=" + safe.url(oRs(fronto ? "ins_groep_oms" : "ins_srtgroep_omschrijving").Value) + (ruimte_key>-1 ? "&ruimte_key="+ ruimte_key : "");
}
else
{
url = "../pda/ins_deel.asp?ins_key=" + oRs("ins_deel_key").Value;
url = "../pda/ins_deel.asp?urole=" + urole + "&ins_key=" + oRs("ins_deel_key").Value;
url += ((ins_parent_key > -1) ? "&ins_parent_key=" + ins_parent_key : "");
}
return url;
};
function fncolGroup(oRs)
{
return safe.html(oRs("ins_srtgroep_omschrijving").Value);
return safe.html(oRs(fronto ? "ins_groep_oms" : "ins_srtgroep_omschrijving").Value);
};
function fncolHeader(oRs)
{
return safe.html(oRs("ins_srtdeel_omschrijving").Value);
return safe.html(oRs(fronto ? "soort" : "ins_srtdeel_omschrijving").Value);
};
function fncolsubHeader(oRs)
{
var plaats_eigenaar_icon = "";
switch (oRs("ins_alg_ruimte_type").Value)
{
case "R" : plaats_eigenaar_icon = "<i class='fa fa-dot-circle-o'></i>&nbsp;"; break;
case "T" : plaats_eigenaar_icon = "<i class='fa fa-road'></i>&nbsp;"; break;
case "W" : plaats_eigenaar_icon = "<i class='fa fa-user-circle-o'></i>&nbsp;"; break;
case "A" : plaats_eigenaar_icon = "<i class='fa fa-users'></i>&nbsp;"; break;
case "P" : plaats_eigenaar_icon = "<i class='fa fa-user'></i>&nbsp;"; break;
}
if (fronto)
{
var place = ""
if (oRs("ins_alg_ruimte_type_org").value != null)
place = oRs("uitgegeven_vanuit");
else
if (oRs("ins_alg_ruimte_type").value == 'P' || oRs("ins_alg_ruimte_type").value == 'A')
// Object niet uitgeleend. Uitgeleend aan is eigenlijk de plaats.
place = oRs("uitgeleend_aan").value;
else
place = oRs("plaats").value;
return "<div class='listbodykop'>" + plaats_eigenaar_icon+ safe.html(oRs("plaats_eigenaar").Value)+ "</div>";
return "<div class='listbodykop'>" + safe.html(place) + "</div>";
}
else
{
var plaats_eigenaar_icon = "";
switch (oRs("ins_alg_ruimte_type").Value)
{
case "R" : plaats_eigenaar_icon = "<i class='fa fa-dot-circle-o'></i>&nbsp;"; break;
case "T" : plaats_eigenaar_icon = "<i class='fa fa-road'></i>&nbsp;"; break;
case "W" : plaats_eigenaar_icon = "<i class='fa fa-user-circle-o'></i>&nbsp;"; break;
case "A" : plaats_eigenaar_icon = "<i class='fa fa-users'></i>&nbsp;"; break;
case "P" : plaats_eigenaar_icon = "<i class='fa fa-user'></i>&nbsp;"; break;
}
return "<div class='listbodykop'>" + plaats_eigenaar_icon+ safe.html(oRs("plaats_eigenaar").Value)+ "</div>";
}
};
function fnAside(oRs)
{
return safe.html(oRs("reserveerbaar").Value);
return fronto ? (oRs("res_rsv_deel_key").Value ? "R" : null) : safe.html(oRs("reserveerbaar").Value);
}
function fnrowClass(oRs)
@@ -163,235 +228,304 @@ else
}
return lclass;
}
// Let op: sortering (en groepering) op eerste 3 kolomen
// Ruimtegebonden objecten
var sqlR = " SELECT ins_deel_omschrijving"
+ " , ins_srtdeel_key"
+ " , aog.alg_gebouw_code || '-' || aog.alg_verdieping_code || '-' || aog.alg_ruimte_nr plaats_eigenaar"
+ " , id.ins_deel_key"
+ " , (SELECT MAX('R') FROM res_deel rd, res_activiteitdiscipline rad WHERE rd.res_deel_verwijder IS NULL AND rd.res_discipline_key = rad.res_discipline_key AND rd.res_ins_deel_key = id.ins_deel_key AND rad.res_discipline_key != " + S("vis_parking_key") + ") reserveerbaar"
+ " , id.ins_alg_ruimte_type"
+ " FROM alg_v_onroerendgoed_gegevens aog"
+ " , ins_deel id"
+ " , alg_locatie l"
+ " , alg_district di"
+ " WHERE id.ins_alg_ruimte_key = aog.alg_ruimte_key"
+ " AND aog.alg_locatie_key = l.alg_locatie_key"
+ " AND l.alg_district_key = di.alg_district_key"
+ " AND id.ins_alg_ruimte_type = 'R'"
+ " AND id.ins_deel_parent_key " + ((ins_parent_key > -1)? " = " + ins_parent_key : "IS NULL")
+ " AND id.ins_deel_verwijder IS NULL"
+ " AND (id.ins_deel_vervaldatum IS NULL OR id.ins_deel_vervaldatum > TRUNC(SYSDATE))"
+ ((locatie_key > -1) ? " AND aog.alg_locatie_key = " + locatie_key : "")
+ ((gebouw_key > -1) ? " AND aog.alg_gebouw_key = " + gebouw_key : "")
+ ((verdieping_key > -1) ? " AND aog.alg_verdieping_key = " + verdieping_key : "")
+ ((ruimte_key > -1) ? " AND aog.alg_ruimte_key = " + ruimte_key : "");
sqlR = discx3d (sqlR,
"id.ins_discipline_key",
"di.alg_regio_key",
"l.alg_district_key",
"aog.alg_locatie_key",
"aog.alg_gebouw_key",
"aog.alg_verdieping_key",
"aog.alg_ruimte_key",
"", // b.prs_bedrijf_key:
"", // d.prs_afdeling_key:
autfunction,
'', // disc_key
0);
// Terreingebonden objecten
var sqlT = " SELECT ins_deel_omschrijving"
+ " , ins_srtdeel_key"
+ " , aog.alg_terreinsector_code || '-' || aog.alg_terreinsector_naam plaats_eigenaar"
+ " , id.ins_deel_key"
+ " , (SELECT MAX('R') FROM res_deel rd WHERE rd.res_deel_verwijder IS NULL AND rd.res_ins_deel_key = id.ins_deel_key) reserveerbaar"
+ " , id.ins_alg_ruimte_type"
+ " FROM alg_v_onroerendgoed_gegevens aog"
+ " , ins_deel id"
+ " , alg_locatie l"
+ " , alg_district di"
+ " WHERE id.ins_alg_ruimte_key = aog.alg_terreinsector_key"
+ " AND aog.alg_locatie_key = l.alg_locatie_key"
+ " AND l.alg_district_key = di.alg_district_key"
+ " AND id.ins_alg_ruimte_type = 'T'"
+ " AND id.ins_deel_parent_key " + ((ins_parent_key > -1)? " = " + ins_parent_key : "IS NULL")
+ " AND id.ins_deel_verwijder IS NULL"
+ " AND (id.ins_deel_vervaldatum IS NULL OR id.ins_deel_vervaldatum > TRUNC(SYSDATE))"
+ ((locatie_key > -1) ? " AND aog.alg_locatie_key = " + locatie_key : "")
+ ((terrein_key > -1) ? " AND aog.alg_terreinsector_key = " + terrein_key : "");
sqlT = discx3d (sqlT,
"id.ins_discipline_key",
"di.alg_regio_key",
"l.alg_district_key",
"aog.alg_locatie_key",
"aog.alg_terreinsector_key",
"", //aog.alg_verdieping_key,
"", //aog.alg_ruimte_key,
"", // b.prs_bedrijf_key:
"", // d.prs_afdeling_key:
autfunction,
'', // disc_key
0);
// Werkplekgebonden objecten
var sqlW = " SELECT ins_deel_omschrijving"
+ " , ins_srtdeel_key"
+ " , aog.alg_gebouw_code || '-' || aog.alg_verdieping_code || '-' || aog.alg_ruimte_nr || '/' || w.prs_werkplek_volgnr plaats_eigenaar"
+ " , id.ins_deel_key"
+ " , (SELECT MAX('R') FROM res_deel rd WHERE rd.res_deel_verwijder IS NULL AND rd.res_ins_deel_key = id.ins_deel_key) reserveerbaar"
+ " , id.ins_alg_ruimte_type"
+ " FROM alg_v_onroerendgoed_gegevens aog"
+ " , prs_werkplek w"
+ " , ins_deel id"
+ " , alg_locatie l"
+ " , alg_district di"
+ " WHERE id.ins_alg_ruimte_key = w.prs_werkplek_key"
+ " AND w.prs_alg_ruimte_key = aog.alg_ruimte_key"
+ " AND aog.alg_locatie_key = l.alg_locatie_key"
+ " AND l.alg_district_key = di.alg_district_key"
+ " AND id.ins_alg_ruimte_type = 'W'"
+ " AND id.ins_deel_parent_key " + ((ins_parent_key > -1) ? "="+ins_parent_key : "IS NULL")
+ " AND id.ins_deel_verwijder IS NULL"
+ ((locatie_key > -1) ? " AND aog.alg_locatie_key = " + locatie_key : "")
+ ((gebouw_key > -1) ? " AND aog.alg_gebouw_key = " + gebouw_key : "")
+ ((verdieping_key > -1) ? " AND aog.alg_verdieping_key = " + verdieping_key : "")
+ ((ruimte_key > -1) ? " AND aog.alg_ruimte_key = " + ruimte_key : "");
sqlW = discx3d (sqlW,
"id.ins_discipline_key",
"di.alg_regio_key",
"l.alg_district_key",
"aog.alg_locatie_key",
"aog.alg_gebouw_key",
"aog.alg_verdieping_key",
"aog.alg_ruimte_key",
"", // b.prs_bedrijf_key:
"", // d.prs_afdeling_key:
autfunction,
'', // disc_key
0);
// Afdelingsgebonden objecten, niet in alle gevallen meenemen
// TODO (ooit): beperken tot afdelingen met personen met werkplekken binnen de scope.
var sqlA = " SELECT ins_deel_omschrijving"
+ " , ins_srtdeel_key"
+ " , a.prs_afdeling_omschrijving plaats_eigenaar"
+ " , id.ins_deel_key"
+ " , (SELECT MAX('R') FROM res_deel rd WHERE rd.res_deel_verwijder IS NULL AND rd.res_ins_deel_key = id.ins_deel_key) reserveerbaar"
+ " , id.ins_alg_ruimte_type"
+ " FROM ins_deel id"
+ " , prs_v_afdeling a"
+ " , prs_v_afdeling_boom boom"
+ " , prs_bedrijf b"
+ " WHERE id.ins_alg_ruimte_key = a.prs_afdeling_key"
+ " AND a.prs_bedrijf_key = b.prs_bedrijf_key"
+ " AND a.prs_afdeling_key = boom.prs_afdeling_key"
+ " AND id.ins_alg_ruimte_type = 'A'"
+ " AND id.ins_deel_parent_key " + ((ins_parent_key > -1)? " = " + ins_parent_key : "IS NULL")
+ " AND id.ins_deel_verwijder IS NULL"
+ " AND (id.ins_deel_vervaldatum IS NULL OR id.ins_deel_vervaldatum > TRUNC(SYSDATE))"
+ ((afd_key > -1) ? " AND id.ins_alg_ruimte_key = " + afd_key : "");
sqlA = discx3d (sqlA,
"id.ins_discipline_key",
"", //"di.alg_regio_key",
"", //"l.alg_district_key",
"", //"aog.alg_locatie_key",
"", //"aog.alg_gebouw_key",
"", //"aog.alg_verdieping_key",
"", //"aog.alg_ruimte_key",
"b.prs_bedrijf_key",
"boom.prs_afdeling_key",
autfunction,
"", // disc_key
1);
// Persoonsgebonden objecten
// Neemt de ORG-scope mee, maar ook de plaatscope via de werkplekken:
// als de persoon binnen de scope een wp heeft, dan wordt die getoond
var sqlP = " SELECT ins_deel_omschrijving"
+ " , ins_srtdeel_key"
+ " , pf.prs_perslid_naam_friendly plaats_eigenaar"
+ " , id.ins_deel_key"
+ " , (SELECT MAX('R') FROM res_deel rd WHERE rd.res_deel_verwijder IS NULL AND rd.res_ins_deel_key = id.ins_deel_key) reserveerbaar"
+ " , id.ins_alg_ruimte_type"
+ " FROM ins_deel id"
+ " , prs_v_perslid_fullnames_all pf"
+ " , prs_perslid p"
+ " , prs_v_afdeling_boom boom"
+ " , prs_bedrijf b"
+ " ,prs_perslidwerkplek pwp"
+ " ,alg_v_onrgoed_boom aog"
+ " ,prs_werkplek w"
+ " ,alg_locatie l"
+ " ,alg_district di"
+ " WHERE id.ins_alg_ruimte_key = pf.prs_perslid_key"
+ " AND id.ins_alg_ruimte_type = 'P'"
+ " AND p.prs_afdeling_key = boom.prs_afdeling_key"
+ " AND boom.prs_bedrijf_key = b.prs_bedrijf_key"
+ " AND p.prs_perslid_key = pf.prs_perslid_key"
+ " AND p.prs_perslid_key = pwp.prs_perslid_key"
+ " AND pwp.prs_werkplek_key = w.prs_werkplek_key"
+ " AND w.prs_alg_ruimte_key = aog.alg_ruimte_key"
+ " AND aog.alg_locatie_key = l.alg_locatie_key"
+ " AND l.alg_district_key = di.alg_district_key"
+ " AND id.ins_deel_verwijder IS NULL"
+ " AND (id.ins_deel_vervaldatum IS NULL OR id.ins_deel_vervaldatum > TRUNC(SYSDATE))"
+ " AND id.ins_deel_parent_key " + ((ins_parent_key > -1)? " = " + ins_parent_key : "IS NULL")
+ ((prs_key > -1) ? " AND id.ins_alg_ruimte_key = " + prs_key : "")
+ ((locatie_key > -1) ? " AND aog.alg_locatie_key = " + locatie_key : "")
+ ((gebouw_key > -1) ? " AND aog.alg_gebouw_key = " + gebouw_key : "")
+ ((verdieping_key > -1) ? " AND aog.alg_verdieping_key = " + verdieping_key : "")
+ ((ruimte_key > -1) ? " AND aog.alg_ruimte_key = " + ruimte_key : "");
sqlP = discx3d (sqlP,
"id.ins_discipline_key",
"di.alg_regio_key",
"l.alg_district_key",
"aog.alg_locatie_key",
"aog.alg_gebouw_key",
"aog.alg_verdieping_key",
"aog.alg_ruimte_key",
"b.prs_bedrijf_key",
"boom.prs_afdeling_key",
autfunction,
"", // disc_key
1);
sql = "SELECT recs.* "
+ " , " + lcl.xsqla('sd.ins_srtdeel_omschrijving', 'sd.ins_srtdeel_key')
+ " , " + lcl.xsqla('sg.ins_srtgroep_omschrijving', 'sg.ins_srtgroep_key')
+ " , " + lcl.xsqla('ins_discipline_omschrijving', 'ins_discipline_key')
+ " , sg.ins_discipline_key"
+ " FROM ("
+ sqlR
+ (metWerkplekgebonden ? " UNION " + sqlW : "")
+ (metPersoonsgebonden ? " UNION " + sqlP : "")
+ (metAfdelingsgebonden ? " UNION " + sqlA : "")
+ (metTerreingebonden ? " UNION " + sqlT : "")
+ ") recs"
+ " , ins_srtdeel sd"
+ " , ins_srtgroep sg"
+ " , ins_discipline disc"
+ " WHERE sd.ins_srtdeel_key = recs.ins_srtdeel_key"
+ " AND sd.ins_srtgroep_key = sg.ins_srtgroep_key"
+ " AND sg.ins_discipline_key = disc.ins_discipline_key"
+ ((mld_key > -1) ? " AND ins_deel_key IN (SELECT ins_deel_key FROM mld_melding_object WHERE mld_melding_object_verwijder IS NULL AND mld_melding_key = " + mld_key + ")" : "")
+ ((ins_key > -1) ? " AND id.ins_deel_key = " + ins_key : "")
if (grp_sel)
function fnGereserveerdVanTot(oRs)
{
sql += " AND ins_discipline_omschrijving || ' ' || ins_srtgroep_omschrijving = " + safe.quoted_sql(grp_sel)
+ " ORDER BY 3, 2, 1"
var res_van_str = fncolsubHeader(oRs);
if (oRs("res_rsv_deel_key").Value)
{
res_van = new Date(oRs("res_rsv_deel_van").Value);
res_tot = new Date(oRs("res_rsv_deel_tot").Value);
res_van_str += "<div class='listbodykop'>" + L("lcl_res_reservation") + " " + toDateTimeString(res_van, true) + " " + L("lcl_mjb_through") + " " + toDateTimeString(res_tot, true) + "</div>";
}
return res_van_str;
}
if (fronto) //uitleenregistratie
{
// Start building the query to fetch all objects satisfying
var sql = ins.getobjectinspect_sql(autfunction,
{ urole : urole,
outputmode: outputmode,
showall: showall,
loc_key: (loc_key != -1 ? loc_key : null),
bld_key: (bld_key != -1 ? bld_key : null),
terr_key: (terr_key != -1 ? terr_key : null),
flr_key: (flr_key != -1 ? flr_key : null),
room_key: (room_key != -1 ? room_key : null),
wpl_key: (wpl_key != -1 ? wpl_key : null),
deel: (deel != ""? deel : null),
disc_key: (disc_key != -1 ? disc_key : null),
insgroup_key: (insgroup_key != -1 ? insgroup_key : null),
objsrt_key: (objsrt_key != -1 ? objsrt_key : null),
dep_key: (dep_key != -1 ? dep_key : null),
persoon_key: (persoon_key != -1 ? persoon_key : null),
cpersoon_key: (cpersoon_key != -1 ? cpersoon_key : null),
mld_key: (mld_key != -1 ? mld_key : null),
fgraph: fgraph,
ins_key: (ins_key != -1 ? ins_key : null),
parent_key: (parent_key != -1 ? parent_key : null),
koppel_key: (koppel_key != -1 ? koppel_key : null),
room_key_arr: (room_key_arr.length > 0 && room_key_arr.join(",").indexOf("-1") == -1? room_key_arr : null),
comp_key: (comp_key != -1 ? comp_key : null),
checkout: checkout,
mobile: true,
insObjIncl: insObjIncl,
expObjIncl: expObjIncl,
insLentOut: insLentOut,
insAvail: insAvail,
inacObjIncl: inacObjIncl,
insPhotoIncl: insPhotoIncl,
embedded: (embedded != -1? embedded : null),
tiny: (tiny != -1? tiny : null)
}
);
if (grp_sel)
{
sql = "SELECT *"
+ " FROM (" + sql + ")"
+ " WHERE ins_disc_oms || ' ' || ins_groep_oms = " + safe.quoted_sql(grp_sel)
+ " ORDER BY 3, 2, 1";
}
else
{
sql = "SELECT COUNT(*) numberInGroup"
+ " , ins_disc_oms || ' ' || ins_groep_oms ins_groep_oms"
+ " FROM (" + sql + ")"
+ " GROUP BY ins_disc_oms, ins_groep_oms"
+ " ORDER BY ins_disc_oms, ins_groep_oms";
}
}
else
{
sql = "SELECT COUNT(*) numberInGroup"
+ " , ins_discipline_omschrijving || ' ' || ins_srtgroep_omschrijving ins_srtgroep_omschrijving"
+ " FROM (" + sql + ")"
+ " GROUP BY ins_discipline_omschrijving, ins_srtgroep_omschrijving"
+ " ORDER BY ins_discipline_omschrijving, ins_srtgroep_omschrijving"
// Let op: sortering (en groepering) op eerste 3 kolomen
// Ruimtegebonden objecten
var sqlR = " SELECT ins_deel_omschrijving"
+ " , ins_srtdeel_key"
+ " , aog.alg_gebouw_code || '-' || aog.alg_verdieping_code || '-' || aog.alg_ruimte_nr plaats_eigenaar"
+ " , id.ins_deel_key"
+ " , (SELECT MAX('R') FROM res_deel rd, res_activiteitdiscipline rad WHERE rd.res_deel_verwijder IS NULL AND rd.res_discipline_key = rad.res_discipline_key AND rd.res_ins_deel_key = id.ins_deel_key AND rad.res_discipline_key != " + S("vis_parking_key") + ") reserveerbaar"
+ " , id.ins_alg_ruimte_type"
+ " FROM alg_v_onroerendgoed_gegevens aog"
+ " , ins_deel id"
+ " , alg_locatie l"
+ " , alg_district di"
+ " WHERE id.ins_alg_ruimte_key = aog.alg_ruimte_key"
+ " AND aog.alg_locatie_key = l.alg_locatie_key"
+ " AND l.alg_district_key = di.alg_district_key"
+ " AND id.ins_alg_ruimte_type = 'R'"
+ " AND id.ins_deel_parent_key " + ((ins_parent_key > -1)? " = " + ins_parent_key : "IS NULL")
+ " AND id.ins_deel_verwijder IS NULL"
+ " AND (id.ins_deel_vervaldatum IS NULL OR id.ins_deel_vervaldatum > TRUNC(SYSDATE))"
+ ((locatie_key > -1) ? " AND aog.alg_locatie_key = " + locatie_key : "")
+ ((gebouw_key > -1) ? " AND aog.alg_gebouw_key = " + gebouw_key : "")
+ ((verdieping_key > -1) ? " AND aog.alg_verdieping_key = " + verdieping_key : "")
+ ((ruimte_key > -1) ? " AND aog.alg_ruimte_key = " + ruimte_key : "");
sqlR = discx3d (sqlR,
"id.ins_discipline_key",
"di.alg_regio_key",
"l.alg_district_key",
"aog.alg_locatie_key",
"aog.alg_gebouw_key",
"aog.alg_verdieping_key",
"aog.alg_ruimte_key",
"", // b.prs_bedrijf_key:
"", // d.prs_afdeling_key:
autfunction,
'', // disc_key
0);
// Terreingebonden objecten
var sqlT = " SELECT ins_deel_omschrijving"
+ " , ins_srtdeel_key"
+ " , aog.alg_terreinsector_code || '-' || aog.alg_terreinsector_naam plaats_eigenaar"
+ " , id.ins_deel_key"
+ " , (SELECT MAX('R') FROM res_deel rd WHERE rd.res_deel_verwijder IS NULL AND rd.res_ins_deel_key = id.ins_deel_key) reserveerbaar"
+ " , id.ins_alg_ruimte_type"
+ " FROM alg_v_onroerendgoed_gegevens aog"
+ " , ins_deel id"
+ " , alg_locatie l"
+ " , alg_district di"
+ " WHERE id.ins_alg_ruimte_key = aog.alg_terreinsector_key"
+ " AND aog.alg_locatie_key = l.alg_locatie_key"
+ " AND l.alg_district_key = di.alg_district_key"
+ " AND id.ins_alg_ruimte_type = 'T'"
+ " AND id.ins_deel_parent_key " + ((ins_parent_key > -1)? " = " + ins_parent_key : "IS NULL")
+ " AND id.ins_deel_verwijder IS NULL"
+ " AND (id.ins_deel_vervaldatum IS NULL OR id.ins_deel_vervaldatum > TRUNC(SYSDATE))"
+ ((locatie_key > -1) ? " AND aog.alg_locatie_key = " + locatie_key : "")
+ ((terrein_key > -1) ? " AND aog.alg_terreinsector_key = " + terrein_key : "");
sqlT = discx3d (sqlT,
"id.ins_discipline_key",
"di.alg_regio_key",
"l.alg_district_key",
"aog.alg_locatie_key",
"aog.alg_terreinsector_key",
"", //aog.alg_verdieping_key,
"", //aog.alg_ruimte_key,
"", // b.prs_bedrijf_key:
"", // d.prs_afdeling_key:
autfunction,
'', // disc_key
0);
// Werkplekgebonden objecten
var sqlW = " SELECT ins_deel_omschrijving"
+ " , ins_srtdeel_key"
+ " , aog.alg_gebouw_code || '-' || aog.alg_verdieping_code || '-' || aog.alg_ruimte_nr || '/' || w.prs_werkplek_volgnr plaats_eigenaar"
+ " , id.ins_deel_key"
+ " , (SELECT MAX('R') FROM res_deel rd WHERE rd.res_deel_verwijder IS NULL AND rd.res_ins_deel_key = id.ins_deel_key) reserveerbaar"
+ " , id.ins_alg_ruimte_type"
+ " FROM alg_v_onroerendgoed_gegevens aog"
+ " , prs_werkplek w"
+ " , ins_deel id"
+ " , alg_locatie l"
+ " , alg_district di"
+ " WHERE id.ins_alg_ruimte_key = w.prs_werkplek_key"
+ " AND w.prs_alg_ruimte_key = aog.alg_ruimte_key"
+ " AND aog.alg_locatie_key = l.alg_locatie_key"
+ " AND l.alg_district_key = di.alg_district_key"
+ " AND id.ins_alg_ruimte_type = 'W'"
+ " AND id.ins_deel_parent_key " + ((ins_parent_key > -1) ? "="+ins_parent_key : "IS NULL")
+ " AND id.ins_deel_verwijder IS NULL"
+ ((locatie_key > -1) ? " AND aog.alg_locatie_key = " + locatie_key : "")
+ ((gebouw_key > -1) ? " AND aog.alg_gebouw_key = " + gebouw_key : "")
+ ((verdieping_key > -1) ? " AND aog.alg_verdieping_key = " + verdieping_key : "")
+ ((ruimte_key > -1) ? " AND aog.alg_ruimte_key = " + ruimte_key : "");
sqlW = discx3d (sqlW,
"id.ins_discipline_key",
"di.alg_regio_key",
"l.alg_district_key",
"aog.alg_locatie_key",
"aog.alg_gebouw_key",
"aog.alg_verdieping_key",
"aog.alg_ruimte_key",
"", // b.prs_bedrijf_key:
"", // d.prs_afdeling_key:
autfunction,
'', // disc_key
0);
// Afdelingsgebonden objecten, niet in alle gevallen meenemen
// TODO (ooit): beperken tot afdelingen met personen met werkplekken binnen de scope.
var sqlA = " SELECT ins_deel_omschrijving"
+ " , ins_srtdeel_key"
+ " , a.prs_afdeling_omschrijving plaats_eigenaar"
+ " , id.ins_deel_key"
+ " , (SELECT MAX('R') FROM res_deel rd WHERE rd.res_deel_verwijder IS NULL AND rd.res_ins_deel_key = id.ins_deel_key) reserveerbaar"
+ " , id.ins_alg_ruimte_type"
+ " FROM ins_deel id"
+ " , prs_v_afdeling a"
+ " , prs_v_afdeling_boom boom"
+ " , prs_bedrijf b"
+ " WHERE id.ins_alg_ruimte_key = a.prs_afdeling_key"
+ " AND a.prs_bedrijf_key = b.prs_bedrijf_key"
+ " AND a.prs_afdeling_key = boom.prs_afdeling_key"
+ " AND id.ins_alg_ruimte_type = 'A'"
+ " AND id.ins_deel_parent_key " + ((ins_parent_key > -1)? " = " + ins_parent_key : "IS NULL")
+ " AND id.ins_deel_verwijder IS NULL"
+ " AND (id.ins_deel_vervaldatum IS NULL OR id.ins_deel_vervaldatum > TRUNC(SYSDATE))"
+ ((afd_key > -1) ? " AND id.ins_alg_ruimte_key = " + afd_key : "");
sqlA = discx3d (sqlA,
"id.ins_discipline_key",
"", //"di.alg_regio_key",
"", //"l.alg_district_key",
"", //"aog.alg_locatie_key",
"", //"aog.alg_gebouw_key",
"", //"aog.alg_verdieping_key",
"", //"aog.alg_ruimte_key",
"b.prs_bedrijf_key",
"boom.prs_afdeling_key",
autfunction,
"", // disc_key
1);
// Persoonsgebonden objecten
// Neemt de ORG-scope mee, maar ook de plaatscope via de werkplekken:
// als de persoon binnen de scope een wp heeft, dan wordt die getoond
var sqlP = " SELECT ins_deel_omschrijving"
+ " , ins_srtdeel_key"
+ " , pf.prs_perslid_naam_friendly plaats_eigenaar"
+ " , id.ins_deel_key"
+ " , (SELECT MAX('R') FROM res_deel rd WHERE rd.res_deel_verwijder IS NULL AND rd.res_ins_deel_key = id.ins_deel_key) reserveerbaar"
+ " , id.ins_alg_ruimte_type"
+ " FROM ins_deel id"
+ " , prs_v_perslid_fullnames_all pf"
+ " , prs_perslid p"
+ " , prs_bedrijf b"
+ " , prs_v_afdeling_boom boom"
+ " ,prs_perslidwerkplek pwp"
+ " ,alg_v_onrgoed_boom aog"
+ " ,prs_werkplek w"
+ " ,alg_locatie l"
+ " ,alg_district di"
+ " WHERE id.ins_alg_ruimte_key = pf.prs_perslid_key"
+ " AND id.ins_alg_ruimte_type = 'P'"
+ " AND p.prs_afdeling_key = boom.prs_afdeling_key"
+ " AND boom.prs_bedrijf_key = b.prs_bedrijf_key"
+ " AND p.prs_perslid_key = pf.prs_perslid_key"
+ " AND p.prs_perslid_key = pwp.prs_perslid_key"
+ " AND pwp.prs_werkplek_key = w.prs_werkplek_key"
+ " AND w.prs_alg_ruimte_key = aog.alg_ruimte_key"
+ " AND aog.alg_locatie_key = l.alg_locatie_key"
+ " AND l.alg_district_key = di.alg_district_key"
+ " AND id.ins_deel_verwijder IS NULL"
+ " AND (id.ins_deel_vervaldatum IS NULL OR id.ins_deel_vervaldatum > TRUNC(SYSDATE))"
+ " AND id.ins_deel_parent_key " + ((ins_parent_key > -1)? " = " + ins_parent_key : "IS NULL")
+ ((prs_key > -1) ? " AND id.ins_alg_ruimte_key = " + prs_key : "")
+ ((locatie_key > -1) ? " AND aog.alg_locatie_key = " + locatie_key : "")
+ ((gebouw_key > -1) ? " AND aog.alg_gebouw_key = " + gebouw_key : "")
+ ((verdieping_key > -1) ? " AND aog.alg_verdieping_key = " + verdieping_key : "")
+ ((ruimte_key > -1) ? " AND aog.alg_ruimte_key = " + ruimte_key : "");
sqlP = discx3d (sqlP,
"id.ins_discipline_key",
"di.alg_regio_key",
"l.alg_district_key",
"aog.alg_locatie_key",
"aog.alg_gebouw_key",
"aog.alg_verdieping_key",
"aog.alg_ruimte_key",
"b.prs_bedrijf_key",
"boom.prs_afdeling_key",
autfunction,
"", // disc_key
1);
sql = "SELECT recs.* "
+ " , " + lcl.xsqla('sd.ins_srtdeel_omschrijving', 'sd.ins_srtdeel_key')
+ " , " + lcl.xsqla('sg.ins_srtgroep_omschrijving', 'sg.ins_srtgroep_key')
+ " , " + lcl.xsqla('ins_discipline_omschrijving', 'ins_discipline_key')
+ " , sg.ins_discipline_key"
+ " FROM ("
+ sqlR
+ (metWerkplekgebonden ? " UNION " + sqlW : "")
+ (metPersoonsgebonden ? " UNION " + sqlP : "")
+ (metAfdelingsgebonden ? " UNION " + sqlA : "")
+ (metTerreingebonden ? " UNION " + sqlT : "")
+ ") recs"
+ " , ins_srtdeel sd"
+ " , ins_srtgroep sg"
+ " , ins_discipline disc"
+ " WHERE sd.ins_srtdeel_key = recs.ins_srtdeel_key"
+ " AND sd.ins_srtgroep_key = sg.ins_srtgroep_key"
+ " AND sg.ins_discipline_key = disc.ins_discipline_key"
+ ((mld_key > -1) ? " AND ins_deel_key IN (SELECT ins_deel_key FROM mld_melding_object WHERE mld_melding_object_verwijder IS NULL AND mld_melding_key = " + mld_key + ")" : "")
+ ((ins_key > -1) ? " AND id.ins_deel_key = " + ins_key : "")
if (grp_sel)
{
sql += " AND ins_discipline_omschrijving || ' ' || ins_srtgroep_omschrijving = " + safe.quoted_sql(grp_sel)
+ " ORDER BY 3, 2, 1";
}
else
{
sql = "SELECT COUNT(*) numberInGroup"
+ " , ins_discipline_omschrijving || ' ' || ins_srtgroep_omschrijving ins_srtgroep_omschrijving"
+ " FROM (" + sql + ")"
+ " GROUP BY ins_discipline_omschrijving, ins_srtgroep_omschrijving"
+ " ORDER BY ins_discipline_omschrijving, ins_srtgroep_omschrijving";
}
}
var rst = new ResultsetTable({sql: sql,
keyColumn: "ins_deel_key",
@@ -404,11 +538,10 @@ else
detailColumn: grp_sel?fncolHeader:null,
headerColumn: grp_sel?"ins_deel_omschrijving":"",
asideColumn: grp_sel?fnAside:null,
subheaderColumn: grp_sel?fncolsubHeader:"",
subheaderColumn: grp_sel?(fronto?fnGereserveerdVanTot:fncolsubHeader):"",
ID: "deelstable",
showAll: true
});
var cnt = rst.processResultset();
CONTENT_END();