BAUS#86115: Berekening momentmodus-taak niet conform auditnormen bij eerste uitvoering.
svn path=/Website/trunk/; revision=70053
This commit is contained in:
@@ -1443,7 +1443,7 @@ ins = {checkAutLevel:
|
||||
oRs.Close();
|
||||
|
||||
if (ismjob && isjaarlijks)
|
||||
{
|
||||
{ // MJOB taken.
|
||||
// Bereken de volgende orginele inspectiedatum (nextdate).
|
||||
// Het kan een mjob inspectie zijn en dan kan de laatste inspectie niet succesvol zijn.
|
||||
// In dat geval kan ik ins.nextcyclusdate(ins_key, srtcont_key, scen_key) niet gebruiken.
|
||||
@@ -1495,7 +1495,7 @@ ins = {checkAutLevel:
|
||||
nextdate = new Date(mjb_freeze_or_sys_year, 0, 1); // 1 januari van het freeze jaar.
|
||||
}
|
||||
else if (dsc_status == 2 || dsc_status == 3) // 3) De laatste inspectie is geaccordeerd/bevroren/gestart(2): De volgende is een periode verder als het freeze jaar.
|
||||
{ // De laatste inspectie is geaccordeerd/bevroren/gestart(2): De volgende is een periode verder als het freeze jaar.
|
||||
{ // De laatste inspectie is geaccordeerd/bevroren/gestart(2) of ter uitvoering(3): De volgende is een periode verder als het freeze jaar.
|
||||
sql = "SELECT fac.nextcyclusdate(" + dsc_freezedate.toSQL()
|
||||
+ " , xcp.ins_srtcontrole_mode"
|
||||
+ " , xcp.ins_srtcontrole_eenheid"
|
||||
@@ -1541,7 +1541,7 @@ ins = {checkAutLevel:
|
||||
// Volgende inspectie is in het freeze jaar.
|
||||
// b) Laatste inspectie is NULL (eerste inspectie moet nog komen) en het is een Vervanging(2) of Certificering(3).
|
||||
// Nextdate is na het freeze jaar?
|
||||
// Ja) Vorige inspectie ligt na het start jaar en ligt niet in het aanmaak jaar?
|
||||
// Ja) De laatst ingeplande inspectie (nextdate) ligt na het start jaar en ligt niet in het aanmaak jaar?
|
||||
// Ja) Volgende inspectie is in het freeze jaar.
|
||||
// Nee) Volgende inspectie is het jaar van de nextdate.
|
||||
// Nee) De laatst ingeplande inspectie (nextdate) is na of in het start jaar?
|
||||
@@ -1639,7 +1639,7 @@ ins = {checkAutLevel:
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
{ // Periodieke taken.
|
||||
// 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"
|
||||
@@ -1653,15 +1653,42 @@ ins = {checkAutLevel:
|
||||
{ // Bereken de volgende inspectiedatum. Het object is minstens 1 keer geinspecteerd.
|
||||
sql = "SELECT ins.nextcyclusdate (" + pins_key
|
||||
+ ", " + psrtcont_key
|
||||
+ ", " + (params && params.mjob? pscen_key : "1")
|
||||
+ ", 1" // Periodieke taken kent geen scenario's.
|
||||
+ ", 1) nextdate FROM DUAL";
|
||||
var oRsN = Oracle.Execute(sql);
|
||||
nextdate = new Date(oRsN("nextdate").Value);
|
||||
oRsN.Close();
|
||||
}
|
||||
else
|
||||
{ // Er zijn nog geen inspecties geweest voor dit object en er is nog geen plandatum voor dit object ingevuld.
|
||||
// Volgende inspectiedatum kunnen we tegenwoordig bepalen.
|
||||
// Als er een startdatum is na de registratiedatum dan is dat de startdatum of anders is deze te berekenen vanaf de registratiedatum/aanmaakdatum.
|
||||
sql = "SELECT ins_deel_aanmaak"
|
||||
+ " , ins_srtcontroledl_xcp_startdat"
|
||||
+ " FROM ins_v_defined_inspect_xcp"
|
||||
+ " WHERE ins_deel_key = " + pins_key
|
||||
+ " AND ins_srtcontrole_key = " + psrtcont_key
|
||||
+ " AND ins_scenario_key = 1";
|
||||
var oRsS = Oracle.Execute(sql);
|
||||
var aanmaakdatum = new Date(oRsS("ins_deel_aanmaak").Value);
|
||||
var startdatum = oRsS("ins_srtcontroledl_xcp_startdat").Value != null? new Date(oRsS("ins_srtcontroledl_xcp_startdat").Value) : null;
|
||||
oRsS.Close();
|
||||
if (startdatum != null && aanmaakdatum <= startdatum)
|
||||
nextdate = startdatum;
|
||||
else if (startdatum != null && aanmaakdatum > startdatum)
|
||||
nextdate = 1;
|
||||
else
|
||||
{
|
||||
sql = "SELECT ins.nextcyclusdate (" + pins_key
|
||||
+ ", " + psrtcont_key
|
||||
+ ", 1" // Periodieke taken kent geen scenario's.
|
||||
+ ", 1) nextdate FROM DUAL";
|
||||
var oRsN = Oracle.Execute(sql);
|
||||
nextdate = new Date(oRsN("nextdate").Value);
|
||||
oRsN.Close();
|
||||
}
|
||||
}
|
||||
oRs.Close();
|
||||
//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)
|
||||
}
|
||||
|
||||
return nextdate;
|
||||
@@ -1932,7 +1959,6 @@ ins = {checkAutLevel:
|
||||
+ " , ins_srtcontrole_mode"
|
||||
+ " , ins_srtcontroledl_xcp_startdat"
|
||||
+ " , ins_srtcontroledl_xcp_prio"
|
||||
+ " , nonext"
|
||||
+ " , inspectie_eenheid"
|
||||
+ " , inspectie_eind"
|
||||
+ " , ins_srtcontrole_omschrijving"
|
||||
@@ -1963,7 +1989,6 @@ ins = {checkAutLevel:
|
||||
+ " , dsc.prs_perslid_key inspecteur_key"
|
||||
+ " , di.ins_srtcontroledl_xcp_startdat"
|
||||
+ " , di.ins_srtcontroledl_xcp_prio"
|
||||
+ " , NULL nonext"
|
||||
+ " , di.ins_srtcontrole_eenheid inspectie_eenheid"
|
||||
+ " , di.ins_srtcontrole_eind inspectie_eind"
|
||||
+ " , " + lcl.xsqla("di.ins_srtcontrole_omschrijving", "di.ins_srtcontrole_key")
|
||||
@@ -2041,7 +2066,6 @@ ins = {checkAutLevel:
|
||||
+ " , di.ins_srtcontrole_bits"
|
||||
+ " , di.ins_srtcontroledl_xcp_startdat"
|
||||
+ " , di.ins_srtcontroledl_xcp_prio"
|
||||
+ " , CASE WHEN NOT " + lastinspect + " THEN 1 ELSE 0 END nonext"
|
||||
+ " , di.ins_srtcontrole_eenheid inspectie_eenheid"
|
||||
+ " , di.ins_srtcontrole_eind inspectie_eind"
|
||||
+ " , " + lcl.xsqla("di.ins_srtcontrole_omschrijving", "di.ins_srtcontrole_key")
|
||||
@@ -2098,7 +2122,6 @@ ins = {checkAutLevel:
|
||||
+ " , di.ins_srtcontrole_bits"
|
||||
+ " , ins_srtcontroledl_xcp_startdat"
|
||||
+ " , ins_srtcontroledl_xcp_prio"
|
||||
+ " , CASE WHEN NOT " + lastinspect + " THEN 1 ELSE 0 END nonext"
|
||||
+ " , di.ins_srtcontrole_eenheid inspectie_eenheid"
|
||||
+ " , di.ins_srtcontrole_eind inspectie_eind"
|
||||
+ " , " + lcl.xsqla("di.ins_srtcontrole_omschrijving", "di.ins_srtcontrole_key")
|
||||
@@ -2176,7 +2199,6 @@ ins = {checkAutLevel:
|
||||
+ " , ispn.ins_deelsrtcontrole_datum_org"
|
||||
+ " , ispn.inspectie_eind"
|
||||
+ " , ispn.inspectie_eenheid"
|
||||
+ " , ispn.nonext"
|
||||
+ " , ispn.ctr_controle_type"
|
||||
+ (!mobile
|
||||
? " , ispn.periode"
|
||||
@@ -3349,23 +3371,19 @@ ins = {checkAutLevel:
|
||||
//+ " NULL" // Voor deze deelquery geldt, er is nog geen inspectie geweest. Hier kom je nooit.
|
||||
+ " END)"
|
||||
+ " ELSE" // Periodieke taken (NIET MJOB)
|
||||
// Er geldt al dat er nog geen inspectie is geweest.
|
||||
+ " COALESCE(CASE"
|
||||
+ " WHEN x.ins_srtcontroledl_xcp_startdat >= x.ins_deel_aanmaak" // Er geldt al dat er nog geen inspectie is geweest.
|
||||
+ " WHEN x.ins_srtcontroledl_xcp_startdat >= x.ins_deel_aanmaak" // Als startdatum en aanmaakdatum/Registratiedatum hetzelfde dan op die datum beginnen.
|
||||
+ " THEN x.ins_srtcontroledl_xcp_startdat"
|
||||
+ " ELSE NULL"
|
||||
+ " END"
|
||||
+ " , CASE"
|
||||
+ " WHEN x.ins_deel_aanmaak > SYSDATE AND x.ctr_controle_type = 1" // Er geldt al dat er nog geen inspectie is geweest.
|
||||
+ " THEN x.ins_deel_aanmaak"
|
||||
+ " ELSE NULL"
|
||||
+ " END"
|
||||
+ " , fac.nextcyclusdate(x.ins_deel_aanmaak"
|
||||
+ " , x.ins_srtcontrole_mode"
|
||||
+ " , x.inspectie_eenheid"
|
||||
+ " , x.ins_srtcontrole_periode"
|
||||
+ " , x.ins_srtcontrole_bits"
|
||||
+ " , 1"
|
||||
+ " , x.ctr_ismjob))"
|
||||
+ " , x.ctr_ismjob))" // Periode verder als registratiedatum/aanmaakdatum.
|
||||
+ " END";
|
||||
|
||||
var lastinspect_B = "EXISTS (SELECT 1"
|
||||
@@ -3411,7 +3429,7 @@ ins = {checkAutLevel:
|
||||
+ " CASE"
|
||||
+ " WHEN NOT " + lastinspect_B // Inspectie die voor het eerst is ingepland(0) of gestart(2) maar nog geen uitgevoerde/afgemelde(6) inspectie heeft.
|
||||
+ " THEN COALESCE(CASE"
|
||||
+ " WHEN x.ins_srtcontroledl_xcp_startdat > x.ins_deel_aanmaak" // Eerste inspectie is ingepland(0) of gestart(2).
|
||||
+ " WHEN x.ins_srtcontroledl_xcp_startdat >= x.ins_deel_aanmaak" // Eerste inspectie is ingepland(0) of gestart(2). Als startdatum en aanmaakdatum/Registratiedatum hetzelfde dan op die datum beginnen.
|
||||
+ " THEN x.ins_srtcontroledl_xcp_startdat"
|
||||
+ " ELSE NULL"
|
||||
+ " END"
|
||||
|
||||
@@ -309,41 +309,6 @@ var canImport = (user.checkAutorisation("WEB_IMPORT", true) != null);
|
||||
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 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 = (eenheid == 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.
|
||||
}
|
||||
// Als de aanmaakdatum en/of de startdatum na dtsoon (dus ook na today) ligt dan kan dt (inspectie_next) genomen worden.
|
||||
// Die heeft dan de juiste waarde.
|
||||
|
||||
@@ -403,59 +368,6 @@ var canImport = (user.checkAutorisation("WEB_IMPORT", true) != null);
|
||||
return dtstring;
|
||||
}
|
||||
|
||||
var nonext = oRs("nonext").Value == 1;
|
||||
if (nonext && !ismjob)
|
||||
{
|
||||
// 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" (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));
|
||||
dt = 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();
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (oRs("ctr_controle_type").Value)
|
||||
{ // 1: Controle, 2: Vervanging, 3: Certificering.
|
||||
case 1: { var txt = L("lcl_ins_controle_first"); thisCostYear = new Date().getFullYear(); break; }; // Eerste controle.
|
||||
case 2:
|
||||
case 3: { var dt = new Date(oRs("inspectie_next").Value); // Registratiedatum.
|
||||
thisCostYear = dt.getFullYear();
|
||||
var txt = (oRs("eenheid").value == 0? toDateTimeString(dt) : toDateString(dt));
|
||||
break;
|
||||
} // Eerste certificering.
|
||||
}
|
||||
}
|
||||
return txt;
|
||||
}
|
||||
|
||||
var dt = new Date(oRs("inspectie_next").Value);
|
||||
thisCostYear = dt.getFullYear();
|
||||
var plandatum = oRs("plandatum").Value != null? " " + L("lcl_ins_respijt") : "";
|
||||
|
||||
@@ -46,12 +46,10 @@ insp = {
|
||||
// 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)"
|
||||
@@ -206,15 +204,10 @@ insp = {
|
||||
// b) Als aanmaakdatum < startdatum: 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.
|
||||
+ " COALESCE(CASE"
|
||||
+ " WHEN di.ins_srtcontroledl_xcp_startdat > di.ins_deel_aanmaak AND " + lastinspect + " IS NULL"
|
||||
+ " WHEN di.ins_srtcontroledl_xcp_startdat >= di.ins_deel_aanmaak AND " + lastinspect + " IS NULL" // Als startdatum en aanmaakdatum/Registratiedatum hetzelfde dan op die datum beginnen.
|
||||
+ " THEN di.ins_srtcontroledl_xcp_startdat"
|
||||
+ " ELSE NULL"
|
||||
+ " END"
|
||||
+ " , CASE"
|
||||
+ " WHEN di.ins_deel_aanmaak > SYSDATE AND di.ctr_controle_type = 1 AND " + lastinspect + " IS NULL"
|
||||
+ " THEN di.ins_deel_aanmaak"
|
||||
+ " ELSE NULL"
|
||||
+ " END"
|
||||
+ " , fac.nextcyclusdate (COALESCE(" + lastinspect + ", di.ins_deel_aanmaak)"
|
||||
+ " , di.ins_srtcontrole_mode"
|
||||
+ " , di.ins_srtcontrole_eenheid"
|
||||
@@ -236,7 +229,6 @@ insp = {
|
||||
+ " , di.ctr_ismjob))"
|
||||
+ " 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"
|
||||
@@ -382,12 +374,10 @@ insp = {
|
||||
var past_inspect = "" // Combineren met uitgevoerde inspecties op dit object of (indien present) lopende inspecties (ingepland(0), gestart(2), ter uitvoering(3) of gereedgemeld(5))
|
||||
+ " SELECT 2 seq"
|
||||
+ " , di.ins_deel_key"
|
||||
+ " , di.ins_deel_aanmaak"
|
||||
+ " , di.ins_deel_aantal"
|
||||
+ " , idsc.ins_deelsrtcontrole_datum"
|
||||
+ " , " + inspectie_org + " 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"
|
||||
@@ -405,7 +395,6 @@ insp = {
|
||||
+ " THEN " + inspectie_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"
|
||||
|
||||
@@ -911,10 +911,10 @@ else
|
||||
oRs.Close();
|
||||
|
||||
// Er moet een taakafhandeling zijn meegegeven. Was deze succesvol?
|
||||
var controlemode = getFParamInt("sel_controlemode"); // Taakafhandeling.
|
||||
var sel_controlemode = getFParamInt("sel_controlemode"); // Taakafhandeling.
|
||||
var sql_s = "SELECT ins_controlemode_success"
|
||||
+ " FROM ins_controlemode"
|
||||
+ " WHERE ins_controlemode_key = " + controlemode;
|
||||
+ " WHERE ins_controlemode_key = " + sel_controlemode;
|
||||
var oRs_s = Oracle.Execute(sql_s);
|
||||
var isSuccess = oRs_s("ins_controlemode_success").Value;
|
||||
oRs_s.Close();
|
||||
@@ -940,7 +940,14 @@ else
|
||||
// 2) Een niet succesvolle MJOB inspectie
|
||||
// => De eerstvolgende inspectiedatum gelijk aan de controledatum stellen.
|
||||
firstinspect = true;
|
||||
var startingpoint = (ingesloten[i].dlsrtcont_plandatum != -1? ingesloten[i].dlsrtcont_plandatum : deelsrtcontrole_datum) // COALESCE(plandatum, ingevulde controledatum).
|
||||
|
||||
// Bereken de volgende orginele inspectiedatum (nextdate).
|
||||
// Bij mjob kan de laatste inspectie niet succesvol zijn. Dus ins.nextcyclusdate(ins_key, srtcont_key, scen_key) kan ik hier niet gebruiken.
|
||||
// 1) De laatste inspectie is succesvol voltooid: De volgende met ins.nextcyclusdate() te berekenen.
|
||||
// 2) De laatste inspectie is NIET succesvol voltooid. De volgende is in het freeze jaar.
|
||||
// 3) De laatste inspectie is geaccordeerd/bevroren/gestart(2): De volgende is een periode verder als het freeze jaar.
|
||||
// 4) Er is geen inspectie geweest of gestart.
|
||||
var startingpoint = ins.func_get_nextdate(ingesloten[i].ins_key, ingesloten[i].srtcont_key, ingesloten[i].scen_key, {mjob: mjob});
|
||||
var nextdate = new Date(startingpoint);
|
||||
var start_inspect_interval = new Date(startingpoint); // Vanaf welke datum de inspectie mag plaatsvinden.
|
||||
}
|
||||
@@ -982,13 +989,11 @@ else
|
||||
// Alleen nodig voor moment modus.
|
||||
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));
|
||||
var start_inspect_interval = new Date(new Date(start_inspect_interval).setMinutes(0, 0, 0));
|
||||
var start_inspect_interval_trunc = new Date(new Date(start_inspect_interval).setMinutes(0, 0, 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
var nextdate_trunc = new Date(nextdate.midnight());
|
||||
var deelsrtcontrole_datum_trunc = new Date(deelsrtcontrole_datum.midnight());
|
||||
var start_inspect_interval_trunc = new Date(new Date(start_inspect_interval).midnight());
|
||||
}
|
||||
@@ -999,7 +1004,7 @@ else
|
||||
// De laatste datum die opgeslagen wordt is uiterlijk de opgegeven controledatum
|
||||
// De trunc waarde van de controle datum gebruiken.
|
||||
var firstone = true;
|
||||
while (isPlanned || (!isPlanned && start_inspect_interval_trunc <= deelsrtcontrole_datum_trunc))
|
||||
while (firstinspect || isPlanned || (!isPlanned && start_inspect_interval_trunc <= deelsrtcontrole_datum_trunc))
|
||||
{
|
||||
// Als de allereerste inspectie van een moment modus taak wordt voltooid,
|
||||
// dan wordt de org datum niet meer op de uitvoerdatum gezet maar op de eerste van de die maand.
|
||||
@@ -1061,6 +1066,7 @@ else
|
||||
isPlanned = false;
|
||||
insPresent = false; // Als er terug in de while lus wordt gesprongen is er geen inspectie record aanwezig.
|
||||
firstone = false;
|
||||
firstinspect = false;
|
||||
|
||||
// Bereken de volgende inspectiedatum.
|
||||
// De functie ins.nextcyclusdate levert de volgende inspectie datum met tijd op onafhankelijk van de eenheid.
|
||||
@@ -1071,9 +1077,9 @@ else
|
||||
oRs.Close();
|
||||
|
||||
if (eenheid == 0)
|
||||
nextdate_trunc = new Date(new Date(nextdate).setMinutes(0, 0, 0));
|
||||
var nextdate_trunc = new Date(new Date(nextdate).setMinutes(0, 0, 0));
|
||||
else
|
||||
nextdate_trunc = new Date(nextdate.midnight());
|
||||
var nextdate_trunc = new Date(nextdate.midnight());
|
||||
|
||||
start_inspect_interval_trunc = nextdate_trunc;
|
||||
}
|
||||
|
||||
@@ -317,10 +317,10 @@ else
|
||||
{ // Er is nog geen inspectie (ins_deelsrtcontrole) record aangemaakt. Eerst maar eens de waarden van de velden bepalen.
|
||||
// Als er al een inspectie is geweest kan er een volgende inspectiedatum berekend worden.
|
||||
var nextdate = null;
|
||||
if (ingesloten[i].inspectiestatus > -1)
|
||||
if (ingesloten[i].inspectiestatus > -1 || !ingesloten[i].ismjob) // Bij periodieke taken kunnen we tegenwoordig de eerste inspectiedatum ook berkenen.
|
||||
{ // Bereken de volgende orginele inspectiedatum (nextdate).
|
||||
// Alleen Active Situatie (AS) soort controle's kunnen gestart worden dus voor scenario key moet 1 genomen worden.
|
||||
// Het is mjob. De laatste inspectie kan niet succesvol zijn. Dus ins.nextcyclusdate(ins_key, srtcont_key, scen_key) kan ik hier niet gebruiken.
|
||||
// Bij mjob kan de laatste inspectie niet succesvol zijn. Dus ins.nextcyclusdate(ins_key, srtcont_key, scen_key) kan ik hier niet gebruiken.
|
||||
|
||||
// func_get_nextdate kijkt naar en houd rekening met onderstaande 4 punten.
|
||||
// Er is al een inspectie geweest als ik binnen deze if ben.
|
||||
@@ -331,8 +331,8 @@ else
|
||||
// 4) Er is geen inspectie geweest of gestart.
|
||||
nextdate = ins.func_get_nextdate(ingesloten[i].ins_key, ingesloten[i].srtcont_key, 1, {mjob: ingesloten[i].ismjob});
|
||||
}
|
||||
//else Er zijn nog geen inspecties geweest voor dit object. Dit wordt de eerste inspectie.
|
||||
// Volgende inspectiedatum kun je niet berekenen en is dus onbekend (leeg)
|
||||
//else MJOB: Er zijn nog geen mjob inspecties geweest voor dit object. Dit wordt de eerste mjob inspectie.
|
||||
// Volgende mjob inspectiedatum kun je niet berekenen en is dus onbekend (leeg)
|
||||
|
||||
// Plandatum blijft leeg.
|
||||
var fields = [ { dbs: "ins_deelsrtcontrole_key", typ: "key", seq: "ins_s_ins_deelsrtcontrole_key" },
|
||||
|
||||
@@ -591,8 +591,6 @@ function ins_list (pautfunction, params)
|
||||
|
||||
if (inspDone) return lclass;
|
||||
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
|
||||
@@ -603,38 +601,6 @@ 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 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 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 = (eenheid == 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.
|
||||
}
|
||||
|
||||
var dt1 = new Date(dt);
|
||||
var dt2 = new Date(dt);
|
||||
if (eenheid == 4 && mode == 0)
|
||||
@@ -811,56 +777,7 @@ 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 txt;
|
||||
var dt;
|
||||
var nonext = oRs("nonext").Value == 1;
|
||||
var ismjob = oRs("ctr_ismjob").Value == 1;
|
||||
if (nonext && !ismjob)
|
||||
{ // 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("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
|
||||
{
|
||||
switch (oRs("ctr_controle_type").Value)
|
||||
{
|
||||
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_eenheid").Value == 0? toDateTimeString(dt) : toDateString(dt));
|
||||
break;
|
||||
} // Eerste certificering.
|
||||
}
|
||||
}
|
||||
return txt;
|
||||
}
|
||||
|
||||
var inspectie = (inspDone? oRs("inspectie_date").Value : oRs("inspectie_next").Value);
|
||||
|
||||
if (ismjob)
|
||||
|
||||
@@ -333,8 +333,7 @@ else
|
||||
var status_str = "";
|
||||
switch (ins_deelsrtcontrole_status)
|
||||
{
|
||||
case -1: status_str = L("lcl_ins_controle_first");
|
||||
break;
|
||||
case -1:
|
||||
case 6: status_str = L("lcl_ins_controle_new"); // Als status "Voltooid(6)" is, dan nieuwe invoer van inspectie. Voor voltooide inspecties wordt bestand ins_inspect_hist.asp gebruikt.
|
||||
break;
|
||||
case 0:
|
||||
|
||||
@@ -270,23 +270,6 @@ else
|
||||
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 txt;
|
||||
var dt;
|
||||
var nonext = oRs("nonext").Value == 1;
|
||||
if (nonext)
|
||||
{ // Er is nog geen inspectie geweest. Eerste controle moet nog plaatsvinden.
|
||||
switch (oRs("ctr_controle_type").Value)
|
||||
{
|
||||
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.
|
||||
}
|
||||
return txt;
|
||||
}
|
||||
|
||||
var inspectie = inspDone? oRs("inspectie_date").Value : oRs("inspectie_next").Value;
|
||||
|
||||
var inspectie_eenheid = (isPeriodiekeTaken ? oRs("inspectie_eenheid").Value : oRs("eenheid").Value);
|
||||
@@ -339,7 +322,7 @@ else
|
||||
{
|
||||
var inspectie_next = fnInspectie(oRs);
|
||||
var inspectie_plan = fnPlandatum(oRs);
|
||||
return inspectie_plan != ""? inspectie_plan : (inspectie_next != L("lcl_ins_controle_first") ? inspectie_next : "");
|
||||
return inspectie_plan != ""? inspectie_plan : inspectie_next;
|
||||
};
|
||||
|
||||
function fncolsubHeader(oRs)
|
||||
|
||||
Reference in New Issue
Block a user