ASFC#34371: Start en stopmoment bij schoonmaak via inspecties kunnen vastleggen.
UWVA#35539: ins: kan gedane inspectie aanpassen. svn path=/Website/trunk/; revision=29124
This commit is contained in:
@@ -30,13 +30,12 @@ FCLTHeader.Requires({ plugins: ["jQuery", "suggest", "kenmerk"],
|
||||
|
||||
var ins_key_arr = getQParamIntArray("ins_keys");
|
||||
var srtcont_key_arr = getQParamIntArray("srtcont_keys");
|
||||
var deelsrtcont_key = getQParamInt("deelsrtcont_key", -1); // Bestaande inspectie indien meegegeven.
|
||||
var deelsrtcont_arr = getQParamIntArray("deelsrtcont_keys", -1); // Bestaande inspectie indien meegegeven.
|
||||
var multi = ins_key_arr.length > 1;
|
||||
|
||||
var insPlan = getQParamInt("plan", 0) == 1; // Inplannen inspectie.
|
||||
var insClose = getQParamInt("close", 0) == 1; // Afmelden of afronden inspectie.
|
||||
var insShow = deelsrtcont_key > 0; // Show afgeronde inspectie.
|
||||
var insEdit = !insPlan && !insClose && !insShow; // Wijzigen inspectie.
|
||||
var insEdit = !insPlan && !insClose; // Wijzigen inspectie.
|
||||
|
||||
if (insEdit && multi)
|
||||
abort_with_warning(L("lcl_ins_allow_multi_edit"));
|
||||
@@ -56,8 +55,8 @@ for (var i = 0; i < ins_key_arr.length; i++)
|
||||
+ " WHERE isc.ins_srtcontrole_key = idsc.ins_srtcontrole_key(+)" // Er kan nog voor de eerste keer geinspecteerd moeten worden.
|
||||
+ " AND idsc.ins_deel_key(+) = " + ins_key_arr[i]
|
||||
+ " AND isc.ins_srtcontrole_key = " + srtcont_key_arr[i]
|
||||
+ (insShow
|
||||
? " AND idsc.ins_deelsrtcontrole_key = " + deelsrtcont_key
|
||||
+ (deelsrtcont_arr[i] > 0
|
||||
? " AND idsc.ins_deelsrtcontrole_key = " + deelsrtcont_arr[i]
|
||||
: " AND idsc.ins_deelsrtcontrole_status(+) != 6")
|
||||
+ " ORDER BY ins_deelsrtcontrole_datum DESC";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
@@ -88,7 +87,7 @@ 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 || (insShow && this_ins.canShowInsp))
|
||||
if (this_ins.canInspect)
|
||||
{ // Alle Arrays zijn even groot.
|
||||
ingesloten.push(ins_key_arr[i]);
|
||||
ingeslotensc.push(srtcont_key_arr[i]);
|
||||
@@ -330,16 +329,71 @@ user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel
|
||||
</head>
|
||||
|
||||
<body id="editbody">
|
||||
<% var buttons = [];
|
||||
<% // Melding aanmaakbaar? Alleen meldingen die enigzins beperkt zijn tot onze object(soort/groep)
|
||||
var canMelding = false;
|
||||
if (!multi && ingesloten[0] > 0)
|
||||
{
|
||||
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 = " + ingesloten[0]
|
||||
+ " 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(ingesloten[0]);
|
||||
|
||||
// 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 && ins_deelsrtcontrole_status >= 0 && ins_deelsrtcontrole_status < 6 && this_ins.canChange;
|
||||
var canShow = ins_deelsrtcontrole_status >= 0 && this_ins.canRead;
|
||||
var canPlan = !vervallen && this_ins.canInspect && (ins_deelsrtcontrole_status < 0);
|
||||
var canStart = !vervallen && this_ins.canInspect && (ins_deelsrtcontrole_status <= 0);
|
||||
// Als de inspectie vervallen is moet je alleen nog de lopende inspecties kunnen gereed melden en afronden.
|
||||
var canClose = !vervallen || (vervallen && (ins_deelsrtcontrole_status == 0 || ins_deelsrtcontrole_status == 2));
|
||||
var canFinish = canClose;
|
||||
}
|
||||
|
||||
var buttons = [];
|
||||
if (!vervallen && (insPlan || insEdit))
|
||||
buttons.push({title: L("lcl_submit"), icon: "opslaan.png", action:"ins_submit(0)"});
|
||||
// Als de inspectie vervallen is moet je alleen nog de lopende inspecties kunnen gereed melden en afronden.
|
||||
if ((!vervallen || (vervallen && (ins_deelsrtcontrole_status == 0 || ins_deelsrtcontrole_status == 2))) && insClose)
|
||||
if (insClose)
|
||||
{
|
||||
buttons.push({title: L("lcl_ins_close"), icon: "inspfinish.png", action:"ins_submit(0)"});
|
||||
buttons.push({title: L("lcl_ins_finish"), icon: "close.png", action: "ins_submit(1)"});
|
||||
if (canClose)
|
||||
buttons.push({title: L("lcl_ins_close"), icon: "inspfinish.png", action:"ins_submit(0)"});
|
||||
if (canFinish)
|
||||
buttons.push({title: L("lcl_ins_finish"), icon: "close.png", action: "ins_submit(1)"});
|
||||
}
|
||||
buttons.push({title: L("lcl_do_amelding_hint"), action: "ins_melding()", icon: "doemelding.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;
|
||||
@@ -361,7 +415,7 @@ user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel
|
||||
BLOCK_START("insMultiEdit", blocktext);
|
||||
var insstatus = -1;
|
||||
var status_str = "";
|
||||
if ((insPlan || insEdit || insShow)&& ingeslotendsc.join(",").search("-1") < 0)
|
||||
if ((insPlan || insEdit)&& ingeslotendsc.join(",").search("-1") < 0)
|
||||
{ // Allemaal bestaande inspecties met de status Gepland(0).
|
||||
var sql = "SELECT ins_deelsrtcontrole_status"
|
||||
+ " FROM ins_deelsrtcontrole"
|
||||
@@ -544,21 +598,22 @@ user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel
|
||||
|
||||
}
|
||||
|
||||
if (insPlan || ((insShow || insEdit) && (insstatus == 0 || insstatus == 2)))
|
||||
if (insPlan || (insEdit && (insstatus == 0 || insstatus == 2)))
|
||||
FCLTcalendar("plandatum",
|
||||
{ label: L("lcl_opdr_plandate"),
|
||||
datum: inspect_data.deelsrtcontrole_plandatum,
|
||||
trclass: "invoerinsp",
|
||||
minDate: minDate,
|
||||
required : true, // Initeel hidden. Dan niet verplicht.
|
||||
timeField: true,
|
||||
timeStep: 60,
|
||||
startTime: 0,
|
||||
endTime: 23.75,
|
||||
readonly: vervallen || insShow || (insEdit && insstatus == 2), // In status "Ingepland(0)" is de plandatum altijd nog aan te passen.
|
||||
readonly: vervallen || (insEdit && insstatus == 2), // In status "Ingepland(0)" is de plandatum altijd nog aan te passen.
|
||||
suppressEmpty: true
|
||||
});
|
||||
|
||||
if (insClose || ((insShow || insEdit) && insstatus >= 5))
|
||||
if (insClose || (insEdit && insstatus >= 5))
|
||||
{
|
||||
FCLTcalendar("deelsrtcontrole_plandatum",
|
||||
{ label: L("lcl_ins_controle_plandate"),
|
||||
@@ -571,7 +626,7 @@ user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel
|
||||
readonly: true,
|
||||
suppressEmpty: true
|
||||
});
|
||||
if ((insShow&& insstatus >= 5) || insClose || (insEdit && typeof inspect_data.deelsrtcontrole_datum != null))
|
||||
if (insClose || (insEdit && typeof inspect_data.deelsrtcontrole_datum != null))
|
||||
FCLTcalendar("deelsrtcontrole_datum",
|
||||
{ label: L("lcl_ins_controle_datum"),
|
||||
datum: inspect_data.deelsrtcontrole_datum? inspect_data.deelsrtcontrole_datum : new Date(),
|
||||
@@ -586,7 +641,7 @@ user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel
|
||||
onChangeDate: "onChangeDeelsrtcdatum('D')",
|
||||
onChangeTime: "onChangeDeelsrtcdatum('T')",
|
||||
// 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: ((vervallen && !(vervallen && (ins_deelsrtcontrole_status == 0 || ins_deelsrtcontrole_status == 2))) || insShow || insEdit || (dsc_is_afgemeld && (hours > 0 || minutes > 0)? true : false))
|
||||
readonly: ((vervallen && !(vervallen && (ins_deelsrtcontrole_status == 0 || ins_deelsrtcontrole_status == 2))) || insEdit || (dsc_is_afgemeld && (hours > 0 || minutes > 0)? true : false))
|
||||
});
|
||||
|
||||
sql = "SELECT ins_controlemode_key"
|
||||
@@ -603,7 +658,7 @@ user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel
|
||||
emptyOption: L("lcl_select_controlemode"),
|
||||
required: true,
|
||||
// Als de inspectie vervallen is moet je alleen nog de lopende inspecties kunnen gereed melden en afronden. De controlemode (methode) moet je dan ook nog kunnen invullen.
|
||||
readonly: (vervallen && !(vervallen && (ins_deelsrtcontrole_status == 0 || ins_deelsrtcontrole_status == 2))) || insShow || insEdit
|
||||
readonly: (vervallen && !(vervallen && (ins_deelsrtcontrole_status == 0 || ins_deelsrtcontrole_status == 2))) || insEdit
|
||||
});
|
||||
}
|
||||
|
||||
@@ -615,8 +670,7 @@ user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel
|
||||
trclass: "invoerinsp",
|
||||
maxlength: 2000,
|
||||
// Als de inspectie vervallen is moet je alleen nog de lopende inspecties kunnen gereed melden en afronden. De opmerking moet je dan ook nog kunnen invullen.
|
||||
readonly: (vervallen && !(vervallen && (ins_deelsrtcontrole_status == 0 || ins_deelsrtcontrole_status == 2))) || insShow,
|
||||
suppressEmpty: insShow
|
||||
readonly: (vervallen && !(vervallen && (ins_deelsrtcontrole_status == 0 || ins_deelsrtcontrole_status == 2)))
|
||||
}
|
||||
);
|
||||
%>
|
||||
@@ -645,7 +699,7 @@ user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel
|
||||
|
||||
generateFlexKenmerkBlock({deelsrtcontrole_key: (!multi && ingeslotendsc[0] > 0? ingeslotendsc[0] : -1),
|
||||
srtcontrole_key: ingeslotensc[0],
|
||||
reado: vervallen || insShow,
|
||||
reado: vervallen,
|
||||
flexcolumns: 1
|
||||
});
|
||||
%></div><%
|
||||
|
||||
@@ -4,703 +4,93 @@
|
||||
$Id$
|
||||
|
||||
File: ins_inspect.asp
|
||||
Description: Inspectiedata opgeven
|
||||
Description: Muteerscherm voor inspecties
|
||||
dit is de grote 'wrapper' voor de diverse andere schermen
|
||||
Parameters: ins_keys of 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
|
||||
Context:
|
||||
Note:
|
||||
|
||||
*/
|
||||
%>
|
||||
<!-- #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" -->
|
||||
|
||||
<!--#include file="../Shared/common.inc" -->
|
||||
<!--#include file="../Shared/iface.inc" -->
|
||||
<!--#include file="ins.inc" -->
|
||||
<%
|
||||
FCLTHeader.Requires({plugins: ["suggest","jQuery"],
|
||||
js: ["jquery-ui.js"],
|
||||
css: ["../shared/suggest/suggest.css"]}); // css for childframes})
|
||||
|
||||
FCLTHeader.Requires({ plugins: ["jQuery", "suggest", "kenmerk"],
|
||||
js: ["jquery.timepicker-table.js"],
|
||||
css: ["timePicker-table.css"] });
|
||||
|
||||
var ins_key_arr = getQParamIntArray("ins_key", []);
|
||||
if (ins_key_arr.length == 0)
|
||||
ins_key_arr = getQParamIntArray("ins_keys");
|
||||
var ins_key_arr = getQParamIntArray("ins_keys");
|
||||
var srtcont_key_arr = getQParamIntArray("srtcont_keys");
|
||||
var deelsrtcont_key = getQParamInt("deelsrtcont_key", -1); // Bestaande inspectie indien meegegeven.
|
||||
var multi = ins_key_arr.length > 1;
|
||||
|
||||
var srtcont_key_arr = getQParamIntArray("srtcont_key", []); // Inspectiesoort(en)
|
||||
if (srtcont_key_arr.length == 0)
|
||||
srtcont_key_arr = getQParamIntArray("srtcont_keys", []);
|
||||
var insPlan = getQParamInt("plan", 0) == 1; // Inplannen inspectie.
|
||||
var insClose = getQParamInt("close", 0) == 1; // Afmelden of afronden inspectie.
|
||||
var insShow = deelsrtcont_key > 0; // Show afgeronde inspectie.
|
||||
var insEdit = !insPlan && !insClose && !insShow; // Wijzigen inspectie.
|
||||
|
||||
var deelsrtcont_key = getQParamInt("deelsrtcont_key", -1); // Bestaande inspectie
|
||||
var transitParam = buildTransitParam(["srtcont_key_arr", "deelsrtcont_key"]);
|
||||
if (insEdit && multi)
|
||||
abort_with_warning(L("lcl_ins_allow_multi_edit"));
|
||||
|
||||
var warning = "";
|
||||
var result = {};
|
||||
var tobeinspected = 0;
|
||||
var ingesloten = [];
|
||||
var ingeslotensc = [];
|
||||
// Bepaal de objecten in de selectie die
|
||||
// ook echt geinspecteerd 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 de respijt aangeven.
|
||||
if (this_ins.canInspect)
|
||||
{
|
||||
ingesloten.push(ins_key_arr[i]);
|
||||
if (srtcont_key_arr.length > 0)
|
||||
ingeslotensc.push(srtcont_key_arr[i]);
|
||||
tobeinspected++;
|
||||
}
|
||||
}
|
||||
user.anything_todo_or_abort(tobeinspected > 0); // We klagen niet over enkele wel en enkele niet
|
||||
%>
|
||||
|
||||
<html class="likemodal">
|
||||
<html>
|
||||
<head>
|
||||
<% FCLTHeader.Generate(); %>
|
||||
|
||||
<script type="text/javascript">
|
||||
var inspected_srtcontroles = new Array();
|
||||
var eenheid = -1;
|
||||
|
||||
<% var inspectionsToDo = true;
|
||||
if (ingesloten.length == 1)
|
||||
{
|
||||
var eenheid = -1;
|
||||
var sctype = -1;
|
||||
var mode = 1; // 0 = Momentmode, 1 = Intervalmode.
|
||||
var info = "";
|
||||
if (ingeslotensc.length == 1)
|
||||
{ // Bepaal mode, eenheid en info van de soort controle.
|
||||
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 = " + ingesloten[0] + ")"
|
||||
+ " 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 = " + ingesloten[0]
|
||||
+ " AND idsc.ins_deel_key(+) = " + ingesloten[0]
|
||||
+ " AND COALESCE (xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) > 0"
|
||||
+ " AND di.ins_srtcontrole_key = " + ingeslotensc[0]
|
||||
+ " 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;
|
||||
mode = oRs("scmode").Value;
|
||||
sctype = oRs("sctype").Value;
|
||||
}
|
||||
|
||||
// Zijn er inspecties te doen. anders alleen "Uitstellen" zichtbaar maken.
|
||||
// Bij multi wordt niet gekeken of er nog inspecties te toen zijn (inspectionsToDo)
|
||||
// Is er een respijt datum? Dan is dit de volgende inspectiedatum.
|
||||
sql = " SELECT xcp.ins_srtcontroledl_xcp_respijt respijt"
|
||||
+ " FROM ins_srtcontroledl_xcp xcp"
|
||||
+ " WHERE xcp.ins_deel_key = " + ingesloten[0]
|
||||
+ (ingeslotensc.length == 1
|
||||
? " AND xcp.ins_srtcontrole_key = " + ingeslotensc[0]
|
||||
: "")
|
||||
+ " AND xcp.ins_srtcontroledl_xcp_respijt IS NOT NULL";
|
||||
oRs = Oracle.Execute(sql);
|
||||
|
||||
var nextdate;
|
||||
var respijt = false;
|
||||
var respijtdate;
|
||||
if (!oRs.eof)
|
||||
{
|
||||
// De respijtdatum is de volgende inspectiedatum
|
||||
var respijtdate = new Date(oRs("respijt").Value);
|
||||
respijt = true;
|
||||
}
|
||||
oRs.Close();
|
||||
|
||||
if (!respijt)
|
||||
{
|
||||
// Zijn er inspecties geweest voor dit object of is er een respijtdatum voor dit object ingevuld zodat we de volgende inspectiedatum kunnen berekenen?
|
||||
sql = "SELECT ins_deelsrtcontrole_datum"
|
||||
+ " FROM ins_deelsrtcontrole idsc"
|
||||
+ " WHERE idsc.ins_deel_key = " + ingesloten[0]
|
||||
+ (ingeslotensc.length == 1
|
||||
? " AND idsc.ins_srtcontrole_key = " + ingeslotensc[0]
|
||||
: "");
|
||||
oRs = Oracle.Execute(sql);
|
||||
if (oRs.eof || ingeslotensc.length == 0)
|
||||
{ // Er zijn nog geen inspecties geweest voor dit object en er is nog geen respijtdatum voor dit object ingevuld
|
||||
// of de soort controle is niet bekend en moet nog gekozen worden.
|
||||
// Volgende inspectiedatum kun je niet berekenen
|
||||
// De eerstvolgende inspectiedatum gelijk aan vandaag stellen.
|
||||
nextdate = new Date();
|
||||
oRs.Close();
|
||||
}
|
||||
else
|
||||
{ // Bereken de volgende inspectiedatum.
|
||||
oRs.Close();
|
||||
sql = "SELECT ins.nextcyclusdate (" + ingesloten[0] + ", " + ingeslotensc[0] + ", 1) nextdate FROM DUAL"
|
||||
oRs = Oracle.Execute(sql);
|
||||
nextdate = new Date(oRs("nextdate").Value);
|
||||
oRs.Close();
|
||||
}
|
||||
}
|
||||
else
|
||||
// De volgende inspectiedatum is de respijtdatum.
|
||||
nextdate = respijtdate;
|
||||
|
||||
// Truncate datums op de dag of het uur afhankelijk van de eenheid.
|
||||
if (eenheid == 0)
|
||||
{
|
||||
nextdate = new Date(nextdate.setMinutes(0, 0, 0));
|
||||
var nowdate = new Date(new Date().setMinutes(0, 0, 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
nextdate = new Date(nextdate.midnight());
|
||||
var nowdate = new Date(new Date().midnight());
|
||||
}
|
||||
|
||||
// Als er inspecties gedaan hadden moeten zijn dan is nextdate de minimale datum voor de controledatum kalender.
|
||||
inspectionsToDo = nextdate <= nowdate || mode == 1; // In intervalmode mag/kun je altijd inspecteren.
|
||||
|
||||
// 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"
|
||||
+ (ingeslotensc.length > 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();
|
||||
}
|
||||
}
|
||||
<%
|
||||
FCLTHeader.Generate();
|
||||
%>
|
||||
|
||||
var respijtFields = ["show_respijt_datum", "time_from_respijt_datum", "sel_controlemode"];
|
||||
var respijtCalendarFields = ["show_respijt_datum", "time_from_respijt_datum"];
|
||||
function ins_submit()
|
||||
<script type="text/javascript" >
|
||||
var verynew="1";
|
||||
<% if (deelsrtcont_key == -1) { %>FcltMgr.startEdit(window);<% } %>
|
||||
function inspectClose(params)
|
||||
{
|
||||
// Controle verplichte velden.
|
||||
// Bij "Uitstellen" alleen de respijtFields (respijt velden) controleren.
|
||||
// Bij "Invoeren" niet de respijtCalendarFields (respijt calender velden) controleren.
|
||||
var actie = $("input:radio[name=inspectie_actie]:checked"); // 0=Invoeren, 1=Uitstellen
|
||||
var validateFields = actie.val() == 1? { checkOnly: respijtFields } : { checkNot: respijtCalendarFields };
|
||||
if (!validateForm("u2", validateFields))
|
||||
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 && (actie.length == 0 || actie.val() == 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;
|
||||
}
|
||||
|
||||
if (actie.length == 1 && actie.val() == 1)
|
||||
{ // Uitstellen inspectie ofwel respijtdatum invullen. Er geldt dan automatisch (ingesloten.length == 1 && ingeslotensc.length == 1)
|
||||
if (mode = 0)
|
||||
{
|
||||
// Is het tijd invoerveld aanwezig voor de respijtdatum?
|
||||
var thereIsTime = $("#time_from_respijt_datum").length &&
|
||||
$("#time_from_respijt_datum")[0].style.display != "none"
|
||||
var respijtdatum = thereIsTime? new Date(parseInt($("#respijt_datum").val())) : new Date(parseInt($("#respijt_datum").val())).midnight();
|
||||
var nudatum = thereIsTime? new Date(new Date().setMinutes(0,0,0)) : new Date().midnight();
|
||||
}
|
||||
else
|
||||
{
|
||||
var respijtdatum = new Date(parseInt($("#respijt_datum").val())); // Seconden is altijd 0;
|
||||
var nudatum = new Date(); // Seconden heeft een waarde.
|
||||
}
|
||||
|
||||
// nextinspectdatum is ook gedefinieerd.
|
||||
lnextinspectdatum = thereIsTime? new Date(parseInt(nextinspectdatum.getTime())) : new Date(parseInt(nextinspectdatum.getTime())).midnight();
|
||||
if (lnextinspectdatum.getTime() == respijtdatum.getTime())
|
||||
{
|
||||
alert(L("lcl_ins_controle_respijt_is_next")); // Respijtdatum is hetzelfde als de volgende inspectiedatum. Dan is er geen sprake van uitstellen.
|
||||
return false;
|
||||
}
|
||||
|
||||
if (respijtdatum < nudatum)
|
||||
{
|
||||
alert(L("lcl_ins_controle_not_past")); // Respijtdatum mag niet in het verleden liggen!
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < inspected_srtcontroles.length; i++)
|
||||
{
|
||||
if (inspected_srtcontroles[i].srtcontrole_key == $("#sel_srtcontrole").val() && actie.length == 1)
|
||||
{
|
||||
// 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.
|
||||
// Voor multi objecten is inspected_srtcontroles leeg. In het save script worden die inspecties overgeslagen.
|
||||
var controle_datum_midnight = (actie.val() == 0? new Date(parseInt($("#deelsrtcontrole_datum").val())).midnight().getTime() : new Date(parseInt($("#respijt_datum").val())).midnight().getTime())
|
||||
var controle_datum_uur = (actie.val() == 0? new Date(new Date(parseInt($("#deelsrtcontrole_datum").val())).setMinutes(0,0,0)).getTime() : new Date(new Date(parseInt($("#respijt_datum").val())).setMinutes(0,0,0)).getTime())
|
||||
var controle_datum = (actie.val() == 0? new Date(parseInt($("#deelsrtcontrole_datum").val())).getTime() : new Date(parseInt($("#respijt_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() &&
|
||||
actie.val() == 0 && // 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.
|
||||
inspected_srtcontroles[i].mode == 1)
|
||||
{ // 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$.post($("form[name=u2]")[0].action, $("[name=u2]").serialize(), FcltCallbackClose, "json");
|
||||
}
|
||||
|
||||
function ins_cancel()
|
||||
{
|
||||
FcltMgr.closeDetail(window, { cancel: true } );
|
||||
}
|
||||
|
||||
function onChangeActie()
|
||||
{
|
||||
<% // Bij multi is de radio button niet aanwezig
|
||||
if (ingesloten.length == 1 && deelsrtcont_key < 0)
|
||||
<% if (deelsrtcont_key == -1)
|
||||
{ %>
|
||||
var actie = $("input:radio[name=inspectie_actie]:checked").val();
|
||||
if (params.cancel || params.close)
|
||||
{
|
||||
FcltMgr.closeDetail(window, params );
|
||||
return true;
|
||||
}
|
||||
FcltMgr.setTitle("<%=L("lcl_complain")%> " + params.mld_key, {hot:false}); //TODO prefix erbij
|
||||
|
||||
// Altijd complete reload, we hebben nu een deelsrtcont_key namelijk
|
||||
window.location.href = "ins_inspect.asp?ins_keys=<%=ins_keys%>&srtcont_keys=<%=srtcont_keys%>&deelsrtcont_key=<%=deelsrtcont_key%>"
|
||||
+ (actie == "P"? "&plan=1" : "")
|
||||
+ (actie == "C"? "&close=1" : "");
|
||||
<% }
|
||||
else
|
||||
{ %>
|
||||
var actie = 0;
|
||||
{ // Bestaande melding bewerkt, switch naar show-mode
|
||||
%>
|
||||
FcltMgr.setTitle(L("lcl_bes_bestelling") + " " + "<%=S("bes_bestelling_prefix")%>" + params.bes_key);
|
||||
$("#inspectFrame")[0].src = "ins_show_inspect.asp?urole=<%=urole%>&mld_key=<%=mld_key%>";
|
||||
<% } %>
|
||||
if (actie == 0)
|
||||
{
|
||||
$(".invoerinsp").show();
|
||||
$(".uitstelinsp").hide();
|
||||
$("#insFlex2").show();
|
||||
$("#sel_controlemode").addClass("required");
|
||||
$("#show_deelsrtcontrole_datum").addClass("required");
|
||||
$("#show_respijt_datum").removeClass("required");
|
||||
FcltMgr.resized(window);
|
||||
}
|
||||
else
|
||||
{
|
||||
$(".invoerinsp").hide();
|
||||
$(".uitstelinsp").show();
|
||||
$("#insFlex2").hide();
|
||||
$("#sel_controlemode").removeClass("required");
|
||||
$("#show_deelsrtcontrole_datum").removeClass("required");
|
||||
$("#show_respijt_datum").addClass("required");
|
||||
}
|
||||
}
|
||||
|
||||
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()));
|
||||
}
|
||||
}
|
||||
|
||||
jQuery(document).ready(function()
|
||||
{
|
||||
onChangeActie();
|
||||
<% if (!inspectionsToDo)
|
||||
{ %>
|
||||
$("label[for=inspect_i]").attr("disabled", true);
|
||||
<% } %>
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body id="editbody" class="likemodal">
|
||||
<% var buttons = [{title: L("lcl_submit"), icon: "opslaan.png", action:"ins_submit()"},
|
||||
{title: L("lcl_cancel"), icon: "undo.png", action: "ins_cancel()"}];
|
||||
IFRAMER_HEADER(L("lcl_ins_docontrole"), buttons);
|
||||
%>
|
||||
<form name="u2" action="ins_inspect_save.asp?ins_keys=<%=ingesloten.join(",")%><%=transitParam%>" method="post">
|
||||
<input type="hidden" name="ins_keys" id="ins_keys" value="<%=ingesloten.join(",")%>">
|
||||
<% BLOCK_START("insMultiEdit", L("lcl_ins_controle"))
|
||||
// Bij multi invoeren inspectie is respijt niet aan te passen.
|
||||
// Bij multi wordt niet gekeken of er nog inspecties te toen zijn (inspectionsToDo)
|
||||
if (ingesloten.length == 1 && deelsrtcont_key < 0)
|
||||
{
|
||||
%> <!-- Inspectie invoeren/uitstellen -->
|
||||
<tr class="primsearch">
|
||||
<td class="label"><label><%=L("lcl_ins_inspectie")%>:</label></td>
|
||||
<td>
|
||||
<label for="inspect_i">
|
||||
<input type="radio" name="inspectie_actie" id="inspect_i" onClick="onChangeActie()" value="0" <%=!inspectionsToDo? "" : "checked"%>><%=L("lcl_ins_invoeren")%>
|
||||
</label>
|
||||
<label for="inspect_u">
|
||||
<input type="radio" name="inspectie_actie" id="inspect_u" onClick="onChangeActie()" value="1" <%=inspectionsToDo? "" : "checked"%>><%=L("lcl_ins_uitstellen")%>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<% }
|
||||
if (deelsrtcont_key == -1)
|
||||
{
|
||||
inspect_data = {deelsrtcontrole_datum: new Date()};
|
||||
}
|
||||
else
|
||||
{
|
||||
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);
|
||||
inspect_data = {deelsrtcontrole_datum: new Date(oRs("ins_deelsrtcontrole_datum").Value),
|
||||
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_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();
|
||||
}
|
||||
|
||||
|
||||
var sql = "SELECT COUNT (DISTINCT ins_deel_key)"
|
||||
+ " FROM ins_deel"
|
||||
+ " WHERE ins_deel_key IN (" + ingesloten.join(",") + ")";
|
||||
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_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 IN (" + ingesloten.join(",") + "))"
|
||||
+ " 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"
|
||||
+ (ingesloten.length == 1
|
||||
? " , 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.join(",") + ")"
|
||||
+ " 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)"
|
||||
+ (ingeslotensc.length > 0
|
||||
? " AND di.ins_srtcontrole_key = " + ingeslotensc.join(",")
|
||||
: "")
|
||||
+ " GROUP BY di.ins_srtcontrole_key"
|
||||
+ " , di.ins_srtcontrole_omschrijving"
|
||||
+ " , di.ins_srtcontrole_info"
|
||||
+ " , di.ins_srtcontrole_eenheid"
|
||||
+ " , di.ins_srtcontrole_periode"
|
||||
+ (ingesloten.length == 1
|
||||
? " , di.ins_deel_key"
|
||||
: "")
|
||||
+ " , xcp.ins_srtcontroledl_xcp_eenheid"
|
||||
+ " HAVING COUNT(*) = " + cntdeel // Als multi dan alleen de inspecties die voor *alle* objecten gelden
|
||||
+ ")";
|
||||
|
||||
if (ingesloten.length == 1)
|
||||
{ // Inspecteren van <20><>n object met <20><>n of meerdere soortcontroles
|
||||
FCLTselector("sel_srtcontrole" + (ingeslotensc.length == 1? "_show" : ""),
|
||||
sql,
|
||||
{ label: L("lcl_ins_controle"),
|
||||
initKey: ingeslotensc.length == 1? ingeslotensc[0] : -1,
|
||||
emptyOption: L("lcl_select_srtcontrole"),
|
||||
readonly: ingeslotensc.length == 1, // dan wordtie niet gesubmit
|
||||
required: true,
|
||||
extraParamValue: "eenheid, info" + (ingesloten.length == 1? ", nextcyclusdatems, nextcyclusdatems_n" : ""),
|
||||
extraParamValueInit: "-1, " + (ingesloten.length == 1? ", 0, 0" : "")
|
||||
});
|
||||
if (ingeslotensc.length == 1)
|
||||
{ %>
|
||||
<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 });
|
||||
}
|
||||
else
|
||||
{ // Multi objecten
|
||||
%>
|
||||
<input type="hidden" name="srtcont_key_arr" id="srtcont_key_arr" value="<%=srtcont_key_arr.join(",")%>">
|
||||
<% }
|
||||
|
||||
// Met 2016.1 status tonen.
|
||||
//var params = { infoPointer: { Url: "appl/shared/status_info.asp?insc_key=" + deelsrtcont_key + "&urole=bo",
|
||||
// Title: L("lcl_status_details") + " " + deelsrtcont_key
|
||||
// }
|
||||
// }
|
||||
//ROFIELDTR("fld", L("lcl_ins_status"), inspect_data.deelsrtcontrole_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"
|
||||
+ " ELSE 0"
|
||||
+ " END) aantal_dmj_eenheden"
|
||||
+ " , 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_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_eenheden;
|
||||
var minDate;
|
||||
if (!oRs.eof)
|
||||
{
|
||||
lastinspectdatum = new Date(oRs("lastinspectdatum").Value);
|
||||
dag_na_lastinspectdatum = new Date(oRs("dag_na_lastinspectdatum").Value);
|
||||
aantal_dmj_eenheden = oRs("aantal_dmj_eenheden").Value;
|
||||
minDate = aantal_dmj_eenheden? dag_na_lastinspectdatum : lastinspectdatum;
|
||||
sctype=oRs("ins_srtcontrole_type").value;
|
||||
%>
|
||||
<script type="text/javascript">
|
||||
var lastinspectdatum = new Date(<%=lastinspectdatum.getTime()%>);
|
||||
</script>
|
||||
<body>
|
||||
<%
|
||||
}
|
||||
else
|
||||
{
|
||||
// Bepaal het type 1,2,of 3, nodig om de bijpassende controlemodes te kiezen
|
||||
// Als dit gemixt is kan dit niet, een adequate botte manier is om dan geen keuze te
|
||||
// bieden in dit verplichte veld
|
||||
sql = "SELECT isc.ins_srtcontrole_type"
|
||||
+ " FROM ins_srtcontrole isc"
|
||||
+ " WHERE isc.ins_srtcontrole_key IN (" + ingeslotensc.join(",") + ")"
|
||||
+ " GROUP BY ins_srtcontrole_type";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
if (!oRs.eof)
|
||||
{
|
||||
sctype=oRs("ins_srtcontrole_type").value;
|
||||
oRs.moveNext();
|
||||
if (!oRs.eof && oRs("ins_srtcontrole_type").value != sctype) sctype = -1;
|
||||
}
|
||||
%>
|
||||
<script type="text/javascript">
|
||||
var lastinspectdatum = null;
|
||||
</script>
|
||||
<%
|
||||
}
|
||||
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,
|
||||
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: (deelsrtcont_key > 0 && (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: inspect_data.controlemode_key,
|
||||
emptyOption: L("lcl_select_controlemode"),
|
||||
required: true,
|
||||
trclass: "invoerinsp"
|
||||
});
|
||||
if (deelsrtcont_key == -1)
|
||||
{ // Maak een nieuw
|
||||
var page = "ins_edit_inspect.asp?ins_keys=" + ins_keys.join(",") + "&srtcont_keys=" + srtcont_keys.join(",")
|
||||
+ (insPlan? "&plan=1" : "")
|
||||
+ (insClose? "&close=1" : "");
|
||||
}
|
||||
else
|
||||
{
|
||||
var page = "ins_show_inspect.asp?ins_keys=" + ins_keys.join(",") + "&srtcont_keys=" + srtcont_keys.join(",") + "&deelsrtcont_key=" + deelsrtcont_key.join(",");
|
||||
}
|
||||
// 1. Het hoofdframe
|
||||
IFRAMER("inspectFrame", page, { title: L("lcl_bes_frame_algemeen"),
|
||||
initHeight: "450px",
|
||||
FcltClose: "inspectClose" } );
|
||||
|
||||
RWTEXTAREATR("opmerk", "fldremark", L("lcl_remark"), inspect_data.srtcontrole_opmerking, {html: "rows='8'", trclass: "invoerinsp", maxlength: 2000});
|
||||
|
||||
if (ingesloten.length == 1)
|
||||
{
|
||||
var nextinspectdatum = new Date();
|
||||
var maxpast = -1;
|
||||
if (ingeslotensc.length == 1)
|
||||
{
|
||||
sql = "SELECT ins.nextcyclusdate(" + ingesloten[0] + ", " + ingeslotensc[0] + ") nextcyclusdate"
|
||||
+ " FROM ins_srtcontrole isc"
|
||||
+ " , ins_deel id"
|
||||
+ " , ins_srtdeel isd"
|
||||
+ " WHERE id.ins_srtdeel_key = isd.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 = isd.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]
|
||||
+ " AND isc.ins_srtcontrole_key = " + ingeslotensc[0];
|
||||
var oRs = Oracle.Execute(sql);
|
||||
nextinspectdatum = new Date(oRs("nextcyclusdate").Value);
|
||||
}
|
||||
FCLTcalendar("respijt_datum",
|
||||
{ label: L("lcl_ins_respijt"),
|
||||
datum: nextinspectdatum,
|
||||
minDate: new Date(),
|
||||
required : false, // Initeel hidden. Dan niet verplicht.
|
||||
readonly : false,
|
||||
trclass: "uitstelinsp",
|
||||
trhidden: true,
|
||||
timeField: true,
|
||||
timeStep: 60,
|
||||
startTime: 0,
|
||||
endTime: 23.75
|
||||
});
|
||||
%>
|
||||
<script type="text/javascript">
|
||||
var nextinspectdatum = new Date(<%=nextinspectdatum.getTime()%>);
|
||||
jQuery(document).ready(function()
|
||||
{
|
||||
var eenheid = <%=eenheid%>;
|
||||
var mode = <%=mode%>;
|
||||
// In de interval mode moet de tijd bij de respijtdatum altijd invulbaar zijn.
|
||||
// In de moment mode moet de tijd bij de respijtdatum alleen invulbaar zijn als de eenheid in uren(0) is.
|
||||
if (mode == 0 && eenheid != 0)
|
||||
$("#time_from_respijt_datum").hide();
|
||||
});
|
||||
</script>
|
||||
<% }
|
||||
BLOCK_END();
|
||||
%>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<%
|
||||
if (ingesloten.length == 1)
|
||||
{
|
||||
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: ingeslotensc == 0? -1 : ingeslotensc[0],
|
||||
reado: false,
|
||||
flexcolumns: 1
|
||||
});
|
||||
%></div><%
|
||||
BLOCK_END();
|
||||
}
|
||||
|
||||
IFACE.FORM_END();
|
||||
%>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -52,15 +52,15 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
|
||||
function insShow(row)
|
||||
{
|
||||
$(row).addClass('dirty');
|
||||
var insKeyString = row.getAttribute("ROWKEY");
|
||||
var ins_key = row.getAttribute("ROWKEY");
|
||||
var rowdata = eval("(" + row.getAttribute("ROWDATA") + ")");
|
||||
if (rowdata)
|
||||
{
|
||||
srtcontrolekey = rowdata.insSrtControleKey;
|
||||
srtcontroletype = rowdata.insSrtControleType;
|
||||
var srtcontrolekey = rowdata.insSrtControleKey;
|
||||
var srtcontroletype = rowdata.insSrtControleType;
|
||||
// Meegeven welke afgeronde inspectie getoond moet worden.
|
||||
deellsrtcontkey = rowdata.insDeelSrtContrKey;
|
||||
var url = "appl/ins/ins_edit_inspect.asp?ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekey + "&deelsrtcont_key=" + deellsrtcontkey;
|
||||
var deellsrtcontkey = rowdata.insDeelSrtContrKey;
|
||||
var url = "appl/ins/ins_show_inspect.asp?ins_key=" + ins_key + "&srtcont_key=" + srtcontrolekey + "&deelsrtcont_keys=" + deellsrtcontkey;
|
||||
var title = "";
|
||||
switch (srtcontroletype)
|
||||
{
|
||||
@@ -79,8 +79,9 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
|
||||
var rowdata = eval("(" + row.getAttribute("ROWDATA") + ")");
|
||||
if (rowdata)
|
||||
{
|
||||
srtcontrolekey = rowdata.insSrtControleKey;
|
||||
var url = "appl/ins/ins_edit_inspect.asp?plan=1&ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekey;
|
||||
var srtcontrolekey = rowdata.insSrtControleKey;
|
||||
var deellsrtcontkey = rowdata.insDeelSrtContrKey;
|
||||
var url = "appl/ins/ins_edit_inspect.asp?plan=1&ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekey + "&deelsrtcont_keys=" + deellsrtcontkey;
|
||||
FcltMgr.openDetail(url, L("lcl_ins_schedule"));
|
||||
}
|
||||
}
|
||||
@@ -116,8 +117,9 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
|
||||
var rowdata = eval("(" + row.getAttribute("ROWDATA") + ")");
|
||||
if (rowdata)
|
||||
{
|
||||
srtcontrolekey = rowdata.insSrtControleKey;
|
||||
var url = "appl/ins/ins_edit_inspect.asp?close=1&ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekey;
|
||||
var srtcontrolekey = rowdata.insSrtControleKey;
|
||||
var deellsrtcontkey = rowdata.insDeelSrtContrKey;
|
||||
var url = "appl/ins/ins_edit_inspect.asp?close=1&ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekey + "&deelsrtcont_keys=" + deellsrtcontkey;
|
||||
FcltMgr.openDetail(url, L("lcl_ins_close"));
|
||||
}
|
||||
}
|
||||
@@ -355,7 +357,7 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
|
||||
// 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 eEdit = !vervallen && istatus >= 0 && istatus < 6 && this_ins.canChange;
|
||||
var eShow = istatus >= 0 && this_ins.canRead && !eEdit;
|
||||
var eShow = istatus >= 0 && this_ins.canRead;
|
||||
var ePlan = !vervallen && this_ins.canInspect && (istatus < 0);
|
||||
var eStart = !vervallen && this_ins.canInspect && (istatus <= 0);
|
||||
// Als de inspectie vervallen is moet je alleen nog de lopende inspecties kunnen gereed melden en afronden.
|
||||
@@ -543,7 +545,7 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
|
||||
rst.addColumn(new Column({caption: L("lcl_ins_controle_opm"), content: "ins_srtcontrole_opmerking"}));
|
||||
}
|
||||
rst.addAction({ action: "insShow", caption: L("lcl_edit"), enabler: "eShow", isDefault: true });
|
||||
rst.addAction({ action: "insEditInsp", caption: L("lcl_edit"), enabler: "eEdit", isDefault: true });
|
||||
rst.addAction({ action: "insEditInsp", caption: L("lcl_change"), enabler: "eEdit" });
|
||||
rst.addAction({ action: "insPlan", caption: L("lcl_ins_schedule"), enabler: "ePlan" });
|
||||
rst.addAction({ action: "insStart", caption: L("lcl_ins_start"), enabler: "eStart" });
|
||||
rst.addAction({ action: "insClose", caption: L("lcl_ins_close") + "/" + L("lcl_ins_finish"), enabler: "eClose" });
|
||||
|
||||
@@ -195,9 +195,9 @@ function insEditInsp(row)
|
||||
var rowdata = eval("(" + row.getAttribute("ROWDATA") + ")");
|
||||
if (rowdata)
|
||||
{
|
||||
srtcontrolekey = rowdata.insSrtControleKey;
|
||||
//deellsrtcontkey = rowdata.insDeelSrtContrKey;
|
||||
var url = "appl/ins/ins_edit_inspect.asp?ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekey// + "&dlsrtcont_keys=" + deellsrtcontkey;
|
||||
var srtcontrolekey = rowdata.insSrtControleKey;
|
||||
var deellsrtcontkey = rowdata.insDeelSrtContrKey;
|
||||
var url = "appl/ins/ins_edit_inspect.asp?ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekey + "&deelsrtcont_keys=" + deellsrtcontkey;
|
||||
FcltMgr.openDetail(url, L("lcl_change"));
|
||||
}
|
||||
}
|
||||
@@ -206,13 +206,15 @@ function insPlan(rowArray)
|
||||
{
|
||||
var insKeyString = getKeyString(rowArray);
|
||||
var srtcontrolekeyArray = new Array();
|
||||
var deelsrtcontrkeyArray = new Array();
|
||||
for (var i = 0; i < rowArray.length; i++)
|
||||
{
|
||||
rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')');
|
||||
srtcontrolekeyArray[i] = rowdata.insSrtControleKey;
|
||||
deelsrtcontrkeyArray[i] = rowdata.insDeelSrtContrKey;
|
||||
}
|
||||
|
||||
var url = "appl/ins/ins_edit_inspect.asp?plan=1&ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekeyArray;
|
||||
var url = "appl/ins/ins_edit_inspect.asp?plan=1&ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekeyArray + "&deelsrtcont_keys=" + deelsrtcontrkeyArray.join(",");
|
||||
FcltMgr.openDetail(url, L("lcl_ins_schedule"));
|
||||
}
|
||||
|
||||
@@ -244,13 +246,15 @@ function insClose(rowArray)
|
||||
{
|
||||
var insKeyString = getKeyString(rowArray);
|
||||
var srtcontrolekeyArray = new Array();
|
||||
var deelsrtcontrkeyArray = new Array();
|
||||
for (var i = 0; i < rowArray.length; i++)
|
||||
{
|
||||
rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')');
|
||||
srtcontrolekeyArray[i] = rowdata.insSrtControleKey;
|
||||
deelsrtcontrkeyArray[i] = rowdata.insDeelSrtContrKey;
|
||||
}
|
||||
|
||||
var url = "appl/ins/ins_edit_inspect.asp?close=1&ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekeyArray;
|
||||
var url = "appl/ins/ins_edit_inspect.asp?close=1&ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekeyArray + "&deelsrtcont_keys=" + deelsrtcontrkeyArray.join(",");
|
||||
FcltMgr.openDetail(url, L("lcl_ins_close"));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user