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

svn path=/Website/trunk/; revision=28448
This commit is contained in:
Maykel Geerdink
2016-03-10 15:40:50 +00:00
parent a8d00acea9
commit f915b08142
10 changed files with 775 additions and 462 deletions

View File

@@ -45,6 +45,20 @@ ins = {checkAutLevel:
return true; // Okido
},
setinspectstatus:
function (deelsrtcontrole_key, ins_inspect_status_key, uitvoerende)
{ // Zet de status en geef de bijpassende tracking en notificatie.
var sql = "BEGIN ins.setinspectstatus(" + deelsrtcontrole_key + ", " + ins_inspect_status_key + ", " + user_key + "); END;"
Oracle.Execute(sql);
},
trackinspectupdate:
// Let op: dit moet wellicht niet altijd (aangeroepen na save)
function (deelsrtcontrole_key, ptxt)
{
shared.trackaction("INSCUP", deelsrtcontrole_key, ptxt);
},
getBindingItemString:
function(bind, bind_key, parent_key)
{
@@ -599,7 +613,7 @@ ins = {checkAutLevel:
iresult.canCopy = iresult.canWrite("WEB_INSMAN"); // Kopi<70>ren
}
iresult.canInspect = iresult.canWrite("WEB_INSUSE"); // Kopi<70>ren
iresult.canChangeInt = iresult.canWrite("WEB_INSMAN"); // Interval kenmerken/parameters wijzigen
iresult.canChangeXcp = iresult.canWrite("WEB_INSMAN"); // Interval kenmerken/parameters wijzigen (waarden in ins_srtcontroledl_xcp tabel).
return iresult;
}
}

View File

@@ -28,7 +28,7 @@ var srtcontr_key = getFParamInt("srtcontr_key");
// Mag ik het object aanpassen?
var this_ins = ins.func_enabled_deel(ins_key);
user.anything_todo_or_abort(this_ins.canChangeInt);
user.anything_todo_or_abort(this_ins.canChangeXcp);
var sql = "DELETE FROM ins_srtcontroledl_xcp"
+ " WHERE ins_deel_key = " + ins_key

View File

@@ -17,13 +17,13 @@
<!-- #include file="../Shared/resultset_table_v2.inc" -->
<!-- #include file="ins.inc" -->
<%
FCLTHeader.Requires({ js: ["../ins/ins_list.js", "jquery-ui.js"]});
FCLTHeader.Requires({ js: ["jquery-ui.js"]});
var ins_key = getQParamInt("ins_key");
var outputmode = getQParamInt("outputmode", 0);
var showall = getQParamInt("showall", 0) == 1;
var print = (outputmode == 1);
var excel = (outputmode == 2);
var print = (outputmode == 1 || outputmode == 5);
var excel = (outputmode == 2 || outputmode == 6);
// Vooralsnog gebruiken we de relatieve INSUSE als rechtenbeperking voor insepecties
// Merk op dat de scope nog wordt genegeerd.
@@ -35,17 +35,97 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
<head>
<% FCLTHeader.Generate({outputmode: outputmode}); %>
<script>
function ins_edit(row)
function insEditInsp(row)
{
$(row).addClass('dirty');
var insKeyString = row.getAttribute("ROWKEY");
var rowdata = eval("(" + row.getAttribute("ROWDATA") + ")");
if (rowdata)
{
var insData = eval('(' + row.getAttribute("ROWDATA") + ')');
if (insData)
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});
}
}
function insPlan(row)
{
$(row).addClass('dirty');
var insKeyString = row.getAttribute("ROWKEY");
var rowdata = eval("(" + row.getAttribute("ROWDATA") + ")");
if (rowdata)
{
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});
}
}
function insStart(row)
{
if (confirm(L("lcl_ins_starting")))
{
var insKeyString = row.getAttribute("ROWKEY");
var rowdata = eval("(" + row.getAttribute("ROWDATA") + ")");
if (rowdata)
{
var url = "appl/ins/ins_inspect.asp?ins_keys=<%=ins_key%>&urole=bo"
+"&srtcont_key="+insData.ins_srtcontrole_key
+"&deelsrtcont_key="+insData.ins_deelsrtcontrole_key;
FcltMgr.openDetail(url, L('lcl_ins_docontrole'));
srtcontrolekey = rowdata.insSrtControleKey;
//deellsrtcontkey = rowdata.insDeelSrtContrKey;
var data = { ins_keys: insKeyString,
srtcont_keys: srtcontrolekey
//dlsrtcont_keys: deellsrtcontkey
};
protectRequest.dataToken(data);
$.post( "ins_inspect_start.asp"
, data
, FcltCallbackRefresh
, "json"
);
}
}
}
function insClose(row)
{
$(row).addClass('dirty');
var insKeyString = row.getAttribute("ROWKEY");
var rowdata = eval("(" + row.getAttribute("ROWDATA") + ")");
if (rowdata)
{
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});
}
}
function insFinish(row)
{
if (confirm(L("lcl_ins_finishing")))
{
var insKeyString = row.getAttribute("ROWKEY");
var rowdata = eval("(" + row.getAttribute("ROWDATA") + ")");
if (rowdata)
{
deellsrtcontkey = rowdata.insDeelSrtContrKey;
var data = { ins_keys: insKeyString,
dlsrtcont_keys: deellsrtcontkey
};
protectRequest.dataToken(data);
$.post( "ins_inspect_finish.asp"
, data
, FcltCallbackRefresh
, "json"
);
}
}
}
</script>
</head>
@@ -57,21 +137,25 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
// Als de controlesoort niet meer geldig is dan kunnen er geen inspecties meer komen.
// Een object kan meerdere controlesoorten hebben. Alleen die controlesoorten laten zien die nog geldig zijn.
var lastinspect = "(SELECT MAX (GREATEST(COALESCE (idsc.ins_deelsrtcontrole_datum_xcp"
+ " , CASE di.ins_srtcontrole_mode"
+ " WHEN 0"
+ " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus. Uitgaan van eigenlijke/orginele inspectiedatum.
+ " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus. Uitgaan van werkelijke inspectiedatum.
+ " END)"
+ " , CASE di.ins_srtcontrole_mode"
+ " WHEN 0"
+ " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus. Uitgaan van eigenlijke/orginele inspectiedatum.
+ " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus. Uitgaan van werkelijke inspectiedatum.
+ " END)) ins_deelsrtcontrole_datum"
var lastinspect = "(SELECT GREATEST(COALESCE (idsc.ins_deelsrtcontrole_plandatum"
+ " , CASE di.ins_srtcontrole_mode"
+ " WHEN 0"
+ " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus. Uitgaan van eigenlijke/orginele inspectiedatum.
+ " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus. Uitgaan van werkelijke inspectiedatum.
+ " END)"
+ " , CASE di.ins_srtcontrole_mode"
+ " WHEN 0"
+ " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus. Uitgaan van eigenlijke/orginele inspectiedatum.
+ " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus. Uitgaan van werkelijke inspectiedatum.
+ " END) ins_deelsrtcontrole_datum"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc.ins_deelsrtcontrole_status IN (5,6)"
+ " AND idsc.ins_deel_key = di.ins_deel_key)";
+ " AND idsc.ins_deelsrtcontrole_status IN (5, 6)"
+ " AND idsc.ins_deel_key = di.ins_deel_key"
+ " AND idsc.ins_deelsrtcontrole_key = (SELECT MAX(idsc2.ins_deelsrtcontrole_key)"
+ " FROM ins_deelsrtcontrole idsc2"
+ " WHERE idsc2.ins_deel_key = di.ins_deel_key"
+ " AND idsc2.ins_srtcontrole_key = di.ins_srtcontrole_key))";
var sql = "SELECT *"
+ " FROM (WITH defined_inspect AS (SELECT id.ins_srtdeel_key srtdeel_key"
@@ -101,6 +185,8 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
+ " AND isc.ins_srtinstallatie_key = id.ins_discipline_key)"
+ " AND id.ins_deel_key = " + ins_key + ")"
// mogelijke inspecties op dit object die nog gaan komen.
// Als er een voorlopige inspectie is aangemaakt maar nog niet is afgemeld of afgerond, dan hoeft er geen nieuwe inspectie te worden getoond.
// Dus met de respijt heb je in dit eerste deel van de query niet meer te maken.
+ " SELECT 1 seq"
+ " , di.ins_deel_key"
+ " , di.ins_deel_aanmaak"
@@ -108,69 +194,52 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
+ " , TO_DATE (NULL) ins_deelsrtcontrole_datum"
+ " , NULL inspectie_org"
+ " , NULL isrespijt"
+ " , CASE WHEN COALESCE(xcp.ins_srtcontroledl_xcp_respijt, " + lastinspect + ") IS NULL THEN 1 ELSE 0 END nonext"
+ " , CASE WHEN " + lastinspect + " IS NULL THEN 1 ELSE 0 END nonext"
// Als respijtdatum vandaag of dit uur is dan is de respijtdatum de eerstvolgende inspectie en dus maar 1 step.
// Als er vandaag al geinspecteerd is dan de volgende inspectiedatum in de toekomst (functie nextcyclusdatesteps())
+ " , CASE"
+ " WHEN COALESCE(xcp.ins_srtcontroledl_xcp_eenheid , di.ins_srtcontrole_eenheid) = 0 AND"
+ " TRUNC(xcp.ins_srtcontroledl_xcp_respijt, 'HH24') >= TRUNC(SYSDATE, 'HH24')"
+ " THEN 1"
+ " WHEN COALESCE(xcp.ins_srtcontroledl_xcp_eenheid , di.ins_srtcontrole_eenheid) > 0 AND"
+ " TRUNC(xcp.ins_srtcontroledl_xcp_respijt, 'DDD') >= TRUNC(SYSDATE, 'DDD')"
+ " THEN 1"
+ " ELSE fac.nextcyclusdatesteps (COALESCE(xcp.ins_srtcontroledl_xcp_respijt, " + lastinspect + ", SYSDATE)"
+ " , 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))"
+ " + CASE"
+ " WHEN xcp.ins_srtcontroledl_xcp_respijt IS NOT NULL"
+ " THEN 1"
+ " ELSE 0"
+ " END"
+ " END inspectie_steps"
// Als respijtdatum vandaag of dit uur is dan is de respijtdatum de eerstvolgende inspectie en dan dus de respijtdatum opleveren.
// Als er vandaag of dit uur niet geinspecteerd is dan de eerstvolgende inspectiedatum vandaag of in de toekomst (steps = 0: functie nextcyclusdate(..., 0))
// Als er vandaag of dit uur al geinspecteerd is dan de eerstvolgende inspectiedatum in de toekomst (steps = 1: functie nextcyclusdate(..., 1))
+ " , CASE"
+ " WHEN COALESCE(xcp.ins_srtcontroledl_xcp_eenheid , di.ins_srtcontrole_eenheid) = 0 AND"
+ " TRUNC(xcp.ins_srtcontroledl_xcp_respijt, 'HH24') >= TRUNC(SYSDATE, 'HH24')"
+ " THEN TRUNC(xcp.ins_srtcontroledl_xcp_respijt, 'HH24')"
+ " WHEN COALESCE(xcp.ins_srtcontroledl_xcp_eenheid , di.ins_srtcontrole_eenheid) > 0 AND"
+ " TRUNC(xcp.ins_srtcontroledl_xcp_respijt, 'DDD') >= TRUNC(SYSDATE, 'DDD')"
+ " THEN TRUNC(xcp.ins_srtcontroledl_xcp_respijt, 'DDD')"
+ " ELSE fac.nextcyclusdate (COALESCE(" + lastinspect + ", di.ins_deel_aanmaak)"
+ " , fac.nextcyclusdatesteps (COALESCE(" + lastinspect + ", SYSDATE)"
+ " , 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)"
+ " , CASE"
+ " WHEN di.ins_srtcontrole_mode = 1" // Interval modus
+ " THEN 1"
+ " WHEN COALESCE (xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) = 0 AND"
+ " TRUNC (COALESCE (" + lastinspect + ", di.ins_deel_aanmaak), 'HH24' ) >= TRUNC (SYSDATE, 'HH24')"
+ " THEN 1" // Uurlijks: Als de datum in de toekomst ligt, bepaal dan de volgende datum (1 step verder).
+ " WHEN COALESCE (xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) > 0 AND"
+ " TRUNC (COALESCE (" + lastinspect + ", di.ins_deel_aanmaak),'DDD') >= TRUNC (SYSDATE, 'DDD')"
+ " THEN 1" // Dagelijks t/m jaarlijks: Als de datum in de toekomst ligt, bepaal dan de volgende datum (1 step verder).
+ " WHEN " + lastinspect + " IS NULL"
+ " THEN 1" // Als Eerste inspectie, bepaal dan ook de volgende (1 step) datum.
+ " ELSE 0" // Vindt de eerste datum vandaag of in de toekomst
+ " END)"
+ " END inspectie_next"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_bits, di.ins_srtcontrole_bits))"
+ " inspectie_steps"
// Als respijtdatum vandaag of dit uur is dan is de respijtdatum de eerstvolgende inspectie en dan dus de respijtdatum opleveren.
// Als er vandaag of dit uur niet geinspecteerd is dan de eerstvolgende inspectiedatum vandaag of in de toekomst (steps = 0: functie nextcyclusdate(..., 0))
// Als er vandaag of dit uur al geinspecteerd is dan de eerstvolgende inspectiedatum in de toekomst (steps = 1: functie nextcyclusdate(..., 1))
+ " , fac.nextcyclusdate (COALESCE(" + lastinspect + ", 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)"
+ " , CASE"
+ " WHEN di.ins_srtcontrole_mode = 1" // Interval modus
+ " THEN 1"
+ " WHEN COALESCE (xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) = 0 AND"
+ " TRUNC (COALESCE (" + lastinspect + ", di.ins_deel_aanmaak), 'HH24' ) >= TRUNC (SYSDATE, 'HH24')"
+ " THEN 1" // Uurlijks: Als de datum in de toekomst ligt, bepaal dan de volgende datum (1 step verder).
+ " WHEN COALESCE (xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) > 0 AND"
+ " TRUNC (COALESCE (" + lastinspect + ", di.ins_deel_aanmaak),'DDD') >= TRUNC (SYSDATE, 'DDD')"
+ " THEN 1" // Dagelijks t/m jaarlijks: Als de datum in de toekomst ligt, bepaal dan de volgende datum (1 step verder).
+ " WHEN " + lastinspect + " IS NULL"
+ " THEN 1" // Als Eerste inspectie, bepaal dan ook de volgende (1 step) datum.
+ " ELSE 0" // Vindt de eerste datum vandaag of in de toekomst
+ " END)"
+ " inspectie_next"
+ " , di.ins_srtcontrole_key"
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
+ " , di.ins_srtcontrole_groep"
+ " , di.ins_srtcontrole_opmerking"
+ " , -1 ins_deelsrtcontrole_key"
+ " , NULL ins_deelsrtcontrole_key"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) periode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) eenheid"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_kosten, di.ins_srtcontrole_kosten) kosten"
+ " , di.ins_srtcontrole_mode isc_mode"
+ " , xcp.ins_srtcontroledl_xcp_respijt respijt"
+ " , NULL plandatum"
+ " , '' ins_deelsrtcontrole_opmerking"
+ " , NULL inspecteur"
+ " , di.ins_srtcontrole_type"
+ " , -1 ins_deelsrtcontrole_status"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) inspectie_eind"
+ " FROM defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
@@ -180,6 +249,12 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
+ " AND di.ins_deel_key = " + ins_key
+ " AND (xcp.ins_srtcontroledl_xcp_eind(+) IS NULL OR xcp.ins_srtcontroledl_xcp_eind(+) > TRUNC(SYSDATE, 'DD'))"
+ " AND COALESCE (xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) > 0" // Als de periode 0 is dan de inspecties die gaan komen niet meer tonen.
// Als er een voorlopige inspectie is aangemaakt maar nog niet is afgemeld of afgerond, dan hoeft er geen nieuwe inspectie te worden getoond.
+ " AND NOT EXISTS (SELECT idsc.ins_deelsrtcontrole_key"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc.ins_deelsrtcontrole_status NOT IN (6)"
+ " AND idsc.ins_deel_key = di.ins_deel_key)"
+ " UNION ALL"
// Combineren met uitgevoerde inspecties op dit object
+ " SELECT 2 seq"
@@ -187,11 +262,25 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
+ " , di.ins_deel_aanmaak"
+ " , di.ins_deel_aantal"
+ " , idsc.ins_deelsrtcontrole_datum"
+ " , COALESCE(ins_deelsrtcontrole_datum_xcp, ins_deelsrtcontrole_datum_org) inspectie_org"
+ " , CASE WHEN ins_deelsrtcontrole_datum_xcp IS NULL THEN 0 ELSE 1 END isrespijt"
+ " , COALESCE(idsc.ins_deelsrtcontrole_plandatum, ins_deelsrtcontrole_datum_org) inspectie_org"
+ " , CASE WHEN idsc.ins_deelsrtcontrole_plandatum > idsc.ins_deelsrtcontrole_datum_org THEN 1 ELSE 0 END isrespijt"
+ " , NULL nonext"
+ " , NULL inspectie_steps"
+ " , TO_DATE(NULL) inspectie_next"
+ " , CASE"
+ " WHEN COALESCE (xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) = 0 AND"
+ " idsc.ins_deelsrtcontrole_plandatum IS NOT NULL AND"
+ " TRUNC (idsc.ins_deelsrtcontrole_plandatum, 'HH24') >= TRUNC (SYSDATE, 'HH24')"
+ " THEN 1"
+ " WHEN COALESCE (xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) > 0 AND"
+ " idsc.ins_deelsrtcontrole_plandatum IS NOT NULL AND"
+ " TRUNC (idsc.ins_deelsrtcontrole_plandatum, 'DDD') >= TRUNC (SYSDATE, 'DDD')"
+ " THEN 1"
+ " ELSE NULL"
+ " END inspectie_steps"
+ " , CASE"
+ " WHEN idsc.ins_deelsrtcontrole_status < 5"
+ " THEN idsc.ins_deelsrtcontrole_datum_org"
+ " ELSE TO_DATE (NULL)"
+ " END inspectie_next"
+ " , idsc.ins_srtcontrole_key"
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
+ " , di.ins_srtcontrole_groep"
@@ -201,10 +290,12 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) eenheid"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_kosten, di.ins_srtcontrole_kosten) kosten"
+ " , di.ins_srtcontrole_mode isc_mode"
+ " , xcp.ins_srtcontroledl_xcp_respijt respijt"
+ " , idsc.ins_deelsrtcontrole_plandatum plandatum"
+ " , idsc.ins_deelsrtcontrole_opmerking"
+ " , " + S("prs_pers_string") + " inspecteur"
+ " , di.ins_srtcontrole_type"
+ " , idsc.ins_deelsrtcontrole_status"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind) inspectie_eind"
+ " FROM defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " , ins_deelsrtcontrole idsc"
@@ -221,17 +312,46 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
function fnrowData(oRs)
{
var data = { insKey: ins_key,
ins_srtcontrole_key: oRs("ins_srtcontrole_key").value,
ins_deelsrtcontrole_key: oRs("ins_deelsrtcontrole_key").value||-1
};
var insKey = ins_key;
var insSrtControleKey = oRs("ins_srtcontrole_key").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};
return JSON.stringify(data);
}
function fnrowActionEnabler(oRs)
{
// Als object is vervallen dan kun je niet meer inspecteren en uitstellen.
var vervallen = (oRs("inspectie_eind").Value != null && new Date(oRs("inspectie_eind").Value).getTime() < new Date().midnight());
var this_ins = ins.func_enabled_deel(oRs("ins_deel_key").Value);
var istatus = oRs("ins_deelsrtcontrole_status").Value != null? oRs("ins_deelsrtcontrole_status").Value : -1;
// 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 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};
return data;
}
function fnrowClass(oRs)
{
var lclass = "";
var istatus = oRs("ins_deelsrtcontrole_status").Value != null? oRs("ins_deelsrtcontrole_status").Value : -1;
if (istatus == 2)
lclass = "pending";
if (oRs("seq").Value == 2) // klaar
return "";
return lclass;
var dt = new Date(oRs("inspectie_next").Value);
dt.setHours(0,0,0,0); // trunc datum
@@ -241,12 +361,12 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
var dtlate = new Date().setHours(0,0,0,0);
if (dt >= dtsoon)
return ""; // meer dan 30 dagen in de toekomst
return lclass; // meer dan 30 dagen in de toekomst
if (dt >= dtlate)
return "expired1"; // Binnenkort
return lclass + " expired1"; // Binnenkort
return "expired2"; // Te laat
return lclass + " expired2"; // Te laat
}
function fnControleDatum(oRs)
@@ -262,8 +382,8 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
{
if (oRs("seq").Value == 2)
{
var dt = new Date(oRs("inspectie_org").Value) ;
var dtsting = (oRs("eenheid").value == 0? toDateTimeString(dt) : toDateString(dt)) + (oRs("isrespijt").Value == 1? " " + L("lcl_ins_respijt") : "");
var dt = typeof oRs("inspectie_org").Value == "date"? new Date(oRs("inspectie_org").Value) : null;
var dtsting = (typeof dt == "date" && oRs("eenheid").value == 0? toDateTimeString(dt) : toDateString(dt)) + (oRs("isrespijt").Value == 1? " " + L("lcl_ins_respijt") : "");
return dtsting;
}
@@ -271,23 +391,23 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
if (nonext)
{
switch (oRs("ins_srtcontrole_type").Value)
{
case 1: { var txt = L("lcl_ins_controle_first"); break; } // Eerste controle.
{ // 1: Controle, 2: Vervanging, 3: Certificering.
case 1: { var txt = L("lcl_ins_controle_first"); break; }; // Eerste controle.
case 2:
case 3: { var dt = new Date(oRs("inspectie_next").Value); // Registratiedatum.
var txt = (oRs("eenheid").value == 0? toDateTimeString(dt) : toDateString(dt));
break;
} // Eerste certificering.
case 3: { var dt = new Date(oRs("inspectie_next").Value); // Registratiedatum.
var txt = (oRs("eenheid").value == 0? toDateTimeString(dt) : toDateString(dt));
break;
} // Eerste certificering.
}
return txt;
}
var dt = new Date(oRs("inspectie_next").Value);
var respijt = oRs("respijt").Value != null? " " + L("lcl_ins_respijt") : "";
var plandatum = oRs("plandatum").Value != null? " " + L("lcl_ins_respijt") : "";
dt = (oRs("eenheid").value == 0? toDateTimeString(dt) : toDateString(dt)); // Nog even afstemmen: altijd doen of alleen voor korte periode?
if (oRs("isc_mode").Value == 0 && oRs("inspectie_steps").Value && oRs("inspectie_steps").Value > 1)
dt += " (" + (parseInt(oRs("inspectie_steps").Value) - 1) + ")";
return dt + respijt;
return dt + plandatum;
}
function fnSrtControleType(oRs)
@@ -356,13 +476,14 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
buttons.push({ icon: "wijzigen.png", title: L("lcl_ins_change_xcp"), action: "FcltMgr.openModalDetail('" + addurl_editxcp + "', '" + L("lcl_ins_change_xcp") + "', {callback: FcltMgr.reload })" })
}
var rst = new ResultsetTable({ sql: sql,
keyColumn: "ins_deel_key", //dummy
var rst = new ResultsetTable({ keyColumn: "ins_deel_key", //dummy
sql: sql,
ID: "inspecttable",
rowData: fnrowData,
rowActionEnabler: fnrowActionEnabler,
rowClass: fnrowClass,
showAll: showall,
outputmode: outputmode,
rowData: fnrowData,
rowClass: fnrowClass,
title: L("lcl_ins_planned_activities"),
buttons: buttons
});
@@ -380,7 +501,13 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
rst.addColumn(new Column({caption: L("lcl_ins_controle_opm"), content: "ins_srtcontrole_opmerking"}));
}
if (this_ins.canChange)
rst.addAction({ action: "ins_edit", caption: L("lcl_edit"), isDefault: true});
{
rst.addAction({ action: "insEditInsp", caption: L("lcl_edit"), enabler: "eEdit", 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" });
rst.addAction({ action: "insFinish", caption: L("lcl_ins_finish"), enabler: "eFinish" });
}
var cnt = rst.processResultset();
%>

View File

@@ -21,34 +21,44 @@ var JSON_Result = true;
<!-- #include file="ins.inc" -->
<%
var insp_actie = getFParamInt("inspectie_actie", 0); // Inspectie invoeren of uitstellen.
//var insp_actie = getFParamInt("inspectie_actie", 0); // Inspectie invoeren of uitstellen.
var ins_key_arr = getFParamIntArray("ins_keys");
var multi = ins_key_arr.length > 1;
if (multi)
var srtcont_key_arr = getFParamIntArray("srtcont_key_arr", []); // Inspectiesoorten
else
var srtcont_key_arr = getFParamIntArray("sel_srtcontrole", -1); // voorgekozen inspectiesoort
var srtcont_key_arr = getFParamIntArray("srtcont_key_arr", []); // Inspectiesoorten
//var dlsrtcont_key_arr = getFParamIntArray("dlsrtcont_key_arr", []); // Inspecties
// Als multi dan moet de ins_deel array even groot zijn als de srtcontrole array.
user.auth_required_or_abort(!multi || ins_key_arr.length == srtcont_key_arr.length);
var savemode = getFParam("savemode");
var finish = getFParamInt("finish", 0) == 1; // Inspectie direct afronden.
// Als multi dan moet de ins_deel array even groot zijn als de srtcontrole array en deelsrtcontrole array.
user.auth_required_or_abort(!multi || (ins_key_arr.length == srtcont_key_arr.length));
var deelsrtcontrole_datum;
var respijt_datum;
var plandatum;
var nextdate;
if (insp_actie == 0)
if (savemode == "P") // Inplannen (Plan).
plandatum = getFParamDate("plandatum");
else if (savemode == "C") // Afmelden/Afronden (Close).
deelsrtcontrole_datum = getFParamDate("deelsrtcontrole_datum", new Date);
else
respijt_datum = new Date(getFParamDate("respijt_datum"));
else if (savemode == "E")
{ // Wijzigen (Edit).
plandatum = getFParamDate("plandatum", null);
if (multi)
abort_with_warning(L("lcl_ins_allow_multi_edit"));
}
var warning = "";
var result = {};
var tobeinspected = 0;
var tobehandled = 0;
var ingesloten = [];
// 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 dlsrtcont_key = -1;
var sql = "SELECT *"
+ " FROM (WITH defined_inspect AS (SELECT isc.ins_srtcontrole_key"
+ " , isc.ins_srtcontrole_mode"
@@ -67,9 +77,11 @@ for (var i = 0; i < ins_key_arr.length; i++)
+ " AND isc.ins_srtinstallatie_key = id.ins_discipline_key)"
+ " AND id.ins_deel_key = " + ins_key_arr[i] + ")"
+ " SELECT di.ins_srtcontrole_key"
+ " , idsc.ins_deelsrtcontrole_key"
+ " , idsc.ins_deelsrtcontrole_datum"
+ " , COALESCE (xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) eenheid"
+ " , di.ins_srtcontrole_mode"
+ " , idsc.ins_deelsrtcontrole_status"
+ " FROM defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " , ins_deelsrtcontrole idsc"
@@ -84,8 +96,21 @@ for (var i = 0; i < ins_key_arr.length; i++)
+ " ORDER BY ins_deelsrtcontrole_datum DESC";
var oRs = Oracle.Execute(sql);
// Waarden moeten aanwezig zijn. Mocht dat niet zo zijn dan is er iets fout.
var ins_srtcontrole_mode = oRs("ins_srtcontrole_mode").Value;
var ins_deelsrtcontrole_status = oRs("ins_deelsrtcontrole_status").Value != null? oRs("ins_deelsrtcontrole_status").Value : -1; // Als er nog geen inspectie is geweest is de status -1.
var eenheid = oRs("eenheid").Value;
var ins_deelsrtcontrole_datum = oRs("ins_deelsrtcontrole_datum").Value;
var ins_deelsrtcontrole_key = oRs("ins_deelsrtcontrole_key").Value;
if (insp_actie == 0)
// Inplannen (dlsrtcont_key = -1).
// Het is de eerste inspectie of de laatste inspectie moet verwerkt(6) zijn, anders kan de inspectie niet ingepland worden.
if (savemode == "P" && (ins_deelsrtcontrole_status != -1 && ins_deelsrtcontrole_status != 6)) // Inplannen.
{ // Het is niet de eerste inspectie of de laatste inspectie is niet verwerkt. Overslaan.
oRs.Close();
continue;
}
if (savemode == "C") // Afmelden/Afronden.
{ // Is er op de inspectiedatum of op het inspectieuur al geinspecteerd voor dit object en het objectsoort?
// Voor niet multi is dit al gecontroleerd in ins_inspect.asp. Hier voor de veiligheid opnieuw controleren is niet verkeerd.
var deelsrtcontrole_midnighttime = deelsrtcontrole_datum.midnight().getTime();
@@ -93,22 +118,22 @@ for (var i = 0; i < ins_key_arr.length; i++)
var deelsrtcontrole_hourtime = new Date(new Date(parseInt(deelsrtcontrole_hourtime.getTime())).setMinutes(0,0,0)).getTime();
// 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.
if (oRs("ins_deelsrtcontrole_datum").Value != null)
if (ins_deelsrtcontrole_datum != null)
{
if ((oRs("eenheid").Value > 0) && oRs("ins_srtcontrole_mode").Value == 0 && // Geldt alleen voor momentmodus.
(deelsrtcontrole_midnighttime == new Date(oRs("ins_deelsrtcontrole_datum").Value).midnight().getTime()))
if ((eenheid > 0) && ins_srtcontrole_mode == 0 && // Geldt alleen voor momentmodus.
(deelsrtcontrole_midnighttime == new Date(ins_deelsrtcontrole_datum).midnight().getTime()))
{ // Op dezelfde dag mag niet. Overslaan.
oRs.Close();
continue;
}
else if ((oRs("eenheid").Value == 0) && oRs("ins_srtcontrole_mode").Value == 0 && // Geldt alleen voor momentmodus.
(deelsrtcontrole_hourtime == new Date(new Date(oRs("ins_deelsrtcontrole_datum").Value).setMinutes(0,0,0)).getTime()))
else if ((eenheid == 0) && ins_srtcontrole_mode == 0 && // Geldt alleen voor momentmodus.
(deelsrtcontrole_hourtime == new Date(new Date(ins_deelsrtcontrole_datum).setMinutes(0,0,0)).getTime()))
{ // In dezelfde minuut (tijdstip) mag niet. Overslaan.
oRs.Close();
continue;
}
else if (new Date(deelsrtcontrole_datum.setSeconds(0, 0)).getTime() == new Date(new Date(oRs("ins_deelsrtcontrole_datum").Value)).getTime() &&
oRs("ins_srtcontrole_mode").Value == 1)
else if (new Date(deelsrtcontrole_datum.setSeconds(0, 0)).getTime() == new Date(new Date(ins_deelsrtcontrole_datum)).getTime() &&
ins_srtcontrole_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.
@@ -117,62 +142,130 @@ for (var i = 0; i < ins_key_arr.length; i++)
continue;
}
}
if (ins_deelsrtcontrole_status == 5)
{ // Laatste inspectie is niet verwerkt. Overslaan.
oRs.Close();
continue;
}
else if (ins_deelsrtcontrole_status >= 0 && ins_deelsrtcontrole_status != 6)
dlsrtcont_key = ins_deelsrtcontrole_key;
}
var ins_srtcontrole_mode = oRs("ins_srtcontrole_mode").Value;
if (savemode == "E") // Wijzigen.
{ // Het mag niet de eerste inspectie zijn en de laatste inspectie mag niet verwerkt zijn.
if (ins_deelsrtcontrole_status == -1 || ins_deelsrtcontrole_status == 6)
{ // Eerste inspectoe of verwerkte inspectie kan niet gewijzigd worden. Overslaan.
oRs.Close();
continue;
}
else
dlsrtcont_key = ins_deelsrtcontrole_key;
}
oRs.Close();
var this_ins = ins.func_enabled_deel(ins_key_arr[i]);
// Als ik mag inspecteren mag ik ook de respijt aangeven.
// Als ik mag inspecteren mag ik ook inplannen.
if (this_ins.canInspect)
{
ingesloten.push({ins_key: ins_key_arr[i], srtcont_key: srtcont_key_arr[i], inspectiemode: ins_srtcontrole_mode});
tobeinspected++;
ingesloten.push({ins_key: ins_key_arr[i], srtcont_key: srtcont_key_arr[i], dlsrtcont_key: dlsrtcont_key,
inspectiemode: ins_srtcontrole_mode, inspectiestatus: ins_deelsrtcontrole_status});
tobehandled++;
}
}
user.anything_todo_or_abort(tobeinspected > 0); // We klagen niet over enkele wel en enkele niet
// De respijtdatum (exception tabel) verwijderen.
function verwijderrespijt(ins_key, srtcont_key)
user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel en enkele niet
function saveFlexKenmerkenInspection(pdlsrtcont_key, pinsPresent)
{
sqlR = "UPDATE ins_srtcontroledl_xcp"
+ " SET ins_srtcontroledl_xcp_respijt = NULL"
+ " WHERE ins_deel_key = " + ins_key
+ " AND ins_srtcontrole_key = " + srtcont_key;
Oracle.Execute(sqlR);
// HIER WORDEN DE SAVEFLEXKENMERKEN GEREGELD
currentKenmerkenSQL = " SELECT kd.ins_kenmerk_key"
+ " , kd.ins_kmdeelsrtcontr_waarde"
+ " FROM ins_kmdeelsrtcontr kd"
+ " , ins_kenmerk k"
+ " WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key"
+ " AND kd.ins_kmdeelsrtcontr_verwijder IS NULL"
+ " AND kd.ins_deelsrtcontrole_key = " + pdlsrtcont_key;
// Zijn er nog exceptions actief voor het object voor deze soort controle? Anders kan de entry in de exception tabel verwijderd worden.
sqlR = "SELECT ins_srtcontroledl_xcp_key"
+ " FROM ins_srtcontroledl_xcp"
+ " WHERE ins_deel_key = " + ins_key
+ " AND ins_srtcontrole_key = " + srtcont_key
+ " AND ins_srtcontroledl_xcp_respijt IS NULL"
+ " AND ins_srtcontroledl_xcp_periode IS NULL"
+ " AND ins_srtcontroledl_xcp_eenheid IS NULL"
+ " AND ins_srtcontroledl_xcp_bits IS NULL";
oRs = Oracle.Execute(sqlR);
if (!oRs.eof)
{ // Geen ingevulde exceptions. Dan kan de entry in de exception tabel worden verwijderd.
sqlR = "DELETE FROM ins_srtcontroledl_xcp"
+ " WHERE ins_deel_key = " + ins_key
+ " AND ins_srtcontrole_key = " + srtcont_key;
Oracle.Execute(sqlR);
}
oRs.Close();
var ftrack = saveFlexKenmerken( pdlsrtcont_key
, { kenmerkTable: "ins_kmdeelsrtcontr"
, kenmerkParentKey : "ins_deelsrtcontrole_key"
, kenmerkWaarde: "ins_kmdeelsrtcontr_waarde"
, kenmerkKey: "ins_kenmerk_key"
, currentKenmerkenSQL: currentKenmerkenSQL
, requestQF: Request.Form
, isNew: !pinsPresent
, flexPath: "INS/I"
, module: "INS"
}
);
return ftrack;
}
if (insp_actie == 0)
{
var deelsrtcont_key = getQParamInt("deelsrtcont_key", -1); // bestaande inspectie
var isNew = (deelsrtcont_key < 0);
// Bij bestaande inspecties mag het geen multi zijn.
user.auth_required_or_abort(isNew || !multi);
if (savemode == "P")
{ // Inplannen inspectie.
var result = { success: true, plandatum: plandatum };
var result = { success: true, deelsrtcontrole_datum: deelsrtcontrole_datum, deelsrtcontrole_key: deelsrtcont_key };
for (var i = 0; i < ingesloten.length; i++)
{ // Zetten van de status en afhandelen van de tracking van het starten.
// Is er een inspectie (ins_deelsrtcontrole) record aanwezig (ins_deelsrtcontrole_key is NULL).
var insPresent = ingesloten[i].dlsrtcont_key > 0;
// Eerst maar eens aanmaken een inspectie record aanmaken.
// Zijn er inspecties geweest voor dit object of is er een plandatum voor dit object ingevuld zodat we de volgende inspectiedatum kunnen berekenen?
var sql = "SELECT ins_deelsrtcontrole_datum"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_srtcontrole_key = " + ingesloten[i].srtcont_key
+ " AND idsc.ins_deel_key = " + ingesloten[i].ins_key;
var oRs = Oracle.Execute(sql);
var nextdate = null;
if (!oRs.eof)
{ // Bereken de volgende inspectiedatum.
sql = "SELECT ins.nextcyclusdate (" + ingesloten[i].ins_key + ", " + ingesloten[i].srtcont_key + ", 1) nextdate FROM DUAL"
oRs = Oracle.Execute(sql);
nextdate = new Date(oRs("nextdate").Value);
}
//else Er zijn nog geen inspecties geweest voor dit object en er is nog geen plandatum voor dit object ingevuld.
// Volgende inspectiedatum kun je niet berekenen en is dus onbekend (leeg)
var fields = [{dbs: "ins_deelsrtcontrole_key", typ: "key", seq: "ins_s_ins_deelsrtcontrole_key"},
{dbs: "ins_deel_key", typ: "key", val: ingesloten[i].ins_key},
{dbs: "ins_srtcontrole_key", typ: "key", val: ingesloten[i].srtcont_key},
{dbs: "ins_deelsrtcontrole_opmerking", typ: "varchar", frm: "opmerk", track: L("lcl_remark"), len: 2000 },
{dbs: "prs_perslid_key", typ: "key", val: user_key},
{dbs: "ins_deelsrtcontrole_plandatum", typ: "datetime", val: plandatum},
{dbs: "ins_deelsrtcontrole_datum_org", typ: "datetime", val: nextdate}
];
var insIns = buildInsert("ins_deelsrtcontrole", fields);
ingesloten[i].dlsrtcont_key = insIns.sequences["ins_deelsrtcontrole_key"];
var err = Oracle.Execute(insIns.sql, true);
if (err.friendlyMsg)
{
result.warning = err.friendlyMsg;
result.success = false;
}
// Nu nog de status zetten, tracking genereren en notificaties sturen.
ins.setinspectstatus(ingesloten[i].dlsrtcont_key, 0); // Gepland(0).
}
}
else if (savemode == "C")
{ // Afmelden inspectie.
var result = { success: true, deelsrtcontrole_datum: deelsrtcontrole_datum };
for (var i = 0; i < ingesloten.length; i++)
{
if (isNew) // Nieuwe inspectie
// Nieuwe inspectie; de ins_deelsrtcontrole_key is NULL of als deze een waarde heeft dan is de status 0 of 2.
var isNew = ingesloten[i].dlsrtcont_key < 0 || ingesloten[i].inspectiestatus < 5;
// Is er een inspectie (ins_deelsrtcontrole) record aanwezig (ins_deelsrtcontrole_key is NULL).
var insPresent = ingesloten[i].dlsrtcont_key > 0;
if (isNew) // Nieuwe inspectie.
{ // Bepaal de eerste niet successvolle controle methode. Is deze er niet dan kies maar de eerste successvolle controlemode.
sql = "SELECT ins_controlemode_key"
+ " , 1"
@@ -202,38 +295,14 @@ if (insp_actie == 0)
var eenheid = oRs("eenheid").Value;
oRs.Close();
// 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[i].ins_key
+ " AND xcp.ins_srtcontrole_key = " + ingesloten[i].srtcont_key
+ " AND xcp.ins_srtcontroledl_xcp_respijt IS NOT NULL";
oRs = Oracle.Execute(sql);
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();
// Zijn er inspecties geweest voor dit object of is er een respijtdatum voor dit object ingevuld zodat we de volgende inspectiedatum kunnen berekenen?
// Zijn er inspecties geweest voor dit object of is er een plandatum voor dit object ingevuld zodat we de volgende inspectiedatum kunnen berekenen?
sql = "SELECT ins_deelsrtcontrole_datum"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_srtcontrole_key = " + ingesloten[i].srtcont_key
+ " AND idsc.ins_deel_key = " + ingesloten[i].ins_key
+ " UNION "
+ "SELECT xcp.ins_srtcontroledl_xcp_respijt"
+ " FROM ins_srtcontroledl_xcp xcp"
+ " WHERE xcp.ins_deel_key = " + ingesloten[i].ins_key
+ " AND xcp.ins_srtcontrole_key = " + ingesloten[i].srtcont_key
+ " AND xcp.ins_srtcontroledl_xcp_respijt IS NOT NULL";
+ " AND idsc.ins_deel_key = " + ingesloten[i].ins_key;
oRs = Oracle.Execute(sql);
if (oRs.eof)
{ // Er zijn nog geen inspecties geweest voor dit object en er is nog geen respijtdatum voor dit object ingevuld.
{ // Er zijn nog geen inspecties geweest voor dit object en er is nog geen plandatum voor dit object ingevuld.
// Volgende inspectiedatum kun je niet berekenen
// De eerstvolgende inspectiedatum gelijk aan de controledatum stellen.
nextdate = new Date(deelsrtcontrole_datum);
@@ -241,27 +310,60 @@ if (insp_actie == 0)
}
else
{ // Bereken de volgende inspectiedatum.
oRs.Close();
sql = "SELECT ins.nextcyclusdate (" + ingesloten[i].ins_key + ", " + ingesloten[i].srtcont_key + ", 1) nextdate FROM DUAL"
oRs = Oracle.Execute(sql);
nextdate = new Date(oRs("nextdate").Value);
oRs.Close();
}
var respijt = false;
if (insPresent)
{
// Is er een plandatum? Dan is dit de volgende inspectiedatum.
sql = "SELECT ins_deelsrtcontrole_plandatum"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_deelsrtcontrole_status <= 5"
+ " AND idsc.ins_deelsrtcontrole_key = " + ingesloten[i].dlsrtcont_key
+ " AND idsc.ins_srtcontrole_key = " + ingesloten[i].srtcont_key
+ " AND idsc.ins_deel_key = " + ingesloten[i].ins_key
oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
// De plandatum is de volgende inspectiedatum
plandatum = new Date(oRs("ins_deelsrtcontrole_plandatum").Value);
// Alleen als de plandatum na de volgende inspectiedatum valt is er sprake van respijt.
respijt = plandatum > nextdate;
}
oRs.Close();
}
// Truncate datums op de dag of het uur afhankelijk van de eenheid.
if (eenheid == 0)
{
var nextdate_trunc = new Date(new Date(nextdate).setMinutes(0, 0, 0));
var deelsrtcontrole_datum_trunc = new Date(new Date(deelsrtcontrole_datum).setMinutes(0, 0, 0));
if (respijt)
respijtdate = new Date(respijtdate.setMinutes(0, 0, 0));
plandatum = new Date(plandatum.setMinutes(0, 0, 0));
}
else
{
var nextdate_trunc = new Date(nextdate.midnight());
var deelsrtcontrole_datum_trunc = new Date(deelsrtcontrole_datum.midnight());
if (respijt)
respijtdate = new Date(respijtdate.midnight());
plandatum = new Date(plandatum.midnight());
}
var fields = [ { dbs: "ins_deelsrtcontrole_opmerking", typ: "varchar", frm: "opmerk", track: L("lcl_remark"), len: 2000 },
{ dbs: "prs_perslid_key", typ: "key", val: user_key, track: L("lcl_name"), foreign: "prs_perslid" },
{ dbs: "ins_deelsrtcontrole_datum", typ: "datetime", val: deelsrtcontrole_datum, track: L("lcl_ins_controle_datum") } // De controledatum met tijd opslaan.
];
if (!insPresent)
{ // Er is nog inspectie record aangemaakt. De volgende velden dienen dan nog ingevuld te worden.
fields.push({ dbs: "ins_deel_key", typ: "key", val: ingesloten[i].ins_key });
fields.push({ dbs: "ins_srtcontrole_key", typ: "key", val: ingesloten[i].srtcont_key });
fields.push({ dbs: "ins_deelsrtcontrole_datum_org", typ: "datetime", val: nextdate }); // De orginele controledatum met tijd opslaan.
fields.push({ dbs: "ins_deelsrtcontrole_key", typ: "key", seq: "ins_s_ins_deelsrtcontrole_key" });
}
// Afhankelijk van de modus de inspectie(s) opslaan.
@@ -269,28 +371,29 @@ if (insp_actie == 0)
{ // Moment modus
// De laatste datum die opgeslagen wordt is uiterlijk de opgegeven controledatum
// De trunc waarde van de controle datum gebruiken.
while ((respijt && respijtdate <= deelsrtcontrole_datum_trunc) || (!respijt && nextdate_trunc <= deelsrtcontrole_datum_trunc))
var firstone = true;
while ((respijt && plandatum <= deelsrtcontrole_datum_trunc) || (!respijt && nextdate_trunc <= deelsrtcontrole_datum_trunc))
{
var fields = [ { dbs: "ins_deel_key", typ: "key", val: ingesloten[i].ins_key },
{ dbs: "ins_srtcontrole_key", typ: "key", val: ingesloten[i].srtcont_key },
{ dbs: "ins_deelsrtcontrole_opmerking", typ: "varchar", frm: "opmerk", len: 2000 },
{ dbs: "prs_perslid_key", typ: "key", val: user_key },
{ dbs: "ins_deelsrtcontrole_datum", typ: "datetime", val: deelsrtcontrole_datum }, // De controledatum met tijd opslaan.
{ dbs: "ins_deelsrtcontrole_key", typ: "key", seq: "ins_s_ins_deelsrtcontrole_key" },
{ dbs: "ins_deelsrtcontrole_datum_org", typ: "datetime", val: nextdate } // De orginele controledatum met tijd opslaan.
];
if (nextdate_trunc < deelsrtcontrole_datum_trunc)
fields.push({ dbs: "ins_controlemode_key", typ: "key", val: controlemode }); // Controlemode die niet succesvol is
// Inspectie datum ligt voor de laatste inspectiedatum. Dan moet die inspectie niet successvol zijn, anders geeft dit problemen.
fields.push({ dbs: "ins_controlemode_key", typ: "key", val: controlemode, track: L("lcl_ins_controle_mode"), foreign: "ins_controlemode" } ); // Controlemode die niet succesvol is
else
fields.push({ dbs: "ins_controlemode_key", typ: "key", frm: "sel_controlemode" }); // De inspectiedatum is vandaag of ligt in de toekomst en is dus op tijd.
fields.push({ dbs: "ins_controlemode_key", typ: "key", frm: "sel_controlemode", track: L("lcl_ins_controle_mode"), foreign: "ins_controlemode" } ); // De inspectiedatum is vandaag of ligt in de toekomst en is dus op tijd.
if (respijt)
fields.push({ dbs: "ins_deelsrtcontrole_datum_xcp", typ: "datetime", val: respijtdate });
var insIns = buildInsert("ins_deelsrtcontrole", fields);
result.deelsrtcontrole_key = insIns.sequences["ins_deelsrtcontrole_key"];
var err = Oracle.Execute(insIns.sql, true);
if (insPresent && firstone) // Alleen voor de alle eerste inspectie kan een inspectie record aanwezig zijn.
{ // Er is al een inspectie record (ins_deelsrtcontrole) aangemaakt. De status is Gepland(0) of In behandeling(2).
// Plandatum kan gevuld blijven met de huidige waarde.
var insUpd = buildTrackingUpdate("ins_deelsrtcontrole", " ins_deelsrtcontrole_key = " + ingesloten[i].dlsrtcont_key, fields);
var err = Oracle.Execute(insUpd.sql, true);
firstone = false;
}
else
{ // Er is nog geen inspectie record aangemaakt.
var insIns = buildInsert("ins_deelsrtcontrole", fields);
ingesloten[i].dlsrtcont_key = insIns.sequences["ins_deelsrtcontrole_key"];
var err = Oracle.Execute(insIns.sql, true);
}
if (err.friendlyMsg)
{
@@ -299,12 +402,11 @@ if (insp_actie == 0)
break;
}
if (respijt)
{ // Inspectie is opgeslagen. De respijt is niet meer nodig en kan nu verwijderd worden.
verwijderrespijt(ingesloten[i].ins_key, ingesloten[i].srtcont_key);
respijt = false;
respijtdate = null;
}
// Nu nog de status zetten, tracking genereren en notificaties sturen.
ins.setinspectstatus(ingesloten[i].dlsrtcont_key, (finish? 6: 5)); // Afgemeld(5), History/Verwerkt(6).
respijt = false;
plandatum = null;
// Bereken de volgende inspectiedatum.
// De functie ins.nextcyclusdate levert de volgende inspectie datum met tijd op onafhankelijk van de eenheid.
@@ -321,20 +423,21 @@ if (insp_actie == 0)
}
else
{ // Interval modus
var fields = [ { dbs: "ins_deel_key", typ: "key", val: ingesloten[i].ins_key },
{ dbs: "ins_srtcontrole_key", typ: "key", val: ingesloten[i].srtcont_key },
{ dbs: "ins_controlemode_key", typ: "key", frm: "sel_controlemode" },
{ dbs: "ins_deelsrtcontrole_opmerking", typ: "varchar", frm: "opmerk", len: 2000 },
{ dbs: "prs_perslid_key", typ: "key", val: user_key },
{ dbs: "ins_deelsrtcontrole_datum", typ: "datetime", val: deelsrtcontrole_datum }, // De controledatum met tijd opslaan.
{ dbs: "ins_deelsrtcontrole_key", typ: "key", seq: "ins_s_ins_deelsrtcontrole_key" },
{ dbs: "ins_deelsrtcontrole_datum_org", typ: "datetime", val: nextdate } // De orginele controledatum met tijd opslaan.
];
fields.push({ dbs: "ins_controlemode_key", typ: "key", frm: "sel_controlemode", track: L("lcl_ins_controle_mode"), foreign: "ins_controlemode" });
var insIns = buildInsert("ins_deelsrtcontrole", fields);
result.deelsrtcontrole_key = insIns.sequences["ins_deelsrtcontrole_key"];
var err = Oracle.Execute(insIns.sql, true);
if (insPresent)
{ // Er is al een inspectie record (ins_deelsrtcontrole) aangemaakt. De status is Gepland(0) of In behandeling(2)
// Plandatum kan gevuld blijven met de huidige waarde.
//fields.push({ dbs: "ins_deelsrtcontrole_plandatum", typ: "datetime", val: null }); // De plandatum leegmaken.
var insUpd = buildTrackingUpdate("ins_deelsrtcontrole", " ins_deelsrtcontrole_key = " + ingesloten[i].dlsrtcont_key, fields);
var err = Oracle.Execute(insUpd.sql, true);
}
else
{ // Er is nog geen inspectie record aangemaakt.
var insIns = buildInsert("ins_deelsrtcontrole", fields);
ingesloten[i].dlsrtcont_key = insIns.sequences["ins_deelsrtcontrole_key"];
var err = Oracle.Execute(insIns.sql, true);
}
if (err.friendlyMsg)
{
@@ -343,25 +446,27 @@ if (insp_actie == 0)
break;
}
if (respijt)
{ // Inspectie is opgeslagen. De respijt is niet meer nodig en kan nu verwijderd worden.
verwijderrespijt(ingesloten[i].ins_key, ingesloten[i].srtcont_key);
respijt = false;
respijtdate = null;
}
// Nu nog de status zetten, tracking genereren en notificaties sturen.
ins.setinspectstatus(ingesloten[i].dlsrtcont_key, (finish? 6: 5)); // Afgemeld(5), History/Verwerkt(6).
respijt = false;
plandatum = null;
}
}
else
{
{ // uitgevoerde inspectie.
// Datum kan niet meer aangepast worden.
var fields = [ { dbs: "ins_deel_key", typ: "key", val: ingesloten[i].ins_key },
{ dbs: "ins_srtcontrole_key", typ: "key", val: ingesloten[i].srtcont_key },
{ dbs: "ins_controlemode_key", typ: "key", frm: "sel_controlemode" },
{ dbs: "ins_deelsrtcontrole_opmerking", typ: "varchar", frm: "opmerk", len: 2000 },
{ dbs: "ins_controlemode_key", typ: "key", frm: "sel_controlemode", track: L("lcl_ins_controle_mode"), foreign: "ins_controlemode" },
{ dbs: "prs_perslid_key", typ: "key", val: user_key }
];
var sql = buildUpdate("ins_deelsrtcontrole", fields) + " ins_deelsrtcontrole_key = " + deelsrtcont_key;
var err = Oracle.Execute(sql, true);
if (!multi) // Bij multi de opmerking niet opslaan. De opmerking kon ook niet ingevuld worden.
fields.push({ dbs: "ins_deelsrtcontrole_opmerking", typ: "varchar", frm: "opmerk", track: L("lcl_remark"), len: 2000 });
var insUpd = buildTrackingUpdate("ins_deelsrtcontrole", " ins_deelsrtcontrole_key = " + ingesloten[i].dlsrtcont_key, fields);
var err = Oracle.Execute(insUpd.sql, true);
if (err.friendlyMsg)
{
@@ -370,78 +475,36 @@ if (insp_actie == 0)
}
}
if (!multi)
{
// HIER WORDEN DE SAVEFLEXKENMERKEN GEREGELD
currentKenmerkenSQL = " SELECT kd.ins_kenmerk_key"
+ " , kd.ins_kmdeelsrtcontr_waarde"
+ " FROM ins_kmdeelsrtcontr kd"
+ " , ins_kenmerk k"
+ " WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key"
+ " AND kd.ins_kmdeelsrtcontr_verwijder IS NULL"
+ " AND kd.ins_deelsrtcontrole_key = " + result.deelsrtcontrole_key;
if (!multi && insPresent)
var flextrack = saveFlexKenmerkenInspection(ingesloten[0].dlsrtcont_key, insPresent);
saveFlexKenmerken( result.deelsrtcontrole_key
, { kenmerkTable: "ins_kmdeelsrtcontr"
, kenmerkParentKey : "ins_deelsrtcontrole_key"
, kenmerkWaarde: "ins_kmdeelsrtcontr_waarde"
, kenmerkKey: "ins_kenmerk_key"
, currentKenmerkenSQL: currentKenmerkenSQL
, requestQF: Request.Form
, isNew: isNew
, flexPath: "INS/I"
, module: "INS"
}
);
}
if (insPresent && (insUpd.trackarray.length || flextrack.length))
ins.trackinspectupdate(ingesloten[i].dlsrtcont_key, L("lcl_ins_controle_is_upd") + "\n" + insUpd.trackarray.concat(flextrack).join("\n"));
}
}
else if (insp_actie == 1)
{
var result = { success: true, ins_srtcontroledl_xcp_respijt: respijt_datum };
else if (savemode == "E")
{ // Wijzigen inspectie (Edit). Update van de gegevens (plandatum, opmerking en flexkenmerken).
var result = { success: true, plandatum: plandatum };
for (var i = 0; i < ingesloten.length; i++)
var fields = [ { dbs: "ins_deelsrtcontrole_plandatum", typ: "datetime", val: plandatum, track: L("lcl_opdr_plandate") },
{ dbs: "ins_deelsrtcontrole_opmerking", typ: "varchar", frm: "opmerk", track: L("lcl_remark"), len: 2000 }
];
var insUpd = buildTrackingUpdate("ins_deelsrtcontrole", " ins_deelsrtcontrole_key = " + ingesloten[0].dlsrtcont_key, fields);
var err = Oracle.Execute(insUpd.sql, true);
if (err.friendlyMsg)
{
var sql = "SELECT COALESCE((SELECT xcp.ins_srtcontroledl_xcp_eenheid"
+ " FROM ins_srtcontroledl_xcp xcp"
+ " WHERE ins_deel_key = " + ingesloten[i].ins_key
+ " AND ins_srtcontrole_key = " + ingesloten[i].srtcont_key + ")"
+ " , (SELECT isc.ins_srtcontrole_eenheid"
+ " FROM ins_srtcontrole isc"
+ " WHERE ins_srtcontrole_key = " + ingesloten[i].ins_key + ")) eenheid"
+ " FROM DUAL";
var oRs = Oracle.Execute(sql);
var eenheid = oRs("eenheid").Value;
// Bestaat er al een entry in de ins_srtcontroledl_xcp table voor het ins_deel?
sql = "SELECT ins_srtcontroledl_xcp_key"
+ " FROM ins_srtcontroledl_xcp"
+ " WHERE ins_srtcontrole_key = " + ingesloten[i].srtcont_key
+ " AND ins_deel_key = " + ingesloten[i].ins_key;
oRs = Oracle.Execute(sql);
if (oRs.eof)
{ // Insert
var fields = [ { dbs: "ins_deel_key", typ: "key", val: ingesloten[i].ins_key },
{ dbs: "ins_srtcontrole_key", typ: "key", val: ingesloten[i].srtcont_key },
{ dbs: "ins_srtcontroledl_xcp_respijt", typ: "datetime", val: respijt_datum }
];
var insIns = buildInsert("ins_srtcontroledl_xcp", fields);
var err = Oracle.Execute(insIns.sql, true);
}
else
{ // Update
var fields = [ { dbs: "ins_srtcontroledl_xcp_respijt", typ: "datetime", val: respijt_datum } ];
var sql = buildUpdate("ins_srtcontroledl_xcp", fields) + " ins_srtcontroledl_xcp_key = " + oRs("ins_srtcontroledl_xcp_key").Value;
var err = Oracle.Execute(sql, true);
}
if (err.friendlyMsg)
{
result.warning = err.friendlyMsg;
result.success = false;
}
oRs.Close();
result.warning = err.friendlyMsg;
result.success = false;
}
var flextrack = saveFlexKenmerkenInspection(ingesloten[0].dlsrtcont_key, insPresent);
if (insUpd.trackarray.length || flextrack.length)
ins.trackinspectupdate(ingesloten[0].dlsrtcont_key, L("lcl_ins_controle_is_upd") + "\n" + insUpd.trackarray.concat(flextrack).join("\n"));
}
Response.Write(JSON.stringify(result));
Response.End();
%>

View File

@@ -15,7 +15,12 @@
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
inspFutu, inspBusy, inspSoon, inspLate, inspDone: de vinkjes
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
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
@@ -85,8 +90,8 @@ function ins_list (pautfunction, params)
// Voor resulttable de globalen zetten; zou ng anders moeten.
var outputmode = params.outputmode; // print to 0 = screen, 1 = printer, 2 = excel, etc.
var print = (outputmode == 1);
var excel = (outputmode == 2);
var print = (outputmode == 1 || outputmode == 5);
var excel = (outputmode == 2 || outputmode == 6);
var showall = params.showall;
var reg_key = params.reg_key;
@@ -405,7 +410,7 @@ function ins_list (pautfunction, params)
var hasOwner = false; // .... or on the right side
var ErisUitleenbaar = false;
var ErisReserveerbaar = false;
var hasDrawings = false;
var sqlu ="SELECT COUNT (*) FROM ins_srtdeel WHERE ins_srtdeel_uitleenbaar = 1 AND ins_srtdeel_verwijder IS NULL";
@@ -416,7 +421,7 @@ function ins_list (pautfunction, params)
oRsu = Oracle.Execute(sqlu);
ErisReserveerbaar = oRsu(0).value >0
oRsu.close();
var sqlu = "SELECT 1"
+ " FROM cad_tekening"
+ " WHERE cad_tekening_verwijder IS NULL AND ROWNUM = 1";
@@ -492,21 +497,25 @@ function ins_list (pautfunction, params)
{
var outer = params.inspDone?"":"(+)";
var lastinspect = "(SELECT MAX (GREATEST(COALESCE (idsc.ins_deelsrtcontrole_datum_xcp"
+ " , CASE di.ins_srtcontrole_mode"
+ " WHEN 0"
+ " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus. Uitgaan van eigenlijke/orginele inspectiedatum.
+ " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus. Uitgaan van werkelijke inspectiedatum.
+ " END)"
+ " , CASE di.ins_srtcontrole_mode"
+ " WHEN 0"
+ " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus. Uitgaan van eigenlijke/orginele inspectiedatum.
+ " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus. Uitgaan van werkelijke inspectiedatum.
+ " END)) ins_deelsrtcontrole_datum"
var lastinspect = "(SELECT GREATEST(COALESCE (idsc.ins_deelsrtcontrole_plandatum"
+ " , CASE di.ins_srtcontrole_mode"
+ " WHEN 0"
+ " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus. Uitgaan van eigenlijke/orginele inspectiedatum.
+ " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus. Uitgaan van werkelijke inspectiedatum.
+ " END)"
+ " , CASE di.ins_srtcontrole_mode"
+ " WHEN 0"
+ " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus. Uitgaan van eigenlijke/orginele inspectiedatum.
+ " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus. Uitgaan van werkelijke inspectiedatum.
+ " END) ins_deelsrtcontrole_datum"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc.ins_deelsrtcontrole_status IN (5,6)"
+ " AND idsc.ins_deel_key = di.ins_deel_key)";
+ " AND idsc.ins_deelsrtcontrole_status IN (5, 6)"
+ " AND idsc.ins_deel_key = di.ins_deel_key"
+ " AND idsc.ins_deelsrtcontrole_key = (SELECT MAX(idsc2.ins_deelsrtcontrole_key)"
+ " FROM ins_deelsrtcontrole idsc2"
+ " WHERE idsc2.ins_deel_key = di.ins_deel_key"
+ " AND idsc2.ins_srtcontrole_key = di.ins_srtcontrole_key))";
// Eerstvolgende inspectie
var sqlNext = "SELECT ins_deel_key"
@@ -520,9 +529,10 @@ function ins_list (pautfunction, params)
+ " , groepoms"
+ " , ins_srtcontrole_omschrijving"
+ " , ins_srtcontrole_key"
+ (params.inspect
? " , ins_srtcontrole_type"
: "")
+ " , ins_srtcontrole_type"
+ " , ins_deelsrtcontrole_status"
+ " , ins_deelsrtcontrole_key"
+ " , ins_deelsrtcontrole_plandatum"
+ " FROM (WITH defined_inspect" // gedefinieerde inspecties
+ " AS (SELECT *"
+ " FROM ins_deel id"
@@ -540,12 +550,12 @@ function ins_list (pautfunction, params)
+ " AND isc.ins_srtinstallatie_key ="
+ " id.ins_discipline_key))"
+ (params.inspDone
? " SELECT 1 rn"
? " SELECT 1 rn" // Afgehandelde inspecties.
+ " , di.ins_deel_key"
+ " , (SELECT MAX (idsc.ins_deelsrtcontrole_datum)"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc.ins_deelsrtcontrole_status IN (5,6)"
+ " AND idsc.ins_deelsrtcontrole_status IN (5, 6)"
+ " AND idsc.ins_deel_key = di.ins_deel_key) inspectie_date"
+ " , NULL nonext"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) periode"
@@ -554,9 +564,16 @@ function ins_list (pautfunction, params)
+ " , xcp.ins_srtcontroledl_xcp_groep groepoms"
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
+ " , di.ins_srtcontrole_key"
+ (params.inspect
? " , di.ins_srtcontrole_type"
: "")
+ " , di.ins_srtcontrole_type"
+ " , -1 ins_deelsrtcontrole_status"
+ " , NULL ins_deelsrtcontrole_key"
+ " , (SELECT idsc.ins_deelsrtcontrole_plandatum"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_deelsrtcontrole_key = (SELECT MAX(idsc2.ins_deelsrtcontrole_key)"
+ " FROM ins_deelsrtcontrole idsc2"
+ " WHERE idsc2.ins_deel_key = di.ins_deel_key"
+ " AND idsc2.ins_srtcontrole_key = di.ins_srtcontrole_key))"
+ " ins_deelsrtcontrole_plandatum"
+ " FROM defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
@@ -564,54 +581,58 @@ function ins_list (pautfunction, params)
+ " AND EXISTS (SELECT ins_deelsrtcontrole_key"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc.ins_deelsrtcontrole_status IN (5,6)"
+ " AND idsc.ins_deelsrtcontrole_status IN (5, 6)"
+ " 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
: " 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"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_respijt,"
+ " 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 COALESCE(xcp.ins_srtcontroledl_xcp_respijt, " + lastinspect + ") IS NULL THEN 1 ELSE 0 END nonext"
+ " , 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"
+ (params.inspect
? " , di.ins_srtcontrole_type"
: "")
+ " , 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 WHERE ins_deelsrtcontrole_status IN (5,6))"
+ " 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 zijn uitgevoerd
+ " 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
+ " ORDER BY ins_deelsrtcontrole_datum DESC) rn" // Op volgorde zetten/Rangschikken/Sorteren op inspectiedatum.
+ " , di.ins_deel_key"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_respijt,"
+ " fac.nextcyclusdate(CASE"
+ " WHEN di.ins_srtcontrole_mode = 0"
+ " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus. Uitgaan van eigenlijke/orginele inspectiedatum.
+ " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus. Uitgaan van werkelijke inspectiedatum.
+ " END"
+ " , 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 idsc.ins_deelsrtcontrole_status IN (0, 2)"
+ " THEN ins_deelsrtcontrole_datum_org" // In status 0 en 2 wordt de volgende inspectie in ins_deelsrtcontrole_datum_org direct opgeslagen.
+ " ELSE"
+ " fac.nextcyclusdate(CASE"
+ " WHEN di.ins_srtcontrole_mode = 0"
+ " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus (0). Uitgaan van eigenlijke/orginele inspectiedatum.
+ " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus (1). Uitgaan van werkelijke inspectiedatum.
+ " END"
+ " , di.ins_srtcontrole_mode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid)"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode)"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_bits, di.ins_srtcontrole_bits)"
+ " , 1)"
+ " END inspectie_next"
+ " , NULL nonext"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) periode"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) inspectie_eenheid"
@@ -619,14 +640,14 @@ function ins_list (pautfunction, params)
+ " , xcp.ins_srtcontroledl_xcp_groep groepoms"
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
+ " , di.ins_srtcontrole_key"
+ (params.inspect
? " , di.ins_srtcontrole_type"
: "")
+ " , di.ins_srtcontrole_type"
+ " , idsc.ins_deelsrtcontrole_status"
+ " , idsc.ins_deelsrtcontrole_key"
+ " , CASE WHEN idsc.ins_deelsrtcontrole_status IN (0, 2) THEN idsc.ins_deelsrtcontrole_plandatum ELSE NULL END ins_deelsrtcontrole_plandatum"
+ " FROM ins_deelsrtcontrole idsc"
+ " , defined_inspect di"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND idsc.ins_deelsrtcontrole_status IN (5,6)"
+ " AND di.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND idsc.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc.ins_deel_key = di.ins_deel_key"
@@ -643,7 +664,11 @@ function ins_list (pautfunction, params)
: "");
sqlInspectie_select = (params.inspDone? "inspectie_date" : "inspectie_next")
+ ", nonext, ins_srtcontrole_omschrijving, ins_srtcontrole_key, inspectie_eenheid, inspectie_eind, groepoms";
+ " , ispn.nonext, ispn.ins_srtcontrole_omschrijving, ispn.ins_srtcontrole_key, ispn.inspectie_eenheid, ispn.inspectie_eind, ispn.groepoms"
+ " , ispn.ins_srtcontrole_type"
+ " , ispn.ins_deelsrtcontrole_status"
+ " , ispn.ins_deelsrtcontrole_key"
+ " , ispn.ins_deelsrtcontrole_plandatum";
sqlInspectie_from = ", (" + sqlNext + ") ispn"
@@ -760,9 +785,6 @@ function ins_list (pautfunction, params)
+ ", (SELECT " + S("prs_dep_string") + " FROM prs_v_afdeling d WHERE prs_afdeling_key = i.ins_alg_ruimte_key) eigenaar"
+ ", NULL alg_ruimte_key " // person key
+ ", i.ins_alg_ruimte_key prs_afdeling_key" // department key
+ (params.inspect
? ", ispn.ins_srtcontrole_type" // Controle type
: "")
+ (koppel_key? ", ins_deelkoppeling_omschrijving, ins_deelkoppeling_van_key, ins_deelkoppeling_naar_key" : "")
+ sqlOwner_from
+ ", prs_v_afdeling_boom d"
@@ -782,9 +804,6 @@ function ins_list (pautfunction, params)
+ ", " + S("prs_pers_string") + " eigenaar"
+ ", i.ins_alg_ruimte_key alg_ruimte_key " // person key
+ ", p.prs_afdeling_key prs_afdeling_key" // department key
+ (params.inspect
? ", ispn.ins_srtcontrole_type" // Controle type
: "")
+ (koppel_key? ", ins_deelkoppeling_omschrijving, ins_deelkoppeling_van_key, ins_deelkoppeling_naar_key" : "")
+ sqlOwner_from
+ ", prs_perslid p"
@@ -806,9 +825,6 @@ function ins_list (pautfunction, params)
+ ", c.prs_contactpersoon_naam eigenaar"
+ ", i.ins_alg_ruimte_key alg_ruimte_key" // person key
+ ", NULL prs_afdeling_key" // department key
+ (params.inspect
? ", ispn.ins_srtcontrole_type" // Controle type
: "")
+ (koppel_key? ", ins_deelkoppeling_omschrijving, ins_deelkoppeling_van_key, ins_deelkoppeling_naar_key" : "")
+ sqlOwner_from
+ ", prs_contactpersoon c"
@@ -859,9 +875,6 @@ function ins_list (pautfunction, params)
+ ", null eigenaar"
+ ", i.ins_alg_ruimte_key alg_ruimte_key"
+ ", 0 dummy1" // department key
+ (params.inspect
? ", ispn.ins_srtcontrole_type" // Controle type
: "")
+ (koppel_key? ", ins_deelkoppeling_omschrijving, ins_deelkoppeling_van_key, ins_deelkoppeling_naar_key" : "")
+ " FROM ins_deel i"
+ (terr_key
@@ -1135,6 +1148,7 @@ function ins_list (pautfunction, params)
// else geen enkel vinkje-->alles tonen
else
sql = "SELECT * FROM (" + sql + ") x WHERE 1=1 ";
if (params.cnt_bedrijf_key > 0) // alleen bedrijven met een (onderhouds)contract op deze soorten
{
// Scope srtcontract_type = 3 (Ondersteuning/Support): Onderhoud op objectsoorten en/of plaats.
@@ -1345,34 +1359,20 @@ function ins_list (pautfunction, params)
function fnrowData(oRs)
{
var insKey = oRs("ins_deel_key").value;
var insTypeKey = oRs("ins_srtdeel_key").value;
var insAvailable = oRs("ins_alg_ruimte_key_org").value == null? 1 : 0;
var insSrtControleKey = (params.inspect? oRs("ins_srtcontrole_key").value : -1);
var insKey = oRs("ins_deel_key").Value;
var insTypeKey = oRs("ins_srtdeel_key").Value;
var insAvailable = oRs("ins_alg_ruimte_key_org").Value == null? 1 : 0;
var insSrtControleKey = params.inspect? oRs("ins_srtcontrole_key").Value : -2;
var data = {insKey: insKey, insTypeKey: insTypeKey, insAvailable: insAvailable, insSrtControleKey: insSrtControleKey};
// 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 = params.inspect? oRs("ins_deelsrtcontrole_status").Value : -1;
var insDeelSrtContrKey = params.inspect && oRs("ins_deelsrtcontrole_key").Value != null && istatus != 6? oRs("ins_deelsrtcontrole_key").Value : -2;
var data = {insKey: insKey, insTypeKey: insTypeKey, insAvailable: insAvailable, insSrtControleKey: insSrtControleKey,
insDeelSrtContrKey: insDeelSrtContrKey};
return JSON.stringify(data);
}
function fnrowClass(oRs)
{
if (params.inspDone) return "";
var dt = new Date(oRs("inspectie_next").Value);
dt.setHours(0,0,0,0); // trunc datum
var dtsoon = new Date;
dtsoon.setDate(dtsoon.getDate() + S("ins_inspect_soon_days"));
dtsoon.setHours(0,0,0,0); // trunc datum
var dtlate = new Date().setHours(0,0,0,0);
if (dt >= dtsoon)
return ""; // meer dan S("ins_inspect_soon_days") dagen in de toekomst
if (dt >= dtlate)
return "expired1"; // Binnenkort
return "expired2"; // Te laat
}
function fnrowActionEnabler(oRs)
{
var eLendOut = false;
@@ -1387,28 +1387,56 @@ function ins_list (pautfunction, params)
var eDelete = false;
var eEdit = true; // Indien enigste actie dan wordt de actie niet getoond en is het de default actie op de hele regel
var eDetails = true; // Ik zie alleen objecten waar ik read rechten (3d) op heb. Dan mag ik ze ook verder inzien.
var eInspect = false;
var eUitstel = false;
var eEditInsp = false;
var ePlan = false;
var eStart = false;
var eClose = false;
var eFinish = false;
if (params.inspect && !params.inspDone)
{
// Als object is vervallen dan kun je niet meer inspecteren en uitstellen.
var vervallen = (oRs("inspectie_eind").Value != null && new Date(oRs("inspectie_eind").Value).getTime() < new Date().midnight());
var nonext = ( (oRs("nonext").Value == 1)
|| (oRs("inspectie_eenheid").value == 0
? new Date(oRs("inspectie_next").Value).setMinutes(0, 0, 0) <= new Date().setMinutes(0, 0, 0)
: new Date(new Date(oRs("inspectie_next").Value).setHours(0, 0, 0, 0)).getTime() <= new Date().getTime()
)
);
var this_ins = ins.func_enabled_deel(oRs("ins_deel_key").Value);
eInspect = !vervallen && nonext && this_ins.canInspect;
eUitstel = !vervallen && !nonext;
var istatus = oRs("ins_deelsrtcontrole_status").Value;
// Een nieuwe inspectie mag pas weer aangemaakt worden als de laatste inspectie Afgerond(6) is.
eEditInsp = this_ins.canInspect && istatus >= 0 && istatus < 6;
ePlan = !vervallen && this_ins.canInspect && (istatus < 0 || istatus == 6);
eStart = !vervallen && this_ins.canInspect && (istatus <= 0 || istatus == 6);
eClose = this_ins.canInspect && (istatus < 5 || istatus == 6);
eFinish = this_ins.canInspect && istatus == 5;
}
var data = {eLendOut: eLendOut, eReceive: eReceive, eAdapt: eAdapt, eDelete: eDelete, eEdit: eEdit, eDetails: eDetails,
eInspect: eInspect, eUitstel: eUitstel};
var data = {eLendOut: eLendOut, eReceive: eReceive, eAdapt: eAdapt, eDelete: eDelete, eEdit: eEdit,
eDetails: eDetails, eEditInsp: eEditInsp, ePlan: ePlan, eStart: eStart, eClose: eClose, eFinish: eFinish};
return data;
}
function fnrowClass(oRs)
{
var lclass = "";
var istatus = oRs("ins_deelsrtcontrole_status").Value != null? oRs("ins_deelsrtcontrole_status").Value : -1;
if (istatus == 2)
lclass = "pending";
if (params.inspDone) return lclass;
var dt = new Date(oRs("inspectie_next").Value);
dt.setHours(0,0,0,0); // trunc datum
var dtsoon = new Date;
dtsoon.setDate(dtsoon.getDate() + S("ins_inspect_soon_days"));
dtsoon.setHours(0,0,0,0); // trunc datum
var dtlate = new Date().setHours(0,0,0,0);
if (dt >= dtsoon)
return lclass; // meer dan S("ins_inspect_soon_days") dagen in de toekomst
if (dt >= dtlate)
return lclass + " expired1"; // Binnenkort
return lclass + " expired2"; // Te laat
}
function fnPlace(oRs)
{
var place = ""
@@ -1522,23 +1550,29 @@ function ins_list (pautfunction, params)
var vervallen = (oRs("inspectie_eind").Value != null && new Date(oRs("inspectie_eind").Value).getTime() < new Date().midnight());
if (vervallen) return L("lcl_ins_controle_vervallen");
var nonext = oRs("nonext").Value == 1
if (nonext)
var txt;
var dt;
switch (oRs("ins_srtcontrole_type").Value)
{
switch (oRs("ins_srtcontrole_type").Value)
{
case 1: { var txt = L("lcl_ins_controle_first"); break; } // Eerste controle.
case 2:
case 3: { var dt = new Date(oRs("inspectie_next").Value); // Registratiedatum.
var txt = (oRs("inspectie_eind").Value == 0? toDateTimeString(dt) : toDateString(dt));
break;
} // Eerste certificering.
}
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;
if (nonext)
{ // Er is nog geen inspectie geweest. Eerste controle moet nog plaatsvinden.
return txt;
}
var inspectie = (params.inspDone? oRs("inspectie_date").Value : oRs("inspectie_next").Value)
var dt = new Date(inspectie);
var inspectie = (params.inspDone? oRs("inspectie_date").Value : oRs("inspectie_next").Value);
if (!params.inspDone && oRs("inspectie_next").Value == null)
return txt;
var inspectie_eenheid = oRs("inspectie_eenheid").Value;
if (inspectie_eenheid == 0)
var dttxt = toDateTimeString(inspectie);
@@ -1548,6 +1582,22 @@ function ins_list (pautfunction, params)
return dttxt;
}
function fnPlandatum(oRs)
{
var vervallen = (oRs("inspectie_eind").Value != null && new Date(oRs("inspectie_eind").Value).getTime() < new Date().midnight());
if (vervallen) return L("lcl_ins_controle_vervallen");
var plandatum = oRs("ins_deelsrtcontrole_plandatum").Value;
var inspectie_eenheid = oRs("inspectie_eenheid").Value;
if (inspectie_eenheid == 0)
var dttxt = toDateTimeString(plandatum);
else
var dttxt = toDateString(plandatum);
return dttxt;
}
function fnSrtControleType(oRs)
{
var txt = "";
@@ -1659,6 +1709,7 @@ function ins_list (pautfunction, params)
if (params.inspect)
{
rst.addColumn(new Column({caption: (params.inspDone? L("lcl_ins_controle_datum") : L("lcl_ins_controle_next")), content: fnInspectie}));
rst.addColumn(new Column({caption: L("lcl_ins_controle_plandate"), content: fnPlandatum}));
rst.addColumn(new Column({caption: L("lcl_ins_controle_srt"), content: "ins_srtcontrole_omschrijving"}));
rst.addColumn(new Column({caption: L("lcl_ins_controle_groep"), content: "groepoms"}));
}
@@ -1696,8 +1747,11 @@ function ins_list (pautfunction, params)
rst.addAction({ action: "insEdit", caption: L("lcl_change"), isDefault: true}); // isDefault, dus nooit multi, alleen door aanklikken regel. Multi via afgehandeld via functie insMultiEdit()
if (params.inspect)
{
rst.addAction({ action: "insInspect", caption: L("lcl_ins_controle"), multi: !tiny, multiOnce: true, enabler: "eInspect" });
rst.addAction({ action: "insInspect", caption: L("lcl_ins_uitstellen"), multi: !tiny, multiOnce: true, enabler: "eUitstel" });
rst.addAction({ action: "insEditInsp", caption: L("lcl_change"), enabler: "eEditInsp" });
rst.addAction({ action: "insPlan", caption: L("lcl_ins_schedule"), multi: !tiny, multiOnce: true, enabler: "ePlan" });
rst.addAction({ action: "insStart", caption: L("lcl_ins_start"), multi: !tiny, multiOnce: true, enabler: "eStart" });
rst.addAction({ action: "insClose", caption: L("lcl_ins_close") + "/" + L("lcl_ins_finish"), multi: !tiny, multiOnce: true, enabler: "eClose" });
rst.addAction({ action: "insFinish", caption: L("lcl_ins_finish"), multi: !tiny, multiOnce: true, enabler: "eFinish" });
}
else
{

View File

@@ -187,26 +187,94 @@ function insMultiEdit(rowArray)
FcltMgr.openModalDetail(url, subject, {callback: FcltCallbackRefresh});
}
function insInspect(rowArray)
function insEditInsp(row)
{
$(row).addClass('dirty');
var insKeyString = row.getAttribute("ROWKEY");
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;
FcltMgr.openDetail(url, L("lcl_change"));
}
}
function insPlan(rowArray)
{
var insKeyString = getKeyString(rowArray);
var srtcontrolekeyArray = new Array();
if (rowArray.length == 1)
for (var i = 0; i < rowArray.length; i++)
{
rowdata = eval('(' + rowArray[0].getAttribute("ROWDATA") + ')');
srtcontrolekeyArray[0] = rowdata.insSrtControleKey;
rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')');
srtcontrolekeyArray[i] = rowdata.insSrtControleKey;
}
else
var url = "appl/ins/ins_edit_inspect.asp?plan=1&ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekeyArray;
FcltMgr.openDetail(url, L("lcl_ins_schedule"));
}
function insStart(rowArray, isMulti)
{
if (isMulti || confirm(L("lcl_ins_starting")))
{
var insKeyString = getKeyString(rowArray);
var srtcontrolekeyArray = new Array();
for (var i = 0; i < rowArray.length; i++)
{
rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')');
srtcontrolekeyArray[i] = rowdata.insSrtControleKey;
}
var data = { ins_keys: insKeyString,
srtcont_keys: srtcontrolekeyArray.join(",")
};
protectRequest.dataToken(data);
$.post( "ins_inspect_start.asp"
, data
, FcltCallbackRefresh
, "json"
);
}
}
function insClose(rowArray)
{
var insKeyString = getKeyString(rowArray);
var srtcontrolekeyArray = new Array();
for (var i = 0; i < rowArray.length; i++)
{
rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')');
srtcontrolekeyArray[i] = rowdata.insSrtControleKey;
}
var url = "appl/ins/ins_edit_inspect.asp?close=1&ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekeyArray;
FcltMgr.openDetail(url, L("lcl_ins_close"));
}
function insFinish(rowArray, isMulti)
{
if (isMulti || confirm(L("lcl_ins_finishing")))
{
var insKeyString = getKeyString(rowArray);
var deelsrtcontrkeyArray = new Array();
for (var i = 0; i < rowArray.length; i++)
{
rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')');
deelsrtcontrkeyArray[i] = rowdata.insDeelSrtContrKey;
}
var data = { ins_keys: insKeyString,
dlsrtcont_keys: deelsrtcontrkeyArray.join(",")
};
protectRequest.dataToken(data);
$.post( "ins_inspect_finish.asp"
, data
, FcltCallbackRefresh
, "json"
);
}
var subject = L("lcl_ins_multi_controle");
var url = "appl/ins/ins_inspect.asp?ins_keys=" + insKeyString + (srtcontrolekeyArray.length > 0? "&srtcont_keys=" + srtcontrolekeyArray.join(",") : "");
FcltMgr.openDetail(url, rowArray.length > 1? L("lcl_ins_multi_controle") : L("lcl_ins_docontrole"));
}
function insMultiMove(rowArray)

View File

@@ -521,6 +521,7 @@ 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>
@@ -549,7 +550,7 @@ 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"></td><td><label for="insInspFutu"><%=L("lcl_ins_controle_future")%></label></td></tr>-->
</table>
</div>
</td>

View File

@@ -68,9 +68,10 @@ var insAvail = getQParamInt("insAvail", 0) == 1; // Beschikbaar
var insInspect = getQParamInt("inspect", 0) == 1;
var inspDone = getQParamInt("insInspDone", 0) == 1;
var inspFutu = !inspDone && (getQParamInt("insInspFutu", 0) == 1);
var inspSoon = !inspDone && (getQParamInt("insInspSoon", 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);
// FGII parameters
var fgraph = getQParamInt("fgraph", 0) == 1;
@@ -124,10 +125,11 @@ ins_list ( autfunction,
fgraph: fgraph,
inspect: insInspect,
srtcontrole: getQParamInt("sel_srtcontrole", -1),
inspFutu: inspFutu,
inspSoon: inspSoon,
inspLate: inspLate,
inspDone: inspDone,
inspLate: inspLate,
inspBusy: inspBusy,
inspSoon: inspSoon,
inspFutu: inspFutu,
ins_key_arr: (ins_key_arr.length > 0? ins_key_arr : null),
room_key_arr: (room_key_arr.length > 0 && room_key_arr.join(",").indexOf("-1") == -1? room_key_arr : null),
comp_key: (comp_key != -1 ? comp_key : null),

View File

@@ -37,7 +37,7 @@ var add = getQParamInt("add", 0) == 1; // Controle inspectie (ins_srtcontrole) w
// Mag ik het object aanpassen?
var this_ins = ins.func_enabled_deel(ins_key);
user.anything_todo_or_abort(this_ins.canChangeInt);
user.anything_todo_or_abort(this_ins.canChangeXcp);
%>
<html>
@@ -353,7 +353,6 @@ user.anything_todo_or_abort(this_ins.canChangeInt);
+ " , di.ins_srtcontrole_kosten kosten_std"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_kosten, 0) kosten_xcp"
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_key, -1) xcp_key"
+ " , xcp.ins_srtcontroledl_xcp_respijt respijt"
+ " , di.ins_srtcontrole_eind eind_std"
+ " , TO_CHAR(di.ins_srtcontrole_eind, 'DD') eind_std_dag"
+ " , TO_CHAR(di.ins_srtcontrole_eind, 'MM') eind_std_maand"
@@ -396,7 +395,6 @@ user.anything_todo_or_abort(this_ins.canChangeInt);
+ " , xcp.ins_srtcontroledl_xcp_eenheid"
+ " , xcp.ins_srtcontroledl_xcp_bits"
+ " , xcp.ins_srtcontroledl_xcp_groep"
+ " , xcp.ins_srtcontroledl_xcp_respijt"
+ " , xcp.ins_srtcontroledl_xcp_kosten"
+ " , xcp.ins_srtcontroledl_xcp_eind"
+ " HAVING COUNT(*) = " + cntdeel // Als multi dan alleen de inspecties die voor *alle* objecten gelden
@@ -410,7 +408,7 @@ user.anything_todo_or_abort(this_ins.canChangeInt);
required: true,
onChange: "onChangeSrtControle()",
//trclass: "invoerinsp",
extraParamValue: "modus, periode_std, periode_xcp, eenheid_std, eenheid_xcp, bits_std, bits_xcp, kosten_std, kosten_xcp, xcp_key, groep, respijt"
extraParamValue: "modus, periode_std, periode_xcp, eenheid_std, eenheid_xcp, bits_std, bits_xcp, kosten_std, kosten_xcp, xcp_key, groep"
+ ", eind_std_dag, eind_xcp_dag, eind_std_maand, eind_xcp_maand, eind_std_jaar, eind_xcp_jaar",
extraParamValueInit: "1, , , 1, -1, , , 0, , , , , , , , , ,"
});

View File

@@ -23,7 +23,7 @@ var JSON_Result = true;
var ins_key = getQParamInt("ins_key");
// Mag ik de parameters van het inspectie object aanpassen?
var this_ins = ins.func_enabled_deel(ins_key);
user.anything_todo_or_abort(this_ins.canChangeInt);
user.anything_todo_or_abort(this_ins.canChangeXcp);
var xcp_key = getFParamInt("xcp_key"); // ins_srtcontroledl_xcp_key.
var mode = getFParamInt("mode"); // ins_srtcontrole_mode.
@@ -133,36 +133,22 @@ if ((paramsdiffer || filledgroep) && !deactivate)
}
else
{
// Alle parameter waarden zijn identiek aan de standaard waarden en er is geen groep ingevuld.
// Deactiveren of alle parameter waarden zijn identiek aan de standaard waarden en er is geen groep ingevuld.
if (xcp_key < 0) // Nieuwe inspectie.
{ // Geen nieuw record aanmaken.
var result = { success: true, srtcontroledl_xcp_key: xcp_key, warning: L("lcl_ins_controle_identical_values") };
}
else
{
{ // Dan kan het record verwijderd worden.
var result = { success: true, srtcontroledl_xcp_key: xcp_key, warning: (deactivate? L("lcl_ins_controle_deactivated") : L("lcl_ins_controle_identical_values")) };
var deletexcp = deactivate;
if (!deactivate)
{
// Als er geen respijtdatum is ingevuld moet het record verwijderd worden.
// Is de respijtdatum ingevuld?
sql = "SELECT xcp.ins_srtcontroledl_xcp_respijt"
+ " FROM ins_srtcontroledl_xcp xcp"
+ " WHERE xcp.ins_srtcontroledl_xcp_key = " + xcp_key;
var oRs = Oracle.Execute(sql);
deletexcp = oRs("ins_srtcontroledl_xcp_respijt").Value == null;
}
if (deletexcp)
{ // Inactief maken of geen respijtdatum ingevuld. Dan record verwijderen.
var sql = "DELETE FROM ins_srtcontroledl_xcp"
+ " WHERE ins_deel_key = " + ins_key
+ " AND ins_srtcontrole_key = " + srtcontrole_key;
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
result.message += " " + err.friendlyMsg;
}
// Record verwijderen.
var sql = "DELETE FROM ins_srtcontroledl_xcp"
+ " WHERE ins_deel_key = " + ins_key
+ " AND ins_srtcontrole_key = " + srtcontrole_key;
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
result.message += " " + err.friendlyMsg;
oRs.Close();
}
}