FSN#32209: Inspectielijst Mobile.

svn path=/Website/trunk/; revision=29710
This commit is contained in:
Maykel Geerdink
2016-06-14 13:56:47 +00:00
parent e585a1969d
commit eba4024e77
10 changed files with 490 additions and 1249 deletions

View File

@@ -520,10 +520,10 @@ ins = {checkAutLevel:
}
else // Gewone objecten
{
var iresult = ins.func_enabled_scope(ioRs("ins_discipline_key").Value,
ioRs("ins_alg_ruimte_type").Value,
ioRs("ins_alg_ruimte_key").Value);
user.auth_required_or_abort(iresult);
var iresult = ins.func_enabled_scope(ioRs("ins_discipline_key").Value,
ioRs("ins_alg_ruimte_type").Value,
ioRs("ins_alg_ruimte_key").Value);
user.auth_required_or_abort(iresult);
}
ioRs.Close();
@@ -615,7 +615,7 @@ ins = {checkAutLevel:
iresult.canChangeAlg = iresult.canWrite("WEB_INSMAN"); // Wijzigen algemene gegevens.
iresult.canCopy = iresult.canWrite("WEB_INSMAN"); // Kopi<70>ren.
}
iresult.canInspect = iresult.canWrite("WEB_INSUSE"); // Kopi<EFBFBD>ren.
iresult.canInspect = iresult.canWrite("WEB_INSUSE"); // Inspecteren.
iresult.canShowInsp = iresult.canRead("WEB_INSUSE"); // Inzien.
iresult.canChangeXcp = iresult.canWrite("WEB_INSMAN"); // Interval kenmerken/parameters wijzigen (waarden in ins_srtcontroledl_xcp tabel).
return iresult;

View File

@@ -118,32 +118,13 @@ user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel
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 (" + ingesloten.join(",") + "))"
+ " SELECT DISTINCT COALESCE (xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) eenheid"
+ " FROM (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"
+ " , di.ins_deel_aanmaak"
+ " FROM defined_inspect di"
+ " FROM ins_v_defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " , ins_deelsrtcontrole idsc"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"

View File

@@ -1,544 +0,0 @@
<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: ins_inspect_end.asp
Description: Afmelddatum van inspectie opgeven.
Parameters: ins_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_arr = getQParamIntArray("ins_keys");
var srtcont_key_arr = getQParamIntArray("srtcont_keys");
var dlsrtcont_key_arr = getQParamIntArray("dlsrtcont_keys");
var multi = ins_key_arr.length > 1;
var tobeended = 0;
var ingesloten = [];
var ingeslotensc = [];
var ingeslotendsc = [];
// Bepaal de objecten/delen in de selectie die
// ook echt ingepland kunnen of mogen worden.
for (var i = 0; i < ins_key_arr.length; i++)
{
var this_ins = ins.func_enabled_deel(ins_key_arr[i]);
// Als ik mag inspecteren mag ik ook inplannen.
if (this_ins.canInspect)
{ // Alle Arrays zijn even groot.
ingesloten.push(ins_key_arr[i]);
ingeslotensc.push(srtcont_key_arr[i]);
ingeslotendsc.push(dlsrtcont_key_arr[i]);
tobeended++;
}
}
user.anything_todo_or_abort(tobeended > 0); // We klagen niet over enkele wel en enkele niet
%>
<html>
<head>
<% FCLTHeader.Generate(); %>
<%
var eenheid = -1;
var scmode = 1; // 0 = Momentmode, 1 = Intervalmode.
var sctype = -1;
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"
+ " 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 (" + ingesloten.join(",") + "))"
+ " 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"
+ " 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 di.ins_deel_key IN (" + ingesloten.join(",") + ")"
+ " AND idsc.ins_deel_key(+) IN (" + ingesloten.join(",") + ")"
+ " AND COALESCE (xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) > 0"
+ " AND di.ins_srtcontrole_key IN (" + ingeslotensc.join(",") + ")"
+ " AND (xcp.ins_srtcontroledl_xcp_eind(+) IS NULL OR xcp.ins_srtcontroledl_xcp_eind(+) > TRUNC(SYSDATE, 'DD'))" + ")";
var oRs = Oracle.Execute(sql);
eenheid = oRs("eenheid").Value;
info = oRs("info").Value;
scmode = oRs("scmode").Value;
sctype = oRs("sctype").Value;
oRs.MoveNext();
while (!oRs.eof)
{
if (eenheid != oRs("eenheid").Value)
eenheid = -1;
if (scmode != oRs("scmode").Value)
scmode = -1;
if (sctype != oRs("sctype").Value)
{
info = "";
sctype = -1; // Er zijn inspecties met verschillende soort ocntroles. Dan maar -1.
}
oRs.MoveNext();
}
%>
<script type="text/javascript">
var inspected_srtcontroles = new Array();
var eenheid = -1;
<%
if (sctype < 0)
abort_with_warning(L("lcl_ins_no_same_srtcontrole"));
// Als er meerdere inspecties zijn dan hebben bovenstaande variablen alleen een geldige waarde als het voor alle inspecties hetzelfde is.
if (ingesloten.length == 1)
{
// Is er op de inspectiedatum of op het inspectieuur al geinspecteerd voor deze objecten?
sql = "SELECT idsc.ins_srtcontrole_key"
+ " , idsc.ins_deelsrtcontrole_datum"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, isc.ins_srtcontrole_eenheid) eenheid"
+ " , isc.ins_srtcontrole_mode"
+ " FROM ins_deelsrtcontrole idsc"
+ " , ins_srtcontrole isc"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE idsc.ins_srtcontrole_key = isc.ins_srtcontrole_key"
+ " AND idsc.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND idsc.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND idsc.ins_deel_key IN (" + ingesloten.join(",") + ")"
+ " AND COALESCE(xcp.ins_srtcontroledl_xcp_periode, isc.ins_srtcontrole_periode) > 0"
+ " AND idsc.ins_srtcontrole_key = " + ingeslotensc.join(",");
var oRs = Oracle.Execute(sql);
while (!oRs.eof)
{ %>
inspected_srtcontroles[inspected_srtcontroles.length] = { srtcontrole_key: <%=oRs("ins_srtcontrole_key").Value%>,
datum: <%=new Date(oRs("ins_deelsrtcontrole_datum").Value).getTime()%>,
eenheid: <%=oRs("eenheid").Value%>,
mode: <%=oRs("ins_srtcontrole_mode").Value%>};
<% oRs.MoveNext();
}
}
%>
function ins_submit(finish)
{
// Controle verplichte velden.
if (!validateForm("u2"))
return false;
// Controleren voor uren inspectie of inspectie uitvoerdatum na de laatste uitvoerdatum ligt.
// Bij multi geldt de laatste uitvoerdatum van alle objecten.
if (lastinspectdatum && new Date(parseInt($("#deelsrtcontrole_datum").val())) <= lastinspectdatum)
{
alert(L("lcl_ins_controle_after_lastinspect"));
return false;
}
// Controleren voor uren inspectie of inspectie in toekomst of respijtdatum in verleden ligt.
// Dit kan voorkomen omdat de uren voor vandaag de hele dag ingevuld kunnen worden.
// Het zou dus eigenlijk alleen voor uren inspecties voor kunnen komen.
// Alleen controleren als eenheid is uren. Bij invoer kies je dan ook een bepaald uur.
if (eenheid == 0 && new Date(parseInt($("#deelsrtcontrole_datum").val())) > new Date())
{ // Invoeren inspecteren.
alert(L("lcl_ins_controle_not_future")); // Controledatum mag niet in de toekomst liggen!
return false;
}
for (var i = 0; i < inspected_srtcontroles.length; i++)
{
// Voor multi objecten is inspected_srtcontroles leeg.
// In het save script worden die inspecties er dan wel uitgefilterd/overgeslagen.
if (inspected_srtcontroles[i].srtcontrole_key == $("#sel_srtcontrole").val())
{
// Controle of er op de inspectiedatum of op het inspectieuur al inspecties zijn geweest
// TODO: Wat te doen met extra inspecties. En per week/maand/jaar enz.
var controle_datum_midnight = new Date(parseInt($("#deelsrtcontrole_datum").val())).midnight().getTime()
var controle_datum_uur = new Date(new Date(parseInt($("#deelsrtcontrole_datum").val())).setMinutes(0,0,0)).getTime()
var controle_datum = new Date(parseInt($("#deelsrtcontrole_datum").val())).getTime()
if (controle_datum_midnight == new Date(parseInt(inspected_srtcontroles[i].datum)).midnight().getTime() &&
inspected_srtcontroles[i].eenheid > 0 &&
inspected_srtcontroles[i].mode == 0) // Geldt alleen voor momentmodus.
{ // Op dezelfde dag mag niet.
alert(L("lcl_ins_double_inspection_today"));
return false;
}
else if (controle_datum_uur == new Date(new Date(parseInt(inspected_srtcontroles[i].datum)).setMinutes(0,0,0)).getTime() &&
inspected_srtcontroles[i].eenheid == 0 &&
inspected_srtcontroles[i].mode == 0) // Geldt alleen voor momentmodus.
{ // In hetzelfde uur mag niet.
alert(L("lcl_ins_double_inspection_hour"));
return false;
}
else if (controle_datum == new Date(parseInt(inspected_srtcontroles[i].datum)).getTime() &&
inspected_srtcontroles[i].mode == 1) // Dat respijtdatum hetzelfde is als inspectiedatum is niet mogelijk omdat anders ook de check "respijtdatum < nudatum" geldt (zie hierboen). Er moet gelden: inspectiedatum < nu en respijtdatum > nu.
{ // Een inspectie doen op dezelfde datumtijd (controledatum hetzelfde) mag niet omdat je daarna dan niet meer de volgende inspectie kunt doen.
// De geplande _org tijd is dan hetzelfde als de laatste inspectie omdat de volgende inspectie dan niet opgeschoven is.
// Inspecties op dezelfde datumtijd moeten dus afgevangen worden.
// Dit kan alleen voorkomen in de interval mode.
alert(L("lcl_ins_double_inspection"));
return false;
}
}
}
$("#finish").val(finish);
$.post($("form[name=u2]")[0].action, $("[name=u2]").serialize(), FcltCallbackClose, "json");
}
function ins_cancel()
{
FcltMgr.closeDetail(window, { cancel: true } );
}
function onChangeDeelsrtcdatum(id)
{
if (id == "T") return;
selecteddate = new Date(parseInt($("#deelsrtcontrole_datum").val())).midnight().getTime();
if (selecteddate < new Date().midnight().getTime() && (eenheid > 0))
{ // Eenheid is geen uren.
// Tijd op "0:00 uur zetten.
$("#show_deelsrtcontrole_datum").datepicker("setDate", new Date(selecteddate));
$("#deelsrtcontrole_datum").val(selecteddate);
$("#time_from_deelsrtcontrole_datum").val(toTimeString(new Date(selecteddate)));
}
else if (selecteddate == new Date().midnight().getTime() && (eenheid > 0))
{ // Eenheid is geen uren.
// Tijd op huidige tijd zetten.
$("#show_deelsrtcontrole_datum").datepicker("setDate", new Date());
$("#deelsrtcontrole_datum").val(new Date().getTime());
$("#time_from_deelsrtcontrole_datum").val(toTimeString(new Date()));
}
}
</script>
</head>
<body id="editbody">
<% var buttons = [{title: L("lcl_ins_close"), icon: "inspfinish.png", action:"ins_submit(0)"},
{title: L("lcl_ins_finish"), icon: "close.png", action: "ins_submit(1)"},
{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" action="ins_inspect_save.asp?ins_keys=<%=ingesloten.join(",")%>&srtcont_key_arr=<%=ingeslotensc.join(",")%>&dlsrtcont_key_arr=<%=ingeslotendsc.join(",")%>" method="post">
<input type="hidden" name="ins_keys" id="ins_keys" value="<%=ingesloten.join(",")%>">
<input type="hidden" name="srtcont_key_arr" id="srtcont_key_arr" value="<%=ingeslotensc.join(",")%>">
<input type="hidden" name="dlsrtcont_key_arr" id="dlsrtcont_key_arr" value="<%=ingeslotendsc.join(",")%>">
<input type="hidden" name="finish" id="finish" value="0">
<% BLOCK_START("insMultiEdit", L("lcl_ins_schedule"))
var insstatus = -1;
var status_str = "";
if (ingeslotendsc.join(",").search("-2") < 0)
{ // Allemaal bestaande inspecties met de status Gepland(0) of In Behandeling(2).
// Is de status voor elke inspectie hetzelfde.
var sql = "SELECT MIN(ins_deelsrtcontrole_status) minstatus"
+ " , MAX(ins_deelsrtcontrole_status) maxstatus"
+ " FROM ins_deelsrtcontrole"
+ " WHERE ins_deelsrtcontrole_key IN (" + ingeslotendsc.join(",") + ")";
var oRs = Oracle.Execute(sql);
if (oRs("minstatus").Value == oRs("maxstatus").Value)
{ // De statussen van alle inspecties zijn hetzelfde. Dan kan ik deze tonen.
insstatus = oRs("minstatus").Value;
status_str = ins.getinsstatustext(oRs("minstatus").Value);
}
}
if (!multi)
{ // Inspecteren van <20><>n object met <20><>n of meerdere soortcontroles
var sql = "SELECT *"
+ " FROM (WITH defined_inspect AS (SELECT id.ins_srtdeel_key srtdeel_key"
+ " , isc.ins_srtcontrole_key"
+ " , isc.ins_srtcontrole_omschrijving"
+ " , isc.ins_srtcontrole_info"
+ " , isc.ins_srtcontrole_eenheid"
+ " , isc.ins_srtcontrole_periode"
+ " , isc.ins_srtcontrole_eind"
+ " , id.ins_deel_key"
+ " 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 = " + ingesloten[0] + ")"
+ " SELECT di.ins_srtcontrole_key"
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
+ " , di.ins_srtcontrole_info info"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) eenheid"
+ " , ins.nextcyclusdate(di.ins_deel_key, di.ins_srtcontrole_key, 1) nextcyclusdate"
+ " , fac.getdatemillisec(ins.nextcyclusdate(di.ins_deel_key, di.ins_srtcontrole_key, 1)) nextcyclusdatems"
+ " , fac.getdatemillisec(ins.nextcyclusdate(di.ins_deel_key, di.ins_srtcontrole_key)) nextcyclusdatems_n"
+ " FROM defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND di.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND di.ins_deel_key IN (" + ingesloten[0] + ")"
+ " AND COALESCE (xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) > 0"
+ " AND (COALESCE (xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) >= TRUNC(SYSDATE, 'DD')"
+ " OR COALESCE (xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) IS NULL)"
+ " AND di.ins_srtcontrole_key = " + ingeslotensc[0]
+ " GROUP BY di.ins_srtcontrole_key"
+ " , di.ins_srtcontrole_omschrijving"
+ " , di.ins_srtcontrole_info"
+ " , di.ins_srtcontrole_eenheid"
+ " , di.ins_srtcontrole_periode"
+ " , di.ins_deel_key"
+ " , xcp.ins_srtcontroledl_xcp_eenheid"
//+ " HAVING COUNT(*) = " + 1 // Als multi dan alleen de inspecties die voor *alle* objecten gelden
+ ")";
FCLTselector("sel_srtcontrole_show",
sql,
{ label: L("lcl_ins_controle"),
initKey: ingeslotensc[0],
emptyOption: L("lcl_select_srtcontrole"),
readonly: true, // dan wordtie niet gesubmit
required: true,
extraParamValue: "eenheid, info, nextcyclusdatems, nextcyclusdatems_n",
extraParamValueInit: "-1, , 0, 0"
});
%>
<input type="hidden" name="sel_srtcontrole" id="sel_srtcontrole" value="<%=ingeslotensc[0]%>">
<%
ROTEXTAREATR("fldtxt", L("lcl_ins_info"), info, {html: "rows='3'", trclass: "invoerinsp", id: "srtcontrole_info", suppressEmpty: true });
}
// Status tonen.
var params = {};
if (!multi && ingeslotendsc[0] > 0)
{
params = { infoPointer: { Url: "appl/shared/status_info.asp?insc_key=" + ingeslotendsc[0] + "&urole=bo",
Title: L("lcl_status_details") + " " + ingeslotendsc[0]
}
}
}
ROFIELDTR("fld", L("lcl_ins_status"), status_str, params);
// Men mag alleen een inspectie-uitvoerdatum invoeren die later is dan de laatste inspectie-uitvoerdatum.
// Bij multi ook de laatste uitvoerdatum bepalen.
// Bij alleen uren inspecties de laatste uitvoerdatum tonen als minimale datum, anders een dag later.
sql = "SELECT MAX(idsc.ins_deelsrtcontrole_datum) lastinspectdatum"
+ " , MAX(idsc.ins_deelsrtcontrole_datum + 1) dag_na_lastinspectdatum"
+ " , SUM (CASE"
+ " WHEN COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, isc.ins_srtcontrole_eenheid) != 0" // Geen tijd eenheid maar dag, maand of jaar.
+ " THEN 1" // Dag, maand of jaar.
+ " ELSE 0" // Tijd.
+ " END) aantal_dmj_eenheid"
//+ " , isc.ins_srtcontrole_type"
+ " FROM ins_deelsrtcontrole idsc"
+ " , ins_srtcontrole isc"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE idsc.ins_srtcontrole_key = isc.ins_srtcontrole_key"
+ " AND idsc.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND idsc.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND COALESCE(xcp.ins_srtcontroledl_xcp_periode, isc.ins_srtcontrole_periode) > 0"
//+ " AND idsc.ins_deelsrtcontrole_status IN (5, 6)"
+ " AND idsc.ins_deel_key IN (" + ingesloten.join(",") + ")"
+ " AND idsc.ins_srtcontrole_key IN (" + ingeslotensc.join(",") + ")"
+ " GROUP BY isc.ins_srtcontrole_mode";
//+ " ,ins_srtcontrole_type";
var oRs = Oracle.Execute(sql);
var lastinspectdatum;
var dag_na_lastinspectdatum;
var aantal_dmj_eenheid;
var minDate = new Date();
if (!oRs.eof)
{
lastinspectdatum = new Date(oRs("lastinspectdatum").Value); // Kan uiterlijk vandaag zijn.
dag_na_lastinspectdatum = new Date(oRs("dag_na_lastinspectdatum").Value); // Kan uiterlijk morgen zijn.
aantal_dmj_eenheid = oRs("aantal_dmj_eenheid").Value;
minDate = aantal_dmj_eenheid? dag_na_lastinspectdatum : lastinspectdatum;
%>
<script type="text/javascript">
var lastinspectdatum = new Date(<%=lastinspectdatum.getTime()%>);
</script>
<%
}
else
{
%>
<script type="text/javascript">
var lastinspectdatum = null;
</script>
<%
}
var dsc_is_afgemeld = false;
var multidsc_has_afgemeld = false;
if (!multi && ingeslotendsc[0] > 0)
{
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 = " + ingeslotendsc[0];
var oRs = Oracle.Execute(sql);
inspect_data = {deelsrtcontrole_datum: oRs("ins_deelsrtcontrole_datum").Value? new Date(oRs("ins_deelsrtcontrole_datum").Value): new Date(),
controlemode_key: oRs("ins_controlemode_key").Value,
deelsrtcontrole_opmerking: oRs("ins_deelsrtcontrole_opmerking").Value,
deelsrtcontrole_plandatum: oRs("ins_deelsrtcontrole_plandatum").Value != null? new Date(oRs("ins_deelsrtcontrole_plandatum").Value) : null,
deelsrtcontrole_status: oRs("ins_deelsrtcontrole_status").Value,
deelsrtcontrole_status_str: ins.getinsstatustext(oRs("ins_deelsrtcontrole_status").Value)}
// Als de tijd van de datum NIET middennacht (00:00) is dan mag je de datum niet wijzigen. Daarom tijd bepalen voor FCLTcalendar.
// Wijzigen zet datum op middennacht wat problemen met een constraint kan geven.
var hours = inspect_data.deelsrtcontrole_datum.getHours();
var minutes = inspect_data.deelsrtcontrole_datum.getMinutes();
dsc_is_afgemeld = inspect_data.deelsrtcontrole_status >= 5;
}
else
{
inspect_data = {deelsrtcontrole_datum: new Date(),
deelsrtcontrole_plandatum: null,
srtcontrole_opmerking: "",
deelsrtcontrole_status: insstatus,
deelsrtcontrole_status_str: status_str};
// Als er afgemelde inspecties tussen zitten dan mag de inspectiedatum niet meer worden aangepast.
if (multi)
{
for (var i = 0; i < ingeslotendsc.length; i++)
{
var sql = "SELECT ins_deelsrtcontrole_status"
+ " FROM ins_deelsrtcontrole"
+ " WHERE ins_deelsrtcontrole_key = " + ingeslotendsc[i]
+ " AND ins_deelsrtcontrole_status >= 5";
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
{ // Er is er <20><>n gevonden en dan kunnen we stoppen met zoeken.
multidsc_has_afgemeld = true;
break;
}
}
}
}
FCLTcalendar("deelsrtcontrole_plandatum",
{ label: L("lcl_ins_controle_plandate"),
datum: inspect_data.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: inspect_data.deelsrtcontrole_datum? inspect_data.deelsrtcontrole_datum : new Date(),
minDate: minDate,
maxDate: new Date(),
required: true,
trclass: "invoerinsp",
timeField: true,
timeStep: 60,
startTime: 0,
endTime: 23.75,
onChangeDate: "onChangeDeelsrtcdatum('D')",
onChangeTime: "onChangeDeelsrtcdatum('T')",
readonly: (multidsc_has_afgemeld || (dsc_is_afgemeld && (hours > 0 || minutes > 0)? true : false))
});
sql = "SELECT ins_controlemode_key"
+ " , " + lcl.xsqla('ins_controlemode_oms', 'ins_controlemode_key')
+ " FROM ins_controlemode"
+ " WHERE ins_srtcontrole_type = " + sctype
+ " ORDER BY 2";
FCLTselector("sel_controlemode",
sql,
{ label: L("lcl_ins_controle_mode"),
initKey: scmode, // Als de controle mode bij multi verschillend is, dan is deze waarde -1.
emptyOption: L("lcl_select_controlemode"),
required: true
});
RWTEXTAREATR("opmerk", "fldremark", L("lcl_remark"), inspect_data.srtcontrole_opmerking, {html: "rows='8'", trclass: "invoerinsp", maxlength: 2000});
%>
<script type="text/javascript">
//var nextinspectdatum = new Date(< %=nextinspectdatum.getTime()% >);
// 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.
eenheid = <%=eenheid%>;
var scmode = <%=scmode%>;
if (scmode == 0 && eenheid != 0)
$("#time_from_plandatum").hide();
</script>
<%
BLOCK_END();
%>
</td>
</tr>
<tr>
<td>
<%
if (!multi)
{
BLOCK_START("insFlex2", L("lcl_ins_additional_details")); //block over gehele breedte
%><div id='insFlexList'><% // Wrapper div voor dynamisch herladen
generateFlexKenmerkBlock({deelsrtcontrole_key: (!multi && ingeslotendsc[0] > 0? ingeslotendsc[0] : -1),
srtcontrole_key: ingeslotensc[0],
reado: false,
flexcolumns: 1
});
%></div><%
BLOCK_END();
}
IFACE.FORM_END();
%>
</form>
</body>
</html>

View File

@@ -167,32 +167,7 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
+ " AND idsc2.ins_deelsrtcontrole_status IN (5, 6)))";
var sql = "SELECT *"
+ " FROM (WITH defined_inspect AS (SELECT id.ins_srtdeel_key srtdeel_key"
+ " , isc.ins_srtcontrole_key"
+ " , isc.ins_srtcontrole_omschrijving"
+ " , isc.ins_srtcontrole_mode"
+ " , isc.ins_srtcontrole_eenheid"
+ " , isc.ins_srtcontrole_periode"
+ " , isc.ins_srtcontrole_bits"
+ " , isc.ins_srtcontrole_kosten"
+ " , isc.ins_srtcontrole_eind"
+ " , isc.ins_srtcontrole_groep"
+ " , isc.ins_srtcontrole_opmerking"
+ " , id.ins_deel_key"
+ " , id.ins_deel_aanmaak"
+ " , id.ins_deel_aantal"
+ " , isc.ins_srtcontrole_type"
+ " 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 = " + ins_key + ")"
+ " FROM ("
// mogelijke inspecties op dit object die nog gaan komen.
// Als er een voorlopige inspectie is aangemaakt maar nog niet is afgemeld of afgerond, dan hoeft er geen nieuwe inspectie te worden getoond.
// Dus met de respijt heb je in dit eerste deel van de query niet meer te maken.
@@ -250,7 +225,7 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
+ " , -1 ins_deelsrtcontrole_status"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) inspectie_eind"
+ " , NULL ins_controlemode_success"
+ " FROM defined_inspect di"
+ " FROM ins_v_defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND di.ins_deel_key = xcp.ins_deel_key(+)"
@@ -306,7 +281,7 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
+ " , idsc.ins_deelsrtcontrole_status"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) inspectie_eind"
+ " , cm.ins_controlemode_success ins_controlemode_success"
+ " FROM defined_inspect di"
+ " FROM ins_v_defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " , ins_deelsrtcontrole idsc"
+ " , prs_perslid p"
@@ -472,30 +447,16 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
var addurl_editxcp = "../ins/ins_xcp.asp?ins_key=" + ins_key + "&urole=bo";
// Zijn er inactieve soort controles (periode = 0) die ook gelden voor het object. Dan de "Toevoegen" knop tonen.
var bsql = "SELECT COUNT(*) aantal"
+ " FROM (WITH defined_inspect AS (SELECT isc.ins_srtcontrole_key"
+ " , isc.ins_srtcontrole_periode"
+ " , id.ins_deel_key"
+ " 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 = " + ins_key + ")"
+ " SELECT di.ins_srtcontrole_key"
+ " FROM defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND di.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND di.ins_deel_key = " + ins_key
+ " AND COALESCE (xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) <= 0" // Inactieve soort controles tonen.
+ " AND xcp.ins_srtcontroledl_xcp_periode IS NULL" // Soort controles die niet overruled zijn tonen.
+ " GROUP BY di.ins_srtcontrole_key"
+ " , di.ins_deel_key)";
+ " FROM (SELECT di.ins_srtcontrole_key"
+ " FROM ins_v_defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND di.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND di.ins_deel_key = " + ins_key
+ " AND COALESCE (xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) <= 0" // Inactieve soort controles tonen.
+ " AND xcp.ins_srtcontroledl_xcp_periode IS NULL" // Soort controles die niet overruled zijn tonen.
+ " GROUP BY di.ins_srtcontrole_key"
+ " , di.ins_deel_key)";
var boRs = Oracle.Execute(bsql);
var add = boRs("aantal").Value > 0;
boRs.close();

View File

@@ -1,378 +0,0 @@
<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: ins_inspect_plan.asp
Description: Plandatum van inspectie opgeven.
Parameters: ins_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_arr = getQParamIntArray("ins_keys");
var srtcont_key_arr = getQParamIntArray("srtcont_keys");
var dlsrtcont_key_arr = getQParamIntArray("dlsrtcont_keys");
var multi = ins_key_arr.length > 1;
var tobeplanned = 0;
var ingesloten = [];
var ingeslotensc = [];
var ingeslotendsc = [];
// Bepaal de objecten/delen in de selectie die
// ook echt ingepland kunnen of mogen worden.
for (var i = 0; i < ins_key_arr.length; i++)
{
var this_ins = ins.func_enabled_deel(ins_key_arr[i]);
// Als ik mag inspecteren mag ik ook inplannen.
if (this_ins.canInspect)
{ // Alle Arrays zijn even groot.
ingesloten.push(ins_key_arr[i]);
ingeslotensc.push(srtcont_key_arr[i]);
ingeslotendsc.push(dlsrtcont_key_arr[i]);
tobeplanned++;
}
}
user.anything_todo_or_abort(tobeplanned > 0); // We klagen niet over enkele wel en enkele niet
%>
<html>
<head>
<% FCLTHeader.Generate(); %>
<%
var eenheid = -1;
var scmode = 1; // 0 = Momentmode, 1 = Intervalmode.
var sctype = -1;
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"
+ " 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 (" + ingesloten.join(",") + "))"
+ " 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"
+ " 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 di.ins_deel_key IN (" + ingesloten.join(",") + ")"
+ " AND idsc.ins_deel_key(+) IN (" + ingesloten.join(",") + ")"
+ " AND COALESCE (xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) > 0"
+ " AND di.ins_srtcontrole_key IN (" + ingeslotensc.join(",") + ")"
+ " AND (xcp.ins_srtcontroledl_xcp_eind(+) IS NULL OR xcp.ins_srtcontroledl_xcp_eind(+) > TRUNC(SYSDATE, 'DD'))" + ")";
var oRs = Oracle.Execute(sql);
eenheid = oRs("eenheid").Value;
info = oRs("info").Value;
scmode = oRs("scmode").Value;
sctype = oRs("sctype").Value;
oRs.MoveNext();
while (!oRs.eof)
{
if (eenheid != oRs("eenheid").Value)
eenheid = -1;
if (scmode != oRs("scmode").Value)
scmode = -1;
if (sctype != oRs("sctype").Value)
{
info = "";
sctype = -1; // Er zijn inspecties met verschillende soort ocntroles. Dan maar -1.
}
oRs.MoveNext();
}
// Als er meerdere inspecties zijn dan hebben bovenstaande variablen alleen een geldige waarde als het voor alle inspecties hetzelfde is.
%>
<script type="text/javascript">
var eenheid = -1;
function ins_submit()
{
// Controle verplichte velden.
if (!validateForm("u2"))
return false;
// Controleren voor uren inspectie of plandatum niet in het verleden ligt.
// Dit kan alleen voorkomen bij uren omdat de uren voor vandaag de hele dag ingevuld kunnen worden.
// Bij dagen, maanden en jaren eenheid kan vandaag niet ingevuld worden. Alleen vanaf morgen kan ingevuld worden.
if (eenheid == 0 && new Date(parseInt($("#plandatum").val())) <= new Date())
{
alert(L("lcl_ins_controle_not_past")); // Plandatum mag niet in het verleden liggen!
return false;
}
$.post($("form[name=u2]")[0].action, $("[name=u2]").serialize(), FcltCallbackClose, "json");
}
function ins_cancel()
{
FcltMgr.closeDetail(window, { cancel: true } );
}
</script>
</head>
<body id="editbody">
<% var buttons = [{title: L("lcl_submit"), icon: "opslaan.png", action:"ins_submit()"},
{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" action="ins_inspect_save.asp?ins_keys=<%=ingesloten.join(",")%>&srtcont_key_arr=<%=ingeslotensc.join(",")%>&dlsrtcont_key_arr=<%=ingeslotendsc.join(",")%>" method="post">
<input type="hidden" name="ins_keys" id="ins_keys" value="<%=ingesloten.join(",")%>">
<input type="hidden" name="srtcont_key_arr" id="srtcont_key_arr" value="<%=ingeslotensc.join(",")%>">
<input type="hidden" name="dlsrtcont_key_arr" id="dlsrtcont_key_arr" value="<%=ingeslotendsc.join(",")%>">
<% BLOCK_START("insMultiEdit", L("lcl_ins_schedule"))
var status_str = "";
if (ingeslotendsc.join(",").search("-2") < 0)
{ // Allemaal bestaande inspecties met de status Gepland(0).
var sql = "SELECT ins_deelsrtcontrole_status"
+ " FROM ins_deelsrtcontrole"
+ " WHERE ins_deelsrtcontrole_key = " + ingeslotendsc[0];
var oRs = Oracle.Execute(sql);
status_str = ins.getinsstatustext(oRs("ins_deelsrtcontrole_status").Value);
}
if (!multi)
{ // Inspecteren van <20><>n object met <20><>n of meerdere soortcontroles
var sql = "SELECT *"
+ " FROM (WITH defined_inspect AS (SELECT id.ins_srtdeel_key srtdeel_key"
+ " , isc.ins_srtcontrole_key"
+ " , isc.ins_srtcontrole_omschrijving"
+ " , isc.ins_srtcontrole_info"
+ " , isc.ins_srtcontrole_eenheid"
+ " , isc.ins_srtcontrole_periode"
+ " , isc.ins_srtcontrole_eind"
+ " , id.ins_deel_key"
+ " 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 = " + ingesloten[0] + ")"
+ " SELECT di.ins_srtcontrole_key"
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
+ " , di.ins_srtcontrole_info info"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) eenheid"
+ " , ins.nextcyclusdate(di.ins_deel_key, di.ins_srtcontrole_key, 1) nextcyclusdate"
+ " , fac.getdatemillisec(ins.nextcyclusdate(di.ins_deel_key, di.ins_srtcontrole_key, 1)) nextcyclusdatems"
+ " , fac.getdatemillisec(ins.nextcyclusdate(di.ins_deel_key, di.ins_srtcontrole_key)) nextcyclusdatems_n"
+ " FROM defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND di.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND di.ins_deel_key IN (" + ingesloten[0] + ")"
+ " AND COALESCE (xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) > 0"
+ " AND (COALESCE (xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) >= TRUNC(SYSDATE, 'DD')"
+ " OR COALESCE (xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) IS NULL)"
+ " AND di.ins_srtcontrole_key = " + ingeslotensc[0]
+ " GROUP BY di.ins_srtcontrole_key"
+ " , di.ins_srtcontrole_omschrijving"
+ " , di.ins_srtcontrole_info"
+ " , di.ins_srtcontrole_eenheid"
+ " , di.ins_srtcontrole_periode"
+ " , di.ins_deel_key"
+ " , xcp.ins_srtcontroledl_xcp_eenheid"
//+ " HAVING COUNT(*) = " + 1 // Als multi dan alleen de inspecties die voor *alle* objecten gelden
+ ")";
FCLTselector("sel_srtcontrole_show",
sql,
{ label: L("lcl_ins_controle"),
initKey: ingeslotensc[0],
emptyOption: L("lcl_select_srtcontrole"),
readonly: true, // dan wordtie niet gesubmit
required: true,
extraParamValue: "eenheid, info, nextcyclusdatems, nextcyclusdatems_n",
extraParamValueInit: "-1, , 0, 0"
});
%>
<input type="hidden" name="sel_srtcontrole" id="sel_srtcontrole" value="<%=ingeslotensc[0]%>">
<%
ROTEXTAREATR("fldtxt", L("lcl_ins_info"), info, {html: "rows='3'", trclass: "invoerinsp", id: "srtcontrole_info", suppressEmpty: true });
}
// Status tonen.
var params = {};
if (!multi && ingeslotendsc[0] > 0)
{
params = { infoPointer: { Url: "appl/shared/status_info.asp?insc_key=" + ingeslotendsc[0] + "&urole=bo",
Title: L("lcl_status_details") + " " + ingeslotendsc[0]
}
}
}
ROFIELDTR("fld", L("lcl_ins_status"), status_str, params);
// Men mag alleen een inspectie-uitvoerdatum invoeren die later is dan de laatste plandatum.
// Bij multi ook de laatste plandatum bepalen.
// Bij alleen uren inspecties de laatste uitvoerdatum tonen als minimale datum, anders een dag later.
sql = "SELECT MAX(idsc.ins_deelsrtcontrole_datum) lastinspectdatum"
+ " , MAX(idsc.ins_deelsrtcontrole_datum + 1) dag_na_lastinspectdatum"
+ " , SUM (CASE"
+ " WHEN COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, isc.ins_srtcontrole_eenheid) != 0" // Geen tijd eenheid maar dag, maand of jaar.
+ " THEN 1" // Dag, maand of jaar.
+ " ELSE 0" // Tijd.
+ " END) aantal_dmj_eenheid"
//+ " , isc.ins_srtcontrole_type"
+ " FROM ins_deelsrtcontrole idsc"
+ " , ins_srtcontrole isc"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE idsc.ins_srtcontrole_key = isc.ins_srtcontrole_key"
+ " AND idsc.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND idsc.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND COALESCE(xcp.ins_srtcontroledl_xcp_periode, isc.ins_srtcontrole_periode) > 0"
+ (insplan
? " AND idsc.ins_deelsrtcontrole_status IN (5, 6)"
: "")
+ " AND idsc.ins_deel_key IN (" + ingesloten.join(",") + ")"
+ " AND idsc.ins_srtcontrole_key IN (" + ingeslotensc.join(",") + ")"
+ " GROUP BY isc.ins_srtcontrole_mode";
//+ " ,ins_srtcontrole_type";
var oRs = Oracle.Execute(sql);
var lastinspectdatum;
var dag_na_lastinspectdatum;
var aantal_dmj_eenheid;
var minDate = new Date();
if (!oRs.eof)
{
lastinspectdatum = new Date(oRs("lastinspectdatum").Value); // Kan uiterlijk vandaag zijn.
dag_na_lastinspectdatum = new Date(oRs("dag_na_lastinspectdatum").Value); // Kan uiterlijk morgen zijn.
aantal_dmj_eenheid = oRs("aantal_dmj_eenheid").Value;
minDate = aantal_dmj_eenheid? dag_na_lastinspectdatum : lastinspectdatum;
if (insPlan && minDate < new Date())
minDate = new Date();
%>
<script type="text/javascript">
var lastinspectdatum = new Date(<%=lastinspectdatum.getTime()%>);
</script>
<%
}
else
{
%>
<script type="text/javascript">
var lastinspectdatum = null;
</script>
<%
}
if (!multi && ingeslotendsc[0] > 0)
{
var sql = "SELECT ins_deelsrtcontrole_opmerking"
+ " , ins_deelsrtcontrole_plandatum"
+ " FROM ins_deelsrtcontrole"
+ " WHERE ins_deelsrtcontrole_key = " + ingeslotendsc[0];
var oRs = Oracle.Execute(sql);
inspect_data = {deelsrtcontrole_opmerking: oRs("ins_deelsrtcontrole_opmerking").Value,
deelsrtcontrole_plandatum: (oRs("ins_deelsrtcontrole_plandatum").Value != null? new Date(oRs("ins_deelsrtcontrole_plandatum").Value) : null)}
// Als de tijd van de datum NIET middennacht (00:00) is dan mag je de datum niet wijzigen. Daarom tijd bepalen voor FCLTcalendar.
// Wijzigen zet datum op middennacht wat problemen met een constraint kan geven.
var hours = inspect_data.deelsrtcontrole_plandatum.getHours();
var minutes = inspect_data.deelsrtcontrole_plandatum.getMinutes();
}
else
{
inspect_data = {deelsrtcontrole_plandatum: new Date(),
srtcontrole_opmerking: ""};
}
FCLTcalendar("plandatum",
{ label: L("lcl_opdr_plandate"),
datum: inspect_data.deelsrtcontrole_plandatum,
minDate: minDate,
required : true, // Initeel hidden. Dan niet verplicht.
timeField: true,
timeStep: 60,
startTime: 0,
endTime: 23.75,
readonly: false // In status "Ingepland(0)" is de plandatum altijd nog aan te passen.
});
RWTEXTAREATR("opmerk", "fldremark", L("lcl_remark"), inspect_data.srtcontrole_opmerking, {html: "rows='8'", trclass: "invoerinsp", maxlength: 2000});
%>
<script type="text/javascript">
//var nextinspectdatum = new Date(< %=nextinspectdatum.getTime()% >);
// 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.
eenheid = <%=eenheid%>;
var scmode = <%=scmode%>;
if (scmode == 0 && eenheid != 0)
$("#time_from_plandatum").hide();
</script>
<%
BLOCK_END();
%>
</td>
</tr>
<tr>
<td>
<%
if (!multi)
{
BLOCK_START("insFlex2", L("lcl_ins_additional_details")); //block over gehele breedte
%><div id='insFlexList'><% // Wrapper div voor dynamisch herladen
generateFlexKenmerkBlock({deelsrtcontrole_key: (!multi && ingeslotendsc[0] > 0? ingeslotendsc[0] : -1),
srtcontrole_key: ingeslotensc[0],
reado: false,
flexcolumns: 1
});
%></div><%
BLOCK_END();
}
IFACE.FORM_END();
%>
</form>
</body>
</html>

View File

@@ -64,29 +64,13 @@ for (var i = 0; i < ins_key_arr.length; i++)
{
var dlsrtcont_key = -1;
var sql = "SELECT *"
+ " FROM (WITH defined_inspect AS (SELECT isc.ins_srtcontrole_key"
+ " , isc.ins_srtcontrole_mode"
+ " , isc.ins_srtcontrole_periode"
+ " , isc.ins_srtcontrole_eenheid"
+ " , id.ins_deel_key"
+ " 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 = " + ins_key_arr[i] + ")"
+ " SELECT di.ins_srtcontrole_key"
+ " FROM (SELECT di.ins_srtcontrole_key"
+ " , idsc.ins_deelsrtcontrole_key"
+ " , idsc.ins_deelsrtcontrole_datum"
+ " , COALESCE (xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) eenheid"
+ " , di.ins_srtcontrole_mode"
+ " , idsc.ins_deelsrtcontrole_status"
+ " FROM defined_inspect di"
+ " FROM ins_v_defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " , ins_deelsrtcontrole idsc"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"

View File

@@ -542,154 +542,148 @@ function ins_list (pautfunction, params)
+ " , ins_deelsrtcontrole_key"
+ " , ins_deelsrtcontrole_plandatum"
+ " , ins_controlemode_success"
+ " FROM (WITH defined_inspect" // gedefinieerde inspecties
+ " AS (SELECT *"
+ " FROM ins_deel id"
+ " , ins_srtdeel s"
+ " , ins_srtcontrole isc"
+ " WHERE s.ins_srtdeel_key = id.ins_srtdeel_key"
+ (srtcontrole > -1 ? " AND ins_srtcontrole_key = " + srtcontrole : "")
+ " 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))"
+ " FROM ("
+ (inspDone
? " SELECT 1 rn" // Afgehandelde inspecties.
+ " , di.ins_deel_key"
+ " , (SELECT MAX (idsc.ins_deelsrtcontrole_datum)"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc.ins_deelsrtcontrole_status IN (5, 6)"
+ " AND idsc.ins_deel_key = di.ins_deel_key) inspectie_date"
+ " , NULL nonext"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) periode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) inspectie_eenheid"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) inspectie_eind"
+ " , xcp.ins_srtcontroledl_xcp_groep groepoms"
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
+ " , di.ins_srtcontrole_key"
+ " , di.ins_srtcontrole_type"
+ " , -1 ins_deelsrtcontrole_status"
+ " , NULL ins_deelsrtcontrole_key"
+ " , (SELECT idsc.ins_deelsrtcontrole_plandatum"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_deelsrtcontrole_key = (SELECT MAX(idsc2.ins_deelsrtcontrole_key)"
+ " FROM ins_deelsrtcontrole idsc2"
+ " WHERE idsc2.ins_deel_key = di.ins_deel_key"
+ " AND idsc2.ins_srtcontrole_key = di.ins_srtcontrole_key))"
+ " ins_deelsrtcontrole_plandatum"
? " SELECT 1 rn" // Afgehandelde inspecties.
+ " , di.ins_deel_key"
+ " , (SELECT MAX (idsc.ins_deelsrtcontrole_datum)"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc.ins_deelsrtcontrole_status IN (5, 6)"
+ " AND idsc.ins_deel_key = di.ins_deel_key) inspectie_date"
+ " , NULL nonext"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) periode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) inspectie_eenheid"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) inspectie_eind"
+ " , xcp.ins_srtcontroledl_xcp_groep groepoms"
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
+ " , di.ins_srtcontrole_key"
+ " , di.ins_srtcontrole_type"
+ " , -1 ins_deelsrtcontrole_status"
+ " , NULL ins_deelsrtcontrole_key"
+ " , (SELECT idsc.ins_deelsrtcontrole_plandatum"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_deelsrtcontrole_key = (SELECT MAX(idsc2.ins_deelsrtcontrole_key)"
+ " FROM ins_deelsrtcontrole idsc2"
+ " WHERE idsc2.ins_deel_key = di.ins_deel_key"
+ " AND idsc2.ins_srtcontrole_key = di.ins_srtcontrole_key))"
+ " ins_deelsrtcontrole_plandatum"
// Er moet naar de laatste UITGEVOERDE (afgeronde(6)) inspecte gegeven worden om te bepalen of de laatste inspecte een SUCCESS was.
+ " , (SELECT cm.ins_controlemode_success"
+ " FROM ins_deelsrtcontrole idsc"
+ " , ins_controlemode cm"
+ " WHERE idsc.ins_controlemode_key = cm.ins_controlemode_key"
+ " AND idsc.ins_deelsrtcontrole_key = (SELECT MAX (idsc2.ins_deelsrtcontrole_key)"
+ " FROM ins_deelsrtcontrole idsc2"
+ " WHERE idsc2.ins_deel_key = di.ins_deel_key"
+ " AND idsc2.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc2.ins_deelsrtcontrole_status = 6))"
+ " ins_controlemode_success"
+ " FROM defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND di.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND EXISTS (SELECT ins_deelsrtcontrole_key"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc.ins_deelsrtcontrole_status IN (5, 6)"
+ " AND idsc.ins_deel_key = di.ins_deel_key)"
+ " , (SELECT cm.ins_controlemode_success"
+ " FROM ins_deelsrtcontrole idsc"
+ " , ins_controlemode cm"
+ " WHERE idsc.ins_controlemode_key = cm.ins_controlemode_key"
+ " AND idsc.ins_deelsrtcontrole_key = (SELECT MAX (idsc2.ins_deelsrtcontrole_key)"
+ " FROM ins_deelsrtcontrole idsc2"
+ " WHERE idsc2.ins_deel_key = di.ins_deel_key"
+ " AND idsc2.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc2.ins_deelsrtcontrole_status = 6))"
+ " ins_controlemode_success"
+ " FROM ins_v_defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND di.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND EXISTS (SELECT ins_deelsrtcontrole_key"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc.ins_deelsrtcontrole_status IN (5, 6)"
+ " AND idsc.ins_deel_key = di.ins_deel_key)"
+ (srtcontrole > -1
? " AND di.ins_srtcontrole_key = " + srtcontrole
: "")
+ (insSuccessY && insSuccessN
? ""
: " AND (SELECT cm.ins_controlemode_success"
+ " FROM ins_deelsrtcontrole idsc"
+ " , ins_controlemode cm"
+ " WHERE idsc.ins_controlemode_key = cm.ins_controlemode_key"
+ " AND idsc.ins_deelsrtcontrole_key = (SELECT MAX (idsc2.ins_deelsrtcontrole_key)"
+ " FROM ins_deelsrtcontrole idsc2"
+ " WHERE idsc2.ins_deel_key = di.ins_deel_key"
+ " AND idsc2.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc2.ins_deelsrtcontrole_status = 6))" + (insSuccessY? " = 1" : " IS NULL"))
+ " ORDER BY inspectie_date)"
? ""
: " AND (SELECT cm.ins_controlemode_success"
+ " FROM ins_deelsrtcontrole idsc"
+ " , ins_controlemode cm"
+ " WHERE idsc.ins_controlemode_key = cm.ins_controlemode_key"
+ " AND idsc.ins_deelsrtcontrole_key = (SELECT MAX (idsc2.ins_deelsrtcontrole_key)"
+ " FROM ins_deelsrtcontrole idsc2"
+ " WHERE idsc2.ins_deel_key = di.ins_deel_key"
+ " AND idsc2.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc2.ins_deelsrtcontrole_status = 6))" + (insSuccessY? " = 1" : " IS NULL"))
+ " ORDER BY inspectie_date)"
: (inspSoon || (!inspSoon && !inspBusy && !inspClosed)
? " SELECT 1 rn" // inspecties die nog nooit zijn uitgevoerd/ingepland. Er is nog geen ins_deelsrtcontrole regel aanwezig en dus ook geen plandatum/respijtdatum.
+ " , di.ins_deel_key"
+ " , fac.nextcyclusdate(di.ins_deel_aanmaak"
+ " , di.ins_srtcontrole_mode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid)"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode)"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_bits, di.ins_srtcontrole_bits)"
+ " , 1) inspectie_next"
+ " , CASE WHEN " + lastinspect + " IS NULL THEN 1 ELSE 0 END nonext"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) periode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) inspectie_eenheid"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) inspectie_eind"
+ " , xcp.ins_srtcontroledl_xcp_groep groepoms"
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
+ " , di.ins_srtcontrole_key"
+ " , di.ins_srtcontrole_type"
+ " , -1 ins_deelsrtcontrole_status"
+ " , NULL ins_deelsrtcontrole_key"
+ " , NULL ins_deelsrtcontrole_plandatum"
+ " , NULL ins_controlemode_success"
+ " FROM defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND di.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND (di.ins_deel_key, di.ins_srtcontrole_key) NOT IN"
+ " (SELECT ins_deel_key, ins_srtcontrole_key"
+ " FROM ins_deelsrtcontrole)"
+ " UNION ALL"
? " SELECT 1 rn" // inspecties die nog nooit zijn uitgevoerd/ingepland. Er is nog geen ins_deelsrtcontrole regel aanwezig en dus ook geen plandatum/respijtdatum.
+ " , di.ins_deel_key"
+ " , fac.nextcyclusdate(di.ins_deel_aanmaak"
+ " , di.ins_srtcontrole_mode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid)"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode)"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_bits, di.ins_srtcontrole_bits)"
+ " , 1) inspectie_next"
+ " , CASE WHEN " + lastinspect + " IS NULL THEN 1 ELSE 0 END nonext"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) periode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) inspectie_eenheid"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) inspectie_eind"
+ " , xcp.ins_srtcontroledl_xcp_groep groepoms"
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
+ " , di.ins_srtcontrole_key"
+ " , di.ins_srtcontrole_type"
+ " , -1 ins_deelsrtcontrole_status"
+ " , NULL ins_deelsrtcontrole_key"
+ " , NULL ins_deelsrtcontrole_plandatum"
+ " , NULL ins_controlemode_success"
+ " FROM ins_v_defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND di.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND (di.ins_deel_key, di.ins_srtcontrole_key) NOT IN"
+ " (SELECT ins_deel_key, ins_srtcontrole_key"
+ " FROM ins_deelsrtcontrole)"
+ (srtcontrole > -1
? " AND di.ins_srtcontrole_key = " + srtcontrole
: "")
+ " UNION ALL"
: "")
// Inspecties die al eens zijn uitgevoerd of inspecties die voor het eerst zijn ingepland(0) of gestart(2) maar nog geen uitgevoerde/afgemelde(6) inspectie hebben.
+ " SELECT RANK ()" // Volgnummertje toekennen
+ " OVER ("
+ " PARTITION BY di.ins_deel_key, idsc.ins_srtcontrole_key" // Soort van group-by
+ " ORDER BY ins_deelsrtcontrole_key DESC) rn" // Op volgorde zetten/Rangschikken/Sorteren op inspectiedatum.
+ " , di.ins_deel_key"
+ " , CASE"
+ " WHEN " + lastinspect + " IS NULL" // Inspectie die voor het eerst is ingepland(0) of gestart(2) maar nog geen uitgevoerde/afgemelde(6) inspectie heeft.
+ " THEN di.ins_deel_aanmaak" // Dan registratiedatum.
+ " WHEN idsc.ins_deelsrtcontrole_status IN (0, 2)"
+ " THEN ins_deelsrtcontrole_datum_org" // In status 0 en 2 wordt de volgende inspectie in ins_deelsrtcontrole_datum_org direct opgeslagen.
+ " ELSE"
+ " fac.nextcyclusdate(CASE"
+ " WHEN di.ins_srtcontrole_mode = 0"
+ " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus (0). Uitgaan van eigenlijke/orginele inspectiedatum.
+ " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus (1). Uitgaan van werkelijke inspectiedatum.
+ " END"
+ " , di.ins_srtcontrole_mode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid)"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode)"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_bits, di.ins_srtcontrole_bits)"
+ " , 1)"
+ " END inspectie_next"
+ " , CASE WHEN " + lastinspect + " IS NULL THEN 1 ELSE 0 END nonext"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) periode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) inspectie_eenheid"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) inspectie_eind"
+ " , xcp.ins_srtcontroledl_xcp_groep groepoms"
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
+ " , di.ins_srtcontrole_key"
+ " , di.ins_srtcontrole_type"
+ " , idsc.ins_deelsrtcontrole_status"
+ " , idsc.ins_deelsrtcontrole_key"
+ " , CASE WHEN idsc.ins_deelsrtcontrole_status IN (0, 2) THEN idsc.ins_deelsrtcontrole_plandatum ELSE NULL END ins_deelsrtcontrole_plandatum"
+ " , NULL ins_controlemode_success"
+ " FROM ins_deelsrtcontrole idsc"
+ " , defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " , ins_controlemode cm"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND di.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND idsc.ins_controlemode_key = cm.ins_controlemode_key(+)"
+ " AND idsc.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc.ins_deel_key = di.ins_deel_key"
+ " ORDER BY inspectie_next)")
+ " SELECT RANK ()" // Volgnummertje toekennen
+ " OVER ("
+ " PARTITION BY di.ins_deel_key, idsc.ins_srtcontrole_key" // Soort van group-by
+ " ORDER BY ins_deelsrtcontrole_key DESC) rn" // Op volgorde zetten/Rangschikken/Sorteren op inspectiedatum.
+ " , di.ins_deel_key"
+ " , CASE"
+ " WHEN " + lastinspect + " IS NULL" // Inspectie die voor het eerst is ingepland(0) of gestart(2) maar nog geen uitgevoerde/afgemelde(6) inspectie heeft.
+ " THEN di.ins_deel_aanmaak" // Dan registratiedatum.
+ " WHEN idsc.ins_deelsrtcontrole_status IN (0, 2)"
+ " THEN ins_deelsrtcontrole_datum_org" // In status 0 en 2 wordt de volgende inspectie in ins_deelsrtcontrole_datum_org direct opgeslagen.
+ " ELSE"
+ " fac.nextcyclusdate(CASE"
+ " WHEN di.ins_srtcontrole_mode = 0"
+ " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus (0). Uitgaan van eigenlijke/orginele inspectiedatum.
+ " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus (1). Uitgaan van werkelijke inspectiedatum.
+ " END"
+ " , di.ins_srtcontrole_mode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid)"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode)"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_bits, di.ins_srtcontrole_bits)"
+ " , 1)"
+ " END inspectie_next"
+ " , CASE WHEN " + lastinspect + " IS NULL THEN 1 ELSE 0 END nonext"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) periode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) inspectie_eenheid"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) inspectie_eind"
+ " , xcp.ins_srtcontroledl_xcp_groep groepoms"
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
+ " , di.ins_srtcontrole_key"
+ " , di.ins_srtcontrole_type"
+ " , idsc.ins_deelsrtcontrole_status"
+ " , idsc.ins_deelsrtcontrole_key"
+ " , CASE WHEN idsc.ins_deelsrtcontrole_status IN (0, 2) THEN idsc.ins_deelsrtcontrole_plandatum ELSE NULL END ins_deelsrtcontrole_plandatum"
+ " , NULL ins_controlemode_success"
+ " FROM ins_deelsrtcontrole idsc"
+ " , ins_v_defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " , ins_controlemode cm"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND di.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND idsc.ins_controlemode_key = cm.ins_controlemode_key(+)"
+ " AND idsc.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc.ins_deel_key = di.ins_deel_key"
+ (srtcontrole > -1
? " AND di.ins_srtcontrole_key = " + srtcontrole
: "")
+ " ORDER BY inspectie_next)")
+ " WHERE rn = 1"
// Voor afgehandelde inspecties ook inspecties met periode 0 tonen.
+ (!inspDone
@@ -701,7 +695,12 @@ function ins_list (pautfunction, params)
: "");
sqlInspectie_select = (inspDone? "inspectie_date" : "inspectie_next")
+ " , ispn.nonext, ispn.ins_srtcontrole_omschrijving, ispn.ins_srtcontrole_key, ispn.inspectie_eenheid, ispn.inspectie_eind, ispn.groepoms"
+ " , ispn.nonext"
+ " , ispn.ins_srtcontrole_omschrijving"
+ " , ispn.ins_srtcontrole_key"
+ " , ispn.inspectie_eenheid"
+ " , ispn.inspectie_eind"
+ " , ispn.groepoms"
+ " , ispn.ins_srtcontrole_type"
+ " , ispn.ins_deelsrtcontrole_status"
+ " , ispn.ins_deelsrtcontrole_key"
@@ -883,7 +882,7 @@ function ins_list (pautfunction, params)
: "SELECT o.alg_plaatsaanduiding"
+ " || DECODE(o.alg_plaatsomschrijving, '','' ,' (' || o.alg_plaatsomschrijving || ')')"
)
+ " plaats"
+ " plaats"
+ ", s.ins_srtdeel_code"
+ ", " + lcl.xsql('s.ins_srtdeel_omschrijving', 's.ins_srtdeel_key') + " soort"
+ ", i.ins_deel_omschrijving"

View File

@@ -60,31 +60,12 @@ var deelsrtcont_key = getQParamInt("deelsrtcont_key", -1); // Bestaande inspecti
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"
+ " FROM (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"
+ " FROM ins_v_defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " , ins_deelsrtcontrole idsc"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
@@ -92,6 +73,7 @@ var deelsrtcont_key = getQParamInt("deelsrtcont_key", -1); // Bestaande inspecti
+ " 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 di.ins_deel_key IN (" + ins_key + ")"
+ " AND idsc.ins_deelsrtcontrole_key = " + deelsrtcont_key
+ " )";
var oRs = Oracle.Execute(sql);

View File

@@ -319,53 +319,32 @@ user.anything_todo_or_abort(this_ins.canChangeXcp);
var cntdeel = Oracle.Execute(sql)(0).Value;
var sql = "SELECT *"
+ " FROM (WITH defined_inspect AS (SELECT id.ins_srtdeel_key srtdeel_key"
+ " , isc.ins_srtcontrole_key"
+ " , isc.ins_srtcontrole_omschrijving"
+ " , isc.ins_srtcontrole_mode"
+ " , isc.ins_srtcontrole_periode"
+ " , isc.ins_srtcontrole_eenheid"
+ " , isc.ins_srtcontrole_bits"
+ " , isc.ins_srtcontrole_kosten"
+ " , isc.ins_srtcontrole_eind"
+ " , id.ins_deel_key"
+ " 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 = " + ins_key + ")"
+ " SELECT di.ins_srtcontrole_key"
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
+ " , di.ins_srtcontrole_mode modus"
+ " , di.ins_srtcontrole_periode periode_std"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, -1) periode_xcp"
+ " , di.ins_srtcontrole_eenheid eenheid_std"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, -1) eenheid_xcp"
+ " , di.ins_srtcontrole_bits bits_std"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_bits, -1) bits_xcp"
+ " , xcp.ins_srtcontroledl_xcp_groep groep"
+ " , di.ins_srtcontrole_kosten kosten_std"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_kosten, 0) kosten_xcp"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_key, -1) xcp_key"
+ " , di.ins_srtcontrole_eind eind_std"
+ " , TO_CHAR(di.ins_srtcontrole_eind, 'DD') eind_std_dag"
+ " , TO_CHAR(di.ins_srtcontrole_eind, 'MM') eind_std_maand"
+ " , TO_CHAR(di.ins_srtcontrole_eind, 'YYYY') eind_std_jaar"
+ " , xcp.ins_srtcontroledl_xcp_eind eind_xcp"
+ " , TO_CHAR(xcp.ins_srtcontroledl_xcp_eind, 'DD') eind_xcp_dag"
+ " , TO_CHAR(xcp.ins_srtcontroledl_xcp_eind, 'MM') eind_xcp_maand"
+ " , TO_CHAR(xcp.ins_srtcontroledl_xcp_eind, 'YYYY') eind_xcp_jaar"
+ " FROM defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND di.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND di.ins_deel_key = " + ins_key
+ " FROM (SELECT di.ins_srtcontrole_key"
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
+ " , di.ins_srtcontrole_mode modus"
+ " , di.ins_srtcontrole_periode periode_std"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, -1) periode_xcp"
+ " , di.ins_srtcontrole_eenheid eenheid_std"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, -1) eenheid_xcp"
+ " , di.ins_srtcontrole_bits bits_std"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_bits, -1) bits_xcp"
+ " , xcp.ins_srtcontroledl_xcp_groep groep"
+ " , di.ins_srtcontrole_kosten kosten_std"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_kosten, 0) kosten_xcp"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_key, -1) xcp_key"
+ " , di.ins_srtcontrole_eind eind_std"
+ " , TO_CHAR(di.ins_srtcontrole_eind, 'DD') eind_std_dag"
+ " , TO_CHAR(di.ins_srtcontrole_eind, 'MM') eind_std_maand"
+ " , TO_CHAR(di.ins_srtcontrole_eind, 'YYYY') eind_std_jaar"
+ " , xcp.ins_srtcontroledl_xcp_eind eind_xcp"
+ " , TO_CHAR(xcp.ins_srtcontroledl_xcp_eind, 'DD') eind_xcp_dag"
+ " , TO_CHAR(xcp.ins_srtcontroledl_xcp_eind, 'MM') eind_xcp_maand"
+ " , TO_CHAR(xcp.ins_srtcontroledl_xcp_eind, 'YYYY') eind_xcp_jaar"
+ " FROM ins_v_defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND di.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND di.ins_deel_key = " + ins_key
// De xcp_periode overruled de standaard periode. De xcp_periode kan/mag NULL zijn maar de standaard periode niet.
// Mogelijke waarden van de standaard periode en xcp periode:
// ins_srtcontrole_periode ins_srtcontroledl_xcp_periode uitleg
@@ -379,26 +358,26 @@ user.anything_todo_or_abort(this_ins.canChangeXcp);
: " AND (COALESCE (xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) > 0" // Actieve soort controles tonen
+ " OR ins_srtcontroledl_xcp_periode = 0)") // Soort controles die inactief zijn gemaakt tonen.
+ (srtcont_key > 0
? " AND di.ins_srtcontrole_key = " + srtcont_key
? " AND di.ins_srtcontrole_key = " + srtcont_key
: "")
+ " GROUP BY di.ins_srtcontrole_key"
+ " , di.ins_srtcontrole_omschrijving"
+ " , di.ins_srtcontrole_mode"
+ " , di.ins_srtcontrole_periode"
+ " , di.ins_srtcontrole_eenheid"
+ " , di.ins_srtcontrole_bits"
+ " , di.ins_srtcontrole_kosten"
+ " , di.ins_srtcontrole_eind"
+ " , di.ins_deel_key"
+ " , xcp.ins_srtcontroledl_xcp_key"
+ " , xcp.ins_srtcontroledl_xcp_periode"
+ " , xcp.ins_srtcontroledl_xcp_eenheid"
+ " , xcp.ins_srtcontroledl_xcp_bits"
+ " , xcp.ins_srtcontroledl_xcp_groep"
+ " , xcp.ins_srtcontroledl_xcp_kosten"
+ " , xcp.ins_srtcontroledl_xcp_eind"
+ " HAVING COUNT(*) = " + cntdeel // Als multi dan alleen de inspecties die voor *alle* objecten gelden
+ " ORDER BY di.ins_srtcontrole_omschrijving)";
+ " GROUP BY di.ins_srtcontrole_key"
+ " , di.ins_srtcontrole_omschrijving"
+ " , di.ins_srtcontrole_mode"
+ " , di.ins_srtcontrole_periode"
+ " , di.ins_srtcontrole_eenheid"
+ " , di.ins_srtcontrole_bits"
+ " , di.ins_srtcontrole_kosten"
+ " , di.ins_srtcontrole_eind"
+ " , di.ins_deel_key"
+ " , xcp.ins_srtcontroledl_xcp_key"
+ " , xcp.ins_srtcontroledl_xcp_periode"
+ " , xcp.ins_srtcontroledl_xcp_eenheid"
+ " , xcp.ins_srtcontroledl_xcp_bits"
+ " , xcp.ins_srtcontroledl_xcp_groep"
+ " , xcp.ins_srtcontroledl_xcp_kosten"
+ " , xcp.ins_srtcontroledl_xcp_eind"
+ " HAVING COUNT(*) = " + cntdeel // Als multi dan alleen de inspecties die voor *alle* objecten gelden
+ " ORDER BY di.ins_srtcontrole_omschrijving)";
FCLTselector("sel_srtcontrole",
sql,
{ label: L("lcl_ins_controle"),

View File

@@ -0,0 +1,277 @@
<%@ language = "javascript" %>
<% /*
$Revision$
$Id$
File: pda/ins_inspect_list.asp
Description: Toont een beknopte inspectielijst voor op de pda
Parameters: -
Context: -
Note: -
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/discxalg3d.inc" -->
<!-- #include file="../Shared/discx3d.inc" -->
<!-- #include file="../INS/ins.inc" -->
<!-- #include file="./resultset_table.inc" -->
<!-- #include file="./mobile.inc" -->
<!-- #include file="./iface.inc" -->
<%
var autfunction = "WEB_INSUSE";
var authparams = user.checkAutorisation(autfunction);
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
var verdieping_key = getQParamInt("verdieping_key", user.alg_verdieping_key({withcurrent: true}));
var ruimte_key = getQParamInt("ruimte_key", -1);
var ins_srtgroep_key = getQParamInt("ins_srtgroep_key", -1); // ins_srtgroep_key.
var ins_key = getQParamInt("ins_key", -1);
var grp_sel = getQParam("grp", "");
var qrc = getQParamInt("qrc", 0) != 0;
var subject = L("lcl_mobile_objecten"); // TODO: AANPASSEN!
if (ruimte_key > -1)
{
var sql = "SELECT aog.alg_gebouw_code || '-' || aog.alg_verdieping_code || '-' || aog.alg_ruimte_nr plaats"
+ " FROM alg_v_onroerendgoed_gegevens aog"
+ " WHERE aog.alg_ruimte_key = " + ruimte_key;
var oRs = Oracle.Execute(sql);
subject += " " + oRs("plaats").Value;
}
else
var subject = L("lcl_mobile_objecten") + " " + CurrentPosition;
%>
<html>
<head>
<% FCLTMHeader.Generate({}); %>
</head>
<body>
<%
PAGE_START();
HEADER({title: subject, back:!qrc});
CONTENT_START();
function fncolLink(oRs)
{
var url = "";
if (grp_sel == "")
{
url = "../pda/ins_inspect_list.asp?grp=" + safe.url(oRs("ins_srtgroep_omschrijving").Value)
+ (ruimte_key > -1? "&ruimte_key=" + ruimte_key : "")
+ "&ins_srtgroep_key=" + oRs("ins_srtgroep_key").Value;
}
else
{
url = "../pda/ins_inspect.asp?ins_key=" + oRs("ins_deel_key").Value;
}
return url;
};
function fncolGroup(oRs)
{
return safe.html(oRs("ins_srtgroep_omschrijving").Value);
};
function fncolHeader(oRs)
{
return safe.html(oRs("soort").Value);
};
function fncolsubHeader(oRs)
{
return "<div class='listbodykop'>" + safe.html(oRs("plaats").Value) + "</div>";
};
var lastinspect = "(SELECT GREATEST(COALESCE (idsc.ins_deelsrtcontrole_plandatum"
+ " , CASE di.ins_srtcontrole_mode"
+ " WHEN 0"
+ " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus. Uitgaan van eigenlijke/orginele inspectiedatum.
+ " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus. Uitgaan van werkelijke inspectiedatum.
+ " END)"
+ " , CASE di.ins_srtcontrole_mode"
+ " WHEN 0"
+ " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus. Uitgaan van eigenlijke/orginele inspectiedatum.
+ " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus. Uitgaan van werkelijke inspectiedatum.
+ " END) ins_deelsrtcontrole_datum"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc.ins_deelsrtcontrole_status IN (5, 6)"
+ " AND idsc.ins_deel_key = di.ins_deel_key"
+ " AND idsc.ins_deelsrtcontrole_key = (SELECT MAX(idsc2.ins_deelsrtcontrole_key)"
+ " FROM ins_deelsrtcontrole idsc2"
+ " WHERE idsc2.ins_deel_key = di.ins_deel_key"
+ " AND idsc2.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc2.ins_deelsrtcontrole_status IN (5, 6)))";
// Eerstvolgende inspectie
var sqlNext = "SELECT ins_deel_key"
+ " , inspectie_next"
+ " , periode"
+ " , inspectie_eind"
+ " FROM ("
+ " SELECT 1 rn" // inspecties die nog nooit zijn uitgevoerd/ingepland. Er is nog geen ins_deelsrtcontrole regel aanwezig en dus ook geen plandatum/respijtdatum.
+ " , di.ins_deel_key"
+ " , fac.nextcyclusdate(di.ins_deel_aanmaak"
+ " , di.ins_srtcontrole_mode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid)"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode)"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_bits, di.ins_srtcontrole_bits)"
+ " , 1) inspectie_next"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) periode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) inspectie_eind"
+ " FROM ins_v_defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND di.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND (di.ins_deel_key, di.ins_srtcontrole_key) NOT IN"
+ " (SELECT ins_deel_key, ins_srtcontrole_key"
+ " FROM ins_deelsrtcontrole)"
+ " UNION ALL"
// Inspecties die al eens zijn uitgevoerd of inspecties die voor het eerst zijn ingepland(0) of gestart(2) maar nog geen uitgevoerde/afgemelde(6) inspectie hebben.
+ " SELECT RANK ()" // Volgnummertje toekennen
+ " OVER ("
+ " PARTITION BY di.ins_deel_key, idsc.ins_srtcontrole_key" // Soort van group-by
+ " ORDER BY ins_deelsrtcontrole_key DESC) rn" // Op volgorde zetten/Rangschikken/Sorteren op inspectiedatum.
+ " , di.ins_deel_key"
+ " , CASE"
+ " WHEN " + lastinspect + " IS NULL" // Inspectie die voor het eerst is ingepland(0) of gestart(2) maar nog geen uitgevoerde/afgemelde(6) inspectie heeft.
+ " THEN di.ins_deel_aanmaak" // Dan registratiedatum.
+ " WHEN idsc.ins_deelsrtcontrole_status IN (0, 2)"
+ " THEN ins_deelsrtcontrole_datum_org" // In status 0 en 2 wordt de volgende inspectie in ins_deelsrtcontrole_datum_org direct opgeslagen.
+ " ELSE"
+ " fac.nextcyclusdate(CASE"
+ " WHEN di.ins_srtcontrole_mode = 0"
+ " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus (0). Uitgaan van eigenlijke/orginele inspectiedatum.
+ " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus (1). Uitgaan van werkelijke inspectiedatum.
+ " END"
+ " , di.ins_srtcontrole_mode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid)"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode)"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_bits, di.ins_srtcontrole_bits)"
+ " , 1)"
+ " END inspectie_next"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) periode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) inspectie_eind"
+ " FROM ins_deelsrtcontrole idsc"
+ " , ins_v_defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " , ins_controlemode cm"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND di.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND idsc.ins_controlemode_key = cm.ins_controlemode_key(+)"
+ " AND idsc.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc.ins_deel_key = di.ins_deel_key"
+ " ORDER BY inspectie_next)"
+ " WHERE rn = 1"
// Voor afgehandelde inspecties ook inspecties met periode 0 tonen.
+ " AND periode > 0"
// Alleen bij "Afgehandeld" vervallen inspecties tonen.
+ " AND (inspectie_eind IS NULL OR inspectie_eind > SYSDATE)";
var sqlInspectie_select = " inspectie_next"
+ ", ispn.inspectie_eind";
var sqlInspectie_from = ", (" + sqlNext + ") ispn"
var sqlInspectie_where = " AND ispn.ins_deel_key = i.ins_deel_key";
var sql = "SELECT o.alg_plaatsaanduiding"
+ " || DECODE(o.alg_plaatsomschrijving, '','' ,' (' || o.alg_plaatsomschrijving || ')')"
+ " plaats"
+ " , " + lcl.xsql('s.ins_srtdeel_omschrijving', 's.ins_srtdeel_key') + " soort"
+ " , i.ins_deel_omschrijving"
+ " , i.ins_deel_key"
+ " , s.ins_srtdeel_key"
+ " , l.alg_district_key"
+ " , s.ins_srtgroep_key" // filtering only
+ " , isg.ins_srtgroep_omschrijving"
+ " , " + sqlInspectie_select
+ " FROM ins_deel i"
+ " , ins_v_alg_overzicht o"
+ " , ins_srtdeel s"
+ " , ins_srtgroep isg"
+ sqlInspectie_from
+ " , alg_locatie l"
+ " , alg_district di" // I added this for alg_district_key (FSN#1082)
+ " , (SELECT res_deel_key"
+ " , res_ins_deel_key"
+ " , " + lcl.xsqla('res_deel_opmerking', 'res_deel_key')
+ " FROM res_deel"
+ " WHERE res_deel_verwijder IS NULL"
+ " AND res_deel_vervaldatum IS NULL"
+ " UNION ALL"
+ " SELECT res_deel_key"
+ " , res_ins_deel_key"
+ " , " + lcl.xsqla('res_deel_opmerking', 'res_deel_key')
+ " FROM res_deel"
+ " WHERE res_deel_verwijder IS NULL"
+ " AND res_deel_vervaldatum > SYSDATE) rd"
+ " WHERE i.ins_deel_verwijder IS NULL"
+ " AND i.ins_deel_module = 'INS'"
+ " AND i.ins_deel_key = rd.res_ins_deel_key(+)"
+ " AND s.ins_srtgroep_key NOT IN (" + S("sle_ins_srt_groep_key") + ", " + S("cil_ins_srt_groep_key") + ")"
+ (ins_srtgroep_key > -1
? " AND s.ins_srtgroep_key = " + ins_srtgroep_key
: "")
+ " AND s.ins_srtgroep_key = isg.ins_srtgroep_key"
+ sqlInspectie_where
+ " AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key"
+ " AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type"
+ " AND i.ins_alg_ruimte_type IN ('T','R','W')"
+ " AND o.alg_locatie_key = l.alg_locatie_key" // PF: de redundante ins_alg_locatie_key is niet nodig
+ " AND l.alg_district_key = di.alg_district_key"
+ " AND s.ins_srtdeel_key = i.ins_srtdeel_key"
+ ((locatie_key > -1) ? " AND i.ins_alg_locatie_key = " + locatie_key : "")
+ ((gebouw_key > -1) ? " AND o.alg_gebouw_key = " + gebouw_key : "")
+ ((verdieping_key > -1)? " AND o.alg_verdieping_key = " + verdieping_key : "")
+ ((ruimte_key > -1)
? " AND ((i.ins_alg_ruimte_key = " + ruimte_key + " AND i.ins_alg_ruimte_type = 'R') "
+ " OR (i.ins_alg_ruimte_key IN (SELECT prs_werkplek_key FROM prs_werkplek WHERE prs_alg_ruimte_key = " + ruimte_key + ") AND i.ins_alg_ruimte_type = 'W'))"
: "");
// we must consider this: if we know that a room is defined (by filter), we must be
// able to improve performance by using that condition, mustn't we?
// furthermore: it's better to let Oracle Prepare
sql = discx3d (sql,
"i.ins_discipline_key",
"di.alg_regio_key",
"l.alg_district_key",
"l.alg_locatie_key",
"o.alg_gebouw_key",
"o.alg_verdieping_key",
"o.alg_ruimte_key",
"", // b.prs_bedrijf_key: not used because algprs == 0
"", // d.prs_afdeling_key: not used because algprs == 0
"WEB_INSUSE", // autfunction
'', // disc_key
0); // AKZA#430/PF, AKZA#496/MGE
sql += " AND (ins_deel_vervaldatum IS NULL OR ins_deel_vervaldatum > SYSDATE)";
var dttoday = new Date((new Date()).setHours(23, 59, 59)); // Einde van de dag nemen.
sql = "SELECT * FROM (" + sql + ") x WHERE inspectie_next < " + dttoday.toSQL(true)
+ " ORDER BY ins_deel_omschrijving, plaats, soort";
var rst = new ResultsetTable({sql: sql,
keyColumn: "ins_deel_key",
linkColumn: fncolLink,
groupColumn: fncolGroup,
groupSelect: grp_sel,
detailColumn: fncolHeader,
headerColumn: "ins_deel_omschrijving",
//asideColumn: fnAside,
subheaderColumn: fncolsubHeader,
ID: "instable",
showAll: true
});
var cnt = rst.processResultset();
CONTENT_END();
FOOTER({});
PAGE_END();
%>
</body>
</html>