Files
Facilitor/APPL/MJB/mjb_commit_scen.asp
Maykel Geerdink 6115c9a74d PLAT#53124: Foutmelding bij doorvoeren scenario (gehele actuele scenario).
svn path=/Website/branches/v2017.3/; revision=38059
2018-06-04 08:54:13 +00:00

218 lines
9.0 KiB
Plaintext

<%@language = "javascript" %>
<% Server.ScriptTimeout=6000; %>
<% /*
$Revision$
$Id$
File: mjb_commit_scen.asp
Description: Doorvoeren van een scenario
Parameters:
scen_key Scenario key.
Context:
Note:
*/ %>
<%
var JSON_Result = true;
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="../shared/save2db.inc" -->
<!-- #include file="../ins/ins.inc" -->
<%
protectRequest.validateToken();
var scen_key = getFParamInt("scenario", -1);
var sql = "SELECT ins_scenario_omschrijving"
+ " FROM ins_scenario"
+ " WHERE ins_scenario_key = " + scen_key;
var oRs = Oracle.Execute(sql)
var scen_name = oRs("ins_scenario_omschrijving").Value;
oRs.Close();
var sql = "SELECT xcp.ins_deel_key"
+ " , xcp.ins_srtcontrole_key"
+ " FROM ins_v_defined_inspect_xcp xcp"
+ " WHERE xcp.ins_scenario_key = " + scen_key
+ " ORDER BY xcp.ins_deel_key, xcp.ins_srtcontrole_key";
oRs = Oracle.Execute(sql);
var tobecomitted = 0;
var ingesloten = [];
var autchecked = false;
while (!oRs.eof)
{
var ins_key = oRs("ins_deel_key").Value;
var srtcont_key = oRs("ins_srtcontrole_key").Value;
// Rechten 1 keer bepalen of ik mag doorvoeren.
if (!autchecked)
{
var this_ins = ins.func_enabled_deel(ins_key, {srtcont_key: srtcont_key});
autchecked = true;
}
if (this_ins.canAddToScen) // Mag ik de AS xcp waarde wijzigen?
{
ingesloten.push({ins_key: ins_key, srtcont_key: srtcont_key});
tobecomitted++;
}
oRs.MoveNext();
}
oRs.Close()
user.anything_todo_or_abort(tobecomitted > 0); // We klagen niet over enkele wel en enkele niet.
Oracle.Transaction();
for (var i = 0; i < ingesloten.length; i++)
{ // Toevoegen van de taak voor het object aan het (nieuwe) scenario.
// Waarden van het scenario ophalen.
var sql = "SELECT xcp.ins_srtcontroledl_xcp_key"
+ " , isc.ins_srtcontrole_mode"
+ " , xcp.ins_srtcontroledl_xcp_periode"
+ " , xcp.ins_srtcontroledl_xcp_eenheid"
+ " , xcp.ins_srtcontroledl_xcp_bits"
+ " , xcp.ins_srtcontroledl_xcp_uren"
+ " , xcp.ins_srtcontroledl_xcp_materia"
+ " , xcp.ins_srtcontroledl_xcp_kosten"
+ " , xcp.ins_srtcontroledl_xcp_kosten2"
+ " , xcp.ins_srtcontroledl_xcp_kosten3"
+ " , xcp.ins_srtcontroledl_xcp_perc"
+ " , xcp.ins_srtcontroledl_xcp_groep"
+ " , xcp.ins_srtcontroledl_xcp_startdat"
+ " , xcp.ins_srtcontroledl_xcp_eind"
+ " , xcp.ins_srtcontroledl_xcp_opmerk"
+ " , xcp.ins_srtcontroledl_xcp_aantal"
+ " , xcp.ins_srtcontroledl_xcp_aanteh"
+ " , xcp.ins_scenario_key"
+ " , isc.ins_srtcontrole_opmerking"
+ " FROM ins_srtcontroledl_xcp xcp"
+ " , ins_srtcontrole isc"
+ " WHERE xcp.ins_deel_key = " + ingesloten[i].ins_key
+ " AND xcp.ins_srtcontrole_key = " + ingesloten[i].srtcont_key
+ " AND xcp.ins_srtcontrole_key = isc.ins_srtcontrole_key"
+ " AND xcp.ins_scenario_key = " + scen_key;
var oRs = Oracle.Execute(sql);
var xcp_key = oRs("ins_srtcontroledl_xcp_key").Value;
var mode = oRs("ins_srtcontrole_mode").Value;
var periode = oRs("ins_srtcontroledl_xcp_periode").Value;
var eenheid = oRs("ins_srtcontroledl_xcp_eenheid").Value;
var bits = oRs("ins_srtcontroledl_xcp_bits").Value;
var uren = oRs("ins_srtcontroledl_xcp_uren").Value;
var materiaal = oRs("ins_srtcontroledl_xcp_materia").Value;
var kosten1 = oRs("ins_srtcontroledl_xcp_kosten").Value;
var kosten2 = oRs("ins_srtcontroledl_xcp_kosten2").Value;
var kosten3 = oRs("ins_srtcontroledl_xcp_kosten3").Value;
var perc = oRs("ins_srtcontroledl_xcp_perc").Value;
var groep = oRs("ins_srtcontroledl_xcp_groep").Value;
var vervaldatum = oRs("ins_srtcontroledl_xcp_eind").Value != null? new Date(oRs("ins_srtcontroledl_xcp_eind").Value) : null;
var opmerk = oRs("ins_srtcontroledl_xcp_opmerk").Value;
var startdatum = oRs("ins_srtcontroledl_xcp_startdat").Value != null? new Date(oRs("ins_srtcontroledl_xcp_startdat").Value) : null;
var aantal = oRs("ins_srtcontroledl_xcp_aantal").Value;
var aanteh = oRs("ins_srtcontroledl_xcp_aanteh").Value;
// Xcp scenario -> Active Situatie (AS).
var params = { xcp_key: xcp_key,
periode: periode,
eenheid: eenheid,
bits: bits,
uren: uren,
materiaal: materiaal,
kosten1: kosten1,
kosten2: kosten2,
kosten3: kosten3,
perc: perc,
groep: groep,
vervaldatum: vervaldatum,
opmerk: opmerk,
startdatum: startdatum,
aantal: aantal,
aanteh: aanteh,
isScenario: false,
scen_key: scen_key,
commit: true,
scen_name: scen_name
};
var result = ins.saveXcp(ingesloten[i].ins_key, ingesloten[i].srtcont_key, params);
// Plandatum scenario -> Active Situatie (AS).
// Plandatum scenario ophalen.
sql = "SELECT idsc.ins_deelsrtcontrole_plandatum"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_deel_key = " + ingesloten[i].ins_key
+ " AND idsc.ins_srtcontrole_key = " + ingesloten[i].srtcont_key
+ " AND idsc.ins_scenario_key = " + scen_key;
var oRs = Oracle.Execute(sql);
var plandatum = oRs("ins_deelsrtcontrole_plandatum").Value != null? new Date(oRs("ins_deelsrtcontrole_plandatum").Value) : null;
oRs.Close();
var dlsrtcont_key = -1;
var dlsrtcont_status;
var dsc_plandatum_string = L("lcl_empty");
// Laatste inspectie record (Active Situatie (AS)) ophalen.
sql = "SELECT idsc.ins_deelsrtcontrole_key"
+ " , idsc.ins_deelsrtcontrole_status"
+ " , idsc.ins_deelsrtcontrole_plandatum"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_deel_key = " + ingesloten[i].ins_key
+ " AND idsc.ins_srtcontrole_key = " + ingesloten[i].srtcont_key
+ " AND idsc.ins_scenario_key = 1"
+ " ORDER BY idsc.ins_deelsrtcontrole_key DESC";
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
dlsrtcont_key = oRs("ins_deelsrtcontrole_key").Value;
dlsrtcont_status = oRs("ins_deelsrtcontrole_status").Value;
dsc_plandatum_string = oRs("ins_deelsrtcontrole_plandatum").Value != null? toDateTimeString(new Date(oRs("ins_deelsrtcontrole_plandatum").Value)) : L("lcl_empty");
}
// TODO: Wat als de status Gestart(2) of Gereedgemeld/Afgerond(5) is???
if (dlsrtcont_key > 0 && dlsrtcont_status < 6)
{
if (plandatum)
{
if (dsc_plandatum_string != toDateTimeString(plandatum))
{
var fields = [ { dbs: "prs_perslid_key", typ: "key", val: user_key },
{ dbs: "ins_deelsrtcontrole_plandatum", typ: "datetime", val: plandatum }
];
var insUpd = buildTrackingUpdate("ins_deelsrtcontrole", " ins_deelsrtcontrole_key = " + dlsrtcont_key, fields);
var err = Oracle.Execute(insUpd.sql, true);
ins.trackinspectupdate(dlsrtcont_key, L("lcl_mjb_adjustby_scen").format(scen_name) + "\n" + L("lcl_opdr_plandate") + " " + dsc_plandatum_string + " -> " + toDateTimeString(plandatum));
}
}
else if (dlsrtcont_status == 0)
{ // Er was een inspectie ingepland voor de Active Situatie (AS). Het inspectierecord verwijderen omdat de plandatum van het scenario leeg is;
Oracle.Execute("DELETE FROM ins_deelsrtcontrole WHERE ins_deelsrtcontrole_key = " + dlsrtcont_key);
}
}
else
{ // Er is in de Active Situatie (AS) geen lopende inspectie.
if (plandatum)
{
var fields = [ { dbs: "ins_deel_key", typ: "key", val: ingesloten[i].ins_key },
{ dbs: "ins_srtcontrole_key", typ: "key", val: ingesloten[i].srtcont_key },
{ dbs: "ins_deelsrtcontrole_status", typ: "key", val: 0 },
{ dbs: "prs_perslid_key", typ: "key", val: user_key },
{ dbs: "ins_deelsrtcontrole_plandatum", typ: "datetime", val: plandatum }
];
var insIns = buildInsert("ins_deelsrtcontrole", fields);
dlsrtcont_key = insIns.sequences["ins_deelsrtcontrole_key"];
var err = Oracle.Execute(insIns.sql, true);
}
}
oRs.Close();
}
// Nu nog het scenario verwijderen.
// Een scenario gooit via de cascade zijn ins_deelsrtcontrole en ins_srtcontroledl_xcp records mee weg.
Oracle.Execute("DELETE FROM ins_scenario WHERE ins_scenario_key = " + scen_key);
Oracle.Commit();
Response.Write(JSON.stringify(result));
%>