AKZA#37576 PDA/INS: Mobiel details laatste/juiste (vorige) taak kunnen inzien

svn path=/Website/trunk/; revision=32384
This commit is contained in:
Erik Groener
2017-01-16 13:44:32 +00:00
parent 84f534c5eb
commit cad17b70a4
4 changed files with 406 additions and 0 deletions

View File

@@ -102,6 +102,8 @@ function generateFlexKenmerkBlock(params)
hideVervallen: deelsrtcontrole_key < 0,
parentKey: deelsrtcontrole_key,
niveau: kenmerkNiveau,
fnpre: params.fnpre,
fnpost: params.fnpost,
mobile: params.mobile,
ignorerequired: ignorerequired
}

View File

@@ -19,6 +19,8 @@
<!-- #include file="./mobile.inc" -->
<!-- #include file="./iface.inc" -->
<!-- #include file="./resultset_table.inc" -->
<!-- #include file="./ins_inspect.inc" -->
<!-- #include file="../Shared/json2.js" -->
<%
// Get parameters
@@ -31,6 +33,8 @@ var srtcontrole_key = getQParamInt("srtcontrole_key", -1);
var deelsrtcont_key = getQParamInt("deelsrtcont_key", -1); // Bestaande inspectie
var defaultmode_key = getQParamInt("defaultmode", -1); // Default controlemode
var qry_params = {};
if (alg_ruimte_key > 0)
{
var sql = "SELECT COALESCE(MIN(ins_deel_key), -1) ins_deel_key"
@@ -55,6 +59,19 @@ if (ins_key > 0)
+ " WHERE ins_deel_key = " + ins_key;
var oRs = Oracle.Execute(sql);
var alg_ruimte_key = oRs("ins_alg_ruimte_key").Value;
var vorige_insp_sql = insp.list_sql(ins_key, {past: true, future: false});
var oRs_i = Oracle.Execute(vorige_insp_sql);
var oAr = [];
while (!oRs_i.eof)
{
var rs = { seq: oRs_i("seq").Value
, insp_dt: oRs_i("ins_deelsrtcontrole_datum").Value
, insp_oms: oRs_i("ins_srtcontrole_omschrijving").Value
};
oAr.push(rs);
oRs_i.MoveNext();
}
}
if (ins_key < 0)
@@ -495,7 +512,10 @@ else
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
%> <a href="#ins-3-<%=ins_key%>"> <%
ROFIELD("fld", L("lcl_ins_controle_last"), toDateTimeString(oRs("ins_deelsrtcontrole_datum").Value) + " " + (oRs("ins_deelsrtcontrole_opmerking").Value || ""));
%> </a> <%
var sql = "SELECT idsc.ins_deelsrtcontrole_plandatum"
+ " FROM ins_deelsrtcontrole idsc"
@@ -553,6 +573,9 @@ else
}
CONTROLGROUP_START();
if (oAr.length > 0)
BUTTON(L("lcl_ins_controle_previous")+" ("+oAr.length+")", {linkid: "#ins-3-"+ins_key, dataicon: "bullets", transition: "pop", datarel: "dialog"});
if (srtcontrole_info)
BUTTON(L("ins_srtcontrole_info"), {linkid: "#ins-2-"+ins_key, dataicon: "info", transition: "pop", datarel: "dialog"});
switch (ins_deelsrtcontrole_status)
@@ -617,6 +640,78 @@ else
ROFIELD("fclthtml", "", srtcontrole_info, {multi: true});
CONTENT_END();
PAGE_END();
PAGE_START({id: "ins-3-"+ins_key});
HEADER({title: L("lcl_ins_controle_previous"), back: true, nohome: true});
CONTENT_START();
function fncolHeader_hist(oRs)
{
var srtcontrole = safe.html(oRs("ins_srtcontrole_omschrijving").Value);
return srtcontrole;
};
function fncolLink_hist(oRs)
{
qry_params.deelsrtcontrole_key = oRs("ins_deelsrtcontrole_key").Value;
//return "#ins-4-"+ins_key;
return "../pda/ins_inspect_hist.asp?ins_key=" + ins_key + "&deelsrtcontrole_key=" + oRs("ins_deelsrtcontrole_key").Value;
};
function fnPrefix_hist(oRs)
{
var object = safe.html(oRs("ins_deel_omschrijving").Value);
var titletext;
switch(oRs("ctr_controle_type").value)
{
case 1: titletext = L("lcl_ins_srtcontrole_insp"); break;
case 2: titletext = L("lcl_ins_srtcontrole_repl"); break;
case 3: titletext = L("lcl_ins_srtcontrole_cert"); break;
default: titletext = L("lcl_menu_ins_controle"); break;
}
return titletext + " " + object;
};
function fncolDetail_hist(oRs)
{
var objectsoort = safe.html(oRs("ins_srtdeel_omschrijving").Value);
return objectsoort;
};
function fnAside_hist(oRs)
{
var inspectie_datum = oRs("ins_deelsrtcontrole_datum").Value;
var inspectie_eenheid = oRs("eenheid").Value;
if (inspectie_eenheid == 0)
var dttxt = toDateTimeString(inspectie_datum);
else
var dttxt = toDateString(inspectie_datum);
return "<span style='white-space: nowrap'>" + dttxt + "</span>";
};
var rst_hist = new ResultsetTable({ sql: vorige_insp_sql,
keyColumn: "ins_deelsrtcontrole_key",
linkColumn: fncolLink_hist,
prefixColumn: fnPrefix_hist,
detailColumn: fncolDetail_hist,
headerColumn: fncolHeader_hist,
asideColumn: fnAside_hist,
ID: "hist_table",
showAll: true,
noSearch: true
});
var cnt_hist = rst_hist.processResultset();
CONTENT_END();
PAGE_END();
PAGE_START({id: "ins-4-"+ins_key});
HEADER({title: "Vorige inspecties", back: true, nohome: true});
CONTENT_START();
CONTENT_END();
PAGE_END();
%>
</body>
</html>

224
APPL/PDA/ins_inspect.inc Normal file
View File

@@ -0,0 +1,224 @@
<% /*
$Revision$
$Id$
*/
%>
<!-- #include file="../PRS/prs.inc" -->
<!-- #include file="../Shared/discx3d.inc" -->
<!-- #include file="../Shared/getkenmerksql.inc" -->
<%
insp = {
list_sql: function _list_sql(ins_key, params)
{
params = params || {};
if (!params.past && !params.future)
params = { past: true, future: true}; // Default alle inspectie tonen.
var lastinspect = "(SELECT CASE di.ins_srtcontrole_mode"
+ " WHEN 0"
+ " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus. Uitgaan van eigenlijke/orginele inspectiedatum.
+ " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus. Uitgaan van werkelijke inspectiedatum.
+ " END ins_deelsrtcontrole_datum"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc.ins_deelsrtcontrole_status IN (5, 6)"
+ " AND idsc.ins_deel_key = di.ins_deel_key"
+ " AND idsc.ins_deelsrtcontrole_key = (SELECT MAX(idsc2.ins_deelsrtcontrole_key)"
+ " FROM ins_deelsrtcontrole idsc2"
+ " WHERE idsc2.ins_deel_key = di.ins_deel_key"
+ " AND idsc2.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc2.ins_deelsrtcontrole_status IN (5, 6)))";
var future_inspect = "" // 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"
+ " , di.ins_deel_aantal"
+ " , TO_DATE (NULL) ins_deelsrtcontrole_datum"
+ " , NULL inspectie_org"
+ " , NULL isrespijt"
+ " , 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())
+ " , fac.nextcyclusdatesteps (COALESCE(" + lastinspect + ", SYSDATE)"
+ " , di.ins_srtcontrole_mode"
+ " , di.ins_srtcontrole_eenheid"
+ " , di.ins_srtcontrole_periode"
+ " , 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"
+ " , di.ins_srtcontrole_eenheid"
+ " , di.ins_srtcontrole_periode"
+ " , di.ins_srtcontrole_bits"
+ " , CASE"
+ " WHEN di.ins_srtcontrole_mode = 1" // Interval modus
+ " THEN 1"
+ " WHEN 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 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_srtcontroledl_xcp_startdat"
+ " , di.ins_srtcontrole_key"
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
+ " , di.ins_srtcontrole_groep"
+ " , di.ins_srtcontrole_opmerking"
+ " , NULL ins_deelsrtcontrole_key"
+ " , di.ins_srtcontrole_periode periode"
+ " , di.ins_srtcontrole_eenheid eenheid"
+ " , di.ins_srtcontrole_kosten kosten"
+ " , di.ins_srtcontrole_mode isc_mode"
+ " , NULL plandatum"
+ " , '' ins_deelsrtcontrole_opmerking"
+ " , NULL inspecteur"
+ " , di.ctr_controle_type"
+ " , -1 ins_deelsrtcontrole_status"
+ " , di.ins_srtcontrole_eind inspectie_eind"
+ " , di.ins_srtcontrole_options options"
+ " , NULL ins_controlemode_success"
+ " , d.ins_deel_omschrijving"
+ " , s.ins_srtdeel_omschrijving"
+ " FROM ins_v_defined_inspect_xcp di"
+ " , ins_deel d"
+ " , ins_srtdeel s"
+ " WHERE (di.ins_srtcontrole_eind >= TRUNC(SYSDATE, 'DD')"
+ " OR di.ins_srtcontrole_eind IS NULL)"
+ " AND di.ins_deel_key = " + ins_key
+ " AND di.ins_deel_key = d.ins_deel_key"
+ " AND d.ins_srtdeel_key = s.ins_srtdeel_key"
+ " AND 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)"
+ " AND di.ctr_discipline_key IN (SELECT w.ins_discipline_key"
+ " FROM fac_v_webgebruiker w"
+ " , fac_functie f"
+ " WHERE w.fac_functie_key = f.fac_functie_key "
+ " AND f.fac_functie_code = 'WEB_CTRUSE'"
+ " AND w.fac_gebruiker_prs_level_read < 9"
+ " AND w.fac_gebruiker_alg_level_read < 9"
+ " AND w.prs_perslid_key = " + user_key + ")";
var past_inspect = "" // Combineren met uitgevoerde inspecties op dit object of lopende inspecties (ingepland(0), gestart(2) of gereedgemeld(5))
+ " SELECT 2 seq"
+ " , di.ins_deel_key"
+ " , di.ins_deel_aanmaak"
+ " , di.ins_deel_aantal"
+ " , idsc.ins_deelsrtcontrole_datum"
+ " , COALESCE(idsc.ins_deelsrtcontrole_plandatum"
+ " , CASE"
+ " WHEN idsc.ins_deelsrtcontrole_status = 2 AND idsc.ins_deelsrtcontrole_datum_org IS NULL" // Alle eerste inspectie.
+ " THEN fac.nextcyclusdate (COALESCE(" + lastinspect + ", di.ins_deel_aanmaak)"
+ " , di.ins_srtcontrole_mode"
+ " , di.ins_srtcontrole_eenheid"
+ " , di.ins_srtcontrole_periode"
+ " , di.ins_srtcontrole_bits"
+ " , CASE"
+ " WHEN di.ins_srtcontrole_mode = 1" // Interval modus
+ " THEN 1"
+ " WHEN 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 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)"
+ " ELSE ins_deelsrtcontrole_datum_org"
+ " END) inspectie_org"
+ " , CASE WHEN idsc.ins_deelsrtcontrole_plandatum > idsc.ins_deelsrtcontrole_datum_org THEN 1 ELSE 0 END isrespijt"
+ " , NULL nonext"
+ " , CASE"
+ " WHEN 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 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"
+ " , di.ins_srtcontroledl_xcp_startdat"
+ " , idsc.ins_srtcontrole_key"
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
+ " , di.ins_srtcontrole_groep"
+ " , di.ins_srtcontrole_opmerking"
+ " , idsc.ins_deelsrtcontrole_key"
+ " , di.ins_srtcontrole_periode periode"
+ " , di.ins_srtcontrole_eenheid eenheid"
+ " , di.ins_srtcontrole_kosten kosten"
+ " , di.ins_srtcontrole_mode isc_mode"
+ " , idsc.ins_deelsrtcontrole_plandatum plandatum"
+ " , idsc.ins_deelsrtcontrole_opmerking"
+ " , " + S("prs_pers_string") + " inspecteur"
+ " , di.ctr_controle_type"
+ " , idsc.ins_deelsrtcontrole_status"
+ " , di.ins_srtcontrole_eind inspectie_eind"
+ " , di.ins_srtcontrole_options options"
+ " , cm.ins_controlemode_success ins_controlemode_success"
+ " , d.ins_deel_omschrijving"
+ " , s.ins_srtdeel_omschrijving"
+ " FROM ins_v_defined_inspect_xcp di"
+ " , ins_deelsrtcontrole idsc"
+ " , prs_perslid p"
+ " , ins_controlemode cm"
+ " , ins_deel d"
+ " , ins_srtdeel s"
+ " WHERE idsc.ins_srtcontrole_key = di.ins_srtcontrole_key"
+ " AND idsc.ins_deel_key = di.ins_deel_key"
+ " AND d.ins_deel_key = di.ins_deel_key"
+ " AND d.ins_srtdeel_key = s.ins_srtdeel_key"
+ " AND idsc.prs_perslid_key = p.prs_perslid_key(+)"
+ " AND idsc.ins_controlemode_key = cm.ins_controlemode_key(+)"
+ " AND di.ins_deel_key = " + ins_key
+ " AND di.ins_srtcontrole_periode > 0" // Als de periode 0 is dan de inspecties die gaan komen niet meer tonen.
+ " AND di.ctr_discipline_key IN (SELECT w.ins_discipline_key"
+ " FROM fac_v_webgebruiker w"
+ " , fac_functie f"
+ " WHERE w.fac_functie_key = f.fac_functie_key "
+ " AND f.fac_functie_code = 'WEB_CTRUSE'"
+ " AND w.fac_gebruiker_prs_level_read < 9"
+ " AND w.fac_gebruiker_alg_level_read < 9"
+ " AND w.prs_perslid_key = " + user_key + ")";
// Gedaande inspectie altijd tonen.
var sql = "SELECT *"
+ " FROM (" + (params.past ? past_inspect : "")
+ (params.past && params.future ? " UNION ALL " : "")
+ (params.future ? future_inspect : "")
+ " )"
+ " ORDER BY seq"
+ ", ins_deelsrtcontrole_key DESC"
+ ", ins_deelsrtcontrole_datum DESC"
+ ", inspectie_org DESC"
+ ", inspectie_next"
+ ", ins_srtcontrole_omschrijving";
return sql;
}
}
%>

View File

@@ -0,0 +1,85 @@
<%@ language = "JavaScript" %>
<% /*
$Revision$
$Id$
Description: Mobile inspectiegegevens
Parameters: vereist ins_key en optioneel deelsrtcont_key
Note:
*/
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../mld/mld.inc" -->
<!-- #include file="../ins/ins.inc" -->
<!-- #include file="../ins/ins_flexkenmerksrtcontrole.inc" -->
<!-- #include file="./mobile.inc" -->
<!-- #include file="./iface.inc" -->
<!-- #include file="./resultset_table.inc" -->
<!-- #include file="./ins_inspect.inc" -->
<!-- #include file="../Shared/json2.js" -->
<%
var qrc = getQParamInt("qrc", 0) != 0;
var ins_key = getQParamInt("ins_key");
var deelsrtcontrole = { deelsrtcontrole_key: getQParamInt("deelsrtcontrole_key")
};
%>
<html>
<head>
<% FCLTMHeader.Generate({}); %>
</head>
<body>
<%
PAGE_START();
HEADER({title: L("ins_srtcontrole"), back:!qrc});
CONTENT_START();
var sql = "SELECT idsc.ins_deelsrtcontrole_datum"
+ " , idsc.ins_deelsrtcontrole_opmerking"
+ " , idsc.ins_srtcontrole_key"
+ " , isc.ins_srtcontrole_omschrijving"
+ " , " + S("prs_pers_string") + " behandelaar"
+ " FROM ins_deelsrtcontrole idsc"
+ " , prs_perslid p"
+ " , ins_srtcontrole isc"
+ " WHERE idsc.prs_perslid_key = p.prs_perslid_key(+)"
+ " AND idsc.ins_srtcontrole_key = isc.ins_srtcontrole_key"
+ " AND idsc.ins_deelsrtcontrole_key = " + deelsrtcontrole.deelsrtcontrole_key;
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
deelsrtcontrole.datum = oRs("ins_deelsrtcontrole_datum").Value;
deelsrtcontrole.behandelaar = oRs("behandelaar").Value;
deelsrtcontrole.methode = oRs("ins_srtcontrole_omschrijving").Value;
deelsrtcontrole.opmerking = oRs("ins_deelsrtcontrole_opmerking").Value;
deelsrtcontrole.methode_key = oRs("ins_srtcontrole_key").Value;
}
oRs.Close();
ROFIELD("fld", L("lcl_ins_controle_datum"), toDateTimeString(deelsrtcontrole.datum) );
ROFIELD("fld", L("lcl_ins_inspecteur"), deelsrtcontrole.behandelaar, {suppressEmpty: true});
ROFIELD("fld", L("lcl_ins_controle"), deelsrtcontrole.methode);
ROFIELD("fld", L("lcl_remark"), deelsrtcontrole.opmerking, {multi: true, suppressEmpty: true});
// Plus flexkenmerken van de inspectie.
generateFlexKenmerkBlock({fnpre : function () { BLOCK_START({collapsed: true, title: L("lcl_flexible_properties")}); },
fnpost : BLOCK_END,
deelsrtcontrole_key: deelsrtcontrole.deelsrtcontrole_key,
srtcontrole_key: deelsrtcontrole.methode_key,
flexcolumns: 1,
mobile: true
});
CONTENT_END();
FOOTER();
PAGE_END();
%>
</body>
</html>
<%
%>