AKZA#51507: Taken aan objecten.
svn path=/Website/branches/v2017.2/; revision=36262
This commit is contained in:
370
APPL/INS/ins.inc
370
APPL/INS/ins.inc
@@ -574,179 +574,195 @@ ins = {checkAutLevel:
|
||||
var hasInspect = !oRs.eof;
|
||||
oRs.Close();
|
||||
|
||||
var mjb_freeze_year = S("mjb_freeze_year");
|
||||
var mjb_start_year = S("mjb_start_year");
|
||||
// Voor het bepalen van de autorisatie voor inspecties, moet gekeken worden naar de gegevens van de Active Situatie (AS).
|
||||
var sql = "SELECT insp.ins_deelsrtcontrole_key"
|
||||
+ " , insp.ins_deelsrtcontrole_status"
|
||||
+ " , insp.vervaldatum"
|
||||
+ " , insp.isc_mode"
|
||||
+ " , insp.ctr_discipline_key"
|
||||
+ " , insp.ctr_ismjob"
|
||||
+ " , options"
|
||||
// Moment inspectie pas kunnen opslaan op of na geplande inspectiedatum.
|
||||
// Is in de moment modus de invoer na het volgende berekende inspectietijdstip? Voor interval modus is dit altijd het geval.
|
||||
// Als er nog nooit is geinspecteerd en er is er nog geen ingepland dan is het ook ok.
|
||||
// Als de inspectie gestart of gereed gemeld is dan is het ook ok, want anders had de inspectie nooit begonnen mogen worden.
|
||||
+ " , CASE"
|
||||
+ " WHEN insp.isc_mode = 1"
|
||||
+ " THEN 1"
|
||||
+ " WHEN (insp.ins_deelsrtcontrole_status IS NULL AND 1 = " + (hasInspect? 0 : 1) + ") OR" // Er is nog nooit geinspecteerd en er is er geen ingepland.
|
||||
+ " insp.ins_deelsrtcontrole_status = 2 OR"
|
||||
+ " insp.ins_deelsrtcontrole_status = 5"
|
||||
+ " THEN 1"
|
||||
+ " WHEN insp.ins_deelsrtcontrole_status = 6 AND" // insp.isc_mode = 0 want anders is de vorige when geldig.
|
||||
+ " SYSDATE >= CASE insp.eenheid"
|
||||
+ " WHEN 0"
|
||||
+ " THEN TRUNC (insp.inspectie_next, 'HH')"
|
||||
+ " ELSE TRUNC (insp.inspectie_next, 'DD')"
|
||||
+ " END"
|
||||
+ " THEN 1"
|
||||
+ " WHEN insp.ins_deelsrtcontrole_status = 0 AND"
|
||||
+ " SYSDATE >= COALESCE (CASE insp.eenheid" // insp.isc_mode = 0 want anders is de vorige when geldig.
|
||||
+ " WHEN 0"
|
||||
+ " THEN TRUNC (insp.plandatum, 'HH')"
|
||||
+ " ELSE TRUNC (insp.plandatum, 'DD') END"
|
||||
+ " , CASE insp.eenheid"
|
||||
+ " WHEN 0"
|
||||
+ " THEN TRUNC (insp.inspectie_next, 'HH')"
|
||||
+ " ELSE TRUNC (insp.inspectie_next, 'DD')"
|
||||
+ " END)"
|
||||
+ " THEN 1"
|
||||
+ " ELSE 0"
|
||||
+ " END invoerAfterNext"
|
||||
// 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.
|
||||
+ " , CASE"
|
||||
+ " WHEN"
|
||||
+ " EXTRACT(YEAR FROM "
|
||||
+ " COALESCE(insp.plandatum"
|
||||
+ " , CASE WHEN insp.laatste IS NULL THEN insp.ins_srtcontroledl_xcp_startdat ELSE NULL END"
|
||||
+ " , CASE"
|
||||
+ " WHEN insp.laatste IS NULL AND insp.ctr_controle_type = 1" // 1: Controle.
|
||||
+ " THEN TO_DATE('" + mjb_freeze_year + "', 'YYYY')"
|
||||
+ " WHEN insp.laatste IS NULL AND insp.ctr_controle_type != 1" // 2: Vervanging, 3: Certificering.
|
||||
+ " THEN" // Er is nog geen inspectie geweest
|
||||
+ " CASE"
|
||||
+ " WHEN EXTRACT(YEAR FROM insp.inspectie_next0) > " + mjb_freeze_year
|
||||
+ " THEN" // Nextdate is na de freeze datum.
|
||||
+ " CASE"
|
||||
+ " WHEN EXTRACT(YEAR FROM ADD_MONTHS(insp.inspectie_next0, -1 * 12 * insp.ins_srtcontrole_periode)) >= " + mjb_start_year + " AND"
|
||||
+ " EXTRACT(YEAR FROM ADD_MONTHS(insp.inspectie_next0, -1 * 12 * insp.ins_srtcontrole_periode)) != EXTRACT(YEAR FROM insp.ins_deel_aanmaak)"
|
||||
+ " THEN TO_DATE('" + mjb_freeze_year + "', 'YYYY')" // Vorige inspectie ligt tussen start en freeze jaar (Nu ligt er ook tussen).
|
||||
+ " ELSE insp.inspectie_next0"
|
||||
+ " END"
|
||||
+ " ELSE" // Nextdate is voor of in het freeze jaar.
|
||||
+ " CASE"
|
||||
+ " WHEN EXTRACT(YEAR FROM insp.inspectie_next0) >= " + mjb_start_year
|
||||
+ " THEN TO_DATE('" + mjb_freeze_year + "', 'YYYY')" // Nextdate tussen start en freeze jaar.
|
||||
+ " ELSE ADD_MONTHS(insp.inspectie_next0, 12 * insp.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 insp.inspectie_next0) > EXTRACT(YEAR FROM SYSDATE)"
|
||||
+ " THEN insp.inspectie_next0" // Volgende inspectie is in de toekomst.
|
||||
+ " ELSE TO_DATE('" + mjb_freeze_year + "', 'YYYY')" // Laatst ingeplande inspectie is nog niet uitgevoerd.
|
||||
+ " END"
|
||||
+ " END)) = " + mjb_freeze_year
|
||||
+ " THEN 1"
|
||||
+ " ELSE 0"
|
||||
+ " END isFreezeYear"
|
||||
+ " FROM ("
|
||||
// De view ins_v_defined_inspect_xcp levert de volgende regels op
|
||||
// Alle Active Situatie (AS) soort controle's die geen uitzondering (XCP) record hebben maar wel een scenario.
|
||||
// en
|
||||
// Alle Active Situatie (AS) soort controle's die:
|
||||
// a) geen uitzondering (XCP) record hebben en geen scenario.
|
||||
// b) een uitzondering (XCP) record hebben.
|
||||
// Hier niet van belang: Alle soort controles van de scenario's (AND xcp.ins_scenario_key = 1).
|
||||
+ " SELECT idsc.ins_deelsrtcontrole_key"
|
||||
+ " , idsc.ins_deelsrtcontrole_datum"
|
||||
+ " , idsc.ins_deelsrtcontrole_status"
|
||||
+ " , xcp.ins_srtcontroledl_xcp_eind vervaldatum"
|
||||
+ " , xcp.ins_srtcontrole_mode isc_mode"
|
||||
+ " , xcp.ctr_discipline_key"
|
||||
+ " , xcp.ins_srtcontrole_options options"
|
||||
+ " , xcp.ins_srtcontrole_eenheid eenheid"
|
||||
+ " , xcp.ins_srtcontrole_periode"
|
||||
+ " , xcp.ins_deel_aanmaak"
|
||||
+ " , xcp.ctr_controle_type"
|
||||
+ " , xcp.ctr_ismjob"
|
||||
+ " , idsc.ins_deelsrtcontrole_plandatum plandatum"
|
||||
+ " , ins_srtcontroledl_xcp_startdat"
|
||||
+ " , CASE"
|
||||
+ " WHEN 1 = " + (hasInspect? 0 : 1) // lastinspect IS NULL
|
||||
+ " THEN (SELECT d.ins_deel_aanmaak FROM ins_deel d WHERE d.ins_deel_key = " + pins_deel_key + ")"
|
||||
+ " WHEN idsc.ins_deelsrtcontrole_status IN (0, 2)"
|
||||
+ " THEN ins_deelsrtcontrole_datum_org"
|
||||
+ " ELSE fac.nextcyclusdate(CASE"
|
||||
+ " WHEN xcp.ins_srtcontrole_mode = 0"
|
||||
+ " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus (0). Uitgaan van eigenlijke/orginele inspectiedatum.
|
||||
+ " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus (1). Uitgaan van werkelijke inspectiedatum.
|
||||
+ " END"
|
||||
+ " , xcp.ins_srtcontrole_mode"
|
||||
+ " , xcp.ins_srtcontrole_eenheid"
|
||||
+ " , xcp.ins_srtcontrole_periode"
|
||||
+ " , xcp.ins_srtcontrole_bits"
|
||||
+ " , 1"
|
||||
+ " , xcp.ctr_ismjob)"
|
||||
+ " END inspectie_next"
|
||||
+ " , ins.nextcyclusdate(xcp.ins_deel_key, xcp.ins_srtcontrole_key, 1, 0) inspectie_next0"
|
||||
+ " , (SELECT MAX(idsc2.ins_deelsrtcontrole_datum)"
|
||||
+ " FROM ins_deelsrtcontrole idsc2"
|
||||
+ " WHERE idsc2.ins_deel_key = " + pins_deel_key
|
||||
+ " AND idsc2.ins_srtcontrole_key = " + params.srtcont_key
|
||||
+ " AND idsc2.ins_scenario_key = 1) laatste"
|
||||
+ " FROM ins_deelsrtcontrole idsc"
|
||||
+ " , ins_v_defined_inspect_xcp xcp"
|
||||
+ " WHERE xcp.ins_srtcontrole_key = idsc.ins_srtcontrole_key(+)" // Er kan nog voor de eerste keer geinspecteerd moeten worden.
|
||||
+ " AND xcp.ins_srtcontrole_key = " + params.srtcont_key
|
||||
+ " AND xcp.ins_deel_key = " + pins_deel_key
|
||||
+ " AND idsc.ins_deel_key(+) = " + pins_deel_key
|
||||
+ " AND idsc.ins_scenario_key(+) = " + params.scen_key
|
||||
// Neem voor de rechten de xcp van de Active Situatie (AS). Die bepaalt of de soort controle vervallen is.
|
||||
+ " AND xcp.ins_scenario_key = 1"
|
||||
+ (params.deelsrtcont_key > 0
|
||||
? " AND idsc.ins_deelsrtcontrole_key = " + params.deelsrtcont_key
|
||||
: " AND (idsc.ins_deelsrtcontrole_key IS NULL OR"
|
||||
+ " idsc.ins_deelsrtcontrole_key = (SELECT MAX(idsc2.ins_deelsrtcontrole_key)"
|
||||
+ " FROM ins_deelsrtcontrole idsc2"
|
||||
+ " WHERE idsc2.ins_deel_key = " + pins_deel_key
|
||||
+ " AND idsc2.ins_srtcontrole_key = " + params.srtcont_key
|
||||
+ " AND idsc2.ins_scenario_key = " + params.scen_key
|
||||
+ " ))")
|
||||
+ " ) insp"
|
||||
+ " ORDER BY insp.ins_deelsrtcontrole_datum DESC";
|
||||
var sql = "SELECT xcp.ins_srtcontrole_periode"
|
||||
+ " , xcp.ctr_discipline_key"
|
||||
+ " , xcp.ctr_ismjob"
|
||||
+ " FROM ins_v_defined_inspect_xcp xcp"
|
||||
+ " WHERE xcp.ins_srtcontrole_key = " + params.srtcont_key
|
||||
+ " AND xcp.ins_deel_key = " + pins_deel_key
|
||||
+ " AND xcp.ins_scenario_key = 1"
|
||||
var oRs = Oracle.Execute(sql);
|
||||
// Waarden moeten aanwezig zijn. Mocht dat niet zo zijn dan is er iets fout.
|
||||
// Als er nog nooit een inspectie is geweest wordt de status -1.
|
||||
// Als de laatste inspectie is afgerond (stutus is 6) moet er een nieuwe inspectie gestart worden.
|
||||
var ins_deelsrtcontrole_status = oRs("ins_deelsrtcontrole_status").Value != null? oRs("ins_deelsrtcontrole_status").Value : -1;
|
||||
var vervaldatum = oRs("vervaldatum").Value != null? new Date(oRs("vervaldatum").Value) : null;
|
||||
var periode = oRs("ins_srtcontrole_periode").Value;
|
||||
var ctr_discipline_key = oRs("ctr_discipline_key").Value;
|
||||
var ctr_ismjob = oRs("ctr_ismjob").Value == 1;
|
||||
var isc_options = oRs("options").Value;
|
||||
var vervallen = vervaldatum != null && vervaldatum < new Date();
|
||||
var invoerAfterNext = oRs("invoerAfterNext").Value == 1;
|
||||
var isFreezeYear = oRs("isFreezeYear").Value == 1;
|
||||
oRs.Close();
|
||||
|
||||
var ins_deelsrtcontrole_status = -1;
|
||||
var vervaldatum = null;
|
||||
var isc_options = 0;
|
||||
var vervallen = false;
|
||||
var invoerAfterNext = false;
|
||||
var isFreezeYear = false;
|
||||
if (periode > 0)
|
||||
{
|
||||
var mjb_freeze_year = S("mjb_freeze_year");
|
||||
var mjb_start_year = S("mjb_start_year");
|
||||
// Voor het bepalen van de autorisatie voor inspecties, moet gekeken worden naar de gegevens van de Active Situatie (AS).
|
||||
var sql = "SELECT insp.ins_deelsrtcontrole_key"
|
||||
+ " , insp.ins_deelsrtcontrole_status"
|
||||
+ " , insp.vervaldatum"
|
||||
+ " , insp.isc_mode"
|
||||
+ " , options"
|
||||
// Moment inspectie pas kunnen opslaan op of na geplande inspectiedatum.
|
||||
// Is in de moment modus de invoer na het volgende berekende inspectietijdstip? Voor interval modus is dit altijd het geval.
|
||||
// Als er nog nooit is geinspecteerd en er is er nog geen ingepland dan is het ook ok.
|
||||
// Als de inspectie gestart of gereed gemeld is dan is het ook ok, want anders had de inspectie nooit begonnen mogen worden.
|
||||
+ " , CASE"
|
||||
+ " WHEN insp.isc_mode = 1"
|
||||
+ " THEN 1"
|
||||
+ " WHEN (insp.ins_deelsrtcontrole_status IS NULL AND 1 = " + (hasInspect? 0 : 1) + ") OR" // Er is nog nooit geinspecteerd en er is er geen ingepland.
|
||||
+ " insp.ins_deelsrtcontrole_status = 2 OR"
|
||||
+ " insp.ins_deelsrtcontrole_status = 5"
|
||||
+ " THEN 1"
|
||||
+ " WHEN insp.ins_deelsrtcontrole_status = 6 AND" // insp.isc_mode = 0 want anders is de vorige when geldig.
|
||||
+ " SYSDATE >= CASE insp.eenheid"
|
||||
+ " WHEN 0"
|
||||
+ " THEN TRUNC (insp.inspectie_next, 'HH')"
|
||||
+ " ELSE TRUNC (insp.inspectie_next, 'DD')"
|
||||
+ " END"
|
||||
+ " THEN 1"
|
||||
+ " WHEN insp.ins_deelsrtcontrole_status = 0 AND"
|
||||
+ " SYSDATE >= COALESCE (CASE insp.eenheid" // insp.isc_mode = 0 want anders is de vorige when geldig.
|
||||
+ " WHEN 0"
|
||||
+ " THEN TRUNC (insp.plandatum, 'HH')"
|
||||
+ " ELSE TRUNC (insp.plandatum, 'DD') END"
|
||||
+ " , CASE insp.eenheid"
|
||||
+ " WHEN 0"
|
||||
+ " THEN TRUNC (insp.inspectie_next, 'HH')"
|
||||
+ " ELSE TRUNC (insp.inspectie_next, 'DD')"
|
||||
+ " END)"
|
||||
+ " THEN 1"
|
||||
+ " ELSE 0"
|
||||
+ " END invoerAfterNext"
|
||||
// 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.
|
||||
+ " , CASE"
|
||||
+ " WHEN"
|
||||
+ " EXTRACT(YEAR FROM "
|
||||
+ " COALESCE(insp.plandatum"
|
||||
+ " , CASE WHEN insp.laatste IS NULL THEN insp.ins_srtcontroledl_xcp_startdat ELSE NULL END"
|
||||
+ " , CASE"
|
||||
+ " WHEN insp.laatste IS NULL AND insp.ctr_controle_type = 1" // 1: Controle.
|
||||
+ " THEN TO_DATE('" + mjb_freeze_year + "', 'YYYY')"
|
||||
+ " WHEN insp.laatste IS NULL AND insp.ctr_controle_type != 1" // 2: Vervanging, 3: Certificering.
|
||||
+ " THEN" // Er is nog geen inspectie geweest
|
||||
+ " CASE"
|
||||
+ " WHEN EXTRACT(YEAR FROM insp.inspectie_next0) > " + mjb_freeze_year
|
||||
+ " THEN" // Nextdate is na de freeze datum.
|
||||
+ " CASE"
|
||||
+ " WHEN EXTRACT(YEAR FROM ADD_MONTHS(insp.inspectie_next0, -1 * 12 * insp.ins_srtcontrole_periode)) >= " + mjb_start_year + " AND"
|
||||
+ " EXTRACT(YEAR FROM ADD_MONTHS(insp.inspectie_next0, -1 * 12 * insp.ins_srtcontrole_periode)) != EXTRACT(YEAR FROM insp.ins_deel_aanmaak)"
|
||||
+ " THEN TO_DATE('" + mjb_freeze_year + "', 'YYYY')" // Vorige inspectie ligt tussen start en freeze jaar (Nu ligt er ook tussen).
|
||||
+ " ELSE insp.inspectie_next0"
|
||||
+ " END"
|
||||
+ " ELSE" // Nextdate is voor of in het freeze jaar.
|
||||
+ " CASE"
|
||||
+ " WHEN EXTRACT(YEAR FROM insp.inspectie_next0) >= " + mjb_start_year
|
||||
+ " THEN TO_DATE('" + mjb_freeze_year + "', 'YYYY')" // Nextdate tussen start en freeze jaar.
|
||||
+ " ELSE ADD_MONTHS(insp.inspectie_next0, 12 * insp.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 insp.inspectie_next0) > EXTRACT(YEAR FROM SYSDATE)"
|
||||
+ " THEN insp.inspectie_next0" // Volgende inspectie is in de toekomst.
|
||||
+ " ELSE TO_DATE('" + mjb_freeze_year + "', 'YYYY')" // Laatst ingeplande inspectie is nog niet uitgevoerd.
|
||||
+ " END"
|
||||
+ " END)) = " + mjb_freeze_year
|
||||
+ " THEN 1"
|
||||
+ " ELSE 0"
|
||||
+ " END isFreezeYear"
|
||||
+ " FROM ("
|
||||
// De view ins_v_defined_inspect_xcp levert de volgende regels op
|
||||
// Alle Active Situatie (AS) soort controle's die geen uitzondering (XCP) record hebben maar wel een scenario.
|
||||
// en
|
||||
// Alle Active Situatie (AS) soort controle's die:
|
||||
// a) geen uitzondering (XCP) record hebben en geen scenario.
|
||||
// b) een uitzondering (XCP) record hebben.
|
||||
// Hier niet van belang: Alle soort controles van de scenario's (AND xcp.ins_scenario_key = 1).
|
||||
+ " SELECT idsc.ins_deelsrtcontrole_key"
|
||||
+ " , idsc.ins_deelsrtcontrole_datum"
|
||||
+ " , idsc.ins_deelsrtcontrole_status"
|
||||
+ " , xcp.ins_srtcontroledl_xcp_eind vervaldatum"
|
||||
+ " , xcp.ins_srtcontrole_mode isc_mode"
|
||||
+ " , xcp.ins_srtcontrole_options options"
|
||||
+ " , xcp.ins_srtcontrole_eenheid eenheid"
|
||||
+ " , xcp.ins_srtcontrole_periode"
|
||||
+ " , xcp.ins_deel_aanmaak"
|
||||
+ " , xcp.ctr_controle_type"
|
||||
+ " , idsc.ins_deelsrtcontrole_plandatum plandatum"
|
||||
+ " , ins_srtcontroledl_xcp_startdat"
|
||||
+ " , CASE"
|
||||
+ " WHEN 1 = " + (hasInspect? 0 : 1) // lastinspect IS NULL
|
||||
+ " THEN (SELECT d.ins_deel_aanmaak FROM ins_deel d WHERE d.ins_deel_key = " + pins_deel_key + ")"
|
||||
+ " WHEN idsc.ins_deelsrtcontrole_status IN (0, 2)"
|
||||
+ " THEN ins_deelsrtcontrole_datum_org"
|
||||
+ " ELSE fac.nextcyclusdate(CASE"
|
||||
+ " WHEN xcp.ins_srtcontrole_mode = 0"
|
||||
+ " THEN idsc.ins_deelsrtcontrole_datum_org" // Moment modus (0). Uitgaan van eigenlijke/orginele inspectiedatum.
|
||||
+ " ELSE idsc.ins_deelsrtcontrole_datum" // Interval modus (1). Uitgaan van werkelijke inspectiedatum.
|
||||
+ " END"
|
||||
+ " , xcp.ins_srtcontrole_mode"
|
||||
+ " , xcp.ins_srtcontrole_eenheid"
|
||||
+ " , xcp.ins_srtcontrole_periode"
|
||||
+ " , xcp.ins_srtcontrole_bits"
|
||||
+ " , 1"
|
||||
+ " , xcp.ctr_ismjob)"
|
||||
+ " END inspectie_next"
|
||||
+ " , ins.nextcyclusdate(xcp.ins_deel_key, xcp.ins_srtcontrole_key, 1, 0) inspectie_next0"
|
||||
+ " , (SELECT MAX(idsc2.ins_deelsrtcontrole_datum)"
|
||||
+ " FROM ins_deelsrtcontrole idsc2"
|
||||
+ " WHERE idsc2.ins_deel_key = " + pins_deel_key
|
||||
+ " AND idsc2.ins_srtcontrole_key = " + params.srtcont_key
|
||||
+ " AND idsc2.ins_scenario_key = 1) laatste"
|
||||
+ " FROM ins_deelsrtcontrole idsc"
|
||||
+ " , ins_v_defined_inspect_xcp xcp"
|
||||
+ " WHERE xcp.ins_srtcontrole_key = idsc.ins_srtcontrole_key(+)" // Er kan nog voor de eerste keer geinspecteerd moeten worden.
|
||||
+ " AND xcp.ins_srtcontrole_key = " + params.srtcont_key
|
||||
+ " AND xcp.ins_deel_key = " + pins_deel_key
|
||||
+ " AND idsc.ins_deel_key(+) = " + pins_deel_key
|
||||
+ " AND idsc.ins_scenario_key(+) = " + params.scen_key
|
||||
// Neem voor de rechten de xcp van de Active Situatie (AS). Die bepaalt of de soort controle vervallen is.
|
||||
+ " AND xcp.ins_scenario_key = 1"
|
||||
+ (params.deelsrtcont_key > 0
|
||||
? " AND idsc.ins_deelsrtcontrole_key = " + params.deelsrtcont_key
|
||||
: " AND (idsc.ins_deelsrtcontrole_key IS NULL OR"
|
||||
+ " idsc.ins_deelsrtcontrole_key = (SELECT MAX(idsc2.ins_deelsrtcontrole_key)"
|
||||
+ " FROM ins_deelsrtcontrole idsc2"
|
||||
+ " WHERE idsc2.ins_deel_key = " + pins_deel_key
|
||||
+ " AND idsc2.ins_srtcontrole_key = " + params.srtcont_key
|
||||
+ " AND idsc2.ins_scenario_key = " + params.scen_key
|
||||
+ " ))")
|
||||
+ " ) insp"
|
||||
+ " ORDER BY insp.ins_deelsrtcontrole_datum DESC";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
// Waarden moeten aanwezig zijn. Mocht dat niet zo zijn dan is er iets fout.
|
||||
// Als er nog nooit een inspectie is geweest wordt de status -1.
|
||||
// Als de laatste inspectie is afgerond (stutus is 6) moet er een nieuwe inspectie gestart worden.
|
||||
ins_deelsrtcontrole_status = oRs("ins_deelsrtcontrole_status").Value != null? oRs("ins_deelsrtcontrole_status").Value : -1;
|
||||
vervaldatum = oRs("vervaldatum").Value != null? new Date(oRs("vervaldatum").Value) : null;
|
||||
isc_options = oRs("options").Value;
|
||||
vervallen = vervaldatum != null && vervaldatum < new Date();
|
||||
invoerAfterNext = oRs("invoerAfterNext").Value == 1;
|
||||
isFreezeYear = oRs("isFreezeYear").Value == 1;
|
||||
oRs.Close();
|
||||
}
|
||||
|
||||
iresult.invoerAfterNext = invoerAfterNext;
|
||||
|
||||
// Voor CTR alleen discipline autorisatie met 3D ja/nee en read/write autorisatie (fac_functie_min_level = 3)
|
||||
@@ -769,20 +785,22 @@ ins = {checkAutLevel:
|
||||
// Als de inspectie vervallen is moet je alleen nog de lopende inspecties (ingepland of later) kunnen gereedmelden en/of afronden,
|
||||
// zodat deze inspectie afgerond kan worden. Nieuwe inspectie kunnen nooit meer beginnen.
|
||||
// Eerste inspectie of verwerkte inspectie kan niet gewijzigd worden.
|
||||
iresult.canMsuEdit = iresult.writemsu && ins_deelsrtcontrole_status == 6 && !isScenario;
|
||||
iresult.canInspEdit = ((iresult.readuse && ins_deelsrtcontrole_status != -1 && ins_deelsrtcontrole_status != 6) ||
|
||||
iresult.canMsuEdit = periode > 0 && iresult.writemsu && ins_deelsrtcontrole_status == 6 && !isScenario;
|
||||
iresult.canInspEdit = periode > 0 &&
|
||||
((iresult.readuse && ins_deelsrtcontrole_status != -1 && ins_deelsrtcontrole_status != 6) ||
|
||||
iresult.canMsuEdit) &&
|
||||
!vervallen && actief && iresult.hasCTRWrite;
|
||||
iresult.canInspShow = iresult.readuse && !vervallen && (ins_deelsrtcontrole_status >= 0) && iresult.hasCTRRead && !isScenario;
|
||||
iresult.canInspShow = periode > 0 && iresult.readuse && !vervallen && (ins_deelsrtcontrole_status >= 0) &&
|
||||
iresult.hasCTRRead && !isScenario;
|
||||
// Bij eerste inspectie of verwerkte inspectie kan er gepland worden.
|
||||
iresult.canInspPlanReq = iresult.readuse && !vervallen &&
|
||||
iresult.canInspPlanReq = periode > 0 && iresult.readuse && !vervallen &&
|
||||
(ins_deelsrtcontrole_status == -1 || ins_deelsrtcontrole_status == 6) &&
|
||||
actief && iresult.hasCTRWrite &&
|
||||
((isc_options & 1) == 1);
|
||||
iresult.canInspPlan = iresult.canInspPlanReq && !ctr_ismjob;
|
||||
iresult.canInspPlanMjb = iresult.canInspPlanReq && ctr_ismjob;
|
||||
// Bij eerste inspectie, geplande inspectie of verwerkte inspectie kan er gestart worden.
|
||||
iresult.canInspStartReq = iresult.readuse && invoerAfterNext && !vervallen &&
|
||||
iresult.canInspStartReq = periode > 0 && iresult.readuse && invoerAfterNext && !vervallen &&
|
||||
(ins_deelsrtcontrole_status <= 0 || ins_deelsrtcontrole_status == 6) &&
|
||||
actief && iresult.hasCTRWrite &&
|
||||
((isc_options & 2) == 2) &&
|
||||
@@ -793,21 +811,21 @@ ins = {checkAutLevel:
|
||||
// Mocht het bedrag 0 zijn, dan moet er tijdens heb bevriezen een lcl aan de opmerking worden toegevoegd, dat de taak door een hogere prio taak wordt uitgevoerd.
|
||||
iresult.canInspFreeze = iresult.canInspStartReq && isFreezeYear;
|
||||
// Bij eerste inspectie, geplande inspectie, gestarte inspectie of verwerkte inspectie kan er gereedgemeld/afgerond worden.
|
||||
iresult.canInspClose = iresult.readuse && invoerAfterNext &&
|
||||
iresult.canInspClose = periode > 0 && iresult.readuse && invoerAfterNext &&
|
||||
((!vervallen && (ins_deelsrtcontrole_status < 5 || ins_deelsrtcontrole_status == 6)) ||
|
||||
(ins_deelsrtcontrole_status == 0 || ins_deelsrtcontrole_status == 2)) &&
|
||||
actief && iresult.hasCTRWrite &&
|
||||
((isc_options & 4) == 4) &&
|
||||
!isScenario && !ctr_ismjob;
|
||||
// Afronden kan vanuit elke status. Alleen vanuit status Gereed gemeld/Afgemeld(5) kan het zonder gegevens in te vullen.
|
||||
iresult.canInspFinishReq = iresult.readuse && invoerAfterNext &&
|
||||
iresult.canInspFinishReq = periode > 0 && iresult.readuse && invoerAfterNext &&
|
||||
actief && iresult.hasCTRWrite &&
|
||||
((isc_options & 8) == 8) &&
|
||||
!isScenario;
|
||||
iresult.canInspFinish = iresult.canInspFinishReq && !ctr_ismjob;
|
||||
iresult.canInspFinishMjb = iresult.canInspFinishReq && ins_deelsrtcontrole_status == 2 && ctr_ismjob;
|
||||
// Alleen als de inspectie gereedgemeld is kan SNEL afgerond worden zonder gegevens in te vullen.
|
||||
iresult.canInspFastFinish = iresult.canInspFinish && ins_deelsrtcontrole_status == 5;
|
||||
iresult.canInspFastFinish = periode > 0 && iresult.canInspFinish && ins_deelsrtcontrole_status == 5;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user