246 lines
12 KiB
Plaintext
246 lines
12 KiB
Plaintext
<%@ LANGUAGE = JavaScript %>
|
|
<% Server.ScriptTimeout=6000; %>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: ins_inspect_unstart.asp
|
|
Description: Terugzetten van de geaccordeerde inspecties.
|
|
Parameters:
|
|
ins_keys Array van objecten waarvan inspecties moeten worden gestart.
|
|
srtcont_keys Array van deelsoort controles die moeten worden teruggezet.
|
|
|
|
Context: Inline actie mjb_search_list.asp.
|
|
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/kenmerk_common.inc" -->
|
|
<!-- #include file="../Shared/discxalg3d.inc" -->
|
|
<!-- #include file="../API2/api2.inc" -->
|
|
<!-- #include file="ins.inc" -->
|
|
|
|
<%
|
|
protectRequest.validateToken();
|
|
var mode = "show"; // mode must be defined because of use in model_mld_kenmerk.inc
|
|
var ins_key_arr = getFParamKeyArray("ins_keys");
|
|
var srtcont_key_arr = getFParamKeyArray("srtcont_key_arr", []);
|
|
var deelsrtcont_key_arr = getFParamIntArray("deelsrtcont_key_arr", []); // De eerste "-1" waarde moeten niet verwijderd worden uit de array, daarom getFParamIntArray i.p.v. getFParamKeyArray.
|
|
|
|
var multi = ins_key_arr.length > 1;
|
|
var groupby = getFParamInt("groupby", 9);
|
|
var aantaltaken = getFParamInt("aantaltaken", 0);
|
|
|
|
var inflatiepct = S("mjb_inflation");
|
|
var inflatiefactor = 1 + (inflatiepct / 100);
|
|
var mjb_start_year = S("mjb_start_year");
|
|
var mjb_freeze_year = Math.max(S("mjb_freeze_year"), new Date().getFullYear());
|
|
|
|
var result = {key: "", success: true, multi: multi, start: true };
|
|
var ingesloten = [];
|
|
if (groupby < 9)
|
|
{
|
|
var screenmode = getQParamInt("mode", 1); // Schermmode 1=Begroting (aankomende jaren) (=default), 2=Realisatie (huidige en lopende jaren, 3=Uitvoering (koppelen (uitvoerend) van taken aan een melding).
|
|
var dist_key_arr = getFParamKeyArray("dist_key_arr", []); // District array
|
|
var loc_key_arr = getFParamKeyArray("loc_key_arr", []); // Locatie array
|
|
var bld_key_arr = getFParamKeyArray("bld_key_arr", []); // Gebouw array
|
|
|
|
var disc_key_arr = getFParamKeyArray("disc_key_arr", []);
|
|
var srtgroep_key_arr = getFParamKeyArray("srtgroep_key_arr", []);
|
|
var srtdeel_key_arr = getFParamKeyArray("srtdeel_key_arr", []);
|
|
var moredetail = getFParamInt("moredetail", 0);
|
|
var srtgebouw_key_arr = getFParamKeyArray("srtgebouw_key_arr", []);
|
|
var groep_str_arr = getFParamArray("groep_str_arr", []); // Groep
|
|
var categorie_key_arr = getFParamKeyArray("categorie_key_arr", []); // Categorie
|
|
var srtcontrole_key_arr = getFParamKeyArray("srtcontrole_key_arr", []); // Taak
|
|
var frequentie_arr = getFParamIntArray("frequentie_arr", []); // Array met frequenties.
|
|
var kp_key_arr = getFParamKeyArray("kp_key_arr", []); // Kostenplaats.
|
|
var incbtw = false; // Voor het accorderen zijn de bedragen (freeze) zonder BTW nodig. Dus ALTIJD false meegeven;
|
|
var showunfin = getFParamInt("showunfin", 0) == 1; // Alleen onvoltooide regels.
|
|
var deel = getFParam("deel", ""); // Identieficatie
|
|
|
|
// FORM score velden.
|
|
var fitness_score1_from = getFParamInt("fitness_score1_from", -1); // Conditie score van.
|
|
var fitness_score1_through = getFParamInt("fitness_score1_through", -1); // Conditie score t/m.
|
|
var fitness_score1_from_neg = getFParamInt("fitness_score1_from_neg", -1); // Negatieve afwijking conditie score van.
|
|
var fitness_score1_through_neg = getFParamInt("fitness_score1_through_neg", -1); // Negatieve afwijking conditie score t/m.
|
|
var fitness_score1_from_pos = getFParamInt("fitness_score1_from_pos", -1); // Positieve afwijking conditie score van.
|
|
var fitness_score1_through_pos = getFParamInt("fitness_score1_through_pos", -1); // Positieve afwijking conditie score t/m.
|
|
var priority_score2_from = getFParamInt("priority_score2_from", -1); // Prioriteitsscore van.
|
|
var priority_score2_through = getFParamInt("priority_score2_through", -1); // Prioriteitsscore t/m.
|
|
|
|
// FORM status checkboxes.
|
|
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), locatie(2), gebouw(3), discipline(4), groep(5), objectsoort(6), object(7))
|
|
keys: ins_key_arr,
|
|
scenario: 1,
|
|
fulldetails: true,
|
|
//actsit: actsit, // actsit alleen van invloed op scenario_key > 1.
|
|
mode: screenmode,
|
|
dist_key_arr: dist_key_arr,
|
|
loc_key_arr: loc_key_arr,
|
|
bld_key_arr: bld_key_arr,
|
|
disc_key_arr: disc_key_arr,
|
|
srtgroep_key_arr: srtgroep_key_arr,
|
|
srtdeel_key_arr: srtdeel_key_arr,
|
|
moredetail: moredetail,
|
|
srtgebouw_key_arr: srtgebouw_key_arr,
|
|
groep_str_arr: groep_str_arr,
|
|
categorie_key_arr: categorie_key_arr,
|
|
srtcontrole_key_arr: srtcontrole_key_arr,
|
|
frequentie_arr: frequentie_arr,
|
|
kp_key_arr: kp_key_arr,
|
|
incbtw: incbtw,
|
|
showunfin: showunfin,
|
|
inflatiefactor: inflatiefactor,
|
|
toyear: mjb_freeze_year,
|
|
groupby: 9, // Ik wil alle objecten opvragen.
|
|
deel: deel,
|
|
fitness_score1_from : fitness_score1_from,
|
|
fitness_score1_through : fitness_score1_through,
|
|
fitness_score1_from_neg : fitness_score1_from_neg,
|
|
fitness_score1_through_neg : fitness_score1_through_neg,
|
|
fitness_score1_from_pos : fitness_score1_from_pos,
|
|
fitness_score1_through_pos : fitness_score1_through_pos,
|
|
priority_score2_from : priority_score2_from,
|
|
priority_score2_through : priority_score2_through,
|
|
mjbMoved: mjbMoved,
|
|
mjbFreezed: mjbFreezed,
|
|
mjbXcped: mjbXcped,
|
|
jaren: [mjb_freeze_year],
|
|
unfreeze: 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 oRs = Oracle.Execute(mjblist_sql);
|
|
// Hier geen "user.anything_todo_or_abort(!oRs.eof);". We geven altijd een melding terug hoeveel taken er terug gezet zijn.
|
|
while (!oRs.eof)
|
|
{
|
|
var ins_key = oRs("ins_deel_key").Value;
|
|
var srtcont_key = oRs("ins_srtcontrole_key").Value;
|
|
var ins_srtdeel_oms = oRs("ins_srtdeel_omschrijving").Value;
|
|
var ins_srtcont_oms = oRs("ins_srtcontrole_omschrijving").Value;
|
|
var ins_srtcont_info = oRs("ins_srtcontrole_info").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
|
|
});
|
|
oRs.MoveNext();
|
|
}
|
|
oRs.Close();
|
|
|
|
for (var i = 0; i < ingesloten.length; i++)
|
|
{
|
|
var sql = "SELECT idsc.ins_deelsrtcontrole_key"
|
|
+ " , idsc.ins_deelsrtcontrole_plandatum"
|
|
+ " , xcp.ctr_discipline_key"
|
|
+ " FROM ins_deelsrtcontrole idsc"
|
|
+ " , ins_v_defined_inspect_xcp xcp"
|
|
+ " WHERE xcp.ins_deel_key = idsc.ins_deel_key"
|
|
+ " AND xcp.ins_srtcontrole_key = idsc.ins_srtcontrole_key"
|
|
+ " AND xcp.ins_scenario_key = idsc.ins_scenario_key"
|
|
+ " AND idsc.ins_deel_key = " + ingesloten[i].ins_key
|
|
+ " AND idsc.ins_srtcontrole_key = " + ingesloten[i].srtcont_key
|
|
+ " AND idsc.ins_scenario_key = 1"
|
|
+ " AND idsc.ins_deelsrtcontrole_status = 2";
|
|
var oRs_idsc = Oracle.Execute(sql);
|
|
|
|
ingesloten[i].dlsrtcont_key = oRs_idsc("ins_deelsrtcontrole_key").Value;
|
|
ingesloten[i].hasPlandatum = (oRs_idsc("ins_deelsrtcontrole_plandatum").Value != null);
|
|
oRs_idsc.Close();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var tobestart = 0;
|
|
// Bepaal de taken in de selectie waarvan het accorderen ook echt ongedaan gemaakt kunnen of mogen worden.
|
|
var ctrdisc_key = -1;
|
|
if (srtcont_key_arr.length > 0)
|
|
{
|
|
for (var i = 0; i < ins_key_arr.length; i++)
|
|
{
|
|
var this_ins = ins.func_enabled_deel(ins_key_arr[i],
|
|
{srtcont_key: srtcont_key_arr[i],
|
|
deelsrtcont_key: deelsrtcont_key_arr[i]
|
|
});
|
|
|
|
// Het laatste inspectierecord moet Gepland(0) of Verwerkt(6) (ins_deelsrtcontrole_status = -1) zijn, anders kan de inspectie niet gestart worden.
|
|
if (this_ins.canInspUnFreeze)
|
|
{ // Accorderen kan ongedaan gemaakt worden.
|
|
var sql = "SELECT ins_deelsrtcontrole_plandatum"
|
|
+ " FROM ins_deelsrtcontrole"
|
|
+ " WHERE ins_deelsrtcontrole_key = " + deelsrtcont_key_arr[i];
|
|
var oRs = Oracle.Execute(sql);
|
|
|
|
ingesloten.push({ ins_key: ins_key_arr[i],
|
|
srtcont_key: srtcont_key_arr[i],
|
|
dlsrtcont_key: deelsrtcont_key_arr[i],
|
|
hasPlandatum: (oRs("ins_deelsrtcontrole_plandatum").Value != null)
|
|
});
|
|
oRs.Close();
|
|
tobestart++;
|
|
}
|
|
}
|
|
}
|
|
lcl.set_dialect(ctrdisc_key, "CTR_DISCIPLINE_KEY");
|
|
// Hier geen "user.anything_todo_or_abort(tobestart > 0);". We geven altijd een melding terug hoeveel taken er terug gezet zijn.
|
|
}
|
|
|
|
for (var i = 0; i < ingesloten.length; i++)
|
|
{ // Indien er een plandatum is gezet dan de status naar ingepland(0) zetten, anders het inspectie record verwijderen.
|
|
if (ingesloten[i].hasPlandatum)
|
|
{ // Zetten van de status en afhandelen van de tracking (en notificatie) van het starten.
|
|
ins.setinspectstatus(ingesloten[i].dlsrtcont_key, 0); // Ingepland(0)
|
|
|
|
// Maak de freeze velden freezecost en freezedate weer leeg.
|
|
var sql = "UPDATE ins_deelsrtcontrole"
|
|
+ " SET ins_deelsrtcontrole_freezecost = NULL"
|
|
+ " , ins_deelsrtcontrole_freezedate = NULL"
|
|
+ " WHERE ins_deelsrtcontrole_key = " + ingesloten[i].dlsrtcont_key;
|
|
Oracle.Execute(sql);
|
|
|
|
// Tracking van het ongedaan maken van de accordering.
|
|
ins.trackinspectupdate(ingesloten[i].dlsrtcont_key, L("lcl_mjb_start_reversed"));
|
|
}
|
|
else
|
|
{ // Inspectie (ins_deelsrtcontrole) record verwijdern.
|
|
var sql = "DELETE FROM ins_deelsrtcontrole"
|
|
+ " WHERE ins_deelsrtcontrole_key = " + ingesloten[i].dlsrtcont_key;
|
|
Oracle.Execute(sql);
|
|
|
|
// Tracking is niet meer terug te herleiden naar de verwijderde inspectie.
|
|
// Daarom de tracking van het accorderen verwijderen.
|
|
var sql = "DELETE FROM fac_tracking"
|
|
+ " WHERE fac_srtnotificatie_key = (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'INSCBE')"
|
|
+ " AND fac_tracking_refkey = " + ingesloten[i].dlsrtcont_key;
|
|
Oracle.Execute(sql);
|
|
}
|
|
result.key += (i > 0? "," : "") + ingesloten[i].dlsrtcont_key;
|
|
}
|
|
|
|
if (ingesloten.length < aantaltaken)
|
|
{ // Niet alle taken zijn terug gezet.
|
|
result.message = ingesloten.length == 1? L("lcl_mjb_unfreeze_mes_1").format(aantaltaken) : L("lcl_mjb_unfreeze_mes_n").format(ingesloten.length, aantaltaken);
|
|
}
|
|
else
|
|
{ // Alle taken zijn terug gezet.
|
|
result.toaster = L("lcl_mjb_start_reversed");
|
|
}
|
|
Response.Write(JSON.stringify(result));
|
|
%>
|
|
<% ASPPAGE_END(); %>
|