ASFC#34371: Start en stopmoment bij schoonmaak via inspecties kunnen vastleggen.

UWVA#35539: ins: kan gedane inspectie aanpassen.

svn path=/Website/trunk/; revision=29125
This commit is contained in:
Maykel Geerdink
2016-04-21 14:51:14 +00:00
parent 3a94eb9c00
commit ae2ffe7492

View File

@@ -0,0 +1,360 @@
<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: ins_show_inspect.asp
Description: Details van een inpectie.
Parameters: deelsrtcont_key (geen verschil).
Context: Inline actie ins_list.inc of actie ins_inspect_list
Note: Parameter mobile doet niets met navigatie, sluiten enzo, die submit gewoon.
Resultaat van een submit is een json object
*/
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/kenmerk_common.inc" -->
<!-- #include file="../Shared/calendar.inc" -->
<!-- #include file="../Shared/save2db.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="ins_flexkenmerksrtcontrole.inc" -->
<!-- #include file="ins.inc" -->
<%
FCLTHeader.Requires({ plugins: ["jQuery", "suggest", "kenmerk"],
js: ["jquery.timepicker-table.js"],
css: ["timePicker-table.css"] });
var ins_key = getQParamInt("ins_key");
var srtcont_key = getQParamInt("srtcont_key");
var deelsrtcont_key = getQParamInt("deelsrtcont_keys", -1); // Bestaande inspectie indien meegegeven.
%>
<html>
<head>
<% FCLTHeader.Generate(); %>
<%
var sql = "SELECT ins_deelsrtcontrole_datum"
+ " , ins_controlemode_key"
+ " , ins_deelsrtcontrole_opmerking"
+ " , ins_deelsrtcontrole_plandatum"
+ " , ins_deelsrtcontrole_status"
+ " FROM ins_deelsrtcontrole"
+ " WHERE ins_deelsrtcontrole_key = " + deelsrtcont_key;
var oRs = Oracle.Execute(sql);
var deelsrtcontrole_datum = oRs("ins_deelsrtcontrole_datum").Value != null? new Date(oRs("ins_deelsrtcontrole_datum").Value): null;
var controlemode_key = oRs("ins_controlemode_key").Value;
var deelsrtcontrole_opmerking = oRs("ins_deelsrtcontrole_opmerking").Value;
var deelsrtcontrole_plandatum = oRs("ins_deelsrtcontrole_plandatum").Value != null? new Date(oRs("ins_deelsrtcontrole_plandatum").Value) : null;
var deelsrtcontrole_status = oRs("ins_deelsrtcontrole_status").Value;
var deelsrtcontrole_status_str = ins.getinsstatustext(oRs("ins_deelsrtcontrole_status").Value);
var eenheid = -1;
var scmode = 1; // 0 = Momentmode, 1 = Intervalmode.
var sctype = -1;
var vervaldatum = null;
var vervallen = false;
var info = "";
sql = "SELECT *"
+ " FROM (WITH defined_inspect AS (SELECT isc.ins_srtcontrole_key"
+ " , isc.ins_srtcontrole_eenheid"
+ " , isc.ins_srtcontrole_periode"
+ " , isc.ins_srtcontrole_mode"
+ " , id.ins_deel_key"
+ " , isc.ins_srtcontrole_info"
+ " , isc.ins_srtcontrole_type"
+ " , id.ins_deel_aanmaak"
+ " FROM ins_deel id"
+ " , ins_srtdeel s"
+ " , ins_srtcontrole isc"
+ " WHERE s.ins_srtdeel_key = id.ins_srtdeel_key"
+ " AND (isc.ins_srtcontrole_niveau = 'S'"
+ " AND isc.ins_srtinstallatie_key = id.ins_srtdeel_key"
+ " OR isc.ins_srtcontrole_niveau = 'G'"
+ " AND isc.ins_srtinstallatie_key = s.ins_srtgroep_key"
+ " OR isc.ins_srtcontrole_niveau = 'D'"
+ " AND isc.ins_srtinstallatie_key = id.ins_discipline_key)"
+ " AND id.ins_deel_key IN (" + ins_key + "))"
+ " SELECT DISTINCT COALESCE (xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) eenheid"
+ " , di.ins_srtcontrole_info info"
+ " , di.ins_srtcontrole_mode scmode"
+ " , di.ins_srtcontrole_type sctype"
+ " , xcp.ins_srtcontroledl_xcp_eind vervaldatum"
+ " FROM defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " , ins_deelsrtcontrole idsc"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND di.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND di.ins_srtcontrole_key = idsc.ins_srtcontrole_key" // Er kan nog voor de eerste keer geinspecteerd moeten worden.
+ " AND idsc.ins_deel_key = di.ins_deel_key"
+ " AND COALESCE (xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) > 0"
+ " AND idsc.ins_deelsrtcontrole_key = " + deelsrtcont_key
+ " )";
var oRs = Oracle.Execute(sql);
eenheid = oRs("eenheid").Value;
info = oRs("info").Value;
scmode = oRs("scmode").Value;
sctype = oRs("sctype").Value;
vervaldatum = oRs("vervaldatum").Value != null? new Date(oRs("vervaldatum").Value) : null;
vervallen = vervaldatum != null && vervaldatum < new Date();
%>
<script type="text/javascript">
function ins_start()
{
if (confirm(L("lcl_ins_starting")))
{
var data = { ins_keys: <%=ins_key%>,
srtcont_key_arr: <%=srtcont_key%>
};
protectRequest.dataToken(data);
$.post( "ins_inspect_start.asp"
, data
, FcltCallbackRefresh
, "json"
);
}
}
function ins_edit(actie)
{
if (FcltMgr.startEdit(window))
window.location.href = "ins_edit_inspect.asp?ins_keys=<%=ins_key%>&srtcont_keys=<%=srtcont_key%>&deelsrtcont_keys=<%=deelsrtcont_key%>"
+ (actie == "P"? "&plan=1" : "")
+ (actie == "C"? "&close=1" : "");
}
function ins_finish()
{
if (confirm(L("lcl_ins_finishing")))
{
var data = { ins_keys: <%=ins_key%>,
dlsrtcont_key_arr: <%=deelsrtcont_key%>
};
protectRequest.dataToken(data);
$.post( "ins_inspect_finish.asp"
, data
, FcltCallbackRefresh
, "json"
);
}
}
function ins_cancel()
{
FcltMgr.closeDetail(window, { cancel: true } );
}
function ins_melding()
{ // Meldbron "Inspection" meegeven (mld_meldbron_key = 10).
FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=fo&meldbronkey=10&ins_key=<%=ins_key%>", "<%=L("lcl_add")%>");
}
</script>
</head>
<body id="editbody">
<% // Melding aanmaakbaar? Alleen meldingen die enigzins beperkt zijn tot onze object(soort/groep)
var canMelding = false;
var sql = "SELECT COUNT(*) aantal"
+ " FROM mld_stdmelding msm"
+ " , ins_tab_discipline itd"
+ " , ins_srtdiscipline isd"
+ " , ins_deel d"
+ " , ins_srtdeel s"
+ " , ins_srtgroep g"
+ " 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 d.ins_deel_key = " + ins_key
+ " AND d.ins_srtdeel_key = s.ins_srtdeel_key"
+ " AND s.ins_srtgroep_key = g.ins_srtgroep_key"
+ " AND ( msm.ins_srtinst_niveau = 'S' AND ins_srtinst_key = d.ins_srtdeel_key"
+ " OR msm.ins_srtinst_niveau = 'G' AND ins_srtinst_key = g.ins_srtgroep_key"
+ " OR msm.ins_srtinst_niveau = 'D' AND ins_srtinst_key = g.ins_discipline_key"
// + " OR msm.ins_srtinst_niveau IS NULL" // is wel h<><68>l algemeen
+ " )";
var oRs = Oracle.Execute(sql);
canMelding = (oRs("aantal").Value > 0);
oRs.Close();
// Als object is vervallen dan kun je niet meer inspecteren en uitstellen.
var this_ins = ins.func_enabled_deel(ins_key);
// Gedaande inspecties kunnen alleen geedit worden.
// Ik zie alleen objecten waar ik read rechten (3d) op heb. Dan mag ik ze ook verder inzien.
var canEdit = !vervallen && deelsrtcontrole_status >= 0 && deelsrtcontrole_status < 6 && this_ins.canChange;
//var canShow = deelsrtcontrole_status >= 0 && this_ins.canRead && !canEdit;
var canShow = deelsrtcontrole_status >= 0 && this_ins.canRead;
var canPlan = !vervallen && this_ins.canInspect && (deelsrtcontrole_status < 0);
var canStart = !vervallen && this_ins.canInspect && (deelsrtcontrole_status <= 0);
// Als de inspectie vervallen is moet je alleen nog de lopende inspecties kunnen gereed melden en afronden.
//var canClose = (!vervallen || (vervallen && (deelsrtcontrole_status == 0 || deelsrtcontrole_status == 2))) && this_ins.canInspect && (deelsrtcontrole_status < 5);
//var canFinish = this_ins.canInspect && deelsrtcontrole_status == 5;
var canClose = (!vervallen || (vervallen && (deelsrtcontrole_status == 0 || deelsrtcontrole_status == 2))) && deelsrtcontrole_status < 5;
var canFinish =(!vervallen || (vervallen && (deelsrtcontrole_status == 0 || deelsrtcontrole_status == 2))) && deelsrtcontrole_status == 5;
var buttons = [];
if (canStart)
buttons.push({title: L("lcl_ins_start"), action: "ins_start()", icon: "fileopen.png" });
if (canPlan)
buttons.push({title: L("lcl_ins_schedule"), action: "ins_edit('P')", icon: "wijzigen.png" });
if (canEdit)
buttons.push({title: L("lcl_change"), action: "ins_edit()", icon: "wijzigen.png" });
if (canClose)
buttons.push({title: L("lcl_ins_close") + "/" + L("lcl_ins_finish"), action: "ins_edit('C')", icon: "close.png" });
if (canFinish)
buttons.push({title: L("lcl_ins_finish"), action: "ins_finish()", icon: "close.png" });
if (canMelding)
buttons.push({title: L("lcl_do_amelding_hint"), action: "ins_melding()", icon: "doemelding.png" });
//buttons.push({title: L("lcl_cancel"), icon: "undo.png", action: "ins_cancel()"});
var titletext;
switch(sctype)
{
case 1: titletext = L("lcl_ins_srtcontrole_insp"); break;
case 2: titletext = L("lcl_ins_srtcontrole_repl"); break;
case 3: titletext = L("lcl_ins_srtcontrole_cert"); break;
default: titletext = L("lcl_menu_ins_controle"); break;
}
IFRAMER_HEADER(titletext, buttons);
%>
<form name="u2" onSubmit="return false;">
<% BLOCK_START("insShow", L("lcl_show"));
var sql = " SELECT isc.ins_srtcontrole_key"
+ " , " + lcl.xsqla('isc.ins_srtcontrole_omschrijving', 'isc.ins_srtcontrole_key')
+ " FROM ins_srtcontrole isc"
+ " WHERE isc.ins_srtcontrole_key = " + srtcont_key;
var oRs = Oracle.Execute(sql);
var ins_srtcontrole_oms = oRs("ins_srtcontrole_omschrijving").Value;
ROTEXTAREATR("fldtxt", L("lcl_ins_controle"), ins_srtcontrole_oms, {suppressEmpty: true });
ROTEXTAREATR("fldtxt", L("lcl_ins_info"), info, {html: "rows='3'", trclass: "invoerinsp", id: "srtcontrole_info", suppressEmpty: true });
// Status tonen.
var params = {};
params = { infoPointer: { Url: "appl/shared/status_info.asp?insc_key=" + deelsrtcont_key + "&urole=bo",
Title: L("lcl_status_details") + " " + deelsrtcont_key
}
}
params.suppressEmpty = true;
ROFIELDTR("fld", L("lcl_ins_status"), deelsrtcontrole_status_str, params);
if (deelsrtcontrole_status == 0 || deelsrtcontrole_status == 2)
FCLTcalendar("plandatum",
{ label: L("lcl_opdr_plandate"),
datum: deelsrtcontrole_plandatum,
trclass: "invoerinsp",
//minDate: minDate,
timeField: true,
timeStep: 60,
startTime: 0,
endTime: 23.75,
readonly: true,
suppressEmpty: true
});
if (deelsrtcontrole_status >= 5)
{
FCLTcalendar("deelsrtcontrole_plandatum",
{ label: L("lcl_ins_controle_plandate"),
datum: deelsrtcontrole_plandatum,
trclass: "invoerinsp",
timeField: true,
timeStep: 60,
startTime: 0,
endTime: 23.75,
readonly: true,
suppressEmpty: true
});
FCLTcalendar("deelsrtcontrole_datum",
{ label: L("lcl_ins_controle_datum"),
datum: deelsrtcontrole_datum? deelsrtcontrole_datum : new Date(),
//minDate: minDate,
//maxDate: new Date(),
trclass: "invoerinsp",
timeField: true,
timeStep: 60,
startTime: 0,
endTime: 23.75,
// Als de inspectie vervallen is moet je alleen nog de lopende inspecties kunnen gereed melden en afronden. De datum moet je dan ook nog kunnen invullen.
readonly: true
});
sql = "SELECT ins_controlemode_key"
+ " , " + lcl.xsqla('ins_controlemode_oms', 'ins_controlemode_key')
+ " FROM ins_controlemode"
+ " WHERE ins_srtcontrole_type = " + sctype
+ " ORDER BY 2";
// Methode is voor de status Afgemeld(5) en Historie/Verwerkt(6) altijd ingevuld.
FCLTselector("sel_controlemode",
sql,
{ label: L("lcl_ins_controle_mode"),
initKey: controlemode_key, // Als de controle mode bij multi verschillend is, dan is deze waarde -1.
//emptyOption: L("lcl_select_controlemode"),
readonly: true
});
}
ROTEXTAREATR("fldremark",
L("lcl_remark"),
deelsrtcontrole_opmerking,
{ html: "rows='8'",
trclass: "invoerinsp",
maxlength: 2000,
suppressEmpty: true
});
%>
<script type="text/javascript">
// In de interval mode moet de tijd bij de respijtdatum altijd invulbaar zijn.
// In de moment mode moet de tijd bij de plandatum alleen invulbaar zijn als de eenheid in uren(0) is.
var eenheid = <%=eenheid%>;
var scmode = <%=scmode%>;
if (scmode == 0 && eenheid != 0)
$("#time_from_plandatum").hide();
</script>
<%
BLOCK_END();
%>
</td>
</tr>
<tr>
<td>
<%
BLOCK_START("insFlex2", L("lcl_ins_additional_details")); //block over gehele breedte
%><div id='insFlexList'><% // Wrapper div voor dynamisch herladen
generateFlexKenmerkBlock({deelsrtcontrole_key: deelsrtcont_key,
srtcontrole_key: srtcont_key,
reado: true,
flexcolumns: 1
});
%></div><%
BLOCK_END();
IFACE.FORM_END();
%>
</form>
</body>
</html>