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

svn path=/Website/trunk/; revision=28486
This commit is contained in:
Maykel Geerdink
2016-03-15 10:52:55 +00:00
parent 6391b3b3a3
commit ca7b76ea9e
6 changed files with 128 additions and 61 deletions

View File

@@ -87,7 +87,7 @@ function model_ins_kenmerk(fnparams)
"dbs": "ins_srtinstallatie_key",
"label": "ins_srtinstallatie_key",
"typ": "key",
"hidden_fld": true,
"required": true,
"foreign": {"tbl": "ins_srtcontrole",
"key": "ins_srtcontrole_key",
"desc": "ins_srtcontrole_omschrijving"
@@ -196,6 +196,7 @@ function model_ins_kenmerk(fnparams)
var gparams = { GET: { } };
if (niveau == "C")
{
this.list.columns.splice(2, 0, "object_key");
delete this.fields.object_discipline;
delete this.fields.object_group;
delete this.fields.object_type;

View File

@@ -599,20 +599,21 @@ ins = {checkAutLevel:
ins_discipline_key,
alg_ruimte_key,
null,
false, // pessimist
false, // Pessimist.
true);
if (!iresult || !iresult.anyfound)
return null;
// Alleen backoffice mag verwijderen, dus "WEB_INSMAN" als autorisatie functie nemen
// Alleen backoffice mag verwijderen, dus "WEB_INSMAN" als autorisatie functie nemen.
iresult.writeman = iresult.canWrite("WEB_INSMAN");
iresult.writeuse = iresult.canWrite("WEB_INSUSE");
iresult.canDelete = iresult.canWrite("WEB_INSMAN"); // Verwijderen
iresult.canChange = iresult.canWrite("WEB_INSMAN") || iresult.canWrite("WEB_INSUSE"); // Wijzigen
iresult.canChangeAlg = iresult.canWrite("WEB_INSMAN"); // Wijzigen algemene gegevens
iresult.canCopy = iresult.canWrite("WEB_INSMAN"); // Kopi<70>ren
iresult.canDelete = iresult.canWrite("WEB_INSMAN"); // Verwijderen.
iresult.canChange = iresult.canWrite("WEB_INSMAN") || iresult.canWrite("WEB_INSUSE"); // Wijzigen.
iresult.canChangeAlg = iresult.canWrite("WEB_INSMAN"); // Wijzigen algemene gegevens.
iresult.canCopy = iresult.canWrite("WEB_INSMAN"); // Kopi<70>ren.
}
iresult.canInspect = iresult.canWrite("WEB_INSUSE"); // Kopi<70>ren
iresult.canInspect = iresult.canWrite("WEB_INSUSE"); // Kopi<70>ren.
iresult.canShowInsp = iresult.canRead("WEB_INSUSE"); // Inzien.
iresult.canChangeXcp = iresult.canWrite("WEB_INSMAN"); // Interval kenmerken/parameters wijzigen (waarden in ins_srtcontroledl_xcp tabel).
return iresult;
}

View File

@@ -43,9 +43,32 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
if (rowdata)
{
srtcontrolekey = rowdata.insSrtControleKey;
//deellsrtcontkey = rowdata.insDeelSrtContrKey;
var url = "appl/ins/ins_edit_inspect.asp?ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekey// + "&deelsrtcont_key=" + deellsrtcontkey;
FcltMgr.openDetail(url, L("lcl_change"), {callback: FcltCallbackRefresh});
// De deelsrtcontrole key hoeft niet meegegeven worden. Dat kan ins_edit_inspect zelf wel bepalen (laatste record).
var url = "appl/ins/ins_edit_inspect.asp?ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekey;
FcltMgr.openDetail(url, L("lcl_change"));
}
}
function insShow(row)
{
$(row).addClass('dirty');
var insKeyString = row.getAttribute("ROWKEY");
var rowdata = eval("(" + row.getAttribute("ROWDATA") + ")");
if (rowdata)
{
srtcontrolekey = rowdata.insSrtControleKey;
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 title = "";
switch (srtcontroletype)
{
case 1: title = L("lcl_ins_srtcontrole_insp"); break;
case 2: title = L("lcl_ins_srtcontrole_repl"); break;
case 3: title = L("lcl_ins_srtcontrole_cert"); break;
}
FcltMgr.openDetail(url, title + " " + deellsrtcontkey);
}
}
@@ -59,7 +82,7 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
srtcontrolekey = rowdata.insSrtControleKey;
//deellsrtcontkey = rowdata.insDeelSrtContrKey;
var url = "appl/ins/ins_edit_inspect.asp?plan=1&ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekey// + "&dlsrtcont_keys=" + deellsrtcontkey;
FcltMgr.openDetail(url, L("lcl_ins_schedule"), {callback: FcltCallbackRefresh});
FcltMgr.openDetail(url, L("lcl_ins_schedule"));
}
}
@@ -99,7 +122,7 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
srtcontrolekey = rowdata.insSrtControleKey;
//deellsrtcontkey = rowdata.insDeelSrtContrKey;
var url = "appl/ins/ins_edit_inspect.asp?close=1&ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekey// + "&dlsrtcont_keys=" + deellsrtcontkey;
FcltMgr.openDetail(url, L("lcl_ins_close"), {callback: FcltCallbackRefresh});
FcltMgr.openDetail(url, L("lcl_ins_close"));
}
}
@@ -314,12 +337,13 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
{
var insKey = ins_key;
var insSrtControleKey = oRs("ins_srtcontrole_key").Value;
var insSrtControleType = oRs("ins_srtcontrole_type").Value;
// Als de status Verwerkt(6) is dan kan/moet er weer een nieuw inspectie gestart worden. Dan geen ins_deelsrtcontrole_key meegegeven (-2).
var istatus = oRs("ins_deelsrtcontrole_status").Value;
var insDeelSrtContrKey = oRs("ins_deelsrtcontrole_key").Value != null? oRs("ins_deelsrtcontrole_key").Value : -2;
var data = { insKey: ins_key, insSrtControleKey: insSrtControleKey, insDeelSrtContrKey: insDeelSrtContrKey, ins_status: istatus};
var data = { insKey: ins_key, insSrtControleKey: insSrtControleKey, insSrtControleType: insSrtControleType, insDeelSrtContrKey: insDeelSrtContrKey, ins_status: istatus};
return JSON.stringify(data);
}
@@ -333,12 +357,13 @@ 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 = istatus >= 0 && istatus < 6;
var eShow = istatus == 6;
var ePlan = !vervallen && this_ins.canInspect && (istatus < 0);
var eStart = !vervallen && this_ins.canInspect && (istatus <= 0);
var eClose = this_ins.canInspect && (istatus < 5);
var eFinish = (this_ins.canInspect && istatus == 5);
var data = {eEdit: eEdit, ePlan: ePlan, eStart: eStart, eClose: eClose, eFinish: eFinish};
var data = {eEdit: eEdit, eShow: eShow, ePlan: ePlan, eStart: eStart, eClose: eClose, eFinish: eFinish};
return data;
}
@@ -503,6 +528,7 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
if (this_ins.canChange)
{
rst.addAction({ action: "insEditInsp", caption: L("lcl_edit"), enabler: "eEdit", isDefault: true });
rst.addAction({ action: "insShow", caption: L("lcl_edit"), enabler: "eShow", isDefault: true });
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" });

View File

@@ -15,12 +15,13 @@
outputmode behave in an output mode, print to 0 = screen, 1 = printer, 2 = excel, etc.
showall show all objects which meets with the given requirements
inspect Toon ook inspectie kolommen
inspClosed search for objects inspections wich are verwerkt
inspDone search for objects inspections wich are done
inspLate search for objects inspections wich are too late/unknown
inspBusy search for objects inspections wich are in progress
inspSoon search for objects inspections wich are soon
inspFutu search for objects inspections wich are not nearby
inspDone, inspLate, inspBusy, inspSoon, inspFutu: de vinkjes
inspClosed, inspDone, inspLate, inspBusy, inspSoon, inspFutu: de vinkjes
inspsoonfrom search for objects with inspections between inspsoonfrom and inspsoonto
inspsoonto search for objects with inspections between inspsoonfrom and inspsoonto
donedatefrom search for objects with inspections between donedatefrom and donedateto
@@ -495,8 +496,6 @@ function ins_list (pautfunction, params)
// Eerstvolgende inspectie moet komen/had moeten komen: COALESCE (ins_deelsrtcontrole_datum, ins_deel_aanmaak) + ins_srtcontrole_periode
if (params.inspect)
{
var outer = params.inspDone?"":"(+)";
var lastinspect = "(SELECT GREATEST(COALESCE (idsc.ins_deelsrtcontrole_plandatum"
+ " , CASE di.ins_srtcontrole_mode"
+ " WHEN 0"
@@ -585,34 +584,36 @@ function ins_list (pautfunction, params)
+ " AND idsc.ins_deel_key = di.ins_deel_key)"
+ " AND (xcp.ins_srtcontroledl_xcp_eind(+) IS NULL OR xcp.ins_srtcontroledl_xcp_eind(+) > TRUNC(SYSDATE, 'DD'))"
+ " ORDER BY inspectie_date)"
: " SELECT 1 rn" // inspecties die nog nooit zijn uitgevoerd. Er is nog geen ins_deelsrtcontrole regel aanwezig en dus ook geen plandatum/respijtdatum.
+ " , di.ins_deel_key"
+ " , fac.nextcyclusdate(di.ins_deel_aanmaak"
+ " , di.ins_srtcontrole_mode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid)"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode)"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_bits, di.ins_srtcontrole_bits)"
+ " , 1) inspectie_next"
+ " , CASE WHEN " + lastinspect + " IS NULL THEN 1 ELSE 0 END nonext"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) periode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) inspectie_eenheid"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) inspectie_eind"
+ " , xcp.ins_srtcontroledl_xcp_groep groepoms"
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
+ " , di.ins_srtcontrole_key"
+ " , di.ins_srtcontrole_type"
+ " , -1 ins_deelsrtcontrole_status"
+ " , NULL ins_deelsrtcontrole_key"
+ " , NULL ins_deelsrtcontrole_plandatum"
+ " FROM defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND di.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND (di.ins_deel_key, di.ins_srtcontrole_key) NOT IN"
+ " (SELECT ins_deel_key, ins_srtcontrole_key"
+ " FROM ins_deelsrtcontrole)"
+ " AND (xcp.ins_srtcontroledl_xcp_eind(+) IS NULL OR xcp.ins_srtcontroledl_xcp_eind(+) > TRUNC(SYSDATE, 'DD'))"
+ " UNION ALL" // Inspecties die al eens zijn uitgevoerd
: (!params.inspClosed && !params.inspBusy
? " SELECT 1 rn" // inspecties die nog nooit zijn uitgevoerd. Er is nog geen ins_deelsrtcontrole regel aanwezig en dus ook geen plandatum/respijtdatum.
+ " , di.ins_deel_key"
+ " , fac.nextcyclusdate(di.ins_deel_aanmaak"
+ " , di.ins_srtcontrole_mode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid)"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode)"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_bits, di.ins_srtcontrole_bits)"
+ " , 1) inspectie_next"
+ " , CASE WHEN " + lastinspect + " IS NULL THEN 1 ELSE 0 END nonext"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) periode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) inspectie_eenheid"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) inspectie_eind"
+ " , xcp.ins_srtcontroledl_xcp_groep groepoms"
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
+ " , di.ins_srtcontrole_key"
+ " , di.ins_srtcontrole_type"
+ " , -1 ins_deelsrtcontrole_status"
+ " , NULL ins_deelsrtcontrole_key"
+ " , NULL ins_deelsrtcontrole_plandatum"
+ " FROM defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND di.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND (di.ins_deel_key, di.ins_srtcontrole_key) NOT IN"
+ " (SELECT ins_deel_key, ins_srtcontrole_key"
+ " FROM ins_deelsrtcontrole)"
+ " AND (xcp.ins_srtcontroledl_xcp_eind(+) IS NULL OR xcp.ins_srtcontroledl_xcp_eind(+) > TRUNC(SYSDATE, 'DD'))"
+ " UNION ALL" // Inspecties die al eens zijn uitgevoerd
: "")
+ " SELECT RANK ()" // volgnummertje toekennen
+ " OVER ("
+ " PARTITION BY di.ins_deel_key, idsc.ins_srtcontrole_key" // soort van group-by
@@ -652,6 +653,13 @@ function ins_list (pautfunction, params)
+ " AND idsc.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc.ins_deel_key = di.ins_deel_key"
+ " AND (xcp.ins_srtcontroledl_xcp_eind(+) IS NULL OR xcp.ins_srtcontroledl_xcp_eind(+) > TRUNC(SYSDATE, 'DD'))"
+ (params.inspClosed || params.inspBusy
? " AND idsc.ins_deelsrtcontrole_status IN ("
+ (params.inspClosed? "5" : "")
+ (params.inspClosed && params.inspBusy? "," : "")
+ (params.inspBusy? "2" : "")
+ ")"
: "")
+ " ORDER BY inspectie_next)")
+ " WHERE rn = 1"
// Voor afgehandelde inspecties ook inspecties met periode 0 tonen.
@@ -659,7 +667,7 @@ function ins_list (pautfunction, params)
? " AND periode > 0"
: "")
// Alleen bij "Afgehandeld" vervallen inspecties tonen.
+ (params.inspLate || params.inspSoon || params.inspFutu
+ (params.inspBusy || params.inspClosed || params.inspLate || params.inspSoon || params.inspFutu
? " AND (inspectie_eind IS NULL OR inspectie_eind > SYSDATE)"
: "");
@@ -1136,7 +1144,7 @@ function ins_list (pautfunction, params)
else if (params.inspLate && !params.inspSoon && params.inspFutu) // 101 te laat of voorlopig niet. Beetje onzinnig
sql = "SELECT * FROM (" + sql + ") x WHERE inspectie_next NOT BETWEEN " + dtsoonfrom.toSQL() + " AND " + dtsoonto.toSQL() ;
else if (params.inspLate && !params.inspSoon && !params.inspFutu) // 100 alleen late
sql = "SELECT * FROM (" + sql + ") x WHERE inspectie_next <= "+dtsoonfrom.toSQL() + "-1";
sql = "SELECT * FROM (" + sql + ") x WHERE inspectie_next <= " + dtsoonfrom.toSQL() + "-1";
else if (params.inspSoon && params.inspFutu) // 011 binnenkort en later
sql = "SELECT * FROM (" + sql + ") x WHERE inspectie_next >= "+dtsoonfrom.toSQL(); // 011
else if (params.inspSoon && !params.inspFutu) // 010 binnenkort
@@ -1552,14 +1560,17 @@ function ins_list (pautfunction, params)
var txt;
var dt;
switch (oRs("ins_srtcontrole_type").Value)
if (!params.inspDone)
{
case 1: { txt = L("lcl_ins_controle_first"); break; } // Eerste controle.
case 2:
case 3: { dt = new Date(oRs("inspectie_next").Value); // Registratiedatum.
txt = (oRs("inspectie_eind").Value == 0? toDateTimeString(dt) : toDateString(dt));
break;
} // Eerste certificering.
switch (oRs("ins_srtcontrole_type").Value)
{
case 1: { txt = L("lcl_ins_controle_first"); break; } // Eerste controle.
case 2:
case 3: { dt = new Date(oRs("inspectie_next").Value); // Registratiedatum.
txt = (oRs("inspectie_eind").Value == 0? toDateTimeString(dt) : toDateString(dt));
break;
} // Eerste certificering.
}
}
var nonext = oRs("nonext").Value == 1;

View File

@@ -68,6 +68,8 @@ var insLentOut = getQParamInt("insLentOut", 1) == 1; // Uitgegeven
var insAvail = getQParamInt("insAvail", 1) == 1; // Beschikbaar
var insInspect = getQParamInt("inspect", 0) == 1; // inspectievelden toevoegen
var inspBusy = getQParamInt("inspBusy", 0) == 1; // Gestarte/begonnen inspecties (status 2).
var inspClosed = getQParamInt("inspClosed", 0) == 1; // Afgemelde inspecties (status 5). Actie vereist.
/***** End get webform parameters *****/
@@ -143,12 +145,28 @@ var authparams = user.checkAutorisation(autfunction);
if (document.getElementById("insInspDone").checked)
{
$("#insLSF").hide();
$("#insBC").hide();
$(".donetime").show();
}
else
{
$(".donetime").hide();
$("#insLSF").show();
$("#insBC").show();
}
}
function onClickBC()
{
if (document.getElementById("insInspClosed").checked || document.getElementById("insInspBusy").checked)
{
$("#insLSF").hide();
$(".donetime").hide();
$(".insD").hide();
}
else
{
$("#insLSF").show();
$(".insD").show();
}
}
<% if (xd.enabled()) { %>
@@ -482,7 +500,7 @@ var authparams = user.checkAutorisation(autfunction);
<td>
<input type=hidden name="inspect" value="1">
<table>
<tr>
<tr class="insD">
<td>
<input type="checkbox" class="fldcheck" name="insInspDone" id="insInspDone" value="1" onClick="onClickDone()">
</td>
@@ -522,7 +540,6 @@ var authparams = user.checkAutorisation(autfunction);
<div id="insLSF">
<table>
<tr><td><input type="checkbox" class="fldcheck" name="insInspLate" id="insInspLate" value="1" CHECKED></td><td><label for="insInspLate"><%=L("lcl_ins_controle_late")%></label></td></tr>
<tr><td><input type="checkbox" class="fldcheck" name="insInspBusy" id="insInspBusy" value="1" CHECKED></td><td><label for="insInspBusy"><%=L("lcl_ins_controle_busy")%></label></td></tr>
<tr><td><input type="checkbox" class="fldcheck" name="insInspSoon" id="insInspSoon" value="1" CHECKED></td><td><label for="insInspSoon"><%=L("lcl_ins_controle_soon")%></label></td></tr>
<tr>
<td></td>
@@ -552,6 +569,15 @@ var authparams = user.checkAutorisation(autfunction);
</td>
</tr>
<!--<tr><td><input type="checkbox" class="fldcheck" name="insInspFutu" id="insInspFutu" value="1"></td><td><label for="insInspFutu"><%=L("lcl_ins_controle_future")%></label></td></tr>-->
<tr><td><input type="checkbox" class="fldcheck" name="insInspFutu" id="insInspFutu" value="1" CHECKED></td><td><label for="insInspFutu"><%=L("lcl_ins_controle_future")%></label></td></tr>
</table>
</div>
<div id="insBC">
<table>
<!-- Gestarte/begonnen inspecties (status 2)) -->
<tr><td><input type="checkbox" class="fldcheck" name="insInspBusy" id="insInspBusy" value="1" onClick="onClickBC()" <%=inspBusy? "checked" : ""%>></td><td><label for="insInspBusy"><%=L("lcl_ins_controle_busy")%></label></td></tr>
<!-- Actie vereist (Afgemelde inspecties (status 5)) -->
<tr><td align=left><input type="checkbox" class="fldcheck" name="insInspClosed" id="insInspClosed" value="1" onClick="onClickBC()" <%=inspClosed? "checked" : ""%>></td><td><label for="insinspClosed"><%=L("lcl_ins_controle_afgemeld") + " (" + L("lcl_ins_controle_act_req") + ")"%></label></td></tr>
</table>
</div>
</td>

View File

@@ -67,11 +67,12 @@ var insAvail = getQParamInt("insAvail", 0) == 1; // Beschikbaar
var insInspect = getQParamInt("inspect", 0) == 1;
var inspDone = getQParamInt("insInspDone", 0) == 1;
var inspLate = !inspDone && (getQParamInt("insInspLate", 0) == 1);
var inspBusy = getQParamInt("insInspBusy", 0) == 1;
var inspSoon = !inspDone && (getQParamInt("insInspSoon", 0) == 1);
var inspFutu = !inspDone && (getQParamInt("insInspFutu", 0) == 1);
var inspClosed = getQParamInt("insInspClosed", 0) == 1;
var inspDone = !inspBusy && !inspClosed && getQParamInt("insInspDone", 0) == 1;
var inspLate = !inspBusy && !inspClosed && !inspDone && (getQParamInt("insInspLate", 0) == 1);
var inspSoon = !inspBusy && !inspClosed && !inspDone && (getQParamInt("insInspSoon", 0) == 1);
var inspFutu = !inspBusy && !inspClosed && !inspDone && (getQParamInt("insInspFutu", 0) == 1);
// FGII parameters
var fgraph = getQParamInt("fgraph", 0) == 1;
@@ -124,6 +125,7 @@ ins_list ( autfunction,
cnt_bedrijf_key: getQParamInt("cnt_bedrijf_key", -1),
fgraph: fgraph,
inspect: insInspect,
inspClosed: inspClosed,
srtcontrole: getQParamInt("sel_srtcontrole", -1),
inspDone: inspDone,
inspLate: inspLate,