PLAT#39567: Van MJOB naar MJOP/R.

svn path=/Website/trunk/; revision=35323
This commit is contained in:
Maykel Geerdink
2017-09-14 14:12:21 +00:00
parent ca4c22fdca
commit f65fea7512
2 changed files with 133 additions and 79 deletions

View File

@@ -30,7 +30,6 @@ var ins_key_arr = getFParamIntArray("ins_keys");
var multi = ins_key_arr.length > 1;
var srtcont_key_arr = getFParamIntArray("srtcont_key_arr", []); // Inspectiesoorten.
// var dlsrtcont_key_arr = getFParamIntArray("dlsrtcont_key_arr", []); // Inspecties
// Scenario's. Wordt alleen vanuit mjb_search_list.asp meegegeven voor het verschuiven van plandatum.
// Scenario's zijn planbaar (savemode is "P") maar worden savemode "E" als het deelsrtcontrole record al bestaat (al ingepland is).
@@ -778,7 +777,7 @@ else if (savemode == "E")
}
}
//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)
// Volgende inspectiedatum kun je niet berekenen met de functie ins.nextcyclusdate() en is dus onbekend (leeg)
else
{ // Vindt het ins_srtcontrole_type.
var sql = "SELECT ctr_disc_params_controle_type"
@@ -789,33 +788,52 @@ else if (savemode == "E")
var oRsN = Oracle.Execute(sql);
var srtcontrole_type = oRsN("ctr_disc_params_controle_type").Value;
var thisyear = (new Date()).getFullYear();
var plandatum_jaar = plandatum.getFullYear();
// De inspectiedatum voor taken die nog nooit een inspectie hebben gehad is voor een Vervanging(2) of Certificering(3)
// een periode verder dan de registratie/aanmaak datum van het object.
// De inspectiedatums voor taken die nog nooit een inspectie hebben gehad is voor een Vervanging(2) of Certificering(3)
// n periodes verder dan de registratie/aanmaak datum van het object.
// Voor een controle is er geen inspectiedatum en wordt er dan altijd "Eerste controle" in beeld getoond.
// Ofwel een inspectie kun je direct vanaf het aanmaken van het object doen.
// Ofwel een controle inspectie kun je direct vanaf het aanmaken van het object doen.
// Voor controles(1):
// - Als de planning in dit jaar is dan kan het inspectierecord verwijderd worden.
// - Als de planning in het mjb_freeze_year jaar is dan kan het inspectierecord verwijderd worden.
// Voor Vervanging(2) en Certificering(3):
// - inspectiedatum in het verleden of dit jaar: als de planning in dit jaar is, dan kan het inspectierecord verwijderd worden.
// - inspectiedatum in de toekomst: als de planning in hetzelfde jaar is als de inspectiedatum dan kan het inspectierecord verwijderd worden.
// - Valt de laatste niet gedane inspectiedatum tussen of in het mjb_start_year en het mjb_freeze_year,
// dan is mjb_freeze_year het inspectie jaar.
// Als de planning dan in het inspectie jaar (mjb_freeze_year) is, dan kan het inspectierecord verwijderd worden.
// - Valt de laatste niet gedane inspectiedatum NIET tussen of in het mjb_start_year en het mjb_freeze_year,
// dan is de laatste niet gedane inspectiedatum + periode het inspectie jaar.
// Als de planning dan in hetzelfde jaar als het inspectie jaar (laatste + periode) is, dan kan het inspectierecord verwijderd worden.
if (ismjob && isjaarlijks)
{
if (srtcontrole_type == 1 && plandatum_jaar == thisyear) // Controles(1).
if (srtcontrole_type == 1 && plandatum_jaar == S("mjb_freeze_year")) // Controles(1).
mjobdelete = true;
else if (srtcontrole_type == 2 || srtcontrole_type == 3) // Vervanging(2) of Certificering(3).
{ // Bereken de volgende inspectiedatum.
// Alleen Active Situatie (AS) soort controle's kunnen gewijzigd worden dus voor scenario key moet 1 (of null) genomen worden.
sql = "SELECT ins.nextcyclusdate (" + ingesloten[0].ins_key
+ ", " + ingesloten[0].srtcont_key
+ ", " + ingesloten[0].scen_key
+ ", 0) nextdate FROM DUAL" // 1-ste vandaag of in de toekomst(0).
+ " , " + ingesloten[0].srtcont_key
+ " , " + ingesloten[0].scen_key
+ " , 0) nextdate" // 1-ste vandaag of in de toekomst(0).
+ " , xcp.ins_srtcontrole_periode"
+ " FROM ins_v_defined_inspect_xcp xcp"
+ " WHERE xcp.ins_deel_key = " + ingesloten[0].ins_key
+ " AND xcp.ins_srtcontrole_key = " + ingesloten[0].srtcont_key
+ " AND xcp.ins_scenario_key = " + ingesloten[0].scen_key
oRsN = Oracle.Execute(sql);
var nextdate = new Date(oRsN("nextdate").Value);
var nextdate_jaar = nextdate.getFullYear();
if ((nextdate_jaar <= thisyear && plandatum_jaar == thisyear) ||
(nextdate_jaar > thisyear && plandatum_jaar == nextdate_jaar))
var periode = oRsN("ins_srtcontrole_periode").Value
var nextdate_jaar_before = nextdate_jaar - periode
// Als nextdate_jaar_before of nextdate_jaar binnen mjb_start_year en mjb_freeze_year valt en de planning in het mjb_freeze_year jaar is
// of
// als nextdate_jaar_before voor het mjb_start_year jaar valt en nextdate_jaar na het mjb_freeze_year jaar
// dan kan het inspectie record verwijderd worden.
if ((((nextdate_jaar_before >= S("mjb_start_year") && nextdate_jaar_before <= S("mjb_freeze_year")) ||
(nextdate_jaar >= S("mjb_start_year") && nextdate_jaar <= S("mjb_freeze_year"))) &&
plandatum_jaar == S("mjb_freeze_year")) ||
((nextdate_jaar_before < S("mjb_start_year") && nextdate_jaar > S("mjb_freeze_year")) &&
plandatum_jaar == nextdate_jaar)
)
mjobdelete = true;
}
}

View File

@@ -236,7 +236,7 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
jaar = L("lcl_mjb_original").format(L("lcl_ins_controle_first").toLowerCase());
else
// Oorspronkelijke jaar weergeven.
jaar = L("lcl_mjb_original").format(data.vervangingsjaar_0);
jaar = L("lcl_mjb_original").format(data.org_nextdate);
}
$("#timetip").html(jaar)
@@ -397,59 +397,6 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
// of anders: ins_deel_aanmaak
// waarbij verondersteld wordt dat inspecties in het verleden wel zijn uitgevoerd
// Bepaling in welk jaar er een inspectie is gepland.
// 1) In het jaar van de plandatum.
// 2) In het jaar van de startdatum.
// 3) a) Laatste inspectie is NULL (eerste inspectie moet nog komen) en het is een Controle(1).
// 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) 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?
// Ja) Volgende inspectie is in het freeze jaar.
// Nee) Volgende inspectie is in het jaar "nextdatum + periode".
// c) Laatste inspectie is niet NULL. Er is al 1 of meerdere keren geinspecteerd.
// Ligt de laatst ingeplande inspectie (nextdate) na dit jaar?
// Ja) Volgende inspectie is het jaar van de nextdate (in de toekomst).
// Nee) Volgende inspectie is in het freeze jaar.
var vervangingsjaar = "EXTRACT (YEAR FROM COALESCE(c.plandatum" // Plandatum.
+ " , CASE" // Eventueel startdatum (ins_srtcontroledl_xcp_startdat) i.g.v. als er nog geen inspectie heeft plaatsgevonden.
+ " WHEN c.laatste IS NULL" // Als er al een inspectie is geweest, is de startdatum niet meer van belang.
+ " THEN e.ins_srtcontroledl_xcp_startdat"
+ " ELSE NULL"
+ " END"
+ " , CASE" // Berekenen jaar.
+ " WHEN c.laatste IS NULL AND e.ctr_controle_type = 1" // 1: Controle.
+ " THEN TO_DATE('" + mjb_freeze_year + "', 'YYYY')"
+ " WHEN c.laatste IS NULL AND e.ctr_controle_type != 1" // 2: Vervanging, 3: Certificering.
+ " THEN" // Er is nog geen inspectie geweest
+ " CASE"
+ " WHEN EXTRACT(YEAR FROM e.nextdate) > " + mjb_freeze_year
+ " THEN" // Nextdate is na de freeze datum.
+ " CASE"
+ " WHEN EXTRACT(YEAR FROM ADD_MONTHS(e.nextdate, -1 * 12 * e.ins_srtcontrole_periode)) >= " + mjb_start_year + " AND"
+ " EXTRACT(YEAR FROM ADD_MONTHS(e.nextdate, -1 * 12 * e.ins_srtcontrole_periode)) != EXTRACT(YEAR FROM e.ins_deel_aanmaak)"
+ " THEN TO_DATE('" + mjb_freeze_year + "', 'YYYY')" // Nu en vorige inspectie liggen tussen start en freeze jaar.
+ " ELSE e.nextdate"
+ " END"
+ " ELSE" // Nextdate is voor of in het freeze jaar.
+ " CASE"
+ " WHEN EXTRACT(YEAR FROM e.nextdate) >= " + mjb_start_year
+ " THEN TO_DATE('" + mjb_freeze_year + "', 'YYYY')" // Nextdate tussen start en freeze jaar.
+ " ELSE ADD_MONTHS(e.nextdate, 12 * e.ins_srtcontrole_periode)" // Nextdate voor het start jaar.
+ " END"
+ " END"
+ " ELSE" // Laatste IS NOT NULL. Er is al een inspectie geweest.
+ " CASE"
+ " WHEN EXTRACT(YEAR FROM e.nextdate) > EXTRACT(YEAR FROM SYSDATE)"
+ " THEN e.nextdate" // Volgende inspectie is in de toekomst.
+ " ELSE TO_DATE('" + mjb_freeze_year + "', 'YYYY')" // Laatst ingeplande inspectie is nog niet uitgevoerd.
+ " END"
+ " END))";
// SQL van objecten met hun eerste vervanging
var sql_componenten =
"SELECT e.ins_deel_key"
@@ -464,8 +411,97 @@ var vervangingsjaar = "EXTRACT (YEAR FROM COALESCE(c.plandatum" // Pl
+ " , e.ins_srtcontrole_periode"
+ " , e.ins_srtcontrole_percentage"
+ " , e.ins_srtcontrole_opmerking"
+ " , " + vervangingsjaar + " vervangingsjaar_0"
+ " , " + vervangingsjaar + " vervangingsjaar"
// Bepaling in welk jaar er een inspectie is gepland.
// 1) In het jaar van de plandatum.
// 2) In het jaar van de startdatum.
// 3) a) Laatste inspectie is NULL (eerste inspectie moet nog komen) en het is een Controle(1).
// 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) 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?
// Ja) Volgende inspectie is in het freeze jaar.
// Nee) Volgende inspectie is in het jaar "nextdatum + periode".
// c) Laatste inspectie is niet NULL. Er is al 1 of meerdere keren geinspecteerd.
// Ligt de laatst ingeplande inspectie (nextdate) na dit jaar?
// Ja) Volgende inspectie is het jaar van de nextdate (in de toekomst).
// Nee) Volgende inspectie is in het freeze jaar.
+ " , EXTRACT (YEAR FROM COALESCE(c.plandatum" // Plandatum.
+ " , CASE" // Eventueel startdatum (ins_srtcontroledl_xcp_startdat) i.g.v. als er nog geen inspectie heeft plaatsgevonden.
+ " WHEN c.laatste IS NULL" // Als er al een inspectie is geweest, is de startdatum niet meer van belang.
+ " THEN e.ins_srtcontroledl_xcp_startdat"
+ " ELSE NULL"
+ " END"
+ " , CASE" // Berekenen jaar.
+ " WHEN c.laatste IS NULL AND e.ctr_controle_type = 1" // 1: Controle.
+ " THEN TO_DATE('" + mjb_freeze_year + "', 'YYYY')"
+ " WHEN c.laatste IS NULL AND e.ctr_controle_type != 1" // 2: Vervanging, 3: Certificering.
+ " THEN" // Er is nog geen inspectie geweest
+ " CASE"
+ " WHEN EXTRACT(YEAR FROM e.nextdate) > " + mjb_freeze_year
+ " THEN" // Nextdate is na de freeze datum.
+ " CASE"
+ " WHEN EXTRACT(YEAR FROM ADD_MONTHS(e.nextdate, -1 * 12 * e.ins_srtcontrole_periode)) >= " + mjb_start_year + " AND"
+ " EXTRACT(YEAR FROM ADD_MONTHS(e.nextdate, -1 * 12 * e.ins_srtcontrole_periode)) != EXTRACT(YEAR FROM e.ins_deel_aanmaak)"
+ " THEN TO_DATE('" + mjb_freeze_year + "', 'YYYY')" // Nu en vorige inspectie liggen tussen start en freeze jaar.
+ " ELSE e.nextdate"
+ " END"
+ " ELSE" // Nextdate is voor of in het freeze jaar.
+ " CASE"
+ " WHEN EXTRACT(YEAR FROM e.nextdate) >= " + mjb_start_year
+ " THEN TO_DATE('" + mjb_freeze_year + "', 'YYYY')" // Nextdate tussen start en freeze jaar.
+ " ELSE ADD_MONTHS(e.nextdate, 12 * e.ins_srtcontrole_periode)" // Nextdate voor het start jaar.
+ " END"
+ " END"
+ " ELSE" // Laatste IS NOT NULL. Er is al een inspectie geweest.
+ " CASE"
+ " WHEN EXTRACT(YEAR FROM e.nextdate) > EXTRACT(YEAR FROM SYSDATE)"
+ " THEN e.nextdate" // Volgende inspectie is in de toekomst.
+ " ELSE TO_DATE('" + mjb_freeze_year + "', 'YYYY')" // Laatst ingeplande inspectie is nog niet uitgevoerd.
+ " END"
+ " END)) vervangingsjaar"
// Eerste inspectie datum bepalen zonder na de plandatum te kijken (orginele inspectie datum).
+ " , EXTRACT (YEAR FROM COALESCE(CASE" // Eventueel startdatum (ins_srtcontroledl_xcp_startdat) i.g.v. als er nog geen inspectie heeft plaatsgevonden.
+ " WHEN c.laatste IS NULL AND" // Als er al een inspectie is geweest, is de startdatum niet meer van belang.
+ " e.ins_srtcontroledl_xcp_startdat IS NOT NULL"
+ " THEN"
+ " CASE"
+ " WHEN EXTRACT(YEAR FROM e.ins_srtcontroledl_xcp_startdat) < " + mjb_freeze_year
+ " THEN TO_DATE('" + mjb_freeze_year + "', 'YYYY')"
+ " ELSE e.ins_srtcontroledl_xcp_startdat"
+ " END"
+ " ELSE NULL"
+ " END"
+ " , CASE" // Berekenen jaar.
+ " WHEN c.laatste IS NULL AND e.ctr_controle_type = 1" // 1: Controle.
+ " THEN TO_DATE('" + mjb_freeze_year + "', 'YYYY')"
+ " WHEN c.laatste IS NULL AND e.ctr_controle_type != 1" // 2: Vervanging, 3: Certificering.
+ " THEN" // Er is nog geen inspectie geweest
+ " CASE"
+ " WHEN EXTRACT(YEAR FROM e.nextdate) > " + mjb_freeze_year
+ " THEN" // Nextdate is na de freeze datum.
+ " CASE"
+ " WHEN EXTRACT(YEAR FROM ADD_MONTHS(e.nextdate, -1 * 12 * e.ins_srtcontrole_periode)) >= " + mjb_start_year + " AND"
+ " EXTRACT(YEAR FROM ADD_MONTHS(e.nextdate, -1 * 12 * e.ins_srtcontrole_periode)) != EXTRACT(YEAR FROM e.ins_deel_aanmaak)"
+ " THEN TO_DATE('" + mjb_freeze_year + "', 'YYYY')" // Nu en vorige inspectie liggen tussen start en freeze jaar.
+ " ELSE e.nextdate"
+ " END"
+ " ELSE" // Nextdate is voor of in het freeze jaar.
+ " CASE"
+ " WHEN EXTRACT(YEAR FROM e.nextdate) >= " + mjb_start_year
+ " THEN TO_DATE('" + mjb_freeze_year + "', 'YYYY')" // Nextdate tussen start en freeze jaar.
+ " ELSE ADD_MONTHS(e.nextdate, 12 * e.ins_srtcontrole_periode)" // Nextdate voor het start jaar.
+ " END"
+ " END"
+ " ELSE" // Laatste IS NOT NULL. Er is al een inspectie geweest.
+ " CASE"
+ " WHEN EXTRACT(YEAR FROM e.nextdate) > EXTRACT(YEAR FROM SYSDATE)"
+ " THEN e.nextdate" // Volgende inspectie is in de toekomst.
+ " ELSE TO_DATE('" + mjb_freeze_year + "', 'YYYY')" // Laatst ingeplande inspectie is nog niet uitgevoerd.
+ " END"
+ " END)) org_nextdate"
+ " , e.ins_deel_aantal"
+ " , e.ins_srtdeel_eenheid"
+ " , e.ins_srtcontrole_eind"
@@ -617,8 +653,8 @@ var vervangingsjaar = "EXTRACT (YEAR FROM COALESCE(c.plandatum" // Pl
+ " , comp.ins_srtcontrole_key"
+ " , comp.ins_srtcontrole_level"
+ " , comp.ins_srtcontrole_omschrijving"
+ " , comp.vervangingsjaar_0"
+ " , comp.vervangingsjaar"
+ " , comp.org_nextdate"
+ " , comp.ins_srtcontrole_periode"
+ " , comp.ins_srtcontrole_opmerking"
+ " , COALESCE (comp.ins_deel_aantal *"
@@ -658,8 +694,8 @@ var vervangingsjaar = "EXTRACT (YEAR FROM COALESCE(c.plandatum" // Pl
+ " , ins_srtcontrole_periode"
+ " , ins_srtcontrole_percentage"
+ " , ins_srtcontrole_opmerking"
+ " , vervangingsjaar_0"
+ " , vervangingsjaar"
+ " , org_nextdate"
+ " , hierlevel"
+ " , ins_deel_aantal"
+ " , ins_srtdeel_eenheid"
@@ -686,8 +722,8 @@ var vervangingsjaar = "EXTRACT (YEAR FROM COALESCE(c.plandatum" // Pl
+ " , ins_srtcontrole_periode"
+ " , ins_srtcontrole_percentage"
+ " , ins_srtcontrole_opmerking"
+ " , vervangingsjaar_0"
+ " , vervangingsjaar"
+ " , org_nextdate"
+ " , 1 hierlevel"
+ " , ins_deel_aantal"
+ " , ins_srtdeel_eenheid"
@@ -717,8 +753,8 @@ var vervangingsjaar = "EXTRACT (YEAR FROM COALESCE(c.plandatum" // Pl
+ " , m.ins_srtcontrole_periode"
+ " , m.ins_srtcontrole_percentage"
+ " , m.ins_srtcontrole_opmerking"
+ " , m.vervangingsjaar_0"
+ " , m.vervangingsjaar + m.ins_srtcontrole_periode"
+ " , m.org_nextdate"
+ " , m.hierlevel + 1"
+ " , m.ins_deel_aantal"
+ " , m.ins_srtdeel_eenheid"
@@ -794,8 +830,8 @@ var vervangingsjaar = "EXTRACT (YEAR FROM COALESCE(c.plandatum" // Pl
+ " , COALESCE(cy.ins_srtcontroledl_xcp_eind, cy.ins_srtcontrole_eind)"
+ " , g.alg_gebouw_vervaldatum))"
+ " ) vervaljaar"
+ " , vervangingsjaar_0"
+ " , vervangingsjaar"
+ " , org_nextdate"
+ " , ins_srtcontrole_afbouwtijd afbouwtijd"
+ " , bedrag"
+ " , cy.ctr_controle_type"
@@ -851,9 +887,9 @@ var vervangingsjaar = "EXTRACT (YEAR FROM COALESCE(c.plandatum" // Pl
+ " , cv.ins_srtcontrole_opmerking"
+ " , cv.ins_srtcontrole_level"
+ " , cv.vervaljaar"
+ (fulldetails?" , cv.vervangingsjaar_0" // Eerstaankomende inspectie: 1-ste dit jaar of in de toekomst.
:" , NULL vervangingsjaar_0")
+ " , cv.vervangingsjaar"
+ (fulldetails?" , org_nextdate" // Eerstaankomende inspectie: 1-ste dit jaar of in de toekomst.
:" , NULL org_nextdate")
+ " , cv.afbouwtijd"
+ " , CASE"
+ " WHEN (SELECT idsc.ins_deelsrtcontrole_key"
@@ -1004,7 +1040,7 @@ var vervangingsjaar = "EXTRACT (YEAR FROM COALESCE(c.plandatum" // Pl
data.insSrtControleKey = oRs("ins_srtcontrole_key").Value;
data.insDeelSrtContrKey = oRs("ins_deelsrtcontrole_key").Value ? oRs("ins_deelsrtcontrole_key").Value : -1;
data.insDeelSrtContrStatus = oRs("ins_deelsrtcontrole_status").Value == null ? -1 : oRs("ins_deelsrtcontrole_status").Value;
data.vervangingsjaar_0 = oRs("vervangingsjaar_0").Value; // Eerstaankomende inspectie vandaag of in de toekomst.
data.org_nextdate = oRs("org_nextdate").Value; // Eerstaankomende inspectie vandaag of in de toekomst.
data.insCtrControleType = oRs("ctr_controle_type").Value;
data.insScenKey = oRs("ins_scenario_key").Value;
}