FSN#36298: 1. Scenario’s (per complex moeten verschillende scenario’s gemaakt moeten kunnen.
svn path=/Website/trunk/; revision=34585
This commit is contained in:
@@ -241,6 +241,20 @@ ins = {checkAutLevel:
|
||||
return statustekst;
|
||||
},
|
||||
|
||||
getscenariostatustext:
|
||||
function (p)
|
||||
{
|
||||
var statustekst = "??";
|
||||
var s = parseInt(p, 10);
|
||||
switch (s) {
|
||||
case 0: { statustekst = L("lcl_ins_new"); break; }
|
||||
case 6: { statustekst = L("lcl_ins_verwerkt"); break; }
|
||||
}
|
||||
if (__Logging > 0)
|
||||
statustekst += " (" + String(p) + ")";
|
||||
return statustekst;
|
||||
},
|
||||
|
||||
updateKenmerkdeel:
|
||||
function(ins_key, params)
|
||||
{ // Wijzigbare flexkenmerken altijd opslaan
|
||||
@@ -553,6 +567,7 @@ ins = {checkAutLevel:
|
||||
var hasInspect = !oRs.eof;
|
||||
oRs.Close();
|
||||
|
||||
// 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"
|
||||
@@ -590,7 +605,62 @@ ins = {checkAutLevel:
|
||||
+ " THEN 1"
|
||||
+ " ELSE 0"
|
||||
+ " END invoerAfterNext"
|
||||
+ " FROM (SELECT idsc.ins_deelsrtcontrole_key"
|
||||
+ " FROM ("
|
||||
// Alle Active Situatie (AS) soort controle's die geen uitzondering (XCP) record hebben maar wel een scenario.
|
||||
+ " SELECT idsc.ins_deelsrtcontrole_key"
|
||||
+ " , idsc.ins_deelsrtcontrole_datum"
|
||||
+ " , idsc.ins_deelsrtcontrole_status"
|
||||
+ " , NULL vervaldatum"
|
||||
+ " , isc.ins_srtcontrole_mode isc_mode"
|
||||
+ " , isc.ctr_discipline_key"
|
||||
+ " , isc.ins_srtcontrole_options options"
|
||||
+ " , isc.ins_srtcontrole_eenheid eenheid"
|
||||
+ " , idsc.ins_deelsrtcontrole_plandatum plandatum"
|
||||
+ " , 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 isc.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"
|
||||
+ " , isc.ins_srtcontrole_mode"
|
||||
+ " , isc.ins_srtcontrole_eenheid"
|
||||
+ " , isc.ins_srtcontrole_periode"
|
||||
+ " , isc.ins_srtcontrole_bits"
|
||||
+ " , 1)"
|
||||
+ " END inspectie_next"
|
||||
+ " FROM ins_srtcontrole isc"
|
||||
+ " , ins_deelsrtcontrole idsc"
|
||||
+ " WHERE isc.ins_srtcontrole_key = idsc.ins_srtcontrole_key(+)" // Er kan nog voor de eerste keer geinspecteerd moeten worden.
|
||||
+ " AND idsc.ins_deel_key(+) = " + pins_deel_key
|
||||
+ (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 NOT EXISTS"
|
||||
+ " (SELECT xcp.ins_srtcontroledl_xcp_key"
|
||||
+ " FROM ins_srtcontroledl_xcp xcp"
|
||||
+ " WHERE xcp.ins_srtcontrole_key = " + params.srtcont_key
|
||||
+ " AND xcp.ins_deel_key = " + pins_deel_key
|
||||
+ " AND xcp.ins_scenario_key IS NULL)"
|
||||
+ " AND EXISTS"
|
||||
+ " (SELECT xcp.ins_srtcontroledl_xcp_key"
|
||||
+ " FROM ins_srtcontroledl_xcp xcp"
|
||||
+ " WHERE xcp.ins_srtcontrole_key = " + params.srtcont_key
|
||||
+ " AND xcp.ins_deel_key = " + pins_deel_key
|
||||
+ " AND xcp.ins_scenario_key IS NOT NULL)"
|
||||
+ " UNION ALL"
|
||||
// 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 IS NULL).
|
||||
+ " SELECT idsc.ins_deelsrtcontrole_key"
|
||||
+ " , idsc.ins_deelsrtcontrole_datum"
|
||||
+ " , idsc.ins_deelsrtcontrole_status"
|
||||
+ " , xcp.ins_srtcontroledl_xcp_eind vervaldatum"
|
||||
@@ -623,6 +693,7 @@ ins = {checkAutLevel:
|
||||
+ " AND xcp.ins_deel_key(+) = " + pins_deel_key
|
||||
+ " AND idsc.ins_deel_key(+) = " + pins_deel_key
|
||||
+ " AND isc.ins_srtcontrole_key = " + params.srtcont_key
|
||||
+ " AND xcp.ins_scenario_key IS NULL"
|
||||
+ (params.deelsrtcont_key > 0
|
||||
? " AND idsc.ins_deelsrtcontrole_key = " + params.deelsrtcont_key
|
||||
: " AND (idsc.ins_deelsrtcontrole_key IS NULL OR"
|
||||
@@ -630,6 +701,9 @@ ins = {checkAutLevel:
|
||||
+ " FROM ins_deelsrtcontrole idsc2"
|
||||
+ " WHERE idsc2.ins_deel_key = " + pins_deel_key
|
||||
+ " AND idsc2.ins_srtcontrole_key = " + params.srtcont_key + "))")
|
||||
//+ (params && params.scen_key > 0
|
||||
// ? " AND xcp.ins_scenario_key = " + params.scen_key
|
||||
// : " AND xcp.ins_scenario_key IS NULL")
|
||||
+ " ) insp"
|
||||
+ " ORDER BY insp.ins_deelsrtcontrole_datum DESC";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
@@ -660,37 +734,44 @@ ins = {checkAutLevel:
|
||||
iresult.canShowXcp = iresult.hasCTRRead && iresult.canRead("WEB_INSMAN"); // Exceptions (xcp) waarden inspecties/taken bekijken (waarden in ins_srtcontroledl_xcp tabel).
|
||||
iresult.canChangeXcp = iresult.hasCTRWrite && iresult.canWrite("WEB_INSMAN"); // Exceptions (xcp) waarden inspecties/taken wijzigen (waarden in ins_srtcontroledl_xcp tabel).
|
||||
|
||||
// Op een scenario heb je geen inspectie rechten. Daar kun je geen inspectie op doen.
|
||||
var isScenario = params.isScenario;
|
||||
// Een nieuwe inspectie mag pas weer aangemaakt worden als de laatste inspectie Afgerond(6) is.
|
||||
// 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;
|
||||
iresult.canMsuEdit = iresult.writemsu && ins_deelsrtcontrole_status == 6 && !isScenario;
|
||||
iresult.canInspEdit = ((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;
|
||||
!vervallen && actief && iresult.hasCTRWrite &&
|
||||
!isScenario;
|
||||
iresult.canInspShow = iresult.readuse && !vervallen && (ins_deelsrtcontrole_status >= 0) && iresult.hasCTRRead && !isScenario;
|
||||
// Bij eerste inspectie of verwerkte inspectie kan er gepland worden.
|
||||
iresult.canInspPlan = iresult.readuse && !vervallen &&
|
||||
(ins_deelsrtcontrole_status == -1 || ins_deelsrtcontrole_status == 6) &&
|
||||
actief && iresult.hasCTRWrite &&
|
||||
((isc_options & 1) == 1);
|
||||
((isc_options & 1) == 1) &&
|
||||
!isScenario;
|
||||
// Bij eerste inspectie, geplande inspectie of verwerkte inspectie kan er gestart worden.
|
||||
iresult.canInspStart = iresult.readuse && invoerAfterNext && !vervallen &&
|
||||
(ins_deelsrtcontrole_status <= 0 || ins_deelsrtcontrole_status == 6) &&
|
||||
actief && iresult.hasCTRWrite &&
|
||||
((isc_options & 2) == 2);
|
||||
((isc_options & 2) == 2) &&
|
||||
!isScenario;
|
||||
// Bij eerste inspectie, geplande inspectie, gestarte inspectie of verwerkte inspectie kan er gereedgemeld/afgerond worden.
|
||||
iresult.canInspClose = 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);
|
||||
((isc_options & 4) == 4) &&
|
||||
!isScenario;
|
||||
// Afronden kan vanuit elke status. Alleen vanuit status Gereed gemeld/Afgemeld(5) kan het zonder gegevens in te vullen.
|
||||
iresult.canInspFinish = iresult.readuse && invoerAfterNext &&
|
||||
//(ins_deelsrtcontrole_status == 5 ||
|
||||
// (ins_deelsrtcontrole_status < 5 && ((isc_options & 4) != 4))) &&
|
||||
actief && iresult.hasCTRWrite &&
|
||||
((isc_options & 8) == 8);
|
||||
((isc_options & 8) == 8) &&
|
||||
!isScenario;
|
||||
// Alleen als de inspectie gereedgemeld is kan SNEL afgerond worden zonder gegevens in te vullen.
|
||||
iresult.canInspFastFinish = iresult.canInspFinish && ins_deelsrtcontrole_status == 5;
|
||||
}
|
||||
|
||||
@@ -28,8 +28,8 @@ FCLTHeader.Requires({ plugins: ["jQuery", "suggest", "kenmerk"],
|
||||
js: ["jquery.timepicker-table.js"],
|
||||
css: ["timePicker-table.css"] });
|
||||
|
||||
var ins_key_arr = getQParamIntArray("ins_keys");
|
||||
var srtcont_key_arr = getQParamIntArray("srtcont_keys");
|
||||
var ins_key_arr = getQParamIntArray("ins_keys", []);
|
||||
var srtcont_key_arr = getQParamIntArray("srtcont_keys", []);
|
||||
var deelsrtcont_arr = getQParamIntArray("deelsrtcont_keys", -1); // Bestaande inspectie indien meegegeven.
|
||||
var multi = ins_key_arr.length > 1; // Er zijn meerdere object keys meegegeven.
|
||||
|
||||
@@ -45,6 +45,7 @@ var tobehandled = 0;
|
||||
var ingesloten = [];
|
||||
var ingeslotensc = [];
|
||||
var ingeslotendsc = [];
|
||||
var ingeslotenscen = [];
|
||||
var canMsuEdit = false; // Alleen voor het wijzigen van inspectie (insEdit). Er geldt dan altijd !multi.
|
||||
// Bepaal de objecten/delen in de selectie die
|
||||
// ook echt ingepland kunnen of mogen worden.
|
||||
@@ -548,9 +549,10 @@ if (ins_key_arr.length == 1)
|
||||
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
|
||||
+ " , di.ins_srtcontrole_info info"
|
||||
+ " , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid) eenheid"
|
||||
+ " , ins.nextcyclusdate(di.ins_deel_key, di.ins_srtcontrole_key, 1) nextcyclusdate"
|
||||
+ " , fac.getdatemillisec(ins.nextcyclusdate(di.ins_deel_key, di.ins_srtcontrole_key, 1)) nextcyclusdatems"
|
||||
+ " , fac.getdatemillisec(ins.nextcyclusdate(di.ins_deel_key, di.ins_srtcontrole_key)) nextcyclusdatems_n"
|
||||
// Alleen Active Situatie (AS) soort controle's kunnen gewijzigd worden dus voor scenario key moet "null" genomen worden.
|
||||
+ " , ins.nextcyclusdate(di.ins_deel_key, di.ins_srtcontrole_key, null, 1) nextcyclusdate"
|
||||
+ " , fac.getdatemillisec(ins.nextcyclusdate(di.ins_deel_key, di.ins_srtcontrole_key, null, 1)) nextcyclusdatems"
|
||||
+ " , fac.getdatemillisec(ins.nextcyclusdate(di.ins_deel_key, di.ins_srtcontrole_key, null)) nextcyclusdatems_n"
|
||||
+ " FROM defined_inspect di"
|
||||
+ " , ins_srtcontroledl_xcp xcp"
|
||||
+ " WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
|
||||
|
||||
@@ -36,32 +36,35 @@ var tobefinished = 0;
|
||||
var ingeslotendsc = [];
|
||||
// Bepaal de objecten/delen in de selectie die ook echt gestart kunnen of mogen worden.
|
||||
var ctrdisc_key = -1;
|
||||
for (var i = 0; i < ins_key_arr.length; i++)
|
||||
if (dlsrtcont_key_arr.length > 0)
|
||||
{
|
||||
// Als er nog geen inspectierecord aangemaakt is, dan deze overslaan. Dan had je Afmelden/Afronden moeten kiezen.
|
||||
if (dlsrtcont_key_arr[i] < 0)
|
||||
continue;
|
||||
for (var i = 0; i < ins_key_arr.length; i++)
|
||||
{
|
||||
// Als er nog geen inspectierecord aangemaakt is, dan deze overslaan. Dan had je Afmelden/Afronden moeten kiezen.
|
||||
if (dlsrtcont_key_arr[i] < 0)
|
||||
continue;
|
||||
|
||||
var sql = "SELECT idsc.ins_srtcontrole_key"
|
||||
+ " , isc.ctr_discipline_key"
|
||||
+ " FROM ins_srtcontrole isc"
|
||||
+ " , ins_deelsrtcontrole idsc"
|
||||
+ " WHERE isc.ins_srtcontrole_key = idsc.ins_srtcontrole_key"
|
||||
+ " AND idsc.ins_deelsrtcontrole_key = " + dlsrtcont_key_arr[i];
|
||||
var oRs = Oracle.Execute(sql);
|
||||
ctrdisc_key = oRs("ctr_discipline_key").Value
|
||||
var sql = "SELECT idsc.ins_srtcontrole_key"
|
||||
+ " , isc.ctr_discipline_key"
|
||||
+ " FROM ins_srtcontrole isc"
|
||||
+ " , ins_deelsrtcontrole idsc"
|
||||
+ " WHERE isc.ins_srtcontrole_key = idsc.ins_srtcontrole_key"
|
||||
+ " AND idsc.ins_deelsrtcontrole_key = " + dlsrtcont_key_arr[i];
|
||||
var oRs = Oracle.Execute(sql);
|
||||
ctrdisc_key = oRs("ctr_discipline_key").Value
|
||||
|
||||
var this_ins = ins.func_enabled_deel(ins_key_arr[i],
|
||||
{srtcont_key: oRs("ins_srtcontrole_key").Value,
|
||||
deelsrtcont_key: dlsrtcont_key_arr[i]
|
||||
});
|
||||
oRs.Close();
|
||||
var this_ins = ins.func_enabled_deel(ins_key_arr[i],
|
||||
{srtcont_key: oRs("ins_srtcontrole_key").Value,
|
||||
deelsrtcont_key: dlsrtcont_key_arr[i]
|
||||
});
|
||||
oRs.Close();
|
||||
|
||||
// Deze actie rond alleen afgemelde inspecties af.
|
||||
if (this_ins.canInspFastFinish)
|
||||
{ // Alle Arrays zijn even groot.
|
||||
ingeslotendsc.push(dlsrtcont_key_arr[i]);
|
||||
tobefinished++;
|
||||
// Deze actie rond alleen afgemelde inspecties af.
|
||||
if (this_ins.canInspFastFinish)
|
||||
{ // Alle Arrays zijn even groot.
|
||||
ingeslotendsc.push(dlsrtcont_key_arr[i]);
|
||||
tobefinished++;
|
||||
}
|
||||
}
|
||||
}
|
||||
lcl.set_dialect(ctrdisc_key, "INS_TAB_DISCIPLINE_KEY");
|
||||
|
||||
@@ -97,6 +97,7 @@ insp = {
|
||||
+ " AND di.ins_deel_key = d.ins_deel_key"
|
||||
+ " AND d.ins_srtdeel_key = s.ins_srtdeel_key"
|
||||
+ " AND di.ins_srtcontrole_periode > 0" // Als de periode 0 is dan de inspecties die gaan komen niet meer tonen.
|
||||
+ " AND di.ins_scenario_key IS NULL"
|
||||
// Als er een voorlopige inspectie is aangemaakt maar nog niet is afgemeld of afgerond, dan hoeft er geen nieuwe inspectie te worden getoond.
|
||||
+ " AND NOT EXISTS (SELECT idsc.ins_deelsrtcontrole_key"
|
||||
+ " FROM ins_deelsrtcontrole idsc"
|
||||
@@ -193,6 +194,7 @@ insp = {
|
||||
+ " AND idsc.ins_controlemode_key = cm.ins_controlemode_key(+)"
|
||||
+ " AND di.ins_deel_key = " + ins_key
|
||||
+ " AND di.ins_srtcontrole_periode > 0" // Als de periode 0 is dan de inspecties die gaan komen niet meer tonen.
|
||||
+ " AND di.ins_scenario_key IS NULL"
|
||||
+ " AND di.ctr_discipline_key IN (SELECT w.ins_discipline_key"
|
||||
+ " FROM fac_v_webgebruiker w"
|
||||
+ " , fac_functie f"
|
||||
|
||||
@@ -340,7 +340,8 @@ if (savemode == "P")
|
||||
var nextdate = null;
|
||||
if (!oRs.eof)
|
||||
{ // Bereken de volgende inspectiedatum. Het object is minstens 1 keer geinspecteerd.
|
||||
sql = "SELECT ins.nextcyclusdate (" + ingesloten[i].ins_key + ", " + ingesloten[i].srtcont_key + ", 1) nextdate FROM DUAL"
|
||||
// Alleen Active Situatie (AS) soort controle's kunnen gewijzigd worden dus voor scenario key moet "null" genomen worden.
|
||||
sql = "SELECT ins.nextcyclusdate (" + ingesloten[i].ins_key + ", " + ingesloten[i].srtcont_key + ", null, 1) nextdate FROM DUAL"
|
||||
oRs = Oracle.Execute(sql);
|
||||
nextdate = new Date(oRs("nextdate").Value);
|
||||
}
|
||||
@@ -432,7 +433,8 @@ else if (savemode == "C")
|
||||
}
|
||||
else
|
||||
{ // Bereken de volgende inspectiedatum.
|
||||
sql = "SELECT ins.nextcyclusdate (" + ingesloten[i].ins_key + ", " + ingesloten[i].srtcont_key + ", 1) nextdate FROM DUAL"
|
||||
// Alleen Active Situatie (AS) soort controle's kunnen gewijzigd worden dus voor scenario key moet "null" genomen worden.
|
||||
sql = "SELECT ins.nextcyclusdate (" + ingesloten[i].ins_key + ", " + ingesloten[i].srtcont_key + ", null, 1) nextdate FROM DUAL"
|
||||
oRs = Oracle.Execute(sql);
|
||||
nextdate = new Date(oRs("nextdate").Value);
|
||||
oRs.Close();
|
||||
@@ -540,7 +542,8 @@ else if (savemode == "C")
|
||||
|
||||
// Bereken de volgende inspectiedatum.
|
||||
// De functie ins.nextcyclusdate levert de volgende inspectie datum met tijd op onafhankelijk van de eenheid.
|
||||
sql = "SELECT ins.nextcyclusdate (" + ingesloten[i].ins_key + ", " + ingesloten[i].srtcont_key + ", 1) nextdate FROM DUAL"
|
||||
// Alleen Active Situatie (AS) soort controle's kunnen gewijzigd worden dus voor scenario key moet "null" genomen worden.
|
||||
sql = "SELECT ins.nextcyclusdate (" + ingesloten[i].ins_key + ", " + ingesloten[i].srtcont_key + ", null, 1) nextdate FROM DUAL"
|
||||
var oRs = Oracle.Execute(sql);
|
||||
nextdate = new Date(oRs("nextdate").Value);
|
||||
oRs.Close();
|
||||
@@ -665,7 +668,8 @@ else if (savemode == "E")
|
||||
var nextdate = null;
|
||||
if (!oRs.eof)
|
||||
{ // Bereken de volgende orginele inspectiedatum (nextdate).
|
||||
var sql = "SELECT ins.nextcyclusdate (" + ingesloten[0].ins_key + ", " + ingesloten[0].srtcont_key + ", 1) nexdate FROM DUAL";
|
||||
// Alleen Active Situatie (AS) soort controle's kunnen gewijzigd worden dus voor scenario key moet "null" genomen worden.
|
||||
var sql = "SELECT ins.nextcyclusdate (" + ingesloten[0].ins_key + ", " + ingesloten[0].srtcont_key + ", null, 1) nexdate FROM DUAL";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
nextdate = new Date(oRs("nexdate").Value);
|
||||
|
||||
@@ -710,7 +714,8 @@ else if (savemode == "E")
|
||||
mjobdelete = true;
|
||||
else if (srtcontrole_type == 2 || srtcontrole_type == 3) // Vervanging(2) of Certificering(3).
|
||||
{ // Bereken de volgende inspectiedatum.
|
||||
sql = "SELECT ins.nextcyclusdate (" + ingesloten[0].ins_key + ", " + ingesloten[0].srtcont_key + ", 1) nextdate FROM DUAL"
|
||||
// Alleen Active Situatie (AS) soort controle's kunnen gewijzigd worden dus voor scenario key moet "null" genomen worden.
|
||||
sql = "SELECT ins.nextcyclusdate (" + ingesloten[0].ins_key + ", " + ingesloten[0].srtcont_key + ", null, 1) nextdate FROM DUAL"
|
||||
oRs = Oracle.Execute(sql);
|
||||
var nextdate = new Date(oRs("nextdate").Value);
|
||||
var nextdate_jaar = nextdate.getFullYear();
|
||||
|
||||
@@ -36,43 +36,46 @@ var dlsrtcont_key = -1;
|
||||
// Bepaal de objecten/delen in de selectie die
|
||||
// ook echt gestart kunnen of mogen worden.
|
||||
var ctrdisc_key = -1;
|
||||
for (var i = 0; i < ins_key_arr.length; i++)
|
||||
if (srtcont_key_arr.length > 0)
|
||||
{
|
||||
var sql = "SELECT idsc.ins_deelsrtcontrole_key"
|
||||
+ " , idsc.ins_deelsrtcontrole_status"
|
||||
+ " , xcp.ins_srtcontroledl_xcp_eind vervaldatum"
|
||||
+ " , isc.ctr_discipline_key"
|
||||
+ " FROM ins_srtcontrole isc"
|
||||
+ " , ins_deelsrtcontrole idsc"
|
||||
+ " , ins_srtcontroledl_xcp xcp"
|
||||
+ " WHERE isc.ins_srtcontrole_key = idsc.ins_srtcontrole_key(+)" // Er kan nog voor de eerste keer geinspecteerd moeten worden.
|
||||
+ " AND isc.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
|
||||
+ " AND xcp.ins_deel_key(+) = " + ins_key_arr[i]
|
||||
+ " AND idsc.ins_deel_key(+) = " + ins_key_arr[i]
|
||||
+ " AND isc.ins_srtcontrole_key = " + srtcont_key_arr[i]
|
||||
//+ " AND idsc.ins_deelsrtcontrole_status(+) != 6"
|
||||
+ " ORDER BY ins_deelsrtcontrole_datum DESC";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
ctrdisc_key = oRs("ctr_discipline_key").Value
|
||||
// Waarden moeten aanwezig zijn. Mocht dat niet zo zijn dan is er iets fout.
|
||||
var ins_deelsrtcontrole_status = oRs("ins_deelsrtcontrole_status").Value != null? oRs("ins_deelsrtcontrole_status").Value : -1; // Als er nog geen inspectie is geweest is de status -1.
|
||||
var ins_deelsrtcontrole_key = oRs("ins_deelsrtcontrole_key").Value;
|
||||
var vervaldatum = oRs("vervaldatum").Value != null? new Date(oRs("vervaldatum").Value) : null;
|
||||
var vervallen = vervaldatum != null && vervaldatum < new Date();
|
||||
for (var i = 0; i < ins_key_arr.length; i++)
|
||||
{
|
||||
var sql = "SELECT idsc.ins_deelsrtcontrole_key"
|
||||
+ " , idsc.ins_deelsrtcontrole_status"
|
||||
+ " , xcp.ins_srtcontroledl_xcp_eind vervaldatum"
|
||||
+ " , isc.ctr_discipline_key"
|
||||
+ " FROM ins_srtcontrole isc"
|
||||
+ " , ins_deelsrtcontrole idsc"
|
||||
+ " , ins_srtcontroledl_xcp xcp"
|
||||
+ " WHERE isc.ins_srtcontrole_key = idsc.ins_srtcontrole_key(+)" // Er kan nog voor de eerste keer geinspecteerd moeten worden.
|
||||
+ " AND isc.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
|
||||
+ " AND xcp.ins_deel_key(+) = " + ins_key_arr[i]
|
||||
+ " AND idsc.ins_deel_key(+) = " + ins_key_arr[i]
|
||||
+ " AND isc.ins_srtcontrole_key = " + srtcont_key_arr[i]
|
||||
//+ " AND idsc.ins_deelsrtcontrole_status(+) != 6"
|
||||
+ " ORDER BY ins_deelsrtcontrole_datum DESC";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
ctrdisc_key = oRs("ctr_discipline_key").Value
|
||||
// Waarden moeten aanwezig zijn. Mocht dat niet zo zijn dan is er iets fout.
|
||||
var ins_deelsrtcontrole_status = oRs("ins_deelsrtcontrole_status").Value != null? oRs("ins_deelsrtcontrole_status").Value : -1; // Als er nog geen inspectie is geweest is de status -1.
|
||||
var ins_deelsrtcontrole_key = oRs("ins_deelsrtcontrole_key").Value;
|
||||
var vervaldatum = oRs("vervaldatum").Value != null? new Date(oRs("vervaldatum").Value) : null;
|
||||
var vervallen = vervaldatum != null && vervaldatum < new Date();
|
||||
|
||||
if (ins_deelsrtcontrole_status != -1 && ins_deelsrtcontrole_status != 6)
|
||||
dlsrtcont_key = ins_deelsrtcontrole_key;
|
||||
var this_ins = ins.func_enabled_deel(ins_key_arr[i],
|
||||
{srtcont_key: srtcont_key_arr[i],
|
||||
deelsrtcont_key: dlsrtcont_key
|
||||
});
|
||||
if (ins_deelsrtcontrole_status != -1 && ins_deelsrtcontrole_status != 6)
|
||||
dlsrtcont_key = ins_deelsrtcontrole_key;
|
||||
var this_ins = ins.func_enabled_deel(ins_key_arr[i],
|
||||
{srtcont_key: srtcont_key_arr[i],
|
||||
deelsrtcont_key: dlsrtcont_key
|
||||
});
|
||||
|
||||
// Het laatste inspectierecord moet Gepland(0) of verwerkt(6) (ins_deelsrtcontrole_status = -1) zijn, anders kan de inspectie niet gestart worden.
|
||||
if (this_ins.canInspStart)
|
||||
{ // Alle Arrays zijn even groot.
|
||||
ingesloten.push({ins_key: ins_key_arr[i], srtcont_key: srtcont_key_arr[i], dlsrtcont_key: dlsrtcont_key,
|
||||
inspectiestatus: ins_deelsrtcontrole_status});
|
||||
tobestart++;
|
||||
// Het laatste inspectierecord moet Gepland(0) of verwerkt(6) (ins_deelsrtcontrole_status = -1) zijn, anders kan de inspectie niet gestart worden.
|
||||
if (this_ins.canInspStart)
|
||||
{ // Alle Arrays zijn even groot.
|
||||
ingesloten.push({ins_key: ins_key_arr[i], srtcont_key: srtcont_key_arr[i], dlsrtcont_key: dlsrtcont_key,
|
||||
inspectiestatus: ins_deelsrtcontrole_status});
|
||||
tobestart++;
|
||||
}
|
||||
}
|
||||
}
|
||||
lcl.set_dialect(ctrdisc_key, "INS_TAB_DISCIPLINE_KEY");
|
||||
@@ -89,7 +92,8 @@ for (var i = 0; i < ingesloten.length; i++)
|
||||
var nextdate = null;
|
||||
if (ingesloten[i].inspectiestatus > -1)
|
||||
{ // Bereken de volgende inspectiedatum.
|
||||
sql = "SELECT ins.nextcyclusdate (" + ingesloten[i].ins_key + ", " + ingesloten[i].srtcont_key + ", 1) nextdate FROM DUAL"
|
||||
// Alleen Active Situatie (AS) soort controle's kunnen gewijzigd worden dus voor scenario key moet "null" genomen worden.
|
||||
sql = "SELECT ins.nextcyclusdate (" + ingesloten[i].ins_key + ", " + ingesloten[i].srtcont_key + ", null, 1) nextdate FROM DUAL"
|
||||
oRs = Oracle.Execute(sql);
|
||||
nextdate = new Date(oRs("nextdate").Value);
|
||||
}
|
||||
|
||||
@@ -206,12 +206,24 @@ function insPlan(rowArray)
|
||||
var insKeyString = getKeyString(rowArray);
|
||||
var srtcontrolekeyArray = new Array();
|
||||
var deelsrtcontrkeyArray = new Array();
|
||||
var deleted = 0;
|
||||
for (var i = 0; i < rowArray.length; i++)
|
||||
{
|
||||
rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')');
|
||||
srtcontrolekeyArray[i] = rowdata.insSrtControleKey;
|
||||
// Als je wilt inplannen is er nog geen inspectie record (ins_deelsrtcontrole_key). De insDeelSrtContrKey is dan -2.
|
||||
deelsrtcontrkeyArray[i] = rowdata.insDeelSrtContrKey;
|
||||
// Scenario's kunnen niet gestart worden. Hier de scenario's er al uit filteren.
|
||||
if (!rowdata.insScenKey || rowdata.insScenKey < 0)
|
||||
{ // Het is geen scenario. De periodieke taak kan gestart worden. De periodieke taak aan het array toevoegen.
|
||||
srtcontrolekeyArray[i - deleted] = rowdata.insSrtControleKey;
|
||||
// Als je wilt inplannen is er nog geen inspectie record (ins_deelsrtcontrole_key). De insDeelSrtContrKey is dan -2.
|
||||
deelsrtcontrkeyArray[i - deleted] = rowdata.insDeelSrtContrKey;
|
||||
}
|
||||
else
|
||||
{ // Het is een scenario. De ins_key verwijderen uit de lijst.
|
||||
var insKeyString_arr = insKeyString.split(",");
|
||||
insKeyString_arr.splice(i - deleted, 1);
|
||||
insKeyString = insKeyString_arr.join(",");
|
||||
deleted++;
|
||||
}
|
||||
}
|
||||
|
||||
// Als je vanuit de lijst 1 inspectie inplant kun je na afloop naar de show mode van deze inspectie (waarvan er net een inspectie record is aangemaakt).
|
||||
@@ -219,27 +231,47 @@ function insPlan(rowArray)
|
||||
//if (rowArray.length == 1)
|
||||
// var url = "appl/ins/ins_inspect.asp?plan=1&ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekeyArray.join(",") + "&deelsrtcont_keys=" + deelsrtcontrkeyArray.join(",");
|
||||
//else
|
||||
var url = "appl/ins/ins_edit_inspect.asp?plan=1&ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekeyArray.join(",") + "&deelsrtcont_keys=" + deelsrtcontrkeyArray.join(",");
|
||||
// Voor Active Situatie (AS) soort controle's hoeft geen scenario key meegegeven te worden.
|
||||
var url = "appl/ins/ins_edit_inspect.asp?plan=1&ins_keys="
|
||||
+ insKeyString + "&srtcont_keys="
|
||||
+ srtcontrolekeyArray.join(",")
|
||||
+ "&deelsrtcont_keys=" + deelsrtcontrkeyArray.join(",");
|
||||
FcltMgr.openDetail(url, L("lcl_ins_schedule"));
|
||||
}
|
||||
|
||||
function insStart(rowArray, isMulti)
|
||||
{
|
||||
FcltMgr.confirm(rowArray.length == 1 ? L("lcl_ins_starting") : L("lcl_ins_starting_m"), { autoconfirm: isMulti }, function() {
|
||||
var insKeyString = getKeyString(rowArray);
|
||||
var srtcontrolekeyArray = new Array();
|
||||
for (var i = 0; i < rowArray.length; i++) {
|
||||
rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')');
|
||||
srtcontrolekeyArray[i] = rowdata.insSrtControleKey;
|
||||
}
|
||||
FcltMgr.confirm(rowArray.length == 1? L("lcl_ins_starting") : L("lcl_ins_starting_m"),
|
||||
{ autoconfirm: isMulti },
|
||||
function()
|
||||
{
|
||||
var insKeyString = getKeyString(rowArray);
|
||||
var srtcontrolekeyArray = new Array();
|
||||
var isScenarioArray = new Array();
|
||||
var deleted = 0;
|
||||
for (var i = 0; i < rowArray.length; i++)
|
||||
{
|
||||
rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')');
|
||||
// Scenario's kunnen niet gestart worden. Hier de scenario's er al uit filteren.
|
||||
if (!rowdata.insScenKey || rowdata.insScenKey < 0)
|
||||
{ // Het is geen scenario. De periodieke taak kan gestart worden. De inspectie aan het array toevoegen.
|
||||
srtcontrolekeyArray[i - deleted] = rowdata.insSrtControleKey;
|
||||
}
|
||||
else
|
||||
{ // Het is een scenario. De ins_key verwijderen uit de lijst.
|
||||
var insKeyString_arr = insKeyString.split(",");
|
||||
insKeyString_arr.splice(i - deleted, 1);
|
||||
insKeyString = insKeyString_arr.join(",");
|
||||
deleted++;
|
||||
}
|
||||
}
|
||||
|
||||
var data = {
|
||||
ins_keys: insKeyString,
|
||||
srtcont_key_arr: srtcontrolekeyArray.join(",")
|
||||
};
|
||||
protectRequest.dataToken(data);
|
||||
$.post("../ins/ins_inspect_start.asp", data, FcltCallbackRefresh, "json");
|
||||
});
|
||||
var data = { ins_keys: insKeyString,
|
||||
srtcont_key_arr: srtcontrolekeyArray.join(",")
|
||||
};
|
||||
protectRequest.dataToken(data);
|
||||
$.post("../ins/ins_inspect_start.asp", data, FcltCallbackRefresh, "json");
|
||||
});
|
||||
}
|
||||
|
||||
function insClose(rowArray, isMulti, fromfinish)
|
||||
@@ -247,11 +279,23 @@ function insClose(rowArray, isMulti, fromfinish)
|
||||
var insKeyString = getKeyString(rowArray);
|
||||
var srtcontrolekeyArray = new Array();
|
||||
var deelsrtcontrkeyArray = new Array();
|
||||
var deleted = 0;
|
||||
for (var i = 0; i < rowArray.length; i++)
|
||||
{
|
||||
rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')');
|
||||
srtcontrolekeyArray[i] = rowdata.insSrtControleKey;
|
||||
deelsrtcontrkeyArray[i] = rowdata.insDeelSrtContrKey;
|
||||
// Scenario's kunnen niet gestart worden. Hier de scenario's er al uit filteren.
|
||||
if (!rowdata.insScenKey || rowdata.insScenKey < 0)
|
||||
{ // Het is geen scenario. De periodieke taak kan gestart worden. De inspectie aan het array toevoegen.
|
||||
srtcontrolekeyArray[i - deleted] = rowdata.insSrtControleKey;
|
||||
deelsrtcontrkeyArray[i - deleted] = rowdata.insDeelSrtContrKey;
|
||||
}
|
||||
else
|
||||
{ // Het is een scenario. De ins_key verwijderen uit de lijst.
|
||||
var insKeyString_arr = insKeyString.split(",");
|
||||
insKeyString_arr.splice(i - deleted, 1);
|
||||
insKeyString = insKeyString_arr.join(",");
|
||||
deleted++;
|
||||
}
|
||||
}
|
||||
|
||||
// Als je vanuit de lijst 1 inspectie sluit kun je na afloop naar de show mode van deze inspectie (ongeacht of ar al een inspectie record aanwezig was).
|
||||
@@ -279,12 +323,24 @@ function insFinish(rowArray, isMulti)
|
||||
// Als er 1 inspectie is die niet direct Afgerond(6) kan worden dan heb ik de Gereed meld gegevens nodig.
|
||||
// Dan moet ik de gegevens invullen via insClose.
|
||||
var mustClose = false;
|
||||
var deleted = 0;
|
||||
for (var i = 0; i < rowArray.length; i++)
|
||||
{
|
||||
rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')');
|
||||
deelsrtcontrkeyArray[i] = rowdata.insDeelSrtContrKey;
|
||||
isc_status = rowdata.ins_status;
|
||||
mustClose = mustClose || (isc_status != 5);
|
||||
// Scenario's kunnen niet gestart worden. Hier de scenario's er al uit filteren.
|
||||
if (!rowdata.insScenKey || rowdata.insScenKey < 0)
|
||||
{ // Het is geen scenario. De periodieke taak kan gestart worden. De inspectie aan het array toevoegen.
|
||||
deelsrtcontrkeyArray[i - deleted] = rowdata.insDeelSrtContrKey;
|
||||
isc_status = rowdata.ins_status;
|
||||
mustClose = mustClose || (isc_status != 5);
|
||||
}
|
||||
else
|
||||
{ // Het is een scenario. De ins_key verwijderen uit de lijst.
|
||||
var insKeyString_arr = insKeyString.split(",");
|
||||
insKeyString_arr.splice(i - deleted, 1);
|
||||
insKeyString = insKeyString_arr.join(",");
|
||||
deleted++;
|
||||
}
|
||||
}
|
||||
|
||||
if (mustClose)
|
||||
|
||||
@@ -28,14 +28,16 @@ FCLTHeader.Requires({ plugins: ["jQuery", "suggest", "kenmerk"] });
|
||||
// Eigenlijk tot nu toe geen multi ins_key waarden. Slechts <20><>n ins_key waarden wordt gesubmit.
|
||||
var ins_key = getQParamInt("ins_key");
|
||||
|
||||
var srtcont_key = getQParamInt("srtcont_key", -1); // voorgekozen inspectiesoort vanuit MJOB of Graphics thema
|
||||
var srtcont_key = getQParamInt("srtcont_key", -1); // voorgekozen inspectiesoort vanuit MJOB of Graphics thema.
|
||||
var scen_key = getQParamInt("scen_key", -1); // Scenario.
|
||||
var isScenario = scen_key > 0;
|
||||
var deelsrtcont_key = getQParamInt("deelsrtcont_key", -1); // bestaande inspectie
|
||||
var transitParam = buildTransitParam(["srtcont_key", "deelsrtcont_key"]);
|
||||
var add = getQParamInt("add", 0) == 1; // Controle inspectie (ins_srtcontrole) waarvan de periode op 0 staat actief maken.
|
||||
var ins_xcp_active_cost = S("ins_xcp_active_cost");
|
||||
|
||||
// Mag ik de exceptions (xcp) waarden van de taak wijzigen?
|
||||
var this_ins = ins.func_enabled_deel(ins_key, {srtcont_key: srtcont_key});
|
||||
var this_ins = ins.func_enabled_deel(ins_key, {srtcont_key: srtcont_key, isScenario: isScenario? true : null});
|
||||
user.anything_todo_or_abort((srtcont_key > 0 && this_ins.canShowXcp) || (srtcont_key < 0 && this_ins.hasAnyReadXcp));
|
||||
|
||||
var isMJOB = false;
|
||||
@@ -69,7 +71,10 @@ if (srtcont_key > 0)
|
||||
+ " , ins_srtdeel isd"
|
||||
+ " WHERE dix.ins_srtdeel_key = isd.ins_srtdeel_key"
|
||||
+ " AND dix.ins_deel_key = " + ins_key
|
||||
+ " AND dix.ins_srtcontrole_key = " + srtcont_key;
|
||||
+ " AND dix.ins_srtcontrole_key = " + srtcont_key
|
||||
+ (isScenario
|
||||
? " AND dix.ins_scenario_key = " + scen_key
|
||||
: "");
|
||||
var oRs = Oracle.Execute(sql);
|
||||
isMJOB = oRs("ctr_ismjob").Value == 1;
|
||||
xcp_eenheid = oRs("ins_srtcontrole_eenheid").Value;
|
||||
@@ -112,12 +117,14 @@ if (srtcont_key > 0)
|
||||
+ " , xcp.ins_srtcontroledl_xcp_aanteh"
|
||||
+ " , xcp.ins_scenario_key"
|
||||
+ " , isc.ins_srtcontrole_opmerking"
|
||||
+ " , isc.ins_scenario_key"
|
||||
+ " FROM ins_srtcontroledl_xcp xcp"
|
||||
+ " , ins_srtcontrole isc"
|
||||
+ " WHERE xcp.ins_deel_key = " + ins_key
|
||||
+ " AND xcp.ins_srtcontrole_key = " + srtcont_key
|
||||
+ " AND xcp.ins_srtcontrole_key = isc.ins_srtcontrole_key";
|
||||
+ " AND xcp.ins_srtcontrole_key = isc.ins_srtcontrole_key"
|
||||
+ (isScenario
|
||||
? " AND xcp.ins_scenario_key = " + scen_key
|
||||
: " AND xcp.ins_scenario_key IS NULL");
|
||||
var oRs = Oracle.Execute(sql);
|
||||
if (!oRs.eof)
|
||||
{
|
||||
@@ -572,6 +579,7 @@ if (srtcont_key > 0)
|
||||
<body class="modal" id="mod_insxcp">
|
||||
<form name="u2" action="ins_xcp_save.asp?ins_key=<%=ins_key%><%=transitParam%>" method="post">
|
||||
<input type="hidden" id="mode" name="mode" value="1">
|
||||
<input type="hidden" id="scen_key" name="scen_key" value="<%=scen_key%>">
|
||||
|
||||
<% BLOCK_START("insXcp", L("lcl_ins_interval_kenmerken"))
|
||||
// mogelijke inspecties op dit object/ deze objecten
|
||||
@@ -581,7 +589,125 @@ if (srtcont_key > 0)
|
||||
var cntdeel = Oracle.Execute(sql)(0).Value;
|
||||
|
||||
var sql = "SELECT *"
|
||||
+ " FROM (SELECT di.ins_srtcontrole_key"
|
||||
+ " FROM ("
|
||||
// Alle Active Situatie (AS) soort controle's die geen uitzondering (XCP) record hebben maar wel een scenario.
|
||||
+ (!isScenario
|
||||
? " SELECT di.ins_srtcontrole_key"
|
||||
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
|
||||
+ " , di.ins_srtcontrole_mode modus"
|
||||
+ " , di.ins_deel_aantal aantal_std"
|
||||
+ " , null aantal_xcp"
|
||||
+ " , di.ins_srtdeel_eenheid aanteh_std"
|
||||
+ " , null aanteh_xcp"
|
||||
+ " , di.ins_srtcontrole_eenheid eenheid_std"
|
||||
+ " , -1 eenheid_xcp"
|
||||
+ " , di.ins_srtcontrole_periode periode_std"
|
||||
+ " , null periode_xcp"
|
||||
+ " , di.ins_srtcontrole_bits bits_std"
|
||||
+ " , null bits_xcp"
|
||||
+ " , di.ins_srtcontrole_groep groep_std"
|
||||
+ " , null groep_xcp"
|
||||
+ " , di.ins_srtcontrole_kosten kosten_std1"
|
||||
+ " , null kosten_xcp1"
|
||||
+ " , di.ins_srtcontrole_kosten2 kosten_std2"
|
||||
+ " , null kosten_xcp2"
|
||||
+ " , di.ins_srtcontrole_kosten3 kosten_std3"
|
||||
+ " , null kosten_xcp3"
|
||||
+ " , di.ins_srtcontrole_uren uren_std"
|
||||
+ " , null uren_xcp"
|
||||
+ " , di.ins_srtcontrole_materiaal materiaal_std"
|
||||
+ " , null materiaal_xcp"
|
||||
+ " , di.ins_srtcontrole_percentage perc_std"
|
||||
+ " , null perc_xcp"
|
||||
+ " , di.ins_srtcontrole_opmerking opmerk_std"
|
||||
+ " , null opmerk_xcp"
|
||||
+ " , -1 xcp_key"
|
||||
+ " , null startdate_xcp"
|
||||
+ " , null start_xcp_dag"
|
||||
+ " , null start_xcp_maand"
|
||||
+ " , null start_xcp_jaar"
|
||||
+ " , di.ins_srtcontrole_eind eind_std"
|
||||
+ " , TO_CHAR(di.ins_srtcontrole_eind, 'DD') eind_std_dag"
|
||||
+ " , TO_CHAR(di.ins_srtcontrole_eind, 'MM') eind_std_maand"
|
||||
+ " , TO_CHAR(di.ins_srtcontrole_eind, 'YYYY') eind_std_jaar"
|
||||
+ " , null eind_xcp"
|
||||
+ " , null eind_xcp_dag"
|
||||
+ " , null eind_xcp_maand"
|
||||
+ " , null eind_xcp_jaar"
|
||||
+ " , TO_CHAR(ins.nextcyclusdate (di.ins_deel_key, di.ins_srtcontrole_key, null, 1), 'DD') nextdate_dag"
|
||||
+ " , TO_CHAR(ins.nextcyclusdate (di.ins_deel_key, di.ins_srtcontrole_key, null, 1), 'MM') nextdate_maand"
|
||||
+ " , TO_CHAR(ins.nextcyclusdate (di.ins_deel_key, di.ins_srtcontrole_key, null, 1), 'YYYY') nextdate_jaar"
|
||||
+ " , di.ctr_ismjob ismjob"
|
||||
+ " , CASE"
|
||||
+ " WHEN (SELECT COUNT(sdc.ins_deelsrtcontrole_key)"
|
||||
+ " FROM ins_deelsrtcontrole sdc"
|
||||
+ " WHERE sdc.ins_deel_key = di.ins_deel_key"
|
||||
+ " AND sdc.ins_srtcontrole_key = di.ins_srtcontrole_key"
|
||||
+ " AND sdc.ins_deelsrtcontrole_status = 6) > 0"
|
||||
+ " THEN 1"
|
||||
+ " ELSE 0"
|
||||
+ " END hascontroles"
|
||||
+ " FROM ins_v_defined_inspect di"
|
||||
+ " WHERE di.ins_deel_key = " + ins_key
|
||||
// De xcp_periode overruled de standaard periode. De xcp_periode kan/mag NULL zijn maar de standaard periode niet.
|
||||
// Mogelijke waarden van de standaard periode en xcp periode:
|
||||
// ins_srtcontrole_periode ins_srtcontroledl_xcp_periode uitleg
|
||||
// 0 NULL een inactieve soort controle die ook geldt voor het object
|
||||
// 1..n NULL een actieve soort controle geldt ook voor het object.
|
||||
// 0 1 een standaard niet actieve controle is voor het object actief gemaakt.
|
||||
// 1..n 0 een standaard actieve controle is voor het object inactief gemaakt.
|
||||
+ (add
|
||||
? " AND di.ins_srtcontrole_periode <= 0" // Inactieve soort controles tonen.
|
||||
: " AND di.ins_srtcontrole_periode > 0") // Actieve soort controles tonen.
|
||||
+ (srtcont_key > 0
|
||||
? " AND di.ins_srtcontrole_key = " + srtcont_key
|
||||
: "")
|
||||
+ " AND di.ctr_discipline_key IN (SELECT w.ins_discipline_key"
|
||||
+ " FROM fac_v_webgebruiker w"
|
||||
+ " , fac_functie f"
|
||||
+ " WHERE w.fac_functie_key = f.fac_functie_key "
|
||||
+ " AND f.fac_functie_code = 'WEB_CTRUSE'"
|
||||
+ " AND w.fac_gebruiker_prs_level_write < 9"
|
||||
+ " AND w.fac_gebruiker_alg_level_write < 9"
|
||||
+ " AND w.prs_perslid_key = " + user_key + ")"
|
||||
+ " AND NOT EXISTS (SELECT xcp.ins_srtcontroledl_xcp_key" // Geen uitzondering (XCP) record.
|
||||
+ " FROM ins_srtcontroledl_xcp xcp"
|
||||
+ " WHERE xcp.ins_srtcontrole_key = di.ins_srtcontrole_key"
|
||||
+ " AND xcp.ins_deel_key = di.ins_deel_key"
|
||||
+ " AND xcp.ins_scenario_key IS NULL)"
|
||||
+ " AND EXISTS (SELECT xcp.ins_srtcontroledl_xcp_key" // Wel een scenario aanwezig
|
||||
+ " FROM ins_srtcontroledl_xcp xcp"
|
||||
+ " WHERE xcp.ins_srtcontrole_key = di.ins_srtcontrole_key"
|
||||
+ " AND xcp.ins_deel_key = di.ins_deel_key"
|
||||
+ " AND xcp.ins_scenario_key IS NOT NULL)"
|
||||
+ " GROUP BY di.ins_srtcontrole_key"
|
||||
+ " , di.ins_srtcontrole_omschrijving"
|
||||
+ " , di.ins_srtcontrole_mode"
|
||||
+ " , di.ins_deel_aantal"
|
||||
+ " , di.ins_srtdeel_eenheid"
|
||||
+ " , di.ins_srtcontrole_periode"
|
||||
+ " , di.ins_srtcontrole_eenheid"
|
||||
+ " , di.ins_srtcontrole_bits"
|
||||
+ " , di.ins_srtcontrole_groep"
|
||||
+ " , di.ins_srtcontrole_kosten"
|
||||
+ " , di.ins_srtcontrole_kosten2"
|
||||
+ " , di.ins_srtcontrole_kosten3"
|
||||
+ " , di.ins_srtcontrole_uren"
|
||||
+ " , di.ins_srtcontrole_materiaal"
|
||||
+ " , di.ins_srtcontrole_percentage"
|
||||
+ " , di.ins_srtcontrole_opmerking"
|
||||
+ " , di.ins_srtcontrole_eind"
|
||||
+ " , di.ins_deel_key"
|
||||
+ " , di.ctr_ismjob"
|
||||
+ " HAVING COUNT(*) = " + cntdeel // Als multi dan alleen de inspecties die voor *alle* objecten gelden
|
||||
+ " UNION"
|
||||
: "")
|
||||
// Alle soort controles van de scenario's.
|
||||
// en
|
||||
// Alle Active Situatie (AS) soort controle's die:
|
||||
// a) geen uitzondering (XCP) record hebben en geen scenario.
|
||||
// b) een uitzondering (XCP) record hebben.
|
||||
+ " SELECT di.ins_srtcontrole_key"
|
||||
+ " , " + lcl.xsqla('di.ins_srtcontrole_omschrijving', 'di.ins_srtcontrole_key')
|
||||
+ " , di.ins_srtcontrole_mode modus"
|
||||
+ " , di.ins_deel_aantal aantal_std"
|
||||
@@ -623,9 +749,9 @@ if (srtcont_key > 0)
|
||||
+ " , TO_CHAR(xcp.ins_srtcontroledl_xcp_eind, 'DD') eind_xcp_dag"
|
||||
+ " , TO_CHAR(xcp.ins_srtcontroledl_xcp_eind, 'MM') eind_xcp_maand"
|
||||
+ " , TO_CHAR(xcp.ins_srtcontroledl_xcp_eind, 'YYYY') eind_xcp_jaar"
|
||||
+ " , TO_CHAR(ins.nextcyclusdate (di.ins_deel_key, di.ins_srtcontrole_key, 1), 'DD') nextdate_dag"
|
||||
+ " , TO_CHAR(ins.nextcyclusdate (di.ins_deel_key, di.ins_srtcontrole_key, 1), 'MM') nextdate_maand"
|
||||
+ " , TO_CHAR(ins.nextcyclusdate (di.ins_deel_key, di.ins_srtcontrole_key, 1), 'YYYY') nextdate_jaar"
|
||||
+ " , TO_CHAR(ins.nextcyclusdate (di.ins_deel_key, di.ins_srtcontrole_key, " + (isScenario? scen_key : "null") + ", 1), 'DD') nextdate_dag"
|
||||
+ " , TO_CHAR(ins.nextcyclusdate (di.ins_deel_key, di.ins_srtcontrole_key, " + (isScenario? scen_key : "null") + ", 1), 'MM') nextdate_maand"
|
||||
+ " , TO_CHAR(ins.nextcyclusdate (di.ins_deel_key, di.ins_srtcontrole_key, " + (isScenario? scen_key : "null") + ", 1), 'YYYY') nextdate_jaar"
|
||||
+ " , di.ctr_ismjob ismjob"
|
||||
+ " , CASE"
|
||||
+ " WHEN (SELECT COUNT(sdc.ins_deelsrtcontrole_key)"
|
||||
@@ -651,7 +777,7 @@ if (srtcont_key > 0)
|
||||
+ (add
|
||||
? " AND COALESCE (xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) <= 0" // Inactieve soort controles tonen.
|
||||
+ " AND xcp.ins_srtcontroledl_xcp_periode IS NULL" // Soort controles die niet overruled zijn tonen.
|
||||
: " AND (COALESCE (xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) > 0" // Actieve soort controles tonen
|
||||
: " AND (COALESCE (xcp.ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode) > 0" // Actieve soort controles tonen.
|
||||
+ " OR ins_srtcontroledl_xcp_periode = 0)") // Soort controles die inactief zijn gemaakt tonen.
|
||||
+ (srtcont_key > 0
|
||||
? " AND di.ins_srtcontrole_key = " + srtcont_key
|
||||
@@ -664,6 +790,9 @@ if (srtcont_key > 0)
|
||||
+ " AND w.fac_gebruiker_prs_level_write < 9"
|
||||
+ " AND w.fac_gebruiker_alg_level_write < 9"
|
||||
+ " AND w.prs_perslid_key = " + user_key + ")"
|
||||
+ (isScenario
|
||||
? " AND xcp.ins_scenario_key = " + scen_key
|
||||
: " AND xcp.ins_scenario_key IS NULL")
|
||||
+ " GROUP BY di.ins_srtcontrole_key"
|
||||
+ " , di.ins_srtcontrole_omschrijving"
|
||||
+ " , di.ins_srtcontrole_mode"
|
||||
@@ -699,8 +828,8 @@ if (srtcont_key > 0)
|
||||
+ " , xcp.ins_srtcontroledl_xcp_startdat"
|
||||
+ " , xcp.ins_srtcontroledl_xcp_eind"
|
||||
+ " , di.ctr_ismjob"
|
||||
+ " HAVING COUNT(*) = " + cntdeel // Als multi dan alleen de inspecties die voor *alle* objecten gelden
|
||||
+ " ORDER BY di.ins_srtcontrole_omschrijving)";
|
||||
+ " HAVING COUNT(*) = " + cntdeel + ")" // Als multi dan alleen de inspecties die voor *alle* objecten gelden
|
||||
+ " ORDER BY ins_srtcontrole_omschrijving";
|
||||
FCLTselector("sel_srtcontrole",
|
||||
sql,
|
||||
{ label: L("lcl_ins_controle"),
|
||||
|
||||
@@ -22,7 +22,9 @@ var JSON_Result = true;
|
||||
<%
|
||||
var ins_key = getQParamInt("ins_key");
|
||||
var srtcontrole_key = getFParamInt("sel_srtcontrole"); // ins_srtcontrole_key.
|
||||
var this_ins = ins.func_enabled_deel(ins_key, {srtcont_key: srtcontrole_key});
|
||||
var scen_key = getFParamInt("scen_key", -1); // Scenario.
|
||||
var isScenario = scen_key > 0;
|
||||
var this_ins = ins.func_enabled_deel(ins_key, {srtcont_key: srtcontrole_key, isScenario: isScenario? true : null});
|
||||
|
||||
// Ophalen standaard waarden.
|
||||
var sql = "SELECT d.ins_deel_aantal"
|
||||
@@ -78,7 +80,6 @@ var ctrdisc_oms = oRs("ins_discipline_omschrijving").Value;
|
||||
var vervaldatum_std = new Date(oRs("ins_srtcontrole_eind").Value);
|
||||
oRs.Close();
|
||||
|
||||
|
||||
// Mag ik de parameters van het inspectie object aanpassen?
|
||||
user.anything_todo_or_abort(this_ins.canChangeXcp);
|
||||
|
||||
@@ -142,27 +143,29 @@ else
|
||||
bits = null;
|
||||
|
||||
|
||||
// Als de nieuwe waarde gelijk is aan de standaard waarden dan deze niet opslaan.
|
||||
|
||||
var datumdiffer = vervaldatum != null && (vervaldatum? vervaldatum.getTime() : null) != (vervaldatum_std? vervaldatum_std.getTime() : null)
|
||||
var paramsdiffer = ((eenheid != -1 && (eenheid != eenheid_std || (periode != null && periode != periode_std) || (bits != null && bits != bits_std))) ||
|
||||
(aantal != null && aantal != aantal_std) ||
|
||||
(aanteh != "" && aanteh != aanteh_std) ||
|
||||
(kosten1 != null && kosten1 != kosten1_std) ||
|
||||
(kosten2 != null && kosten2 != kosten2_std) ||
|
||||
(kosten3 != null && kosten3 != kosten3_std) ||
|
||||
(uren != null && uren != uren_std) ||
|
||||
(materiaal != null && materiaal != materiaal_std) ||
|
||||
(perc != null && perc != perc_std) ||
|
||||
(groep != "" && groep != groep_std) ||
|
||||
(opmerk != "" && opmerk != opmerk_std) ||
|
||||
datumdiffer || startdatum != null);
|
||||
var deactivate = periode_std == 0 && (periode == null || periode == 0); // Beide periodes zijn 0. Controle wordt inactief. Uitzonderings regel kan weg in ins_srtcontroledl_xcp.
|
||||
|
||||
if (paramsdiffer && !deactivate)
|
||||
if (!isScenario)
|
||||
{
|
||||
// Als de nieuwe waarden gelijk is aan de standaard waarden dan deze niet opslaan.
|
||||
var datumdiffer = vervaldatum != null && (vervaldatum? vervaldatum.getTime() : null) != (vervaldatum_std? vervaldatum_std.getTime() : null)
|
||||
var paramsdiffer = ((eenheid != -1 && (eenheid != eenheid_std || (periode != null && periode != periode_std) || (bits != null && bits != bits_std))) ||
|
||||
(aantal != null && aantal != aantal_std) ||
|
||||
(aanteh != "" && aanteh != aanteh_std) ||
|
||||
(kosten1 != null && kosten1 != kosten1_std) ||
|
||||
(kosten2 != null && kosten2 != kosten2_std) ||
|
||||
(kosten3 != null && kosten3 != kosten3_std) ||
|
||||
(uren != null && uren != uren_std) ||
|
||||
(materiaal != null && materiaal != materiaal_std) ||
|
||||
(perc != null && perc != perc_std) ||
|
||||
(groep != "" && groep != groep_std) ||
|
||||
(opmerk != "" && opmerk != opmerk_std) ||
|
||||
datumdiffer || startdatum != null);
|
||||
var deactivate = periode_std == 0 && (periode == null || periode == 0); // Beide periodes zijn 0. Controle wordt inactief. Uitzonderings regel kan weg in ins_srtcontroledl_xcp.
|
||||
}
|
||||
if (isScenario || (paramsdiffer && !deactivate))
|
||||
{ // parameters wijken af van de standaard of er is een startdatum ingevuld.
|
||||
var result = { success: true, srtcontroledl_xcp_key: xcp_key };
|
||||
|
||||
// De velden opslaan (scenario key blijft hetzelfde dus hoeft niet opgeslagen te worden).
|
||||
var fields = [ { dbs: "ins_deel_key", typ: "key", val: ins_key },
|
||||
{ dbs: "ins_srtcontrole_key", typ: "key", frm: "sel_srtcontrole" },
|
||||
{ dbs: "ins_srtcontroledl_xcp_eenheid", typ: "number", val: (eenheid == -1 || eenheid == eenheid_std || eenheid < 0? null : eenheid),
|
||||
@@ -203,7 +206,7 @@ if (paramsdiffer && !deactivate)
|
||||
fields.push({ dbs: "ins_srtcontroledl_xcp_materia", typ: "float", val: (materiaal == null || materiaal == materiaal_std? null : materiaal),
|
||||
track: (ins_key > 0? L("ins_srtcontrole_materiaal") + " (" + S("currency_pref").replace(/^\s+|\s+$/gm,'') + ")" : null) });
|
||||
|
||||
if (xcp_key < 0) // Nieuwe inspectie
|
||||
if (!isScenario && xcp_key < 0) // Nieuwe inspectie.
|
||||
{
|
||||
fields.push({ dbs: "ins_srtcontroledl_xcp_key", typ: "key", seq: "ins_s_srtcontroledl_xcp_key" });
|
||||
var insIns = buildInsert("ins_srtcontroledl_xcp", fields);
|
||||
@@ -217,7 +220,7 @@ if (paramsdiffer && !deactivate)
|
||||
var insUpd = buildTrackingUpdate("ins_srtcontroledl_xcp", " ins_srtcontroledl_xcp_key = " + xcp_key, fields);
|
||||
var err = Oracle.Execute(insUpd.sql, true);
|
||||
|
||||
if (insUpd && insUpd.trackarray.length)
|
||||
if (!isScenario && insUpd && insUpd.trackarray.length)
|
||||
shared.trackaction("INSUPD", ins_key, L("lcl_ins_controle_obj_upd").format(ctrdisc_oms, srtcontrole_oms) + "\n" + insUpd.trackarray.join("\n"));
|
||||
}
|
||||
}
|
||||
@@ -235,7 +238,8 @@ else
|
||||
// Record verwijderen.
|
||||
var sql = "DELETE FROM ins_srtcontroledl_xcp"
|
||||
+ " WHERE ins_deel_key = " + ins_key
|
||||
+ " AND ins_srtcontrole_key = " + srtcontrole_key;
|
||||
+ " AND ins_srtcontrole_key = " + srtcontrole_key
|
||||
+ " AND ins_scenario_key IS NULL";
|
||||
var err = Oracle.Execute(sql, true);
|
||||
|
||||
shared.trackaction("INSUPD", ins_key, L("lcl_ins_controle_obj_upd").format(ctrdisc_oms, srtcontrole_oms) + "\n" + L("lcl_ins_control_del_exception"));
|
||||
|
||||
Reference in New Issue
Block a user