443 lines
25 KiB
Plaintext
443 lines
25 KiB
Plaintext
<%@ LANGUAGE = JavaScript %>
|
|
<% Server.ScriptTimeout=6000; %>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: ins_inspect_start.asp
|
|
Description: Starten van de inspecties.
|
|
Parameters:
|
|
ins_keys Array van objecten waarvan inspecties moeten worden gestart.
|
|
srtcont_keys Array van soort controles die moeten worden gestart.
|
|
|
|
Context: Inline actie ins_list.inc of actie ins_inspect_list
|
|
Resultaat van een submit is een json object
|
|
|
|
*/ %>
|
|
|
|
<%
|
|
var JSON_Result = true;
|
|
%>
|
|
|
|
<!-- #include file="../Shared/common.inc" -->
|
|
<!-- #include file="../shared/save2db.inc" -->
|
|
<!-- #include file="../Shared/json2.js" -->
|
|
<!-- #include file="../Shared/kenmerk_common.inc" -->
|
|
<!-- #include file="../API2/api2.inc" -->
|
|
<!-- #include file="../API2/model_issues.inc" -->
|
|
<!-- #include file="ins.inc" -->
|
|
|
|
<%
|
|
protectRequest.validateToken();
|
|
var ins_key_arr = getFParamIntArray("ins_keys");
|
|
var srtcont_key_arr = getFParamIntArray("srtcont_key_arr", []);
|
|
|
|
var multi = ins_key_arr.length > 1;
|
|
var freeze = getFParamInt("freeze", 0) == 1;
|
|
var groupby = getFParamInt("groupby", 7);
|
|
|
|
var inflatiepct = S("mjb_inflation");
|
|
var inflatiefactor = 1 + (inflatiepct / 100);
|
|
var mjb_start_year = S("mjb_start_year");
|
|
var mjb_freeze_year = S("mjb_freeze_year");
|
|
|
|
var ingesloten = [];
|
|
if (freeze && groupby < 7)
|
|
{
|
|
var dist_key = getFParamInt("dist_key", -1); // District
|
|
var loc_key = getFParamInt("loc_key", -1); // Locatie
|
|
var bld_key = getFParamInt("bld_key", -1); // Gebouw
|
|
var disc_key = getFParamInt("disc_key", -1);
|
|
var srtgroep_key = getFParamInt("srtgroep_key", -1);
|
|
var srtdeel_key = getFParamInt("srtdeel_key", -1);
|
|
var groep = getFParam("groep", ""); // Groep
|
|
var categorie_key = getFParamInt("categorie_key", -1); // Categorie
|
|
var srtcontrole = getFParamIntArray("srtcontrole", []); // Taak
|
|
var frequentie = getFParamIntArray("frequentie", []); // Array met frequenties.
|
|
var incbtw = getFParamInt("incbtw", 0) == 1; // Lijst inclusief BTW weergeven.
|
|
var deel = getFParam("deel", ""); // Identieficatie
|
|
var mjbMoved = getFParamInt("mjbMoved", 0) == 1; // Verschoven.
|
|
var mjbFreezed = getFParamInt("mjbFreezed", 0) == 1; // In behandeling.
|
|
var mjbXcped = getFParamInt("mjbXcped", 0) == 1; // Aangepast.
|
|
|
|
// Start building the query to fetch all objects satisfying
|
|
var mjbparams = { niveau: groupby, // Het niveau (betekenis) van de keys (district(1), gebouw(2), discipline(3), groep(4), objectsoort(5), object(6))
|
|
keys: ins_key_arr,
|
|
scenario: 1,
|
|
fulldetails: true,
|
|
//actsit: actsit,
|
|
dist_key: dist_key,
|
|
loc_key: loc_key,
|
|
bld_key: bld_key,
|
|
disc_key: disc_key,
|
|
srtgroep_key: srtgroep_key,
|
|
srtdeel_key: srtdeel_key,
|
|
groep: groep,
|
|
categorie_key: categorie_key,
|
|
srtcontrole: srtcontrole,
|
|
frequentie: frequentie,
|
|
incbtw: incbtw,
|
|
toyear: mjb_freeze_year,
|
|
groupby: 7, // Ik wil alle objecten opvragen.
|
|
deel: deel,
|
|
mjbMoved: mjbMoved,
|
|
mjbFreezed: mjbFreezed,
|
|
mjbXcped: mjbXcped,
|
|
jaren: [mjb_freeze_year],
|
|
freeze: true
|
|
};
|
|
var mjblist_sql = ins.getmjblist_sql(mjbparams);
|
|
// De mjblist_sql bevat nu alle objecten (ins_deel_key) van de aangevinkte regels uit het mjb overzicht en levert voor elk object de waarden voor de insert op.
|
|
|
|
var result = {success: true, multi: multi, start: true };
|
|
|
|
var oRs = Oracle.Execute(mjblist_sql);
|
|
user.anything_todo_or_abort(!oRs.eof); // We klagen niet over enkele wel en enkele niet
|
|
|
|
var insert_sql = "BEGIN ";
|
|
while (!oRs.eof)
|
|
{
|
|
var ins_key = oRs("ins_deel_key").Value;
|
|
var srtcont_key = oRs("ins_srtcontrole_key").Value;
|
|
var nextdate = oRs("nextdate").Value != null? new Date(oRs("nextdate").Value) : null;
|
|
var inspstatus = oRs("ins_deelsrtcontrole_status").Value;
|
|
var kosten = oRs("freeze_bedrag").Value;
|
|
var opm_has_higherprio = oRs("opm_has_higherprio").Value;
|
|
ingesloten.push({ins_key: ins_key, srtcont_key: srtcont_key, dlsrtcont_key: -1,
|
|
inspectiestatus: inspstatus, kosten: kosten, ismjob: true});
|
|
|
|
insert_sql += "INSERT INTO ins_deelsrtcontrole(ins_deel_key"
|
|
+ " , ins_srtcontrole_key"
|
|
+ " , ins_deelsrtcontrole_status"
|
|
+ " , prs_perslid_key"
|
|
+ (nextdate
|
|
? " , ins_deelsrtcontrole_datum_org"
|
|
: "")
|
|
+ " , ins_deelsrtcontrole_freezecost"
|
|
+ " , ins_deelsrtcontrole_freezedate"
|
|
+ " , ins_deelsrtcontrole_opmerking"
|
|
+ " )"
|
|
+ " VALUES (" + ins_key
|
|
+ " , " + srtcont_key
|
|
+ " , 2"
|
|
+ " , " + user_key
|
|
+ (nextdate
|
|
? " , " + nextdate.toSQL(true)
|
|
: "")
|
|
+ " , " + kosten
|
|
+ " , TRUNC(TO_DATE(TO_CHAR(SYSDATE, 'DD-MON') || '-" + mjb_freeze_year + "', 'DD-MON-YYYY'), 'YEAR')"
|
|
+ " , " + safe.quoted_sql(opm_has_higherprio)
|
|
+ " )"
|
|
+ ";";
|
|
oRs.MoveNext();
|
|
}
|
|
oRs.Close();
|
|
insert_sql += " END;"
|
|
|
|
var err = Oracle.Execute(insert_sql, true);
|
|
if (err.friendlyMsg)
|
|
result.message = err.friendlyMsg;
|
|
|
|
for (var i = 0; i < ingesloten.length; i++)
|
|
{
|
|
var sql = "SELECT MAX(idsc.ins_deelsrtcontrole_key) max_idsc_key"
|
|
+ " 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";
|
|
var oRs_idsc = Oracle.Execute(sql);
|
|
|
|
ingesloten[i].dlsrtcont_key = oRs_idsc("max_idsc_key").Value;
|
|
oRs_idsc.Close();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var tobestart = 0;
|
|
var dlsrtcont_key = -1;
|
|
// Bepaal de objecten/delen in de selectie die
|
|
// ook echt gestart kunnen of mogen worden.
|
|
var ctrdisc_key = -1;
|
|
if (srtcont_key_arr.length > 0)
|
|
{
|
|
for (var i = 0; i < ins_key_arr.length; i++)
|
|
{
|
|
dlsrtcont_key = -1;
|
|
var ins_xcp_active_cost = S("ins_xcp_active_cost");
|
|
var costarray = [];
|
|
if (ins_xcp_active_cost & 1) costarray.push("COALESCE(xcp.ins_srtcontrole_kosten, 0)");
|
|
if (ins_xcp_active_cost & 2) costarray.push("COALESCE(xcp.ins_srtcontrole_kosten2, 0)");
|
|
if (ins_xcp_active_cost & 4) costarray.push("COALESCE(xcp.ins_srtcontrole_kosten3, 0)");
|
|
if (ins_xcp_active_cost & 8) costarray.push("COALESCE(xcp.ins_srtcontrole_materiaal, 0)");
|
|
var sqlcost = "";
|
|
if (costarray.length > 0)
|
|
sqlcost = "(" + costarray.join(" + ") + ") *";
|
|
|
|
var sql = "SELECT idsc.ins_deelsrtcontrole_key"
|
|
+ " , idsc.ins_deelsrtcontrole_status"
|
|
+ " , xcp.ctr_discipline_key"
|
|
+ " , xcp.ins_srtcontrole_key"
|
|
+ " , xcp.ins_srtcontrole_level"
|
|
+ " , COALESCE (xcp.ins_deel_aantal *"
|
|
+ " " + sqlcost
|
|
+ " (COALESCE(xcp.ins_srtcontrole_percentage, 100) / 100) *"
|
|
+ " POWER(" + inflatiefactor + " , " + mjb_freeze_year + " - EXTRACT(YEAR FROM SYSDATE))" // Bevriezen van het kalenderjaar S("mjb_freeze_year").
|
|
+ " , 0) bedrag" // Geen btw in bedrag/kosten die opgeslagen moet worden.
|
|
+ " , xcp.ctr_ismjob"
|
|
+ " 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_deel_key = idsc.ins_deel_key(+)"
|
|
+ " AND xcp.ins_deel_key = " + ins_key_arr[i]
|
|
+ " AND xcp.ins_srtcontrole_key = " + srtcont_key_arr[i]
|
|
+ " AND idsc.ins_scenario_key(+) = 1"
|
|
+ " AND xcp.ins_scenario_key = 1"
|
|
+ " 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 kosten = oRs("bedrag").Value;
|
|
var ismjob = oRs("ctr_ismjob").Value == 1;
|
|
oRs.Close();
|
|
|
|
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 ((!freeze && this_ins.canInspStart) || (freeze && this_ins.canInspFreeze))
|
|
{ // 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, kosten: kosten, ismjob: ismjob});
|
|
tobestart++;
|
|
}
|
|
}
|
|
}
|
|
lcl.set_dialect(ctrdisc_key, "INS_TAB_DISCIPLINE_KEY");
|
|
user.anything_todo_or_abort(tobestart > 0); // We klagen niet over enkele wel en enkele niet
|
|
|
|
var result = {success: true, multi: multi, start: true };
|
|
|
|
result.key = "";
|
|
for (var i = 0; i < ingesloten.length; i++)
|
|
{ // Zetten van de status en afhandelen van de tracking van het starten.
|
|
if (ingesloten[i].dlsrtcont_key < 0)
|
|
{ // Er is nog geen inspectie (ins_deelsrtcontrole) record aangemaakt. Eerst maar eens aanmaken.
|
|
// Als er al een inspectie is geweest kan er een volgende inspectiedatum berekend worden.
|
|
var nextdate = null;
|
|
if (ingesloten[i].inspectiestatus > -1)
|
|
{ // Bereken de volgende inspectiedatum.
|
|
// Alleen Active Situatie (AS) soort controle's kunnen gestart worden dus voor scenario key moet 1 genomen worden.
|
|
var sql = "SELECT ins.nextcyclusdate (" + ingesloten[i].ins_key + ", " + ingesloten[i].srtcont_key + ", 1, 1) nextdate FROM DUAL"
|
|
var oRs = Oracle.Execute(sql);
|
|
nextdate = new Date(oRs("nextdate").Value);
|
|
oRs.Close();
|
|
}
|
|
//else Er zijn nog geen inspecties geweest voor dit object. Dit wordt de eerste inspectie.
|
|
// Volgende inspectiedatum kun je niet berekenen en is dus onbekend (leeg)
|
|
|
|
// Plandatum blijft leeg.
|
|
var fields = [ { dbs: "ins_deelsrtcontrole_key", typ: "key", seq: "ins_s_ins_deelsrtcontrole_key" },
|
|
{ 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: 2 },
|
|
{ dbs: "prs_perslid_key", typ: "key", val: user_key },
|
|
{ dbs: "ins_deelsrtcontrole_datum_org", typ: "datetime", val: (nextdate? nextdate : null) }
|
|
];
|
|
|
|
// Als je mag bevriezen (canInspFreeze) dan zijn er kosten aanwezig in het jaar mjb_freeze_year.
|
|
if (freeze && (ingesloten[i].kosten >= 0))
|
|
{ // Uitzoeken of de taak door een hogere prio taak wordt uitgevoerd (kosten zijn 0 in het overzicht).
|
|
// In dat geval zijn de freeze kosten 0 en plaatsen we een opmerking.
|
|
// Voor MJOB is de interval modus actief.
|
|
// Neem de Active Situatie (AS) (Scenario = 1).
|
|
var sql = "SELECT insp.ins_deelsrtcontrole_key"
|
|
+ " , insp.ins_srtcontrole_level"
|
|
// 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 ("
|
|
+ " SELECT xcp.ins_deel_key"
|
|
+ " , xcp.ins_srtcontrole_key"
|
|
+ " , idsc.ins_deelsrtcontrole_key"
|
|
+ " , xcp.ctr_discipline_key"
|
|
+ " , xcp.ins_srtcontrole_periode"
|
|
+ " , xcp.ins_deel_aanmaak"
|
|
+ " , xcp.ctr_controle_type"
|
|
+ " , idsc.ins_deelsrtcontrole_plandatum plandatum"
|
|
+ " , ins_srtcontroledl_xcp_startdat"
|
|
+ " , xcp.ins_srtcontrole_level"
|
|
+ " , 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 = " + ingesloten[i].ins_key
|
|
+ " AND idsc2.ins_srtcontrole_key = xcp.ins_srtcontrole_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 = xcp.ins_srtcontrole_key"
|
|
+ " AND xcp.ins_deel_key = " + ingesloten[i].ins_key
|
|
+ " AND idsc.ins_deel_key(+) = " + ingesloten[i].ins_key
|
|
+ " AND idsc.ins_scenario_key(+) = 1"
|
|
+ " AND xcp.ins_scenario_key = 1"
|
|
+ " 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 = " + ingesloten[i].ins_key
|
|
+ " AND idsc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
|
|
+ " AND idsc2.ins_scenario_key = 1"
|
|
+ " ))"
|
|
// Zichtzelf uitsluiten.
|
|
+ " AND xcp.ins_srtcontrole_key != " + ingesloten[i].srtcont_key
|
|
// Alleen soort controles met een lager level opleveren.
|
|
+ " AND xcp.ins_srtcontrole_level < (SELECT isc.ins_srtcontrole_level"
|
|
+ " FROM ins_srtcontrole isc"
|
|
+ " WHERE isc.ins_srtcontrole_key = " + ingesloten[i].srtcont_key + ")"
|
|
+ " ) insp";
|
|
var oRs = Oracle.Execute(sql);
|
|
var has_higherprio = !oRs.eof && oRs("isFreezeYear").Value == 1; // Is er een hoger prio soort controle in het freeze jaar?
|
|
oRs.Close();
|
|
|
|
fields.push( { dbs: "ins_deelsrtcontrole_freezecost", typ: "float", val: (has_higherprio? 0 : ingesloten[i].kosten) } );
|
|
fields.push( { dbs: "ins_deelsrtcontrole_freezedate", typ: "datetime", val: new Date(mjb_freeze_year, 0, 1) } ); // Freezedate eerste dag van freeze year.
|
|
// Als er een hoger prio soort controle aanwezig is in het freeze jaar, dan een opmerking toevoegen.
|
|
if (has_higherprio)
|
|
fields.push( { dbs: "ins_deelsrtcontrole_opmerking", typ: "varchar", val: L("lcl_mjb_performed_high") } );
|
|
}
|
|
|
|
var insIns = buildInsert("ins_deelsrtcontrole", fields);
|
|
ingesloten[i].dlsrtcont_key = insIns.sequences["ins_deelsrtcontrole_key"];
|
|
var err = Oracle.Execute(insIns.sql, true);
|
|
if (err.friendlyMsg)
|
|
{
|
|
result.warning = err.friendlyMsg;
|
|
result.success = false;
|
|
}
|
|
}
|
|
// else de melding is wellicht ingepland. Dan zet we later wel de status op 2.
|
|
}
|
|
}
|
|
|
|
for (var i = 0; i < ingesloten.length; i++)
|
|
{ // Zetten van de status en afhandelen van de tracking van het starten.
|
|
// Melding aanmaken bij bevriezen van taak als setting op internal staat.
|
|
if (freeze && ingesloten[i].ismjob && S("mjb_operation_external") == 0) // Operational handling mjob {0=internal (default) | 1=external}.
|
|
{ // Melding aanmaken bij bevriezing.
|
|
// De setting "mjb_default_stdmelding" moet gevuld zijn met een geldige waarde. Daar gaan we van uit.
|
|
sql = "SELECT COALESCE(di.mld_stdmelding_key, fac.safe_To_Number(fac.getsetting ('mjb_default_stdmelding'))) default_stdmelding"
|
|
+ " , di.ctr_ismjob"
|
|
+ " FROM ins_deelsrtcontrole idsc"
|
|
+ " , ins_srtcontrole isc"
|
|
+ " , ins_tab_discipline itd"
|
|
+ " , ins_v_defined_inspect di"
|
|
+ " WHERE idsc.ins_srtcontrole_key = isc.ins_srtcontrole_key"
|
|
+ " AND idsc.ins_scenario_key = isc.ins_scenario_key"
|
|
+ " AND isc.ctr_discipline_key = itd.ins_discipline_key"
|
|
+ " AND isc.ins_srtcontrole_key = di.ins_srtcontrole_key"
|
|
+ " AND idsc.ins_deel_key = di.ins_deel_key"
|
|
+ " AND idsc.ins_deelsrtcontrole_key = " + ingesloten[i].dlsrtcont_key;
|
|
oRs = Oracle.Execute(sql);
|
|
var default_stdmelding = oRs("default_stdmelding").Value;
|
|
var stdm_info = mld.mld_stdmeldinginfo(default_stdmelding);
|
|
oRs.Close();
|
|
|
|
sql = "SELECT alg_locatie_key,"
|
|
+ " alg_gebouw_key,"
|
|
+ " alg_verdieping_key,"
|
|
+ " alg_ruimte_key"
|
|
+ " FROM ins_deel isd, alg_v_allonroerendgoed alg"
|
|
+ " WHERE ins_deel_key = " + ingesloten[i].ins_key
|
|
+ " AND alg_onroerendgoed_keys = isd.ins_alg_ruimte_key"
|
|
+ " AND isd.ins_alg_ruimte_type = 'R'"
|
|
oRs = Oracle.Execute(sql);
|
|
if (!oRs.Eof)
|
|
{
|
|
loc_key = oRs("alg_locatie_key").Value;
|
|
bld_key = oRs("alg_gebouw_key").Value;
|
|
flr_key = oRs("alg_verdieping_key").Value;
|
|
room_key = oRs("alg_ruimte_key").Value;
|
|
}
|
|
|
|
var issues = new model_issues();
|
|
var params = {};
|
|
var jsondata = {issuetype: default_stdmelding,
|
|
issuedate: new Date(),
|
|
account: user.afdeling().prs_kostenplaats_key(),
|
|
contact: user_key,
|
|
location: loc_key,
|
|
building: bld_key,
|
|
floor: flr_key,
|
|
room: room_key,
|
|
priority: 3, // Default prioriteit 3.
|
|
kto_key: ingesloten[i].dlsrtcont_key,
|
|
kto_type: "T",
|
|
kto: (stdm_info.stdmelding_kto & 1)? 1 : 0,
|
|
meldbron: 10};
|
|
var issues_array = issues.REST_POST(params, jsondata);
|
|
oRs.Close();
|
|
}
|
|
|
|
// Nu nog de status zetten, tracking genereren en notificaties sturen.
|
|
ins.setinspectstatus(ingesloten[i].dlsrtcont_key, 2); // In behandeling(2)
|
|
result.key += (i > 0? "," : "") + ingesloten[i].dlsrtcont_key;
|
|
}
|
|
|
|
Response.Write(JSON.stringify(result));
|
|
%>
|