Files
Facilitor/APPL/INS/ins_edit_inspect.asp
Maykel Geerdink 244a9c2a0a FSN#51437: Gereedmelden van periodieke taak geeft Javascript fout - groupby is not defined.
svn path=/Website/branches/v2017.2/; revision=36193
2017-12-04 12:19:09 +00:00

1055 lines
54 KiB
Plaintext
Raw Blame History

<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: ins_edit_inspect.asp
Description: Wijzigen, inplannen, afmelden of afronden van een inpectie.
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="../Shared/discxalg3d.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 deelsrtcont_arr = getQParamIntArray("deelsrtcont_keys", -1); // Bestaande inspectie indien meegegeven.
var multi = ins_key_arr.length > 1; // Er zijn meerdere object keys meegegeven.
var insPlan = getQParamInt("plan", 0) == 1; // Inplannen inspectie.
var insClose = getQParamInt("close", 0) == 1; // Afmelden of afronden inspectie.
var insEdit = !insPlan && !insClose; // Wijzigen inspectie.
var fromfinish = getQParamInt("fromfinish", 0) == 1; // Alleen Voltooien bij bulkactie (multi).
var finishmjob = getQParamInt("finishmjob", 0) == 1;
var groupby = getQParamInt("groupby", 7);
var catclose = (finishmjob && groupby < 7); // Bulk closen per categorie.
if (insEdit && multi)
abort_with_warning(L("lcl_ins_allow_multi_edit"));
var tobehandled = 0;
var ingesloten = [];
var ingeslotensc = [];
var ingeslotendsc = [];
var ingeslotenscen = [];
var canMsuEdit = false; // Alleen voor het wijzigen van inspectie (insEdit). Er geldt dan altijd !multi.
// Bepaal de objecten/delen in de selectie die
// ook echt ingepland kunnen of mogen worden.
var ctrdisc_key = -1;
// Alle objecten moeten Gereed gemeld(5) of Afgerond(6) kunnen worden voordat de button zichtbaar mag worden.
var canClose = true;
var canFinish = true;
var nrCanFinishAfterClose = 0;
var inflatiepct = S("mjb_inflation");
var inflatiefactor = 1 + (inflatiepct / 100);
var mjb_start_year = S("mjb_start_year");
var mjb_freeze_year = S("mjb_freeze_year");
var transitParam = "";
if (catclose)
{
// Bulk closen per categorie.
transitParam = buildTransitParam(["close", "ins_keys", "srtcont_keys", "deelsrtcont_keys", "fromfinish", "finishmjob",
"dist_key", "loc_key", "bld_key", "disc_key", "srtgroep_kye", "srtdeel_key",
"groep", "categori_key", "srtcontrole", "frequentie", "incbtw", "groupby",
"deel", "mjbMoved", "mjbFreezed", "mjbXcped"]);
var dist_key = getQParamInt("dist_key", -1); // District
var loc_key = getQParamInt("loc_key", -1); // Locatie
var bld_key = getQParamInt("bld_key", -1); // Gebouw
var disc_key = getQParamInt("disc_key", -1);
var srtgroep_key = getQParamInt("srtgroep_key", -1);
var srtdeel_key = getQParamInt("srtdeel_key", -1);
var groep = getQParam("groep", ""); // Groep
var categorie_key = getQParamInt("categorie_key", -1); // Categorie
var srtcontrole = getQParamIntArray("srtcontrole", []); // Taak
var frequentie = getQParamIntArray("frequentie", []); // Array met frequenties.
var incbtw = getQParamInt("incbtw", 0) == 1; // Lijst inclusief BTW weergeven.
var deel = getQParam("deel", ""); // Identieficatie
var mjbMoved = getQParamInt("mjbMoved", 0) == 1; // Verschoven.
var mjbFreezed = getQParamInt("mjbFreezed", 0) == 1; // In behandeling.
var mjbXcped = getQParamInt("mjbXcped", 0) == 1; // Aangepast.
// Start building the query to fetch all objects satisfying
var mjbparams = { scenario: 1,
fulldetails: true,
toyear: mjb_freeze_year,
jaren: [mjb_freeze_year],
//actsit: actsit,
keys: ins_key_arr,
niveau: groupby, // Het niveau (betekenis) van de keys (district(1), gebouw(2), discipline(3), groep(4), objectsoort(5), object(6))
dist_key: dist_key,
loc_key: loc_key,
bld_key: bld_key,
disc_key: disc_key,
srtgroep_key: srtgroep_key,
srtdeel_key: srtdeel_key,
groep: groep,
categorie_key: categorie_key,
srtcontrole: srtcontrole,
frequentie: frequentie,
incbtw: incbtw,
deel: deel,
mjbMoved: mjbMoved,
mjbFreezed: mjbFreezed,
mjbXcped: mjbXcped,
groupby: 7, // Ik wil alle objecten opvragen.
finish: true,
getsumtypes: true
};
var mjblist_sql = ins.getmjblist_sql(mjbparams);
// De mjblist_sql bevat nu alle objecten (ins_deel_key) van de aangevinkte regels uit het mjb overzicht en levert voor elk object de waarden voor de insert op.
var oRs = Oracle.Execute(mjblist_sql);
user.anything_todo_or_abort(!oRs.eof); // We klagen niet over enkele wel en enkele niet
var sumtype1 = oRs("sumtype1").Value || 0;
var sumtype2 = oRs("sumtype2").Value || 0;
var sumtype3 = oRs("sumtype3").Value || 0;
tobehandled = sumtype1 + sumtype2 + sumtype3;
var sumtyp = [];
sumtyp[0] = tobehandled;
sumtyp[1] = oRs("sumtype1").Value;
sumtyp[2] = oRs("sumtype2").Value;
sumtyp[3] = oRs("sumtype3").Value;
ingesloten = ins_key_arr;
}
else
{
for (var i = 0; i < ins_key_arr.length; i++)
{
var this_ins = ins.func_enabled_deel(ins_key_arr[i],
{srtcont_key: srtcont_key_arr[i],
deelsrtcont_key: (deelsrtcont_arr[i] > 0? deelsrtcont_arr[i] : -1)
});
canMsuEdit = insEdit && this_ins.canMsuEdit;
var sql = "SELECT idsc.ins_deelsrtcontrole_key"
+ " , idsc.ins_deelsrtcontrole_status"
+ " , xcp.ins_srtcontroledl_xcp_eind vervaldatum"
+ " , isc.ctr_discipline_key"
+ " , isc.ins_srtcontrole_options options"
+ " FROM ins_srtcontrole isc"
+ " , ins_deelsrtcontrole idsc"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE isc.ins_srtcontrole_key = idsc.ins_srtcontrole_key(+)" // Er kan nog voor de eerste keer geinspecteerd moeten worden.
+ " AND isc.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND xcp.ins_deel_key(+) = " + ins_key_arr[i]
+ " AND idsc.ins_deel_key(+) = " + ins_key_arr[i]
+ " AND isc.ins_srtcontrole_key = " + srtcont_key_arr[i]
+ (deelsrtcont_arr[i] > 0
? " AND idsc.ins_deelsrtcontrole_key = " + deelsrtcont_arr[i]
: " AND idsc.ins_deelsrtcontrole_status(+) != 6")
+ " AND idsc.ins_scenario_key(+) = 1"
+ " AND xcp.ins_scenario_key(+) = 1"
+ " ORDER BY ins_deelsrtcontrole_datum DESC";
var oRs = Oracle.Execute(sql);
ctrdisc_key = oRs("ctr_discipline_key").Value;
// Waarden moeten aanwezig zijn. Mocht dat niet zo zijn dan is er iets fout.
// Als de laatste inspectie is afgerond is, wordt er null opgeleverd voor de ins_deelsrtcontrole_key en ins_deelsrtcontrole_status.
// Er moet dan een nieuwe inspectie worden ingeland/gestart/afgemeld of afgerond.
var ins_deelsrtcontrole_key = oRs("ins_deelsrtcontrole_key").Value != null? oRs("ins_deelsrtcontrole_key").Value : -1;
var ins_deelsrtcontrole_status = oRs("ins_deelsrtcontrole_status").Value != null? oRs("ins_deelsrtcontrole_status").Value : -1;
var vervaldatum = oRs("vervaldatum").Value != null? new Date(oRs("vervaldatum").Value) : null;
var vervallen = vervaldatum != null && vervaldatum < new Date();
var isc_options = oRs("options").Value;
oRs.Close();
// Het is de eerste inspectie of de laatste inspectie moet verwerkt(6) zijn, anders kan de inspectie niet ingepland worden.
if (insPlan && !this_ins.canInspPlan) // Inplannen. Inplan scherm n.v.t. voor MJOB.
{ // Het is niet de eerste inspectie of de laatste inspectie is niet verwerkt. Overslaan.
continue;
}
// Kan de inspectie gereed gemeld/afgemeld of afgerond worden?
if (insClose)
{ // Bij bulkacties (multi) alleen kijken naar de bulkactie die uitgevoerd moet worden.
if (insClose && ((multi && ((!fromfinish && !this_ins.canInspClose) || (fromfinish && !(this_ins.canInspFinish || this_ins.canInspFinishMjb)))) ||
(!multi && !this_ins.canInspClose && !(this_ins.canInspFinish || this_ins.canInspFinishMjb))))
// De inspectie kan niet afgemeld/afgerond worden. Overslaan.
continue;
}
// Het mag niet de eerste inspectie zijn en de laatste inspectie mag niet verwerkt zijn.
if (insEdit && !this_ins.canInspEdit)
{ // Eerste inspectoe of verwerkte inspectie kan niet gewijzigd worden. Overslaan.
continue;
}
// Ik mag inplannen, gereed melden of wijzigen.
// De vervallen LOPENDE inspecties zitten hier ook nog tussen.
// De rest van de vervallen inspecties zijn er door canInspPlan, canInspClose en canInspEdit uitgefilterd.
// Vervallen LOPENDE inspecties kunnen nu behandeld worden als gewone inspecties.
// Alle Arrays zijn even groot.
ingesloten.push(ins_key_arr[i]);
ingeslotensc.push(srtcont_key_arr[i]);
ingeslotendsc.push(ins_deelsrtcontrole_key);
// Als 1 van de srtcontroles niet gereed te melden is, dan kan er niet gereed gemeld worden en moet de button niet getoond worden.
canClose = canClose && this_ins.canInspClose;
// Als 1 van de srtcontroles niet af te ronden is, dan kan er niet afgerond worden en moet de button niet getoond worden.
canFinish = canFinish && (this_ins.canInspFinish || this_ins.canInspFinishMjb);
// Kan 1 van de srtcontroles na het gereed melden worden afgerond? Dan kan ook de afrond button getoond worden. N.v.t. voor mjob.
if (this_ins.canInspClose && this_ins.canInspFinish)
nrCanFinishAfterClose++;
tobehandled++;
}
}
if (insClose && !canClose && !canFinish)
// Als de buttons niet zichtbaar zijn heb ik niets te doen.
tobehandled = 0;
lcl.set_dialect(ctrdisc_key, "INS_TAB_DISCIPLINE_KEY");
user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel en enkele niet
var desc = "";
if (!catclose && ins_key_arr.length == 1)
{
sql = "SELECT d.ins_deel_omschrijving" // identificatie
+ " , s.ins_srtdeel_code"
+ " , " + lcl.xsqla('s.ins_srtdeel_omschrijving', 's.ins_srtdeel_key')
+ " , " + lcl.xsqla('g.ins_srtgroep_omschrijving', 'g.ins_srtgroep_key')
+ " , " + lcl.xsqla('dis.ins_discipline_omschrijving', 'dis.ins_discipline_key')
+ " FROM ins_deel d"
+ " , ins_srtdeel s"
+ " , ins_srtgroep g"
+ " , ins_tab_discipline dis"
+ " WHERE ins_deel_key = " + ins_key_arr[0]
+ " AND d.ins_srtdeel_key = s.ins_srtdeel_key"
+ " AND s.ins_srtgroep_key = g.ins_srtgroep_key"
+ " AND g.ins_discipline_key = dis.ins_discipline_key";
oRs = Oracle.Execute(sql);
var desc = oRs("ins_deel_omschrijving").Value;
var sort = oRs("ins_srtdeel_omschrijving").Value;
oRs.Close();
}
%>
<html>
<head>
<% FCLTHeader.Generate(); %>
<%
var eenheid = -1;
var scmode = 1; // 0 = Momentmode, 1 = Intervalmode.
var sctype = -1;
var aanmaakdatum;
var startdatum;
var eersteinspectie;
var info = "";
if (!catclose)
{
sql = "SELECT *"
+ " FROM (SELECT DISTINCT xcp.ins_srtcontrole_eenheid eenheid"
+ " , xcp.ins_srtcontrole_info info"
+ " , xcp.ins_srtcontrole_mode scmode"
+ " , xcp.ctr_controle_type sctype"
+ " , xcp.ins_deel_aanmaak"
+ " , xcp.ins_srtcontroledl_xcp_startdat startdatum"
+ " , xcp.ctr_ismjob ismjob"
+ " , (SELECT COUNT (idsc.ins_deelsrtcontrole_key)"
+ " FROM ins_deelsrtcontrole idsc1"
+ " WHERE idsc1.ins_deel_key = xcp.ins_deel_key"
+ " AND idsc1.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
+ " AND idsc1.ins_scenario_key = 1) aantal"
+ " FROM ins_v_defined_inspect_xcp xcp"
+ " , ins_deelsrtcontrole idsc"
+ " WHERE xcp.ins_srtcontrole_key = idsc.ins_srtcontrole_key(+)" // Er kan nog voor de eerste keer geinspecteerd moeten worden.
+ " AND idsc.ins_scenario_key(+) = 1"
+ " AND xcp.ins_scenario_key = 1"
+ " AND xcp.ins_deel_key IN (" + ingesloten.join(",") + ")"
+ " AND idsc.ins_deel_key(+) IN (" + ingesloten.join(",") + ")"
+ " AND xcp.ins_srtcontrole_periode > 0"
+ " AND xcp.ins_srtcontrole_key IN (" + ingeslotensc.join(",") + ")"
+ " )";
var oRs = Oracle.Execute(sql);
eenheid = oRs("eenheid").Value;
info = oRs("info").Value;
scmode = oRs("scmode").Value;
sctype = oRs("sctype").Value;
aanmaakdatum = new Date(oRs("ins_deel_aanmaak").Value);
startdatum = oRs("startdatum").Value != null? new Date(oRs("startdatum").Value) : null;
mjob = oRs("ismjob").Value == 1;
eersteinspectie = oRs("aantal").Value == 0;
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.
}
if (aanmaakdatum.getTime() < new Date(oRs("ins_deel_aanmaak").Value).getTime())
aanmaakdatum = new Date(oRs("ins_deel_aanmaak").Value);
oRs.MoveNext();
}
oRs.Close();
// 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;
<% if (!catclose && insClose)
{ %>
var inspected_srtcontroles = new Array();
<%
if (sctype < 0)
abort_with_warning(L("lcl_ins_no_same_srtcontrole"));
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[0] + ")"
+ " AND COALESCE(xcp.ins_srtcontroledl_xcp_periode, isc.ins_srtcontrole_periode) > 0"
+ " AND idsc.ins_srtcontrole_key = " + ingeslotensc[0]
+ " AND idsc.ins_scenario_key = 1"
+ " AND xcp.ins_scenario_key(+) = 1";
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();
}
}
}
if (!catclose)
{
var insstatus = -1;
var status_str = "";
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"
+ " WHERE ins_deelsrtcontrole_key = " + ingeslotendsc[0];
var oRs = Oracle.Execute(sql);
insstatus = oRs("ins_deelsrtcontrole_status").Value;
status_str = ins.getinspectstatustext(oRs("ins_deelsrtcontrole_status").Value);
}
else if (insClose && ingeslotendsc.join(",").search("-1") < 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(",") + ")"
+ " AND ins_scenario_key = 1";
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.getinspectstatustext(oRs("minstatus").Value);
}
}
}
%>
function ins_submit_callback(json)
{
if (json.success)
FcltMgr.closeDetail(window, json);
}
function ins_submit(finish)
{
// Controle verplichte velden.
<% if (!catclose && insPlan || (insEdit && insstatus == 0)) // Alleen de datum verplicht bij inplannen en bij het wijzigen van ingeplande inspectie.
{ %>
if (!validateForm("u2", { checkOnly: ["show_plandatum", "time_from_plandatum"] }))
return false;
<% }
else if (!catclose && !(insEdit && insstatus == 2)) // Bij wijzigen in status 2 is er geen enkel veld verplicht.
{ %>
if (!validateForm("u2"))
return false;
<% } %>
<% if (!catclose && insPlan)
{ %>
// 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())
{
FcltMgr.alert(L("lcl_ins_controle_not_past")); // Plandatum mag niet in het verleden liggen!
return false;
}
<% }
else if (!catclose && insClose)
{ %>
// 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)
{
FcltMgr.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.
FcltMgr.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_min = new Date(new Date(parseInt($("#deelsrtcontrole_datum").val())).setSeconds(0, 0)).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.
FcltMgr.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.
FcltMgr.alert(L("lcl_ins_double_inspection_hour"));
return false;
}
else if (controle_datum_min == 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 hierboven). 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.
FcltMgr.alert(L("lcl_ins_double_inspection"));
return false;
}
}
}
$("#finish").val(finish);
<% }
else if (!catclose && insEdit)
{ %>
if (dsc_is_afgemeld)
{
// Controleren of de huidige uitvoerdatum van de inspectie tussen die van de voorgaande en volgende inspectie ligt.
var uitvoerdatum = new Date(parseInt($("#deelsrtcontrole_datum").val()));
if (uitvoerdatum <= minDateEdit || uitvoerdatum >= maxDateEdit)
{
FcltMgr.alert(L("lcl_ins_controle_between_two"));
return false;
}
}
<% } %>
$.post($("form[name=u2]")[0].action,
$("[name=u2]").serialize() + "<%=transitParam%>",
FcltCallbackAndThenAlways(ins_submit_callback),
"json");
}
function ins_cancel()
{
FcltMgr.closeDetail(window, { cancel: true } );
}
<% if (!catclose && (insClose || insEdit))
{ %>
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()));
}
}
<% } %>
function ins_melding()
{ // Meldbron "Inspection" meegeven (mld_meldbron_key = 10).
FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=fo&meldbronkey=10&ins_key=<%=ingesloten[0]%>&deelsrtcont_key=<%=ingeslotendsc[0]%>", "<%=L("lcl_add")%>");
}
</script>
</head>
<body id="editbody">
<% // Melding aanmaakbaar? Alleen meldingen die enigzins beperkt zijn tot onze object(soort/groep)
var canMelding = false;
if (!catclose && !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();
}
// De array ingesloten bevat die delen die gepland, gewijzigd, afgemeld of afgerond mogen worden.
// <20><>n van de waarden insPlan, insEdit of insClose is true.
var buttons = [];
if (insPlan || insEdit)
buttons.push({title: (insPlan? L("lcl_ins_schedule") : L("lcl_submit")), icon: "opslaan.png", action:"ins_submit(0)"});
if (insClose)
{ // Bij bulkacties (multi) alleen kijken naar de bulkactie die uitgevoerd moet worden.
if (!catclose && canClose && !(multi && fromfinish))
buttons.push({title: L("lcl_ins_close"), icon: "inspfinish.png", action:"ins_submit(0)"});
var finishAfterClose = (nrCanFinishAfterClose > 0 && multi && !fromfinish); // Na het gereed melden kan voor minstens 1 periodieke taak worden afgerond.
if ((canFinish && (!multi || fromfinish)) || finishAfterClose)
{ // De afrond button wordt nu ook getoond bij het afmelden als er tenminste 1 periodiek taak na het gereed melden ook kan worden afgerond.
// Als niet alle periodiek taken kunnen worden afgerond in deze situatie, dan wordt ook het aantal in de button getoond die wel kunnen worden afgerond.
buttons.push({title: L("lcl_ins_finish") + (finishAfterClose && nrCanFinishAfterClose < tobehandled? " (" + L("lcl_count") + ":" + nrCanFinishAfterClose + ")" : ""), icon: "close.png", action: "ins_submit(1)"});
}
}
if (canMelding)
buttons.push({title: L("lcl_do_amelding_hint"), action: "ins_melding()", icon: "doemelding.png" });
buttons.push({title: L("lcl_cancel"), icon: "undo.png", action: "ins_cancel()"});
var titletext;
switch(sctype)
{
case 1: titletext = L("lcl_ins_srtcontrole_insp"); break;
case 2: titletext = L("lcl_ins_srtcontrole_repl"); break;
case 3: titletext = L("lcl_ins_srtcontrole_cert"); break;
default: titletext = L("lcl_menu_ins_controle"); break;
}
IFRAMER_HEADER(titletext + " " + safe.html(desc), buttons);
%>
<form name="u2" action="ins_inspect_save.asp" method="post">
<input type="hidden" name="savemode" id="savemode" value="<%=insPlan? "P" : (insClose? "C" : "E")%>">
<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(",")%>">
<% if (!catclose && insEdit)
{ %>
<input type="hidden" name="deelsrtcont_key" id="deelsrtcont_key" value="<%=ingeslotendsc[0]%>">
<% } %>
<input type="hidden" name="finish" id="finish" value="0">
<% var blocktext = (insPlan? L("lcl_ins_schedule") : (insClose? L("lcl_ins_stop") : L("lcl_details") ))
+ (multi || catclose
? " (" + L("lcl_count") + ":" + tobehandled + ")"
: "");
BLOCK_START("insMultiEdit", blocktext);
if (!catclose && ins_key_arr.length == 1)
{
ROFIELDTR("fld", L("lcl_obj_sort"), sort );
}
if (!catclose && !multi)
{ // Inspecteren van <20><>n object met <20><>n of meerdere soortcontroles
var sql = "SELECT xcp.ins_srtcontrole_key"
+ " , " + lcl.xsqla('xcp.ins_srtcontrole_omschrijving', 'xcp.ins_srtcontrole_key')
+ " , xcp.ins_srtcontrole_info info"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, xcp.ins_srtcontrole_eenheid) eenheid"
+ " FROM ins_v_defined_inspect_xcp xcp"
+ " WHERE xcp.ins_deel_key IN (" + ingesloten[0] + ")"
+ " AND xcp.ins_srtcontrole_periode > 0"
+ " AND xcp.ins_srtcontrole_key = " + ingeslotensc[0]
+ " AND xcp.ins_scenario_key(+) = 1"
+ " GROUP BY xcp.ins_srtcontrole_key"
+ " , xcp.ins_srtcontrole_omschrijving"
+ " , xcp.ins_srtcontrole_info"
+ " , xcp.ins_srtcontrole_eenheid"
+ " , xcp.ins_srtcontrole_periode"
+ " , xcp.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",
extraParamValueInit: "-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 });
}
// Status tonen.
var params = {};
if (!catclose && !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]
}
}
}
params.suppressEmpty = true;
ROFIELDTR("fld", L("lcl_ins_status"), status_str, params);
if (!catclose)
{
// Men mag alleen een inspectie-uitvoerdatum invoeren die later is dan de laatste inspectie-uitvoerdatum.
// Bij multi ook de laatste uitvoerdatum bepalen.
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_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 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(",") + ")"
+ " AND idsc.ins_scenario_key = 1"
+ " AND xcp.ins_scenario_key(+) = 1"
+ " GROUP BY isc.ins_srtcontrole_mode";
var oRs = Oracle.Execute(sql);
var lastinspectdatum;
var dag_na_lastinspectdatum;
var aantal_dmj_eenheid;
var mode;
var minDate = aanmaakdatum; // Als er nog geen inspecties zijn geweest dan is de aanmaakdatum de minimale datum.
if (!oRs.eof && oRs("lastinspectdatum").Value != null)
{
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;
mode = oRs("ins_srtcontrole_mode").Value;
if (mode == 0)
// Momentmode.
minDate = aantal_dmj_eenheid > 0? dag_na_lastinspectdatum : lastinspectdatum;
else
// Intervalmode.
minDate = lastinspectdatum;
%>
<script type="text/javascript">
var lastinspectdatum = new Date(<%=lastinspectdatum.getTime()%>);
</script>
<%
}
else
{
%>
<script type="text/javascript">
var lastinspectdatum = null;
</script>
<%
}
oRs.Close();
var dsc_is_afgemeld = false;
var multidsc_has_afgemeld = false;
if (!multi && ingeslotendsc[0] > 0)
{ // Bestaande inspectie.
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 != null? new Date(oRs("ins_deelsrtcontrole_datum").Value): null,
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.getinspectstatustext(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 != null? inspect_data.deelsrtcontrole_datum.getHours() : new Date().getHours();
var minutes = inspect_data.deelsrtcontrole_datum != null? inspect_data.deelsrtcontrole_datum.getMinutes() : new Date().getMinutes();
dsc_is_afgemeld = inspect_data.deelsrtcontrole_status >= 5;
oRs.Close();
}
else
{ // Nieuwe inspectie of multi.
// Inplannen: Als niet multi en het is de eerste inspectie en de startdatum heeft een waarde dan deze waarde invullen als PLANDATUM.
// De minimum datum is dan gelijk de startdatum.
// Gereed melden/Afronden: Als niet multi en het is de eerste inspectie en de startdatum heeft een waarde dan deze waarde invullen als CONTROLEDATUM.
inspect_data = {deelsrtcontrole_datum: insClose && !multi && startdatum != null && eersteinspectie? startdatum : null,
controlemode_key: -1,
deelsrtcontrole_plandatum: insPlan? (!multi && startdatum != null && eersteinspectie? startdatum : new Date()): null,
deelsrtcontrole_opmerking: "",
deelsrtcontrole_status: insstatus,
deelsrtcontrole_status_str: status_str};
if (insPlan && !multi && startdatum != null && eersteinspectie)
{
if (mjob)
minDate = new Date(startdatum.getFullYear() + 1, 0, 1);
else
minDate = startdatum;
}
}
}
if (!catclose && (insPlan || (insEdit && (insstatus == 0 || insstatus == 2))))
FCLTcalendar("plandatum",
{ label: L("lcl_ins_controle_plandate"),
datum: minDate > inspect_data.deelsrtcontrole_plandatum? minDate : 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: (insEdit && insstatus == 2), // In status "Ingepland(0)" is de plandatum altijd nog aan te passen.
suppressEmpty: true
});
if (!catclose && (insClose || (insEdit && insstatus >= 5)))
{
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
});
var maxDate = new Date();
if (insClose || (insEdit && typeof inspect_data.deelsrtcontrole_datum != null))
{
var dmj_eenheid;
// Voor gereed te gemelden(5) en af te ronden(6) inspecties gelden een ander minDate en maxDate.
if (dsc_is_afgemeld) // Er geldt dan insEdit en !insClose. Als insClose dan is de status < 5.
{ // Inspectie is Gereed gemeld(5) of Afgerond(6). Datum mag ik nog aanpassen.
// Wijzigen in status Afgerond(6) mag alleen als je INSMSU rechten (canMsuEdit) hebt.
// Niet multi en ins_deelsrtcontrole_key is bekend.
// Vooralsnog kan inspectiedatum niet aangepast worden als de eenheid uren(0) is (readonly).
sql = "SELECT MAX(idsc.ins_deelsrtcontrole_datum) lastinspectdatum"
+ " , MAX(idsc.ins_deelsrtcontrole_datum + 1) dag_na_lastinspectdatum"
+ " , 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 dmj_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 COALESCE(xcp.ins_srtcontroledl_xcp_periode, isc.ins_srtcontrole_periode) > 0"
+ " AND idsc.ins_deel_key IN (" + ingesloten[0] + ")"
+ " AND idsc.ins_srtcontrole_key IN (" + ingeslotensc[0] + ")"
+ " AND ins_deelsrtcontrole_key < " + ingeslotendsc[0]
+ " AND idsc.ins_scenario_key = 1"
+ " AND xcp.ins_scenario_key(+) = 1"
+ " GROUP BY isc.ins_srtcontrole_mode"
+ " , xcp.ins_srtcontroledl_xcp_eenheid"
+ " , isc.ins_srtcontrole_eenheid";
var oRs = Oracle.Execute(sql);
if (!oRs.eof && oRs("lastinspectdatum").Value != null)
{
lastinspectdatum = new Date(oRs("lastinspectdatum").Value); // Kan uiterlijk vandaag zijn.
dag_na_lastinspectdatum = new Date(oRs("dag_na_lastinspectdatum").Value); // Kan uiterlijk morgen zijn.
dmj_eenheid = oRs("dmj_eenheid").Value;
mode = oRs("ins_srtcontrole_mode").Value;
if (mode == 0)
// Momentmode.
minDate = dmj_eenheid == 1? new Date(dag_na_lastinspectdatum.midnight()) : lastinspectdatum;
else
// Intervalmode.
minDate = lastinspectdatum;
}
else
minDate = aanmaakdatum;
// Vooralsnog kan inspectiedatum niet aangepast worden als de eenheid uren(0) is (readonly).
sql = "SELECT MIN(COALESCE(idsc.ins_deelsrtcontrole_datum, ins_deelsrtcontrole_plandatum)) firstinspectdatum"
+ " , MIN(COALESCE(idsc.ins_deelsrtcontrole_datum, ins_deelsrtcontrole_plandatum) - 1) dag_voor_firstinspectdatum"
+ " , 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 dmj_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 COALESCE(xcp.ins_srtcontroledl_xcp_periode, isc.ins_srtcontrole_periode) > 0"
+ " AND idsc.ins_deel_key IN (" + ingesloten[0] + ")"
+ " AND idsc.ins_srtcontrole_key IN (" + ingeslotensc[0] + ")"
+ " AND ins_deelsrtcontrole_key > " + ingeslotendsc[0]
+ " AND idsc.ins_scenario_key = 1"
+ " AND xcp.ins_scenario_key(+) = 1"
+ " GROUP BY isc.ins_srtcontrole_mode"
+ " , xcp.ins_srtcontroledl_xcp_eenheid"
+ " , isc.ins_srtcontrole_eenheid";
oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
firstinspectdatum = new Date(oRs("firstinspectdatum").Value); // Kan uiterlijk vandaag zijn.
dag_voor_firstinspectdatum = new Date(oRs("dag_voor_firstinspectdatum").Value); // Kan uiterlijk morgen zijn.
dmj_eenheid = oRs("dmj_eenheid").Value;
mode = oRs("ins_srtcontrole_mode").Value;
maxDate = dmj_eenheid? dag_voor_firstinspectdatum : firstinspectdatum;
if (mode == 0)
// Momentmode.
maxDate = dmj_eenheid == 1? new Date(dag_voor_firstinspectdatum.setHours(23,59,59,99)) : firstinspectdatum;
else
// Intervalmode.
maxDate = firstinspectdatum;
}
// else maxDate = new Date();
oRs.Close();
%>
<script type="text/javascript">
var minDateEdit = new Date(<%=minDate.getTime()%>);
var maxDateEdit = new Date(<%=maxDate.getTime()%>);
</script>
<%
}
FCLTcalendar("deelsrtcontrole_datum",
{ label: L("lcl_ins_controle_datum"),
datum: inspect_data.deelsrtcontrole_datum? inspect_data.deelsrtcontrole_datum : new Date(),
minDate: minDate,
maxDate: maxDate,
required: true,
trclass: "invoerinsp",
timeField: true,
timeStep: 60,
startTime: 0,
endTime: 23.75,
onChangeDate: "onChangeDeelsrtcdatum('D')",
onChangeTime: "onChangeDeelsrtcdatum('T')",
readonly: ((dsc_is_afgemeld && dmj_eenheid == 0) || // Als eenheid in uren(0) is, dan mag de uitvoerdatum/inspectiedatum niet aangepast worden als inspectie is gereed gemeld(5) of afgerond(6).
(insEdit && ins_deelsrtcontrole_status == 6 && !canMsuEdit) ||
(inspect_data.deelsrtcontrole_datum != null && inspect_data.deelsrtcontrole_datum < aanmaakdatum)
)
});
}
}
else (catclose)
{
FCLTcalendar("deelsrtcontrole_datum",
{ label: L("lcl_ins_controle_datum"),
datum: new Date(),
minDate: new Date(),
maxDate: new Date(),
required: true,
trclass: "invoerinsp",
timeField: true,
timeStep: 60,
startTime: 0,
endTime: 23.75,
//onChangeDate: "onChangeDeelsrtcdatum('D')",
//onChangeTime: "onChangeDeelsrtcdatum('T')",
readonly: true
});
%> <input type="hidden" id="deelsrtcontrole_datum" name="deelsrtcontrole_datum" value="<%=new Date().getTime()%>">
<% }
if (!catclose)
{
sql = "SELECT ins_controlemode_key"
+ " , " + lcl.xsqla('ins_controlemode_oms', 'ins_controlemode_key')
+ " FROM ins_controlemode"
+ " WHERE ins_srtcontrole_type = " + sctype
+ " ORDER BY 2";
// Methode is voor de status Afgemeld(5) en Historie/Verwerkt(6) altijd ingevuld.
FCLTselector("sel_controlemode",
sql,
{ label: L("lcl_ins_controle_mode"),
initKey: inspect_data.controlemode_key, // Als de controle mode bij multi verschillend is, dan is deze waarde -1.
emptyOption: L("lcl_select_controlemode"),
required: true,
readonly: (insEdit && !canMsuEdit) // Er geldt al (insEdit && insstatus >= 5). In status 5 en 6 met INSMSU rechten mag ik de methode aanpassen (canMsuEdit).
});
}
else
{
%>
<tr><td><%=L("lcl_ins_controle_mode")%>:</td></tr>
<%
for (var i = 1; i <= 3; i++)
{
if (sumtyp[i] > 0)
{
var typeoms = "";
switch (i)
{
case 1: {
typeoms = L("lcl_ins_srtcontrole_insp");
break;
}
case 2: {
typeoms = L("lcl_ins_srtcontrole_repl");
break;
}
case 3: {
typeoms = L("lcl_ins_srtcontrole_cert");
break;
}
}
sql = "SELECT ins_controlemode_key"
+ " , " + lcl.xsqla('ins_controlemode_oms', 'ins_controlemode_key')
+ " FROM ins_controlemode"
+ " WHERE ins_srtcontrole_type = " + i
+ " ORDER BY 2";
// Methode is voor de status Afgemeld(5) en Historie/Verwerkt(6) altijd ingevuld.
FCLTselector("sel_controlemode" + i,
sql,
{ label: "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + typeoms + " (" + L("lcl_count") + ":" + sumtyp[i] + ")",
initKey: -1,
emptyOption: L("lcl_select_controlemode"),
required: true
});
}
}
}
%>
<script type="text/javascript">
var dsc_is_afgemeld = <%=dsc_is_afgemeld? 1 : 0%> == 1;
</script>
<%
RWTEXTAREATR("opmerk",
"fldremark",
L("lcl_remark"),
(!catclose? inspect_data.deelsrtcontrole_opmerking : ""),
{ html: "rows='8'",
trclass: "invoerinsp",
maxlength: 4000
}
);
if (!catclose)
{ %>
<script type="text/javascript">
var insstatus = <%=insstatus%>;
//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().next().hide();
</script>
<% }
BLOCK_END();
%>
</td>
</tr>
<tr>
<td>
<%
if (!catclose && !multi)
{
BLOCK_START("insFlex2", ""); //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],
flexcolumns: 1,
ignorerequired: (insPlan || (insEdit && (insstatus == 0 || insstatus == 2))) // Kenmerken zijn pas verplicht bij het gereed melden en het afronden.
});
%></div><%
BLOCK_END();
}
IFACE.FORM_END();
%>
</form>
</body>
</html>