HCAS#36946: Afgeronde taak nog kunnen aanpassen/verwijderen.
svn path=/Website/trunk/; revision=30630
This commit is contained in:
@@ -332,7 +332,7 @@ user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel
|
||||
FcltMgr.closeDetail(window, { cancel: true } );
|
||||
}
|
||||
|
||||
<% if (insClose)
|
||||
<% if (insClose || insEdit)
|
||||
{ %>
|
||||
function onChangeDeelsrtcdatum(id)
|
||||
{
|
||||
@@ -537,7 +537,7 @@ user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel
|
||||
var dag_na_lastinspectdatum;
|
||||
var aantal_dmj_eenheid;
|
||||
var minDate = aanmaakdatum; // Als er nog geen inspecties zijn geweest dan is de aanmaakdatum de minimale datum.
|
||||
if (!oRs.eof)
|
||||
if (!oRs.eof && oRs("lastinspectdatum").Value)
|
||||
{
|
||||
lastinspectdatum = new Date(oRs("lastinspectdatum").Value); // Kan uiterlijk vandaag zijn.
|
||||
dag_na_lastinspectdatum = new Date(oRs("dag_na_lastinspectdatum").Value); // Kan uiterlijk morgen zijn.
|
||||
@@ -623,12 +623,89 @@ user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel
|
||||
readonly: true,
|
||||
suppressEmpty: true
|
||||
});
|
||||
var maxDate = new Date();
|
||||
if (insClose || (insEdit && typeof inspect_data.deelsrtcontrole_datum != null))
|
||||
{
|
||||
var dmj_eenheid;
|
||||
// Voor gereed gemelde(5) en afgeronde(6) inspecties geldt een ander minDate en maxDate.
|
||||
if (dsc_is_afgemeld) // Er geldt dan insEdit en !insClose. Als insClose dan is de status < 5.
|
||||
{ // Inspectie is Gereed gemeld(5) of Afgerond(6). Datum mag ik nog aanpassen.
|
||||
// Wijzigen in status Afgerond(6) mag alleen als je INSMSU rechten (canMsuEdit) hebt.
|
||||
// !multi en ins_deelsrtcontrole_key is bekend.
|
||||
|
||||
// Zoek 1 dag na inspectiedatum van de voorgaande inspectie.
|
||||
// Bij alleen uren inspecties de laatste uitvoerdatum tonen als minimale datum, anders een dag later.
|
||||
// Vooralsnog kan inspectiedatum niet aangepast worden als de eenheid uren(0) is (readonly).
|
||||
sql = "SELECT MAX(idsc.ins_deelsrtcontrole_datum) lastinspectdatum"
|
||||
+ " , MAX(idsc.ins_deelsrtcontrole_datum + 1) dag_na_lastinspectdatum"
|
||||
+ " , CASE"
|
||||
+ " WHEN COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, isc.ins_srtcontrole_eenheid) != 0" // Geen tijd eenheid maar dag, maand of jaar.
|
||||
+ " THEN 1" // Dag, maand of jaar.
|
||||
+ " ELSE 0" // Tijd.
|
||||
+ " END dmj_eenheid"
|
||||
+ " FROM ins_deelsrtcontrole idsc"
|
||||
+ " , ins_srtcontrole isc"
|
||||
+ " , ins_srtcontroledl_xcp xcp"
|
||||
+ " WHERE idsc.ins_srtcontrole_key = isc.ins_srtcontrole_key"
|
||||
+ " AND idsc.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
|
||||
+ " AND idsc.ins_deel_key = xcp.ins_deel_key(+)"
|
||||
+ " AND COALESCE(xcp.ins_srtcontroledl_xcp_periode, isc.ins_srtcontrole_periode) > 0"
|
||||
+ " AND idsc.ins_deel_key IN (" + ingesloten[0] + ")"
|
||||
+ " AND idsc.ins_srtcontrole_key IN (" + ingeslotensc[0] + ")"
|
||||
+ " AND ins_deelsrtcontrole_key < " + ingeslotendsc[0]
|
||||
+ " GROUP BY isc.ins_srtcontrole_mode"
|
||||
+ " , xcp.ins_srtcontroledl_xcp_eenheid"
|
||||
+ " , isc.ins_srtcontrole_eenheid";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
if (!oRs.eof)
|
||||
{
|
||||
lastinspectdatum = new Date(oRs("lastinspectdatum").Value); // Kan uiterlijk vandaag zijn.
|
||||
dag_na_lastinspectdatum = new Date(oRs("dag_na_lastinspectdatum").Value); // Kan uiterlijk morgen zijn.
|
||||
dmj_eenheid = oRs("dmj_eenheid").Value;
|
||||
minDate = dmj_eenheid? dag_na_lastinspectdatum : lastinspectdatum;
|
||||
}
|
||||
else
|
||||
minDate = aanmaakdatum;
|
||||
|
||||
// Zoek 1 dag voor inspectiedatum van de volgende inspectie.
|
||||
// Bij alleen uren inspecties de eerste uitvoerdatum tonen als minimale datum, anders een dag eerder.
|
||||
// Vooralsnog kan inspectiedatum niet aangepast worden als de eenheid uren(0) is (readonly).
|
||||
sql = "SELECT MIN(idsc.ins_deelsrtcontrole_datum) firstinspectdatum"
|
||||
+ " , MIN(idsc.ins_deelsrtcontrole_datum - 1) dag_voor_firstinspectdatum"
|
||||
+ " , CASE"
|
||||
+ " WHEN COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, isc.ins_srtcontrole_eenheid) != 0" // Geen tijd eenheid maar dag, maand of jaar.
|
||||
+ " THEN 1" // Dag, maand of jaar.
|
||||
+ " ELSE 0" // Tijd.
|
||||
+ " END dmj_eenheid"
|
||||
+ " FROM ins_deelsrtcontrole idsc"
|
||||
+ " , ins_srtcontrole isc"
|
||||
+ " , ins_srtcontroledl_xcp xcp"
|
||||
+ " WHERE idsc.ins_srtcontrole_key = isc.ins_srtcontrole_key"
|
||||
+ " AND idsc.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
|
||||
+ " AND idsc.ins_deel_key = xcp.ins_deel_key(+)"
|
||||
+ " AND COALESCE(xcp.ins_srtcontroledl_xcp_periode, isc.ins_srtcontrole_periode) > 0"
|
||||
+ " AND idsc.ins_deel_key IN (" + ingesloten[0] + ")"
|
||||
+ " AND idsc.ins_srtcontrole_key IN (" + ingeslotensc[0] + ")"
|
||||
+ " AND ins_deelsrtcontrole_key > " + ingeslotendsc[0]
|
||||
+ " GROUP BY isc.ins_srtcontrole_mode"
|
||||
+ " , xcp.ins_srtcontroledl_xcp_eenheid"
|
||||
+ " , isc.ins_srtcontrole_eenheid";
|
||||
oRs = Oracle.Execute(sql);
|
||||
if (!oRs.eof)
|
||||
{
|
||||
firstinspectdatum = new Date(oRs("firstinspectdatum").Value); // Kan uiterlijk vandaag zijn.
|
||||
dag_voor_firstinspectdatum = new Date(oRs("dag_voor_firstinspectdatum").Value); // Kan uiterlijk morgen zijn.
|
||||
dmj_eenheid = oRs("dmj_eenheid").Value;
|
||||
maxDate = dmj_eenheid? dag_voor_firstinspectdatum : firstinspectdatum;
|
||||
}
|
||||
// else maxDate = new Date();
|
||||
oRs.Close();
|
||||
}
|
||||
FCLTcalendar("deelsrtcontrole_datum",
|
||||
{ label: L("lcl_ins_controle_datum"),
|
||||
datum: inspect_data.deelsrtcontrole_datum? inspect_data.deelsrtcontrole_datum : new Date(),
|
||||
minDate: minDate,
|
||||
maxDate: new Date(),
|
||||
maxDate: maxDate,
|
||||
required: true,
|
||||
trclass: "invoerinsp",
|
||||
timeField: true,
|
||||
@@ -639,9 +716,12 @@ user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel
|
||||
onChangeTime: "onChangeDeelsrtcdatum('T')",
|
||||
// Als de inspectie vervallen is moet je alleen nog de lopende inspecties kunnen gereed melden en afronden. De datum moet je dan ook nog kunnen invullen.
|
||||
readonly: ((vervallen && !(vervallen && (ins_deelsrtcontrole_status == 0 || ins_deelsrtcontrole_status == 2))) ||
|
||||
insEdit ||
|
||||
(dsc_is_afgemeld && (hours > 0 || minutes > 0)? true : false))
|
||||
(dsc_is_afgemeld && dmj_eenheid == 0) || // Als eenheid in uren(0) is, dan mag de uitvoerdatum/inspectiedatum niet aangepast worden als inspectie is gereed gemeld(5) of afgerond(6).
|
||||
(insEdit && ins_deelsrtcontrole_status == 6 && !canMsuEdit) ||
|
||||
inspect_data.deelsrtcontrole_datum < aanmaakdatum
|
||||
)
|
||||
});
|
||||
}
|
||||
|
||||
sql = "SELECT ins_controlemode_key"
|
||||
+ " , " + lcl.xsqla('ins_controlemode_oms', 'ins_controlemode_key')
|
||||
|
||||
@@ -57,6 +57,8 @@ else if (savemode == "E")
|
||||
abort_with_warning(L("lcl_ins_allow_multi_edit"));
|
||||
|
||||
deelsrtcont_key = getFParamInt("deelsrtcont_key"); // Specifieke inspectie die gewijzigd is.
|
||||
deelsrtcontrole_datum = getFParamDate("deelsrtcontrole_datum", new Date); // Datum kan ook aangepast worden.
|
||||
var getDeelsrtcontroleDate = Request.Form("deelsrtcontrole_datum").count > 0; // Was de inspectiedatum te wijzigen
|
||||
}
|
||||
|
||||
var warning = "";
|
||||
@@ -78,6 +80,7 @@ for (var i = 0; i < ins_key_arr.length; i++)
|
||||
+ " , COALESCE (xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) eenheid"
|
||||
+ " , di.ins_srtcontrole_mode"
|
||||
+ " , idsc.ins_deelsrtcontrole_status"
|
||||
+ " , di.ins_deel_aanmaak"
|
||||
+ " FROM ins_v_defined_inspect di"
|
||||
+ " , ins_srtcontroledl_xcp xcp"
|
||||
+ " , ins_deelsrtcontrole idsc"
|
||||
@@ -98,6 +101,7 @@ for (var i = 0; i < ins_key_arr.length; i++)
|
||||
// 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 ins_deel_aanmaak = new Date(oRs("ins_deel_aanmaak").Value);
|
||||
var eenheid = oRs("eenheid").Value;
|
||||
var ins_deelsrtcontrole_datum_max = oRs("ins_deelsrtcontrole_datum").Value;
|
||||
var ins_deelsrtcontrole_key = oRs("ins_deelsrtcontrole_key").Value;
|
||||
@@ -155,13 +159,96 @@ for (var i = 0; i < ins_key_arr.length; i++)
|
||||
}
|
||||
|
||||
if (savemode == "E") // Wijzigen.
|
||||
{ // Het mag niet de eerste inspectie zijn en de laatste inspectie mag niet verwerkt zijn.
|
||||
{
|
||||
if (!this_ins.canInspEdit)
|
||||
{ // Ik heb geen Edit rechten.
|
||||
continue;
|
||||
}
|
||||
else
|
||||
dlsrtcont_key = ins_deelsrtcontrole_key;
|
||||
|
||||
// De uitvoerdatum/inspectiedatum moet vallen tussen de uitvoerdatum/inspectiedatum van de vorige en volgende inspectie.
|
||||
// De edit mode zorgt ervoor dat er alleen juiste inspectiedatums gekozen kunnen worden, maar het is goed dat het hier ook nog getest wordt.
|
||||
var aanmaakdatum = ins_deel_aanmaak;
|
||||
var minDate = new Date();
|
||||
var maxDate = new Date();
|
||||
if (ins_deelsrtcontrole_status >= 5 && getDeelsrtcontroleDate)
|
||||
{
|
||||
// Zoek 1 dag na inspectiedatum van de voorgaande inspectie.
|
||||
// Bij alleen uren inspecties de laatste uitvoerdatum tonen als minimale datum, anders een dag later.
|
||||
// Vooralsnog kan inspectiedatum niet aangepast worden als de eenheid uren(0) is (readonly).
|
||||
sql = "SELECT MAX(idsc.ins_deelsrtcontrole_datum) lastinspectdatum"
|
||||
+ " , MAX(idsc.ins_deelsrtcontrole_datum + 1) dag_na_lastinspectdatum"
|
||||
+ " , CASE"
|
||||
+ " WHEN COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, isc.ins_srtcontrole_eenheid) != 0" // Geen tijd eenheid maar dag, maand of jaar.
|
||||
+ " THEN 1" // Dag, maand of jaar.
|
||||
+ " ELSE 0" // Tijd.
|
||||
+ " END dmj_eenheid"
|
||||
+ " FROM ins_deelsrtcontrole idsc"
|
||||
+ " , ins_srtcontrole isc"
|
||||
+ " , ins_srtcontroledl_xcp xcp"
|
||||
+ " WHERE idsc.ins_srtcontrole_key = isc.ins_srtcontrole_key"
|
||||
+ " AND idsc.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
|
||||
+ " AND idsc.ins_deel_key = xcp.ins_deel_key(+)"
|
||||
+ " AND COALESCE(xcp.ins_srtcontroledl_xcp_periode, isc.ins_srtcontrole_periode) > 0"
|
||||
+ " AND idsc.ins_deel_key IN (" + ins_key_arr[i] + ")"
|
||||
+ " AND idsc.ins_srtcontrole_key IN (" + srtcont_key_arr[i] + ")"
|
||||
+ " AND ins_deelsrtcontrole_key < " + dlsrtcont_key
|
||||
+ " GROUP BY isc.ins_srtcontrole_mode"
|
||||
+ " , xcp.ins_srtcontroledl_xcp_eenheid"
|
||||
+ " , isc.ins_srtcontrole_eenheid";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
if (!oRs.eof)
|
||||
{
|
||||
lastinspectdatum = new Date(oRs("lastinspectdatum").Value); // Kan uiterlijk vandaag zijn.
|
||||
dag_na_lastinspectdatum = new Date(oRs("dag_na_lastinspectdatum").Value); // Kan uiterlijk morgen zijn.
|
||||
dmj_eenheid = oRs("dmj_eenheid").Value;
|
||||
minDate = dmj_eenheid? dag_na_lastinspectdatum : lastinspectdatum;
|
||||
}
|
||||
else
|
||||
minDate = aanmaakdatum;
|
||||
|
||||
// Zoek 1 dag voor inspectiedatum van de volgende inspectie.
|
||||
// Bij alleen uren inspecties de eerste uitvoerdatum tonen als minimale datum, anders een dag eerder.
|
||||
// Vooralsnog kan inspectiedatum niet aangepast worden als de eenheid uren(0) is (readonly).
|
||||
sql = "SELECT MIN(idsc.ins_deelsrtcontrole_datum) firstinspectdatum"
|
||||
+ " , MIN(idsc.ins_deelsrtcontrole_datum - 1) dag_voor_firstinspectdatum"
|
||||
+ " , CASE"
|
||||
+ " WHEN COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, isc.ins_srtcontrole_eenheid) != 0" // Geen tijd eenheid maar dag, maand of jaar.
|
||||
+ " THEN 1" // Dag, maand of jaar.
|
||||
+ " ELSE 0" // Tijd.
|
||||
+ " END dmj_eenheid"
|
||||
+ " FROM ins_deelsrtcontrole idsc"
|
||||
+ " , ins_srtcontrole isc"
|
||||
+ " , ins_srtcontroledl_xcp xcp"
|
||||
+ " WHERE idsc.ins_srtcontrole_key = isc.ins_srtcontrole_key"
|
||||
+ " AND idsc.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
|
||||
+ " AND idsc.ins_deel_key = xcp.ins_deel_key(+)"
|
||||
+ " AND COALESCE(xcp.ins_srtcontroledl_xcp_periode, isc.ins_srtcontrole_periode) > 0"
|
||||
+ " AND idsc.ins_deel_key IN (" + ins_key_arr[i] + ")"
|
||||
+ " AND idsc.ins_srtcontrole_key IN (" + srtcont_key_arr[i] + ")"
|
||||
+ " AND ins_deelsrtcontrole_key > " + dlsrtcont_key
|
||||
+ " GROUP BY isc.ins_srtcontrole_mode"
|
||||
+ " , xcp.ins_srtcontroledl_xcp_eenheid"
|
||||
+ " , isc.ins_srtcontrole_eenheid";
|
||||
oRs = Oracle.Execute(sql);
|
||||
if (!oRs.eof)
|
||||
{
|
||||
firstinspectdatum = new Date(oRs("firstinspectdatum").Value); // Kan uiterlijk vandaag zijn.
|
||||
dag_voor_firstinspectdatum = new Date(oRs("dag_voor_firstinspectdatum").Value); // Kan uiterlijk morgen zijn.
|
||||
dmj_eenheid = oRs("dmj_eenheid").Value;
|
||||
maxDate = dmj_eenheid? dag_voor_firstinspectdatum : firstinspectdatum;
|
||||
}
|
||||
//else //maxDate = new Date();
|
||||
oRs.Close();
|
||||
|
||||
// Eenheid is in dagen dus afronden op middennacht is ok. Er moet minstens een dag verschil in zitten.
|
||||
// minDate of maxDate mag ook nog.
|
||||
if (deelsrtcontrole_datum.midnight().getTime() < minDate.midnight().getTime() || deelsrtcontrole_datum.midnight().getTime() > maxDate.midnight().getTime())
|
||||
{ // De uitvoerdatum/inspectiedatum valt niet tussen de uitvoerdatum/inspectiedatum van de vorige en volgende inspectie.
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ingesloten.push({ins_key: ins_key_arr[i], srtcont_key: srtcont_key_arr[i], dlsrtcont_key: dlsrtcont_key,
|
||||
@@ -579,10 +666,13 @@ else if (savemode == "E")
|
||||
}
|
||||
else
|
||||
{
|
||||
var fields = [ { dbs: "ins_deelsrtcontrole_plandatum", typ: "datetime", frm: "plandatum", track: L("lcl_opdr_plandate") },
|
||||
{ dbs: "ins_deelsrtcontrole_opmerking", typ: "varchar", frm: "opmerk", track: L("lcl_remark"), len: 2000 }
|
||||
var fields = [ { dbs: "ins_deelsrtcontrole_plandatum", typ: "datetime", frm: "plandatum", track: L("lcl_opdr_plandate") },
|
||||
{ dbs: "ins_deelsrtcontrole_opmerking", typ: "varchar", frm: "opmerk", track: L("lcl_remark"), len: 2000 }
|
||||
];
|
||||
|
||||
if (getDeelsrtcontroleDate)
|
||||
fields.push( { dbs: "ins_deelsrtcontrole_datum", typ: "datetime", val: deelsrtcontrole_datum, track: L("lcl_ins_controle_datum") } );
|
||||
|
||||
if (canMsuEdit)
|
||||
fields.push( { dbs: "ins_controlemode_key", typ: "key", frm: "sel_controlemode", track: L("lcl_ins_controle_mode"), foreign: "ins_controlemode" } );
|
||||
|
||||
|
||||
Reference in New Issue
Block a user