218 lines
9.0 KiB
Plaintext
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));
|
|
%> |