420 lines
17 KiB
Plaintext
420 lines
17 KiB
Plaintext
<%@ 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>
|