Files
Facilitor/APPL/INS/ins_inspect_unstart.asp
Maykel Geerdink 8fd30b06ed FCLT#89443: Wijzigingen en verbeteringsvoorstellen MJOB module (Punt 7).
svn path=/Website/trunk/; revision=69956
2025-08-11 12:29:50 +00:00

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(); %>