FCLT#56091: Kleurmarkering bij inspecties werkt niet goed.

svn path=/Website/trunk/; revision=41017
This commit is contained in:
Maykel Geerdink
2019-02-18 12:34:05 +00:00
parent 5f9dbf03b9
commit 33679862f9
2 changed files with 130 additions and 22 deletions

View File

@@ -223,6 +223,42 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
dtsoon.setHours(0,0,0,0); // trunc datum
var dtlate = new Date().setHours(0,0,0,0);
// Als het een eerste controle(1) is en er dan staat "Onbekend/Undetermined" in beeld. Dan ook rood weergeven.
// Als de eerste controle is ingepland (en eventueel gestart) dan staat de plandatum in beeld en is undetermined false.
// Onbepaald alleen bij een Controle(1) als er nog geen inspectie is geweest en de inspectie nog niet is ingepland.
// Daarnaast moet gelden: a) de aanmaakdatum moet in het verleden liggen of
// b) de startdatum moet na de aanmaakdatum liggen en in het verleden.
var nonext = oRs("nonext").Value == 1;
var ctr_controle_type = oRs("ctr_controle_type").Value;
var ins_deelsrtcontrole_plandatum = oRs("plandatum").Value; // Ingeplande datum.
var ins_srtcontroledl_xcp_startdat = oRs("ins_srtcontroledl_xcp_startdat").Value; // Startdatum (exception).
var ins_deel_aanmaak = new Date(oRs("ins_deel_aanmaak").Value); // Aanmaakdatum/Registratiedatum object.
var start_na_aanmaak = ins_srtcontroledl_xcp_startdat != null && new Date(ins_srtcontroledl_xcp_startdat) > ins_deel_aanmaak;
var aanmaak_na_start = ins_srtcontroledl_xcp_startdat != null && new Date(ins_srtcontroledl_xcp_startdat) < ins_deel_aanmaak;
var today = (oRs("eenheid").Value == 0? new Date() : new Date().midnight());
if (nonext &&
ctr_controle_type == 1 &&
ins_deelsrtcontrole_plandatum == null &&
((ins_srtcontroledl_xcp_startdat == null && ins_deel_aanmaak < today) ||
(start_na_aanmaak && new Date(ins_srtcontroledl_xcp_startdat) < today) ||
(aanmaak_na_start && ins_deel_aanmaak < today)))
// Volgende actie is "Onbekend/Undetermined"
return lclass + " expired2"; // Te laat.
// Als de startdatum en/of aanmaakdatum in de toekomst ligt en voor dtsoon, dan kan het binnenkort zijn.
// Dat kan alleen bij een Controle(1) als er nog geen inspectie is geweest en de inspectie nog niet is ingepland.
// Daarnaast moet gelden: a) de aanmaakdatum moet tussen nu en dtsoon liggen of
// b) de startdatum moet na de aanmaakdatum liggen tussen nu en dtsoon.
// Eigelijk kan de voorwaarden dat de aanmaakdatum en startdatum na nu weg, want anders gelde vorige if voorwaarde wel.
else if (nonext &&
ctr_controle_type == 1 &&
ins_deelsrtcontrole_plandatum == null &&
((ins_srtcontroledl_xcp_startdat == null && ins_deel_aanmaak < dtsoon && ins_deel_aanmaak >= today) ||
(start_na_aanmaak && new Date(ins_srtcontroledl_xcp_startdat) < dtsoon && new Date(ins_srtcontroledl_xcp_startdat) >= today) ||
(aanmaak_na_start && ins_deel_aanmaak < dtsoon && ins_deel_aanmaak >= today)))
{
return lclass + " expired1"; // Binnenkort.
}
if (dt >= dtsoon)
return lclass; // meer dan 30 dagen in de toekomst
@@ -274,11 +310,36 @@ var authparams = user.checkAutorisation("WEB_INSUSE");
var nonext = oRs("nonext").Value == 1;
if (nonext && !ismjob)
{
if (oRs("ins_srtcontroledl_xcp_startdat").Value != null)
{
var dt = new Date(oRs("ins_srtcontroledl_xcp_startdat").Value); // Startdatum.
// Er is nog geen inspectie geweest. Eerste controle moet nog plaatsvinden.
// 1: Controle, 2: Vervanging, 3: Certificering.
var aanmaak = new Date(oRs("ins_deel_aanmaak").Value); // Aanmaakdatum/Registratiedatum object.
var startdate = oRs("ins_srtcontroledl_xcp_startdat").Value != null? new Date(oRs("ins_srtcontroledl_xcp_startdat").Value) : null; // Startdatum taak.
if ((startdate != null || aanmaak.getTime() > new Date().midnight().getTime()) && oRs("plandatum").Value == null)
{ // Er is nog geen inspectie geweest en de startdatum is ingevuld of de registratiedatum ligt in de toekomst.
// De inspectie is nog niet ingepland.
// Er geldt dan het volgende:
// Voor Controle(1):
// a) Als de startdatum is ingevuld is de eerste inspectie op MAX(startdatum, registratiedatum) van het object.
// b) Als de startdatum niet is ingevuld en de registratiedatum ligt in de toekomst dan is de eerste inspectie de tekst
// "Vanaf #registratiedatum eerste controle" (voor #registratiedatum de registratiedatum invullen).
// Voor Vervanging(2) of Certificering(3):
// a) Als registratiedatum het verst in de toekomst ligt: Eerste inspectie tonen op 1 periode verder dan de registratiedatum.
// b) Als de startdatum het verst in de toekomst ligt: Eerste inspectie tonen op de startdatum.
// De aanmaakdatum/Registratiedatum is altijd ingevuld en als er al een inspectie is geweest, zijn de startdatum en registratiedatum niet meer van belang.
if (oRs("ctr_controle_type").Value == 1)
{ // Controle.
if (startdate == null)
txt = L("lcl_ins_controle_from").format(oRs("eenheid").Value == 0? toDateTimeString(aanmaak) : toDateString(aanmaak));
else
dt = startdate.getTime() > aanmaak.getTime()? startdate : aanmaak; // Inspectiedatum is MAX(startdatum, registratiedatum).
}
else
{ // Vervanging(2) of Certificering(3).
dt = startdate != null && startdate.getTime() > aanmaak.getTime()? startdate : new Date(oRs("inspectie_next").Value); // Startdatum of de volgende inspectie.
}
if (!txt)
txt = (oRs("eenheid").Value == 0? toDateTimeString(dt) : toDateString(dt));
thisCostYear = dt.getFullYear();
var txt = (oRs("eenheid").value == 0? toDateTimeString(dt) : toDateString(dt));
}
else
{

View File

@@ -539,8 +539,9 @@ function ins_list (pautfunction, params)
var istatus = oRs("ins_deelsrtcontrole_status").Value != null? oRs("ins_deelsrtcontrole_status").Value : -1;
if (inspDone) return lclass;
var ins_deelsrtcontrole_plandatum = oRs("ins_deelsrtcontrole_plandatum").Value;
var ins_srtcontroledl_xcp_startdat = oRs("ins_srtcontroledl_xcp_startdat").Value;
var ins_deelsrtcontrole_plandatum = oRs("ins_deelsrtcontrole_plandatum").Value; // Ingeplande datum.
var ins_srtcontroledl_xcp_startdat = oRs("ins_srtcontroledl_xcp_startdat").Value; // Startdatum (exception).
var ins_deel_aanmaak = new Date(oRs("ins_deel_aanmaak").Value); // Aanmaakdatum/Registratiedatum object.
if (ins_deelsrtcontrole_plandatum == null)
var dt = new Date(oRs("inspectie_next").Value);
else
@@ -551,22 +552,45 @@ function ins_list (pautfunction, params)
dtsoon.setHours(0,0,0,0); // trunc datum
var dtlate = new Date(new Date().setHours(0,0,0,0));
// Als het een eerste controle(1) is, dan staat "Onbekend/Undetermined" in beeld. Dan ook rood weergeven.
// Als de eerste controle is ingepland (en eventueel gestart) dan staat de plandatum in beeld en is undetermined false.
// Als het een eerste controle(1) is en er dan staat "Onbekend/Undetermined" in beeld. Dan ook rood weergeven.
// Onbepaald alleen bij een Controle(1) als er nog geen inspectie is geweest en de inspectie nog niet is ingepland.
// Daarnaast moet gelden: a) de aanmaakdatum moet in het verleden liggen of
// b) de startdatum moet na de aanmaakdatum liggen en in het verleden.
var nonext = oRs("nonext").Value == 1;
var ctr_controle_type = oRs("ctr_controle_type").Value;
var undetermined = (nonext &&
ctr_controle_type == 1 &&
ins_deelsrtcontrole_plandatum == null &&
ins_srtcontroledl_xcp_startdat == null); // Eerste Controle(1) nog niet ingepland en uitgevoerd.
var start_na_aanmaak = ins_srtcontroledl_xcp_startdat != null && new Date(ins_srtcontroledl_xcp_startdat) > ins_deel_aanmaak;
var aanmaak_na_start = ins_srtcontroledl_xcp_startdat != null && new Date(ins_srtcontroledl_xcp_startdat) < ins_deel_aanmaak;
var today = (oRs("inspectie_eenheid").Value == 0? new Date() : new Date().midnight());
if (nonext &&
ctr_controle_type == 1 &&
ins_deelsrtcontrole_plandatum == null &&
((ins_srtcontroledl_xcp_startdat == null && ins_deel_aanmaak < today) ||
(start_na_aanmaak && new Date(ins_srtcontroledl_xcp_startdat) < today) ||
(aanmaak_na_start && ins_deel_aanmaak < today)))
// Volgende actie is "Onbekend/Undetermined"
return lclass + " expired2"; // Te laat.
// Als de startdatum en/of aanmaakdatum in de toekomst ligt en voor dtsoon, dan kan het binnenkort zijn.
// Dat kan alleen bij een Controle(1) als er nog geen inspectie is geweest en de inspectie nog niet is ingepland.
// Daarnaast moet gelden: a) de aanmaakdatum moet tussen nu en dtsoon liggen of
// b) de startdatum moet na de aanmaakdatum liggen tussen nu en dtsoon.
// Eigelijk kan de voorwaarden dat de aanmaakdatum en startdatum na nu weg, want anders gelde vorige if voorwaarde wel.
else if (nonext &&
ctr_controle_type == 1 &&
ins_deelsrtcontrole_plandatum == null &&
((ins_srtcontroledl_xcp_startdat == null && ins_deel_aanmaak < dtsoon && ins_deel_aanmaak >= today) ||
(start_na_aanmaak && new Date(ins_srtcontroledl_xcp_startdat) < dtsoon && new Date(ins_srtcontroledl_xcp_startdat) >= today) ||
(aanmaak_na_start && ins_deel_aanmaak < dtsoon && ins_deel_aanmaak >= today)))
{
return lclass + " expired1"; // Binnenkort.
}
if (dt >= dtsoon && !undetermined)
return lclass; // meer dan S("ins_inspect_soon_days") dagen in de toekomst
if (dt >= dtsoon)
return lclass; // Op tijd, meer dan S("ins_inspect_soon_days") dagen in de toekomst.
if (dt >= dtlate && !undetermined)
return lclass + " expired1"; // Binnenkort
if (dt >= dtlate)
return lclass + " expired1"; // Binnenkort.
return lclass + " expired2"; // Te laat
return lclass + " expired2"; // Te laat.
}
function fnStatus(oRs)
@@ -722,10 +746,33 @@ function ins_list (pautfunction, params)
if (nonext && !ismjob)
{ // Er is nog geen inspectie geweest. Eerste controle moet nog plaatsvinden.
// 1: Controle, 2: Vervanging, 3: Certificering.
if (oRs("ins_srtcontroledl_xcp_startdat").Value != null)
{
dt = new Date(oRs("ins_srtcontroledl_xcp_startdat").Value); // Startdatum.
txt = (oRs("inspectie_eind").Value == 0? toDateTimeString(dt) : toDateString(dt));
var aanmaak = new Date(oRs("ins_deel_aanmaak").Value); // Aanmaakdatum/Registratiedatum object.
var startdate = oRs("ins_srtcontroledl_xcp_startdat").Value != null? new Date(oRs("ins_srtcontroledl_xcp_startdat").Value) : null; // Startdatum taak.
if ((startdate != null || aanmaak.getTime() > new Date().midnight().getTime()) && oRs("ins_deelsrtcontrole_plandatum").Value == null)
{ // Er is nog geen inspectie geweest en de startdatum is ingevuld of de registratiedatum ligt in de toekomst.
// De inspectie is nog niet ingepland.
// Er geldt dan het volgende:
// Voor Controle(1):
// a) Als de startdatum is ingevuld is de eerste inspectie op MAX(startdatum, registratiedatum) van het object.
// b) Als de startdatum niet is ingevuld en de registratiedatum ligt in de toekomst dan is de eerste inspectie de tekst
// "Vanaf #registratiedatum eerste controle" (voor #registratiedatum de registratiedatum invullen).
// Voor Vervanging(2) of Certificering(3):
// a) Als registratiedatum het verst in de toekomst ligt: Eerste inspectie tonen op 1 periode verder dan de registratiedatum.
// b) Als de startdatum het verst in de toekomst ligt: Eerste inspectie tonen op de startdatum.
// De aanmaakdatum/Registratiedatum is altijd ingevuld en als er al een inspectie is geweest, zijn de startdatum en registratiedatum niet meer van belang.
if (oRs("ctr_controle_type").Value == 1)
{ // Controle.
if (startdate == null)
txt = L("lcl_ins_controle_from").format(oRs("inspectie_eenheid").Value == 0? toDateTimeString(aanmaak) : toDateString(aanmaak));
else
dt = startdate.getTime() > aanmaak.getTime()? startdate : aanmaak; // Inspectiedatum is MAX(startdatum, registratiedatum).
}
else
{ // Vervanging(2) of Certificering(3).
dt = startdate != null && startdate.getTime() > aanmaak.getTime()? startdate : new Date(oRs("inspectie_next").Value); // Startdatum of de volgende inspectie.
}
if (!txt)
txt = (oRs("inspectie_eenheid").Value == 0? toDateTimeString(dt) : toDateString(dt));
}
else
{
@@ -734,7 +781,7 @@ function ins_list (pautfunction, params)
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));
txt = (oRs("inspectie_eenheid").Value == 0? toDateTimeString(dt) : toDateString(dt));
break;
} // Eerste certificering.
}