FSN#38438: INS: Kalender geeft geen geldige datum weer, maar opslaan gaat goed.

svn path=/Website/trunk/; revision=31504
This commit is contained in:
Maykel Geerdink
2016-11-16 13:13:34 +00:00
parent 27634ec76c
commit 4fe7785e2d
2 changed files with 72 additions and 21 deletions

View File

@@ -370,6 +370,19 @@ if (ins_key_arr.length == 1)
}
}
$("#finish").val(finish);
<% }
else if (insEdit)
{ %>
if (dsc_is_afgemeld)
{
// Controleren of de huidige uitvoerdatum van de inspectie tussen die van de voorgaande en volgende inspectie ligt.
var uitvoerdatum = new Date(parseInt($("#deelsrtcontrole_datum").val()));
if (uitvoerdatum <= minDateEdit || uitvoerdatum >= maxDateEdit)
{
FcltMgr.alert(L("lcl_ins_controle_between_two"));
return false;
}
}
<% } %>
$.post($("form[name=u2]")[0].action,
@@ -577,7 +590,6 @@ if (ins_key_arr.length == 1)
// Men mag alleen een inspectie-uitvoerdatum invoeren die later is dan de laatste inspectie-uitvoerdatum.
// Bij multi ook de laatste uitvoerdatum bepalen.
// Bij alleen uren inspecties de laatste uitvoerdatum tonen als minimale datum, anders een dag later.
sql = "SELECT MAX(idsc.ins_deelsrtcontrole_datum) lastinspectdatum"
+ " , MAX(idsc.ins_deelsrtcontrole_datum + 1) dag_na_lastinspectdatum"
+ " , SUM (CASE"
@@ -585,6 +597,7 @@ if (ins_key_arr.length == 1)
+ " THEN 1" // Dag, maand of jaar.
+ " ELSE 0" // Tijd.
+ " END) aantal_dmj_eenheid"
+ " , isc.ins_srtcontrole_mode"
+ " FROM ins_deelsrtcontrole idsc"
+ " , ins_srtcontrole isc"
+ " , ins_srtcontroledl_xcp xcp"
@@ -599,13 +612,20 @@ if (ins_key_arr.length == 1)
var lastinspectdatum;
var dag_na_lastinspectdatum;
var aantal_dmj_eenheid;
var mode;
var minDate = aanmaakdatum; // Als er nog geen inspecties zijn geweest dan is de aanmaakdatum de minimale datum.
if (!oRs.eof && oRs("lastinspectdatum").Value != null)
{
lastinspectdatum = new Date(oRs("lastinspectdatum").Value); // Kan uiterlijk vandaag zijn.
dag_na_lastinspectdatum = new Date(oRs("dag_na_lastinspectdatum").Value); // Kan uiterlijk morgen zijn.
aantal_dmj_eenheid = oRs("aantal_dmj_eenheid").Value;
minDate = aantal_dmj_eenheid? dag_na_lastinspectdatum : lastinspectdatum;
mode = oRs("ins_srtcontrole_mode").Value;
if (mode == 0)
// Momentmode.
minDate = aantal_dmj_eenheid > 0? dag_na_lastinspectdatum : lastinspectdatum;
else
// Intervalmode.
minDate = lastinspectdatum;
%>
<script type="text/javascript">
var lastinspectdatum = new Date(<%=lastinspectdatum.getTime()%>);
@@ -692,14 +712,12 @@ if (ins_key_arr.length == 1)
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.
// Voor gereed te gemelden(5) en af te ronden(6) inspecties gelden een ander minDate en maxDate.
if (dsc_is_afgemeld) // Er geldt dan insEdit en !insClose. Als insClose dan is de status < 5.
{ // Inspectie is Gereed gemeld(5) of Afgerond(6). Datum mag ik nog aanpassen.
// Wijzigen in status Afgerond(6) mag alleen als je INSMSU rechten (canMsuEdit) hebt.
// !multi en ins_deelsrtcontrole_key is bekend.
// Niet 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"
@@ -708,6 +726,7 @@ if (ins_key_arr.length == 1)
+ " THEN 1" // Dag, maand of jaar.
+ " ELSE 0" // Tijd.
+ " END dmj_eenheid"
+ " , isc.ins_srtcontrole_mode"
+ " FROM ins_deelsrtcontrole idsc"
+ " , ins_srtcontrole isc"
+ " , ins_srtcontroledl_xcp xcp"
@@ -722,18 +741,22 @@ if (ins_key_arr.length == 1)
+ " , xcp.ins_srtcontroledl_xcp_eenheid"
+ " , isc.ins_srtcontrole_eenheid";
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
if (!oRs.eof && oRs("lastinspectdatum").Value != null)
{
lastinspectdatum = new Date(oRs("lastinspectdatum").Value); // Kan uiterlijk vandaag zijn.
dag_na_lastinspectdatum = new Date(oRs("dag_na_lastinspectdatum").Value); // Kan uiterlijk morgen zijn.
dmj_eenheid = oRs("dmj_eenheid").Value;
minDate = dmj_eenheid? dag_na_lastinspectdatum : lastinspectdatum;
mode = oRs("ins_srtcontrole_mode").Value;
if (mode == 0)
// Momentmode.
minDate = dmj_eenheid == 1? new Date(dag_na_lastinspectdatum.midnight()) : lastinspectdatum;
else
// Intervalmode.
minDate = lastinspectdatum;
}
else
minDate = aanmaakdatum;
// 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"
@@ -742,6 +765,7 @@ if (ins_key_arr.length == 1)
+ " THEN 1" // Dag, maand of jaar.
+ " ELSE 0" // Tijd.
+ " END dmj_eenheid"
+ " , isc.ins_srtcontrole_mode"
+ " FROM ins_deelsrtcontrole idsc"
+ " , ins_srtcontrole isc"
+ " , ins_srtcontroledl_xcp xcp"
@@ -761,11 +785,29 @@ if (ins_key_arr.length == 1)
firstinspectdatum = new Date(oRs("firstinspectdatum").Value); // Kan uiterlijk vandaag zijn.
dag_voor_firstinspectdatum = new Date(oRs("dag_voor_firstinspectdatum").Value); // Kan uiterlijk morgen zijn.
dmj_eenheid = oRs("dmj_eenheid").Value;
mode = oRs("ins_srtcontrole_mode").Value;
maxDate = dmj_eenheid? dag_voor_firstinspectdatum : firstinspectdatum;
if (mode == 0)
// Momentmode.
maxDate = dmj_eenheid == 1? new Date(dag_voor_firstinspectdatum.setHours(23,59,59,99)) : firstinspectdatum;
else
// Intervalmode.
maxDate = firstinspectdatum;
}
// else maxDate = new Date();
oRs.Close();
%>
<script type="text/javascript">
var minDateEdit = new Date(<%=minDate.getTime()%>);
var maxDateEdit = new Date(<%=maxDate.getTime()%>);
</script>
<%
}
%>
<script type="text/javascript">
var dsc_is_afgemeld = <%=dsc_is_afgemeld? 1 : 0%> == 1;
</script>
<%
FCLTcalendar("deelsrtcontrole_datum",
{ label: L("lcl_ins_controle_datum"),
datum: inspect_data.deelsrtcontrole_datum? inspect_data.deelsrtcontrole_datum : new Date(),

View File

@@ -163,7 +163,7 @@ for (var i = 0; i < ins_key_arr.length; i++)
}
if (savemode == "E") // Wijzigen.
{
{ // Dit is al gecontroleerd in ins_edit_inspect.asp. Hier voor de veiligheid opnieuw controleren is niet verkeerd.
if (!this_ins.canInspEdit)
{ // Ik heb geen Edit rechten.
continue;
@@ -178,8 +178,6 @@ for (var i = 0; i < ins_key_arr.length; i++)
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"
@@ -188,6 +186,7 @@ for (var i = 0; i < ins_key_arr.length; i++)
+ " THEN 1" // Dag, maand of jaar.
+ " ELSE 0" // Tijd.
+ " END dmj_eenheid"
+ " , isc.ins_srtcontrole_mode"
+ " FROM ins_deelsrtcontrole idsc"
+ " , ins_srtcontrole isc"
+ " , ins_srtcontroledl_xcp xcp"
@@ -202,18 +201,22 @@ for (var i = 0; i < ins_key_arr.length; i++)
+ " , xcp.ins_srtcontroledl_xcp_eenheid"
+ " , isc.ins_srtcontrole_eenheid";
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
if (!oRs.eof && oRs("lastinspectdatum").Value != null)
{
lastinspectdatum = new Date(oRs("lastinspectdatum").Value); // Kan uiterlijk vandaag zijn.
dag_na_lastinspectdatum = new Date(oRs("dag_na_lastinspectdatum").Value); // Kan uiterlijk morgen zijn.
dmj_eenheid = oRs("dmj_eenheid").Value;
minDate = dmj_eenheid == 1? dag_na_lastinspectdatum : lastinspectdatum;
mode = oRs("ins_srtcontrole_mode").Value;
if (mode == 0)
// Momentmode.
minDate = dmj_eenheid == 1? new Date(dag_na_lastinspectdatum.midnight()) : lastinspectdatum;
else
// Intervalmode.
minDate = lastinspectdatum;
}
else
minDate = aanmaakdatum;
// 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"
@@ -222,6 +225,7 @@ for (var i = 0; i < ins_key_arr.length; i++)
+ " THEN 1" // Dag, maand of jaar.
+ " ELSE 0" // Tijd.
+ " END dmj_eenheid"
+ " , isc.ins_srtcontrole_mode"
+ " FROM ins_deelsrtcontrole idsc"
+ " , ins_srtcontrole isc"
+ " , ins_srtcontroledl_xcp xcp"
@@ -241,14 +245,19 @@ for (var i = 0; i < ins_key_arr.length; i++)
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 == 1? dag_voor_firstinspectdatum : firstinspectdatum;
mode = oRs("ins_srtcontrole_mode").Value;
if (mode == 0)
// Momentmode.
maxDate = dmj_eenheid == 1? new Date(dag_voor_firstinspectdatum.setHours(23,59,59,99)) : firstinspectdatum;
else
// Intervalmode.
maxDate = firstinspectdatum;
}
//else //maxDate = new Date();
oRs.Close();
// 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())
// Huidige inspectie moet tussen voorgaande en volgende inspectie inliggen.
if (deelsrtcontrole_datum.getTime() <= minDate.getTime() || deelsrtcontrole_datum.getTime() >= maxDate.getTime())
{ // De uitvoerdatum/inspectiedatum valt niet tussen de uitvoerdatum/inspectiedatum van de vorige en volgende inspectie.
continue;
}