Files
Facilitor/APPL/INS/ins_show_deel.asp
Peter Feij 41eb8ab470 FSN#40190 aantal kan ook float zijn
svn path=/Website/trunk/; revision=33493
2017-04-14 09:38:29 +00:00

420 lines
17 KiB
Plaintext
Raw Blame History

<%@ language="javascript"%>
<% /*
$Revision$
$Id$
File: ins_show_deel.asp
Description: show detailed information of an object
Parameters: urole, ins_key
Context: Ook eventueel vanuit ../mld_object.asp
Note:
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="./ins_flexkenmerk.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/persoonselector.inc" -->
<!-- #include file="./ins.inc" -->
<%
FCLTHeader.Requires({ plugins: ["jQuery"],
js: ["../Shared/kenmerk_js.asp"] })
var urole = getQParamSafe("urole");
var ins_key = getQParamInt("ins_key");
var this_ins = ins.func_enabled_deel(ins_key);
user.auth_required_or_abort(this_ins.canReadAny);
if (this_ins.isSleCil)
var autfunction = "WEB_SLEBOF";
else
var autfunction = getQParam("pautfunction", (urole == "fo"? "WEB_INSFOF" : "WEB_INSMAN"));
var authparams = user.checkAutorisation(autfunction);
var sql, oRs;
sql = "SELECT d.ins_deel_omschrijving" // identificatie
+ " , s.ins_srtdeel_code"
+ " , " + lcl.xsqla('s.ins_srtdeel_omschrijving', 's.ins_srtdeel_key')
+ " , " + lcl.xsqla('g.ins_srtgroep_omschrijving', 'g.ins_srtgroep_key')
+ " , " + lcl.xsqla('dis.ins_discipline_omschrijving', 'dis.ins_discipline_key')
+ " , d.ins_deel_parent_key"
+ " , d.ins_alg_ruimte_type"
+ " , d.ins_alg_ruimte_key"
+ " , d.ins_alg_locatie_key"
+ " , d.ins_deel_aantal"
+ " , d.ins_deel_aanmaak"
+ " , d.ins_srtdeel_key"
+ " , g.ins_srtgroep_key"
+ " , dis.ins_discipline_key"
+ " , d.ins_deel_x"
+ " , ins_deel_y"
+ " , ins_deel_dwgx" // future: +", ins_deel_z"
+ " , d.ins_alg_ruimte_key_org"
+ " , d.ins_alg_ruimte_type_org"
+ " , d.ins_deel_vervaldatum"
+ " , d.ins_deel_actief"
+ " , d.ins_deel_verwijder"
+ " , d.ins_deel_state"
+ " , d.ins_deel_t_uitvoertijd.tijdsduur uitvoertijd"
+ " , d.ins_deel_t_uitvoertijd.eenheid uitvoertijd_eenheid"
+ " , d.ins_deel_opmerking" // omschrijving
+ " , s.ins_srtdeel_image"
+ " , " + lcl.xsqla('s.ins_srtdeel_eenheid', 's.ins_srtdeel_key')
+ " , d.prs_perslid_key_beh"
+ " FROM ins_deel d"
+ " , ins_srtdeel s"
+ " , ins_srtgroep g"
+ " , ins_tab_discipline dis"
+ " WHERE ins_deel_key = " + ins_key
+ " AND d.ins_srtdeel_key = s.ins_srtdeel_key"
+ " AND s.ins_srtgroep_key = g.ins_srtgroep_key"
+ " AND g.ins_discipline_key = dis.ins_discipline_key";
oRs = Oracle.Execute(sql);
var ins_deleted = oRs("ins_deel_verwijder").Value != null;
var desc = oRs("ins_deel_omschrijving").Value;
var opmerk = oRs("ins_deel_opmerking").Value;
var srtcode = oRs("ins_srtdeel_code").Value;
var sort = oRs("ins_srtdeel_omschrijving").Value;
var group = oRs("ins_srtgroep_omschrijving").Value;
var disc = oRs("ins_discipline_omschrijving").Value;
var parent_key = oRs("ins_deel_parent_key").Value;
var bind = oRs("ins_alg_ruimte_type").Value;
var bind_key = oRs("ins_alg_ruimte_key").Value;
var o_loc = parseInt(oRs("ins_alg_locatie_key").Value);
var aantal = oRs("ins_deel_aantal").Value;
var aanmaak = new Date(oRs("ins_deel_aanmaak").Value);
var vervaldatum = oRs('ins_deel_vervaldatum').Value;
var actief = oRs('ins_deel_actief').Value == 1;
var srtdeel_key = oRs("ins_srtdeel_key").Value;
var srtgroep_key = oRs("ins_srtgroep_key").Value;
var disc_key = oRs("ins_discipline_key").Value;
var getekend = oRs('ins_deel_dwgx').Value != null;
var xcoord = oRs('ins_deel_x').Value;
var ycoord = oRs('ins_deel_y').Value;
var state = oRs('ins_deel_state').Value;
var uitvoertijd = oRs('uitvoertijd').Value;
var uitvoertijd_eenheid = oRs('uitvoertijd_eenheid').Value || 'D';
var srtdeel_image = oRs('ins_srtdeel_image').Value;
var srtdeel_eenheid = oRs('ins_srtdeel_eenheid').Value;
var perslid_key_beh = oRs('prs_perslid_key_beh').Value;
var bind_lo = null;
var bind_key_lo = null;
var lent_out = false;
if (oRs('ins_alg_ruimte_key_org').Value != null)
{
// Object is currently lent out from:
bind_lo = oRs('ins_alg_ruimte_type_org').Value;
bind_key_lo = oRs('ins_alg_ruimte_key_org').Value;
lent_out = true;
}
oRs.close();
// We geven aan waar het object bij hoort
// Niet voor de lol, maar als label voor het specifieke ding
var binding_text = 'unknown';
var moreinfo = "";
if (parent_key != null)
{
binding_text = L("lcl_ins_parentobject");
moreinfo = "appl/ins/ins_deel.asp?ins_key=" + parent_key + "&urole=" + urole;
bind = "I"; // pseudotype
}
else
__Log("bind = " + bind);
switch (bind)
{
case 'R':
binding_text = L("lcl_obj_bind_r");
moreinfo = "appl/alg/alg_ruimte.asp?key=" + bind_key + "&urole=" + urole;
break;
case 'T':
binding_text = L("lcl_obj_bind_t");
moreinfo = "appl/alg/alg_terreinsector.asp?ter_key=" + bind_key + "&urole=" + urole;
break;
case 'W':
binding_text = L("lcl_obj_bind_w");
moreinfo = "appl/alg/alg_wp.asp?key=" + bind_key + "&urole=" + urole;
break;
case 'P':
binding_text = L("lcl_obj_bind_p");
moreinfo = "appl/fac/fac_user.asp?prs_key=" + bind_key;
break;
case 'A':
binding_text = L("lcl_obj_bind_a");
moreinfo = "appl/prs/prs_afdeling.asp?key=" + bind_key + "&urole=" + urole;
break;
case 'C':
binding_text = L("lcl_obj_bind_c");
moreinfo = "appl/prs/prs_contactpersoon.asp?key=" + bind_key + "&urole=" + urole;
break;
}
// Dat was het type / label, nu de instance
var binding_item = ins.getBindingItemString(bind, bind_key, parent_key);
// Melding aanmaakbaar? Alleen meldingen die enigzins beperkt zijn tot onze object(soort/groep)
var sql = "SELECT COUNT(*) aantal"
+ " FROM mld_stdmelding msm,"
+ " ins_tab_discipline itd,"
+ " ins_srtdiscipline isd"
+ " WHERE msm.mld_ins_discipline_key = itd.ins_discipline_key"
+ " AND mld_stdmelding_verwijder IS NULL"
+ " AND ((msm.mld_stdmelding_vervaldatum IS NULL) "
+ " OR (msm.mld_stdmelding_vervaldatum > SYSDATE))"
+ " AND EXISTS"
+ " (SELECT fw.ins_discipline_key"
+ " FROM fac_v_webgebruiker fw, fac_functie ff"
+ " WHERE msm.mld_ins_discipline_key = fw.ins_discipline_key"
+ " AND fw.prs_perslid_key = " + user_key
+ " AND fw.fac_functie_key = ff.fac_functie_key"
+ " AND ff.fac_functie_code IN ('WEB_MLDFOF')"// Backo mag geen meldingen aanmaken
+ " AND fw.fac_gebruiker_alg_level_write < 9)"// In theorie zouden we ook nog kunnen ALG-scopen...
+ " AND itd.ins_srtdiscipline_key = isd.ins_srtdiscipline_key"
+ " AND isd.ins_srtdiscipline_ins = 1"
+ " AND ( msm.ins_srtinst_niveau = 'S' AND ins_srtinst_key = " + srtdeel_key
+ " OR msm.ins_srtinst_niveau = 'G' AND ins_srtinst_key = " + srtgroep_key
+ " OR msm.ins_srtinst_niveau = 'D' AND ins_srtinst_key = " + disc_key
// + " OR msm.ins_srtinst_niveau IS NULL" // is wel h<><68>l algemeen
+ " )";
if (bind == "A")
sql += "AND alg_org_obj_niveau < 9"; // Dat is toch wel het minste
var oRs = Oracle.Execute(sql);
var canMelding = (oRs("aantal").Value > 0);
oRs.Close();
// Deel toevoegen aan reserveerbare delen.
var res_authparams = user.checkAutorisation("WEB_RESMSU", true);
var res_deel_key = -1;
if (res_authparams)
{
var binding = (bind_lo ? bind_lo : bind); // Gebonden aan uitlening gaat voor.
if (binding == "R" || binding == "T") // Alleen ruimtegebonden objecten mogen reserveerbaar zijn.
{
this_ins.hasRESMSU = true;
// Is dit deel al reserveerbaar?
var sql = "SELECT res_deel_key"
+ " FROM res_deel"
+ " WHERE res_deel_verwijder IS NULL"
+ " AND res_ins_deel_key = " + ins_key;
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
res_deel_key = oRs("res_deel_key").Value;
oRs.Close();
}
}
%>
<html>
<head>
<% FCLTHeader.Generate(); %>
<script type="text/javascript">
function ins_print()
{
window.open('./ins_xml.asp?ins_key='+<%=ins_key%>);
}
function showHistory()
{
FcltMgr.openDetail("appl/ins/ins_history_search.asp?ins_key=<%=ins_key%>&urole=<%=urole%>", "<%=L("lcl_history")%>");
}
function ins_reserveerbaar()
{
FcltMgr.openDetail("appl/mgt/res_deel.asp?mode=edit&id=<%=res_deel_key%>&res_ins_deel_key=<%=ins_key%>", "<%=L("res_deel")%>");
}
function ins_change()
{
if (FcltMgr.startEdit(window))
window.location.href = "ins_edit_deel.asp?ins_key=<%=ins_key%>&embedded=1&urole=<%=urole%>";
}
function ins_melding()
{
FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=fo&ins_key=<%=ins_key%>", "<%=L("lcl_add")%>");
}
function ins_delete()
{
FcltMgr.confirm(L("lcl_ins_del_txt_deel"), function() {
var data = {
key: <%=ins_key%>,
level: "D"
};
<% protectRequest.dataToken("data"); %>
$.post("ins_delete.asp",
data,
FcltCallbackClose,
"json");
});
}
function ins_copy()
{
FcltMgr.openDetail("appl/ins/ins_deel.asp?urole=bo" + "&ins_key=<%=ins_key%>" + "&ins_copy=1", L("lcl_ins_copy") + " " + L("lcl_shared_object").toLowerCase());
}
</script>
</head>
<body id="showbody">
<% var buttons = [];
this_ins.verbruiksmeter = false;
this_ins.contracts = false;
if (authparams.PRSwritelevel < 9 && urole == "bo") // Mag nog wel een keer naar ins.func_enabled_deel
{ // maar werd toch alleen hier gebruikt
// Bepaal of het hier gaat om een verbruiksmeter. Dan alleen klokje button tonen
sql = "SELECT MAX(ik.ins_kenmerk_meetwaarde) meetwaarde"
+ " FROM ins_kenmerk ik"
+ " , ins_kenmerkdeel ikd"
+ " , ins_deel d"
+ " WHERE d.ins_deel_key = ikd.ins_deel_key"
+ " AND ikd.ins_kenmerk_key = ik.ins_kenmerk_key"
+ " AND ikd.ins_kenmerkdeel_verwijder IS NULL"
+ " AND d.ins_deel_key = " + ins_key;
oRs = Oracle.Execute(sql);
this_ins.verbruiksmeter = oRs("meetwaarde").Value == 1;
}
var buttons = [ ];
if (this_ins.canChangeOwn)
buttons.push({title: L("lcl_change"), action: "ins_change()", icon: "wijzigen.png" });
if (canMelding)
buttons.push({title: L("lcl_do_amelding_hint"), action: "ins_melding()", icon: "doemelding.png" });
// Alleen historie kunnen tonen als het een verbruiksmeter betreft.
if (this_ins.verbruiksmeter)
buttons.push({title: L("lcl_history"), action: "showHistory()", icon: "history.png" });
if (this_ins.canCopy)
buttons.push({ title: L("lcl_mld_copy"), icon: "copy.png", action: "ins_copy()" });
if (this_ins.canDelete)
buttons.push({title: L("lcl_delete"), action: "ins_delete()", icon: "delete.png"});
if (this_ins.hasRESMSU)
buttons.push({title: L("lcl_reserveerbaar"), action: "ins_reserveerbaar()", icon: "television.png"});
buttons.push ({title: L("lcl_print"), action: "ins_print()", icon: "print.png" });
var headertitle = L("lcl_ins_frame_algemeen");
if (this_ins.isSleCil)
{
var sletype = (srtgroep_key == S("sle_ins_srt_groep_key")? "S" : "C");
if (sletype == "S")
headertitle = L("lcl_sle_sleutel");
else
headertitle = L("lcl_sle_cilinder");
}
IFRAMER_HEADER(headertitle, ins_deleted?[]:buttons);
%>
<div id="show">
<% if (ins_deleted)
{
%> <div class="ins_deleted"><%=L("lcl_record_is_deleted")%></div><%
}
%>
<form name="u2">
<% BLOCK_START("insIns", L("lcl_general_properties")); %>
<tr>
<td>
<table>
<% var params = { infoPointer: { Url: "appl/shared/status_info.asp?ins_key=" + ins_key + "&urole=" + urole,
Title: L("lcl_status_details") + " " + desc
}
}
ROFIELDTR("flddeel", L("lcl_obj_identification"), desc, params);
ROFIELDTR("fld", L("lcl_discipline"), disc);
ROFIELDTR("fld", L("lcl_obj_group"), group);
ROFIELDTR("fld", L("lcl_obj_sort"), sort + " (" + srtcode + ")");
ROFIELDTR("fld", binding_text, binding_item, {infoPointer:{Url : moreinfo, Title: ""}});
if (S("ins_explode_objects") == 0)
ROFIELDTR("fld", L("lcl_amount"), aantal + (srtdeel_eenheid ? " " + srtdeel_eenheid : ""));
ROFIELDTR("fld", L("lcl_ins_opmerking"), opmerk, {suppressEmpty: true});
if (false) { // later
// als het object technisch getekend zou kunnen zijn, geven we hier de status aan.
// Een vriendelijke optie zou zijn om in geval van niet-geplaatst-zijn hier de optie toe te voegen
// omdat direct alsnog te doen; wellicht zelfs ook voor VERplaatsen.
ROFIELDTR("fld", "", "TODO meer leuke info: reserveerbaar e.d.");
} %>
</table>
</td>
<td align="center">
<% if (srtdeel_image)
{
var imageFile = S("ins_image_path") + srtdeel_image;
var fso = new ActiveXObject("Scripting.FileSystemObject");
if (fso.FileExists(Server.MapPath(imageFile)))
{ %>
<img id="insphoto" src="<%=safe.htmlattr(imageFile)%>">
<% }
} %>
</td>
</tr>
<% BLOCK_END();
BLOCK_START("insGeo", L("lcl_ins_meta_data"));
ROFIELDTR("flddatetime", L("lcl_last_action"), toDateTimeString(aanmaak));
// Link naar de state_history
var params = { infoPointer: { Url: "appl/ins/ins_state_history.asp?ins_key=" + ins_key,
Title: L("lcl_status_details") + " " + desc
},
suppressEmpty: true
}
ROFIELDTR("fld", L("lcl_deel_state"), state, params);
ROFIELDTR("fld", L("lcl_ins_vervaldatum"), toDateString(vervaldatum), {suppressEmpty: true});
ROCHECKBOXTR("fldcheck", L("lcl_ins_active"), actief);
FCLTpersoonselector("personH", "sgins_manager",
{label: L("lcl_ins_manager"),
perslidKey: perslid_key_beh,
moreinfo: urole != 'fe',
suppressEmpty: true,
readonly: true});
if (lent_out)
ROFIELDTR("fld", "", L("lcl_obj_is_lent_out"));
if (getekend)
{
var params = { infoPointer: { Url: "../cad/showroom.asp?rKey=" + bind_key + "&ins_key=" + ins_key,
Title: L("lcl_fg_gotofgheader") + " " + desc,
Modal: true
}
}
ROFIELDTR("fld", "", L("lcl_obj_isgetekend"), params);
}
else
ROFIELDTR("fld", "", L("lcl_obj_nietgetekend"));
if (!(bind == 'A'||bind == 'P') && xcoord && ycoord)
{
// alleen plaatsgebonden objecten met ingevulde x/y krijgen een geo-blokje
ROFIELDTR("fldshort", L("lcl_obj_geoxcoord"), safe.jsfloat(xcoord)); // tonen met punt?
ROFIELDTR("fldshort", L("lcl_obj_geoycoord"), safe.jsfloat(ycoord));
}
BLOCK_END();
BLOCK_START("insRunTime", L("lcl_ins_additional_details"));
if (uitvoertijd)
uitvoertijd = uitvoertijd + " " + (uitvoertijd_eenheid == 'D'? L("lcl_mld_days") : L("lcl_mld_hours"))
ROFIELDTR("fldshort", L("lcl_ins_uitvoertijd"), uitvoertijd, {suppressEmpty: true});
BLOCK_END();
// Note: levert op deze manier (soms?) ongeldige html op (tr zonder table)
generateFlexKenmerkBlock({ urole: urole,
ins_key: ins_key,
srtdeelkey_array: srtdeel_key > 0? [srtdeel_key] : [],
reado: true,
flexcolumns: S("ins_flexcolumns")
});
%>
</form>
</div>
</body>
</html>