PLAT#47027: Bulkactie Freeze (Accorderen) op hoger nivo.
svn path=/Website/branches/v2017.2/; revision=36069
This commit is contained in:
191
APPL/INS/ins.inc
191
APPL/INS/ins.inc
@@ -2270,7 +2270,11 @@ ins = {checkAutLevel:
|
||||
var mjbMoved = params.mjbMoved;
|
||||
var mjbFreezed = params.mjbFreezed;
|
||||
var mjbXcped = params.mjbXcped;
|
||||
var sel_controlemode123 = params.sel_controlemode123;
|
||||
var jaren = params.jaren;
|
||||
var freeze = params.freeze;
|
||||
var finish = params.finish;
|
||||
var getsumtypes = params.getsumtypes;
|
||||
|
||||
// De datum (jaar) van de *eerstvolgende* onderhoudsbeurt volgt uit:
|
||||
// Datum laatste (/laatste geplande) inspectie
|
||||
@@ -2789,7 +2793,7 @@ ins = {checkAutLevel:
|
||||
+ " AND g.alg_locatie_key = l.alg_locatie_key"
|
||||
+ " AND d.alg_district_key = l.alg_district_key";
|
||||
|
||||
if (keys != null && keys.length > 0 && niveau != null && niveau > 0)
|
||||
if (keys != null && keys.length > 0 && niveau != null && niveau > 0 && (freeze || finish))
|
||||
{
|
||||
switch (niveau)
|
||||
{
|
||||
@@ -2981,6 +2985,191 @@ ins = {checkAutLevel:
|
||||
sql += "," + String(i)
|
||||
}
|
||||
|
||||
// Bulkactie accorderen (freeze) of voltooien/afronden (finish).
|
||||
// Ik moet nog de juiste insert waarden ophalen voor alle objecten die de sql oplevert.
|
||||
if (niveau >= 1 && niveau <= 6 && (freeze || finish))
|
||||
{ // Accorderen (Freeze) of Voltooien/Afronden (Finish).
|
||||
if (freeze)
|
||||
{
|
||||
var mjblist_sql_select = "SELECT xcp.ins_deel_key"
|
||||
+ " , xcp.ins_srtcontrole_key"
|
||||
+ " , CASE"
|
||||
+ " WHEN result.ins_deelsrtcontrole_status IS NOT NULL"
|
||||
+ " THEN (SELECT ins.nextcyclusdate (xcp.ins_deel_key, xcp.ins_srtcontrole_key, 1, 1) FROM DUAL)"
|
||||
+ " ELSE NULL"
|
||||
+ " END nextdate"
|
||||
+ " , result.ins_deelsrtcontrole_status"
|
||||
+ " , result.\"" + mjb_freeze_year + "\" freeze_bedrag"
|
||||
+ " , CASE"
|
||||
+ " WHEN result.\"" + mjb_freeze_year + "\" = 0 AND result.\"" + mjb_freeze_year + "_ORGBEDRAG\" IS NOT NULL AND result.\"" + mjb_freeze_year + "_ORGBEDRAG\" > 0"
|
||||
+ " THEN " + safe.quoted_sql(L("lcl_mjb_performed_high"))
|
||||
+ " ELSE ''"
|
||||
+ " END opm_has_higherprio"; // Opmerking als het een hogere prio heeft (has_higherprio)
|
||||
}
|
||||
else // finish
|
||||
{
|
||||
if (getsumtypes)
|
||||
{
|
||||
var mjblist_sql_select = "SELECT SUM(CASE"
|
||||
+ " WHEN xcp.ctr_controle_type = 1"
|
||||
+ " THEN 1"
|
||||
+ " ELSE 0"
|
||||
+ " END) sumtype1"
|
||||
+ " , SUM(CASE"
|
||||
+ " WHEN xcp.ctr_controle_type = 2"
|
||||
+ " THEN 1"
|
||||
+ " ELSE 0"
|
||||
+ " END) sumtype2"
|
||||
+ " , SUM(CASE"
|
||||
+ " WHEN xcp.ctr_controle_type = 3"
|
||||
+ " THEN 1"
|
||||
+ " ELSE 0"
|
||||
+ " END) sumtype3";
|
||||
}
|
||||
else
|
||||
{
|
||||
var mjblist_sql_select = "SELECT xcp.ins_deel_key"
|
||||
+ " , xcp.ins_srtcontrole_key"
|
||||
+ " , result.ctr_controle_type"
|
||||
+ " , CASE"
|
||||
+ " WHEN (SELECT MAX(idsc2.ins_deelsrtcontrole_key)"
|
||||
+ " FROM ins_deelsrtcontrole idsc2"
|
||||
+ " WHERE idsc2.ins_deel_key = xcp.ins_deel_key"
|
||||
+ " AND idsc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
|
||||
+ " AND idsc2.ins_scenario_key = xcp.ins_scenario_key"
|
||||
+ " AND idsc2.ins_deelsrtcontrole_status = 6) IS NOT NULL" // Er is al een inspectie geweest.
|
||||
+ " THEN (SELECT ins.nextcyclusdate (xcp.ins_deel_key, xcp.ins_srtcontrole_key, 1, 1) FROM DUAL)"
|
||||
+ " ELSE SYSDATE" // Er is nog geen inspectie geweest. De org date wordt nu.
|
||||
+ " END nextdate"
|
||||
+ " , (SELECT MAX(idsc2.ins_deelsrtcontrole_key)"
|
||||
+ " FROM ins_deelsrtcontrole idsc2"
|
||||
+ " WHERE idsc2.ins_deel_key = xcp.ins_deel_key"
|
||||
+ " AND idsc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
|
||||
+ " AND idsc2.ins_scenario_key = xcp.ins_scenario_key) ins_deelsrtcontrole_key"
|
||||
+ " , (SELECT cm.ins_controlemode_oms"
|
||||
+ " FROM ins_controlemode cm"
|
||||
+ " WHERE cm.ins_controlemode_key IN (" + sel_controlemode123.join(",") + ")"
|
||||
+ " AND cm.ins_srtcontrole_type = result.ctr_controle_type) cm_oms"
|
||||
+ " , (SELECT cd.ins_discipline_omschrijving"
|
||||
+ " FROM ctr_discipline cd"
|
||||
+ " WHERE cd.ins_discipline_key = xcp.ctr_discipline_key) ctr_disc_oms"
|
||||
+ " , (SELECT idsc2.ins_deelsrtcontrole_opmerking"
|
||||
+ " FROM ins_deelsrtcontrole idsc2"
|
||||
+ " WHERE ins_deelsrtcontrole_key = (SELECT MAX(idsc2.ins_deelsrtcontrole_key)"
|
||||
+ " FROM ins_deelsrtcontrole idsc2"
|
||||
+ " WHERE idsc2.ins_deel_key = xcp.ins_deel_key"
|
||||
+ " AND idsc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
|
||||
+ " AND idsc2.ins_scenario_key = xcp.ins_scenario_key)) ins_deelsrtcontrole_opmerking";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var mjblist_sql = mjblist_sql_select
|
||||
+ " FROM ins_v_defined_inspect_xcp xcp"
|
||||
+ " , ins_deel dl" // I.v.m. ORA-03113 fout: ins_v_aanwezigdeel vervangen door ins_deel en verder uitgeschreven (FSN#51212).
|
||||
+ " , ins_srtdeel isd"
|
||||
+ " , ins_srtgroep isg"
|
||||
+ " , ins_discipline dd"
|
||||
+ " , alg_district d"
|
||||
+ " , alg_locatie l"
|
||||
+ " , alg_gebouw g"
|
||||
+ " , alg_verdieping v"
|
||||
+ " , alg_ruimte r"
|
||||
+ " , (" + sql + ") result"
|
||||
+ " WHERE xcp.ins_deel_key = dl.ins_deel_key"
|
||||
+ " AND dl.ins_deel_verwijder IS NULL"
|
||||
+ " AND dl.ins_deel_parent_key IS NULL"
|
||||
+ " AND dl.ins_srtdeel_key = isd.ins_srtdeel_key"
|
||||
+ " AND isd.ins_srtgroep_key = isg.ins_srtgroep_key"
|
||||
+ " AND isg.ins_discipline_key = dd.ins_discipline_key"
|
||||
+ " AND dl.ins_alg_ruimte_key = r.alg_ruimte_key"
|
||||
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
|
||||
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
|
||||
+ " AND g.alg_locatie_key = l.alg_locatie_key"
|
||||
+ " AND d.alg_district_key = l.alg_district_key"
|
||||
+ " AND xcp.ins_deel_key = result.ins_deel_key"
|
||||
+ " AND xcp.ins_srtcontrole_key = result.ins_srtcontrole_key"
|
||||
// Inspectie mag niet op dezelfde dag plaatsvinden
|
||||
+ " AND (SELECT TRUNC(idsc2.ins_deelsrtcontrole_datum)"
|
||||
+ " FROM ins_deelsrtcontrole idsc2"
|
||||
+ " WHERE ins_deelsrtcontrole_key = (SELECT MAX(idsc2.ins_deelsrtcontrole_key)"
|
||||
+ " FROM ins_deelsrtcontrole idsc2"
|
||||
+ " WHERE idsc2.ins_deel_key = xcp.ins_deel_key"
|
||||
+ " AND idsc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
|
||||
+ " AND idsc2.ins_scenario_key = xcp.ins_scenario_key"
|
||||
+ " AND idsc2.ins_deelsrtcontrole_status = 6)) != TRUNC(SYSDATE)"
|
||||
// Autorisatie controleren i.p.v. canInspStartReq (Accorderen (Freeze)) en canInspFinishReq (Voltooien/Afronden (Finish)):
|
||||
// 0) invoerAfterNext is voor mjob (interval modus) altijd waar.
|
||||
// 1) Alleen voor Accorderen (Freeze): niet vervallen.
|
||||
// 2) Freeze: status <= 0 of status == 6
|
||||
// Finish: status == 2
|
||||
// 3) actief object
|
||||
// 4) hasCTRwrite
|
||||
// 5) Freeze: bij instelling "Actieve acties" het vinkje "Starten" aangevinkt.
|
||||
// Finish: bij instelling "Actieve acties" het vinkje "Afronden" aangevinkt.
|
||||
// 6) geen scenario (scenario_key is 1)
|
||||
// 7) ismjob
|
||||
// 8) isFreezeYear
|
||||
// 9) readuse rechten.
|
||||
+ (freeze
|
||||
? " AND (xcp.ins_srtcontroledl_xcp_eind IS NULL OR xcp.ins_srtcontroledl_xcp_eind >= SYSDATE)" // 1) Freeze: Niet vervallen.
|
||||
: "") // Finish: Maakt niet uit.
|
||||
+ (freeze
|
||||
? " AND (EXISTS" // 2) Freeze: Geen controles of laatste controle status 0 of 6.
|
||||
+ " (SELECT idsc1.ins_deelsrtcontrole_status"
|
||||
+ " FROM ins_deelsrtcontrole idsc1"
|
||||
+ " WHERE idsc1.ins_deelsrtcontrole_key = (SELECT MAX(idsc2.ins_deelsrtcontrole_key)"
|
||||
+ " FROM ins_deelsrtcontrole idsc2"
|
||||
+ " WHERE idsc2.ins_deel_key = xcp.ins_deel_key"
|
||||
+ " AND idsc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
|
||||
+ " AND idsc2.ins_scenario_key = xcp.ins_scenario_key)"
|
||||
+ " AND idsc1.ins_deelsrtcontrole_status IN (0, 6))"
|
||||
+ " OR NOT EXISTS"
|
||||
+ " (SELECT idsc2.ins_deelsrtcontrole_key"
|
||||
+ " FROM ins_deelsrtcontrole idsc2"
|
||||
+ " WHERE idsc2.ins_deel_key = xcp.ins_deel_key"
|
||||
+ " AND idsc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
|
||||
+ " AND idsc2.ins_scenario_key = xcp.ins_scenario_key))"
|
||||
: " AND EXISTS" // Finish: Laatste controle status 2.
|
||||
+ " (SELECT idsc1.ins_deelsrtcontrole_status"
|
||||
+ " FROM ins_deelsrtcontrole idsc1"
|
||||
+ " WHERE idsc1.ins_deelsrtcontrole_key = (SELECT MAX(idsc2.ins_deelsrtcontrole_key)"
|
||||
+ " FROM ins_deelsrtcontrole idsc2"
|
||||
+ " WHERE idsc2.ins_deel_key = xcp.ins_deel_key"
|
||||
+ " AND idsc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
|
||||
+ " AND idsc2.ins_scenario_key = xcp.ins_scenario_key)"
|
||||
+ " AND idsc1.ins_deelsrtcontrole_status IN (2))")
|
||||
+ " AND ins_deel_actief = 1" // 3) Actief object.
|
||||
+ " AND xcp.ctr_discipline_key IN (SELECT w.ins_discipline_key" // 4) hasCTRwrite.
|
||||
+ " FROM fac_v_webgebruiker w"
|
||||
+ " , fac_functie f"
|
||||
+ " WHERE w.fac_functie_key = f.fac_functie_key"
|
||||
+ " AND f.fac_functie_code = 'WEB_CTRUSE'"
|
||||
+ " AND w.fac_gebruiker_prs_level_write < 9"
|
||||
+ " AND w.fac_gebruiker_alg_level_write < 9"
|
||||
+ " AND w.prs_perslid_key = " + user_key + ")"
|
||||
+ (freeze
|
||||
? " AND BITAND(xcp.ins_srtcontrole_options, 2) = 2" // 5) Freeze: Het vinkje "Starten" aangevinkt.
|
||||
: " AND BITAND(xcp.ins_srtcontrole_options, 8) = 8") // Finish: Het vinkje "Afronden" aangevinkt.
|
||||
+ " AND xcp.ins_scenario_key = 1" // 6) Geen scenario.
|
||||
+ " AND xcp.ctr_ismjob = 1" // 7) ismjob.
|
||||
+ " AND result.\"" + mjb_freeze_year + "\" IS NOT NULL"; // 8) isFreezeYear, bedrag in mjb_freeze_year is niet NULL.
|
||||
|
||||
sql = discxalg3d(mjblist_sql, // 9) 3D-readuse rechten.
|
||||
"dd.ins_discipline_key",
|
||||
"d.alg_regio_key",
|
||||
"d.alg_district_key",
|
||||
"l.alg_locatie_key",
|
||||
"g.alg_gebouw_key",
|
||||
"v.alg_verdieping_key",
|
||||
"r.alg_ruimte_key",
|
||||
"WEB_INSUSE", //autfunction,
|
||||
"",
|
||||
false); // forwrite => read
|
||||
|
||||
sql += " ORDER BY xcp.ins_deel_key"
|
||||
+ " , xcp.ins_srtcontrole_key";
|
||||
}
|
||||
return sql;
|
||||
},
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
<!-- #include file="../Shared/selector.inc" -->
|
||||
<!-- #include file="../Shared/json2.js" -->
|
||||
<!-- #include file="ins_flexkenmerksrtcontrole.inc" -->
|
||||
<!-- #include file="../Shared/discxalg3d.inc" -->
|
||||
<!-- #include file="ins.inc" -->
|
||||
|
||||
<%
|
||||
@@ -37,6 +38,7 @@ var insPlan = getQParamInt("plan", 0) == 1; // Inplannen inspectie.
|
||||
var insClose = getQParamInt("close", 0) == 1; // Afmelden of afronden inspectie.
|
||||
var insEdit = !insPlan && !insClose; // Wijzigen inspectie.
|
||||
var fromfinish = getQParamInt("fromfinish", 0) == 1; // Alleen Voltooien bij bulkactie (multi).
|
||||
var groupby = getQParamInt("groupby", 7);
|
||||
|
||||
if (insEdit && multi)
|
||||
abort_with_warning(L("lcl_ins_allow_multi_edit"));
|
||||
@@ -54,83 +56,165 @@ var ctrdisc_key = -1;
|
||||
var canClose = true;
|
||||
var canFinish = true;
|
||||
var nrCanFinishAfterClose = 0;
|
||||
for (var i = 0; i < ins_key_arr.length; i++)
|
||||
|
||||
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 transitParam = "";
|
||||
if (groupby < 7)
|
||||
// Bulk closen per categorie.
|
||||
transitParam = buildTransitParam(["close", "ins_keys", "srtcont_keys", "deelsrtcont_keys", "fromfinish",
|
||||
"dist_key", "loc_key", "bld_key", "disc_key", "srtgroep_kye", "srtdeel_key",
|
||||
"groep", "categori_key", "srtcontrole", "frequentie", "incbtw", "groupby",
|
||||
"deel", "mjbMoved", "mjbFreezed", "mjbXcped"]);
|
||||
|
||||
if (groupby < 7)
|
||||
{
|
||||
var this_ins = ins.func_enabled_deel(ins_key_arr[i],
|
||||
{srtcont_key: srtcont_key_arr[i],
|
||||
deelsrtcont_key: (deelsrtcont_arr[i] > 0? deelsrtcont_arr[i] : -1)
|
||||
});
|
||||
canMsuEdit = insEdit && this_ins.canMsuEdit;
|
||||
var dist_key = getQParamInt("dist_key", -1); // District
|
||||
var loc_key = getQParamInt("loc_key", -1); // Locatie
|
||||
var bld_key = getQParamInt("bld_key", -1); // Gebouw
|
||||
var disc_key = getQParamInt("disc_key", -1);
|
||||
var srtgroep_key = getQParamInt("srtgroep_key", -1);
|
||||
var srtdeel_key = getQParamInt("srtdeel_key", -1);
|
||||
var groep = getQParam("groep", ""); // Groep
|
||||
var categorie_key = getQParamInt("categorie_key", -1); // Categorie
|
||||
var srtcontrole = getQParamIntArray("srtcontrole", []); // Taak
|
||||
var frequentie = getQParamIntArray("frequentie", []); // Array met frequenties.
|
||||
var incbtw = getQParamInt("incbtw", 0) == 1; // Lijst inclusief BTW weergeven.
|
||||
var deel = getQParam("deel", ""); // Identieficatie
|
||||
var mjbMoved = getQParamInt("mjbMoved", 0) == 1; // Verschoven.
|
||||
var mjbFreezed = getQParamInt("mjbFreezed", 0) == 1; // In behandeling.
|
||||
var mjbXcped = getQParamInt("mjbXcped", 0) == 1; // Aangepast.
|
||||
|
||||
var sql = "SELECT idsc.ins_deelsrtcontrole_key"
|
||||
+ " , idsc.ins_deelsrtcontrole_status"
|
||||
+ " , xcp.ins_srtcontroledl_xcp_eind vervaldatum"
|
||||
+ " , isc.ctr_discipline_key"
|
||||
+ " , isc.ins_srtcontrole_options options"
|
||||
+ " FROM ins_srtcontrole isc"
|
||||
+ " , ins_deelsrtcontrole idsc"
|
||||
+ " , ins_srtcontroledl_xcp xcp"
|
||||
+ " WHERE isc.ins_srtcontrole_key = idsc.ins_srtcontrole_key(+)" // Er kan nog voor de eerste keer geinspecteerd moeten worden.
|
||||
+ " AND isc.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
|
||||
+ " AND xcp.ins_deel_key(+) = " + ins_key_arr[i]
|
||||
+ " AND idsc.ins_deel_key(+) = " + ins_key_arr[i]
|
||||
+ " AND isc.ins_srtcontrole_key = " + srtcont_key_arr[i]
|
||||
+ (deelsrtcont_arr[i] > 0
|
||||
? " AND idsc.ins_deelsrtcontrole_key = " + deelsrtcont_arr[i]
|
||||
: " AND idsc.ins_deelsrtcontrole_status(+) != 6")
|
||||
+ " 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;
|
||||
// Start building the query to fetch all objects satisfying
|
||||
var mjbparams = { scenario: 1,
|
||||
fulldetails: true,
|
||||
toyear: mjb_freeze_year,
|
||||
jaren: [mjb_freeze_year],
|
||||
//actsit: actsit,
|
||||
keys: ins_key_arr,
|
||||
niveau: groupby, // Het niveau (betekenis) van de keys (district(1), gebouw(2), discipline(3), groep(4), objectsoort(5), object(6))
|
||||
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,
|
||||
deel: deel,
|
||||
mjbMoved: mjbMoved,
|
||||
mjbFreezed: mjbFreezed,
|
||||
mjbXcped: mjbXcped,
|
||||
groupby: 7, // Ik wil alle objecten opvragen.
|
||||
finish: true,
|
||||
getsumtypes: true
|
||||
};
|
||||
|
||||
// Waarden moeten aanwezig zijn. Mocht dat niet zo zijn dan is er iets fout.
|
||||
// Als de laatste inspectie is afgerond is, wordt er null opgeleverd voor de ins_deelsrtcontrole_key en ins_deelsrtcontrole_status.
|
||||
// Er moet dan een nieuwe inspectie worden ingeland/gestart/afgemeld of afgerond.
|
||||
var ins_deelsrtcontrole_key = oRs("ins_deelsrtcontrole_key").Value != null? oRs("ins_deelsrtcontrole_key").Value : -1;
|
||||
var ins_deelsrtcontrole_status = oRs("ins_deelsrtcontrole_status").Value != null? oRs("ins_deelsrtcontrole_status").Value : -1;
|
||||
var vervaldatum = oRs("vervaldatum").Value != null? new Date(oRs("vervaldatum").Value) : null;
|
||||
var vervallen = vervaldatum != null && vervaldatum < new Date();
|
||||
var isc_options = oRs("options").Value;
|
||||
oRs.Close();
|
||||
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.
|
||||
|
||||
// Het is de eerste inspectie of de laatste inspectie moet verwerkt(6) zijn, anders kan de inspectie niet ingepland worden.
|
||||
if (insPlan && !this_ins.canInspPlan) // Inplannen. Inplan scherm n.v.t. voor MJOB.
|
||||
{ // Het is niet de eerste inspectie of de laatste inspectie is niet verwerkt. Overslaan.
|
||||
continue;
|
||||
}
|
||||
var oRs = Oracle.Execute(mjblist_sql);
|
||||
user.anything_todo_or_abort(!oRs.eof); // We klagen niet over enkele wel en enkele niet
|
||||
|
||||
// Kan de inspectie gereed gemeld/afgemeld of afgerond worden?
|
||||
if (insClose)
|
||||
{ // Bij bulkacties (multi) alleen kijken naar de bulkactie die uitgevoerd moet worden.
|
||||
if (insClose && ((multi && ((!fromfinish && !this_ins.canInspClose) || (fromfinish && !(this_ins.canInspFinish || this_ins.canInspFinishMjb)))) ||
|
||||
(!multi && !this_ins.canInspClose && !(this_ins.canInspFinish || this_ins.canInspFinishMjb))))
|
||||
// De inspectie kan niet afgemeld/afgerond worden. Overslaan.
|
||||
var sumtype1 = oRs("sumtype1").Value || 0;
|
||||
var sumtype2 = oRs("sumtype2").Value || 0;
|
||||
var sumtype3 = oRs("sumtype3").Value || 0;
|
||||
tobehandled = sumtype1 + sumtype2 + sumtype3;
|
||||
|
||||
var sumtyp = [];
|
||||
sumtyp[0] = tobehandled;
|
||||
sumtyp[1] = oRs("sumtype1").Value;
|
||||
sumtyp[2] = oRs("sumtype2").Value;
|
||||
sumtyp[3] = oRs("sumtype3").Value;
|
||||
|
||||
ingesloten = ins_key_arr;
|
||||
}
|
||||
else
|
||||
{
|
||||
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_arr[i] > 0? deelsrtcont_arr[i] : -1)
|
||||
});
|
||||
canMsuEdit = insEdit && this_ins.canMsuEdit;
|
||||
|
||||
var sql = "SELECT idsc.ins_deelsrtcontrole_key"
|
||||
+ " , idsc.ins_deelsrtcontrole_status"
|
||||
+ " , xcp.ins_srtcontroledl_xcp_eind vervaldatum"
|
||||
+ " , isc.ctr_discipline_key"
|
||||
+ " , isc.ins_srtcontrole_options options"
|
||||
+ " FROM ins_srtcontrole isc"
|
||||
+ " , ins_deelsrtcontrole idsc"
|
||||
+ " , ins_srtcontroledl_xcp xcp"
|
||||
+ " WHERE isc.ins_srtcontrole_key = idsc.ins_srtcontrole_key(+)" // Er kan nog voor de eerste keer geinspecteerd moeten worden.
|
||||
+ " AND isc.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
|
||||
+ " AND xcp.ins_deel_key(+) = " + ins_key_arr[i]
|
||||
+ " AND idsc.ins_deel_key(+) = " + ins_key_arr[i]
|
||||
+ " AND isc.ins_srtcontrole_key = " + srtcont_key_arr[i]
|
||||
+ (deelsrtcont_arr[i] > 0
|
||||
? " AND idsc.ins_deelsrtcontrole_key = " + deelsrtcont_arr[i]
|
||||
: " AND idsc.ins_deelsrtcontrole_status(+) != 6")
|
||||
+ " 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.
|
||||
// Als de laatste inspectie is afgerond is, wordt er null opgeleverd voor de ins_deelsrtcontrole_key en ins_deelsrtcontrole_status.
|
||||
// Er moet dan een nieuwe inspectie worden ingeland/gestart/afgemeld of afgerond.
|
||||
var ins_deelsrtcontrole_key = oRs("ins_deelsrtcontrole_key").Value != null? oRs("ins_deelsrtcontrole_key").Value : -1;
|
||||
var ins_deelsrtcontrole_status = oRs("ins_deelsrtcontrole_status").Value != null? oRs("ins_deelsrtcontrole_status").Value : -1;
|
||||
var vervaldatum = oRs("vervaldatum").Value != null? new Date(oRs("vervaldatum").Value) : null;
|
||||
var vervallen = vervaldatum != null && vervaldatum < new Date();
|
||||
var isc_options = oRs("options").Value;
|
||||
oRs.Close();
|
||||
|
||||
// Het is de eerste inspectie of de laatste inspectie moet verwerkt(6) zijn, anders kan de inspectie niet ingepland worden.
|
||||
if (insPlan && !this_ins.canInspPlan) // Inplannen. Inplan scherm n.v.t. voor MJOB.
|
||||
{ // Het is niet de eerste inspectie of de laatste inspectie is niet verwerkt. Overslaan.
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// Het mag niet de eerste inspectie zijn en de laatste inspectie mag niet verwerkt zijn.
|
||||
if (insEdit && !this_ins.canInspEdit)
|
||||
{ // Eerste inspectoe of verwerkte inspectie kan niet gewijzigd worden. Overslaan.
|
||||
continue;
|
||||
}
|
||||
// Kan de inspectie gereed gemeld/afgemeld of afgerond worden?
|
||||
if (insClose)
|
||||
{ // Bij bulkacties (multi) alleen kijken naar de bulkactie die uitgevoerd moet worden.
|
||||
if (insClose && ((multi && ((!fromfinish && !this_ins.canInspClose) || (fromfinish && !(this_ins.canInspFinish || this_ins.canInspFinishMjb)))) ||
|
||||
(!multi && !this_ins.canInspClose && !(this_ins.canInspFinish || this_ins.canInspFinishMjb))))
|
||||
// De inspectie kan niet afgemeld/afgerond worden. Overslaan.
|
||||
continue;
|
||||
}
|
||||
|
||||
// Ik mag inplannen, gereed melden of wijzigen.
|
||||
// De vervallen LOPENDE inspecties zitten hier ook nog tussen.
|
||||
// De rest van de vervallen inspecties zijn er door canInspPlan, canInspClose en canInspEdit uitgefilterd.
|
||||
// Vervallen LOPENDE inspecties kunnen nu behandeld worden als gewone inspecties.
|
||||
// Alle Arrays zijn even groot.
|
||||
ingesloten.push(ins_key_arr[i]);
|
||||
ingeslotensc.push(srtcont_key_arr[i]);
|
||||
ingeslotendsc.push(ins_deelsrtcontrole_key);
|
||||
// Als 1 van de srtcontroles niet gereed te melden is, dan kan er niet gereed gemeld worden en moet de button niet getoond worden.
|
||||
canClose = canClose && this_ins.canInspClose;
|
||||
// Als 1 van de srtcontroles niet af te ronden is, dan kan er niet afgerond worden en moet de button niet getoond worden.
|
||||
canFinish = canFinish && (this_ins.canInspFinish || this_ins.canInspFinishMjb);
|
||||
// Kan 1 van de srtcontroles na het gereed melden worden afgerond? Dan kan ook de afrond button getoond worden. N.v.t. voor mjob.
|
||||
if (this_ins.canInspClose && this_ins.canInspFinish)
|
||||
nrCanFinishAfterClose++;
|
||||
tobehandled++;
|
||||
// Het mag niet de eerste inspectie zijn en de laatste inspectie mag niet verwerkt zijn.
|
||||
if (insEdit && !this_ins.canInspEdit)
|
||||
{ // Eerste inspectoe of verwerkte inspectie kan niet gewijzigd worden. Overslaan.
|
||||
continue;
|
||||
}
|
||||
|
||||
// Ik mag inplannen, gereed melden of wijzigen.
|
||||
// De vervallen LOPENDE inspecties zitten hier ook nog tussen.
|
||||
// De rest van de vervallen inspecties zijn er door canInspPlan, canInspClose en canInspEdit uitgefilterd.
|
||||
// Vervallen LOPENDE inspecties kunnen nu behandeld worden als gewone inspecties.
|
||||
// Alle Arrays zijn even groot.
|
||||
ingesloten.push(ins_key_arr[i]);
|
||||
ingeslotensc.push(srtcont_key_arr[i]);
|
||||
ingeslotendsc.push(ins_deelsrtcontrole_key);
|
||||
// Als 1 van de srtcontroles niet gereed te melden is, dan kan er niet gereed gemeld worden en moet de button niet getoond worden.
|
||||
canClose = canClose && this_ins.canInspClose;
|
||||
// Als 1 van de srtcontroles niet af te ronden is, dan kan er niet afgerond worden en moet de button niet getoond worden.
|
||||
canFinish = canFinish && (this_ins.canInspFinish || this_ins.canInspFinishMjb);
|
||||
// Kan 1 van de srtcontroles na het gereed melden worden afgerond? Dan kan ook de afrond button getoond worden. N.v.t. voor mjob.
|
||||
if (this_ins.canInspClose && this_ins.canInspFinish)
|
||||
nrCanFinishAfterClose++;
|
||||
tobehandled++;
|
||||
}
|
||||
}
|
||||
if (insClose && !canClose && !canFinish)
|
||||
// Als de buttons niet zichtbaar zijn heb ik niets te doen.
|
||||
@@ -139,7 +223,7 @@ lcl.set_dialect(ctrdisc_key, "INS_TAB_DISCIPLINE_KEY");
|
||||
user.anything_todo_or_abort(tobehandled > 0); // We klagen niet over enkele wel en enkele niet
|
||||
|
||||
var desc = "";
|
||||
if (ins_key_arr.length == 1)
|
||||
if (groupby == 7 && ins_key_arr.length == 1)
|
||||
{
|
||||
sql = "SELECT d.ins_deel_omschrijving" // identificatie
|
||||
+ " , s.ins_srtdeel_code"
|
||||
@@ -156,10 +240,7 @@ if (ins_key_arr.length == 1)
|
||||
+ " AND g.ins_discipline_key = dis.ins_discipline_key";
|
||||
oRs = Oracle.Execute(sql);
|
||||
var desc = oRs("ins_deel_omschrijving").Value;
|
||||
var srtcode = oRs("ins_srtdeel_code").Value;
|
||||
var sort = oRs("ins_srtdeel_omschrijving").Value;
|
||||
var group = oRs("ins_srtgroep_omschrijving").Value;
|
||||
var disc = oRs("ins_discipline_omschrijving").Value;
|
||||
oRs.Close();
|
||||
}
|
||||
%>
|
||||
@@ -176,62 +257,65 @@ if (ins_key_arr.length == 1)
|
||||
var startdatum;
|
||||
var eersteinspectie;
|
||||
var info = "";
|
||||
sql = "SELECT *"
|
||||
+ " FROM (SELECT DISTINCT xcp.ins_srtcontrole_eenheid eenheid"
|
||||
+ " , xcp.ins_srtcontrole_info info"
|
||||
+ " , xcp.ins_srtcontrole_mode scmode"
|
||||
+ " , xcp.ctr_controle_type sctype"
|
||||
+ " , xcp.ins_deel_aanmaak"
|
||||
+ " , xcp.ins_srtcontroledl_xcp_startdat startdatum"
|
||||
+ " , xcp.ctr_ismjob ismjob"
|
||||
+ " , (SELECT COUNT (idsc.ins_deelsrtcontrole_key)"
|
||||
+ " FROM ins_deelsrtcontrole idsc1"
|
||||
+ " WHERE idsc1.ins_deel_key = xcp.ins_deel_key"
|
||||
+ " AND idsc1.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
|
||||
+ " AND idsc1.ins_scenario_key = 1) aantal"
|
||||
+ " FROM ins_v_defined_inspect_xcp xcp"
|
||||
+ " , ins_deelsrtcontrole idsc"
|
||||
+ " WHERE xcp.ins_srtcontrole_key = idsc.ins_srtcontrole_key(+)" // Er kan nog voor de eerste keer geinspecteerd moeten worden.
|
||||
+ " AND idsc.ins_scenario_key(+) = 1"
|
||||
+ " AND xcp.ins_scenario_key = 1"
|
||||
+ " AND xcp.ins_deel_key IN (" + ingesloten.join(",") + ")"
|
||||
+ " AND idsc.ins_deel_key(+) IN (" + ingesloten.join(",") + ")"
|
||||
+ " AND xcp.ins_srtcontrole_periode > 0"
|
||||
+ " AND xcp.ins_srtcontrole_key IN (" + ingeslotensc.join(",") + ")"
|
||||
+ " )";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
eenheid = oRs("eenheid").Value;
|
||||
info = oRs("info").Value;
|
||||
scmode = oRs("scmode").Value;
|
||||
sctype = oRs("sctype").Value;
|
||||
aanmaakdatum = new Date(oRs("ins_deel_aanmaak").Value);
|
||||
startdatum = oRs("startdatum").Value != null? new Date(oRs("startdatum").Value) : null;
|
||||
mjob = oRs("ismjob").Value == 1;
|
||||
eersteinspectie = oRs("aantal").Value == 0;
|
||||
oRs.MoveNext();
|
||||
while (!oRs.eof)
|
||||
if (groupby == 7)
|
||||
{
|
||||
if (eenheid != oRs("eenheid").Value)
|
||||
eenheid = -1;
|
||||
if (scmode != oRs("scmode").Value)
|
||||
scmode = -1;
|
||||
if (sctype != oRs("sctype").Value)
|
||||
{
|
||||
info = "";
|
||||
sctype = -1; // Er zijn inspecties met verschillende soort ocntroles. Dan maar -1.
|
||||
}
|
||||
if (aanmaakdatum.getTime() < new Date(oRs("ins_deel_aanmaak").Value).getTime())
|
||||
aanmaakdatum = new Date(oRs("ins_deel_aanmaak").Value);
|
||||
sql = "SELECT *"
|
||||
+ " FROM (SELECT DISTINCT xcp.ins_srtcontrole_eenheid eenheid"
|
||||
+ " , xcp.ins_srtcontrole_info info"
|
||||
+ " , xcp.ins_srtcontrole_mode scmode"
|
||||
+ " , xcp.ctr_controle_type sctype"
|
||||
+ " , xcp.ins_deel_aanmaak"
|
||||
+ " , xcp.ins_srtcontroledl_xcp_startdat startdatum"
|
||||
+ " , xcp.ctr_ismjob ismjob"
|
||||
+ " , (SELECT COUNT (idsc.ins_deelsrtcontrole_key)"
|
||||
+ " FROM ins_deelsrtcontrole idsc1"
|
||||
+ " WHERE idsc1.ins_deel_key = xcp.ins_deel_key"
|
||||
+ " AND idsc1.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
|
||||
+ " AND idsc1.ins_scenario_key = 1) aantal"
|
||||
+ " FROM ins_v_defined_inspect_xcp xcp"
|
||||
+ " , ins_deelsrtcontrole idsc"
|
||||
+ " WHERE xcp.ins_srtcontrole_key = idsc.ins_srtcontrole_key(+)" // Er kan nog voor de eerste keer geinspecteerd moeten worden.
|
||||
+ " AND idsc.ins_scenario_key(+) = 1"
|
||||
+ " AND xcp.ins_scenario_key = 1"
|
||||
+ " AND xcp.ins_deel_key IN (" + ingesloten.join(",") + ")"
|
||||
+ " AND idsc.ins_deel_key(+) IN (" + ingesloten.join(",") + ")"
|
||||
+ " AND xcp.ins_srtcontrole_periode > 0"
|
||||
+ " AND xcp.ins_srtcontrole_key IN (" + ingeslotensc.join(",") + ")"
|
||||
+ " )";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
eenheid = oRs("eenheid").Value;
|
||||
info = oRs("info").Value;
|
||||
scmode = oRs("scmode").Value;
|
||||
sctype = oRs("sctype").Value;
|
||||
aanmaakdatum = new Date(oRs("ins_deel_aanmaak").Value);
|
||||
startdatum = oRs("startdatum").Value != null? new Date(oRs("startdatum").Value) : null;
|
||||
mjob = oRs("ismjob").Value == 1;
|
||||
eersteinspectie = oRs("aantal").Value == 0;
|
||||
oRs.MoveNext();
|
||||
while (!oRs.eof)
|
||||
{
|
||||
if (eenheid != oRs("eenheid").Value)
|
||||
eenheid = -1;
|
||||
if (scmode != oRs("scmode").Value)
|
||||
scmode = -1;
|
||||
if (sctype != oRs("sctype").Value)
|
||||
{
|
||||
info = "";
|
||||
sctype = -1; // Er zijn inspecties met verschillende soort ocntroles. Dan maar -1.
|
||||
}
|
||||
if (aanmaakdatum.getTime() < new Date(oRs("ins_deel_aanmaak").Value).getTime())
|
||||
aanmaakdatum = new Date(oRs("ins_deel_aanmaak").Value);
|
||||
oRs.MoveNext();
|
||||
}
|
||||
oRs.Close();
|
||||
// Als er meerdere inspecties zijn dan hebben bovenstaande variablen alleen een geldige waarde als het voor alle inspecties hetzelfde is.
|
||||
}
|
||||
oRs.Close();
|
||||
// Als er meerdere inspecties zijn dan hebben bovenstaande variablen alleen een geldige waarde als het voor alle inspecties hetzelfde is.
|
||||
|
||||
%>
|
||||
<script type="text/javascript">
|
||||
var eenheid = -1;
|
||||
|
||||
<% if (insClose)
|
||||
<% if (groupby == 7 && insClose)
|
||||
{ %>
|
||||
var inspected_srtcontroles = new Array();
|
||||
<%
|
||||
@@ -268,30 +352,33 @@ if (ins_key_arr.length == 1)
|
||||
}
|
||||
}
|
||||
|
||||
var insstatus = -1;
|
||||
var status_str = "";
|
||||
if ((insPlan || insEdit) && ingeslotendsc.join(",").search("-1") < 0)
|
||||
{ // Allemaal bestaande inspecties met de status Gepland(0).
|
||||
var sql = "SELECT ins_deelsrtcontrole_status"
|
||||
+ " FROM ins_deelsrtcontrole"
|
||||
+ " WHERE ins_deelsrtcontrole_key = " + ingeslotendsc[0];
|
||||
var oRs = Oracle.Execute(sql);
|
||||
insstatus = oRs("ins_deelsrtcontrole_status").Value;
|
||||
status_str = ins.getinspectstatustext(oRs("ins_deelsrtcontrole_status").Value);
|
||||
}
|
||||
else if (insClose && ingeslotendsc.join(",").search("-1") < 0)
|
||||
{ // Allemaal bestaande inspecties met de status Gepland(0) of In Behandeling(2).
|
||||
// Is de status voor elke inspectie hetzelfde.
|
||||
var sql = "SELECT MIN(ins_deelsrtcontrole_status) minstatus"
|
||||
+ " , MAX(ins_deelsrtcontrole_status) maxstatus"
|
||||
+ " FROM ins_deelsrtcontrole"
|
||||
+ " WHERE ins_deelsrtcontrole_key IN (" + ingeslotendsc.join(",") + ")"
|
||||
+ " AND ins_scenario_key = 1";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
if (oRs("minstatus").Value == oRs("maxstatus").Value)
|
||||
{ // De statussen van alle inspecties zijn hetzelfde. Dan kan ik deze tonen.
|
||||
insstatus = oRs("minstatus").Value;
|
||||
status_str = ins.getinspectstatustext(oRs("minstatus").Value);
|
||||
if (groupby == 7)
|
||||
{
|
||||
var insstatus = -1;
|
||||
var status_str = "";
|
||||
if ((insPlan || insEdit) && ingeslotendsc.join(",").search("-1") < 0)
|
||||
{ // Allemaal bestaande inspecties met de status Gepland(0).
|
||||
var sql = "SELECT ins_deelsrtcontrole_status"
|
||||
+ " FROM ins_deelsrtcontrole"
|
||||
+ " WHERE ins_deelsrtcontrole_key = " + ingeslotendsc[0];
|
||||
var oRs = Oracle.Execute(sql);
|
||||
insstatus = oRs("ins_deelsrtcontrole_status").Value;
|
||||
status_str = ins.getinspectstatustext(oRs("ins_deelsrtcontrole_status").Value);
|
||||
}
|
||||
else if (insClose && ingeslotendsc.join(",").search("-1") < 0)
|
||||
{ // Allemaal bestaande inspecties met de status Gepland(0) of In Behandeling(2).
|
||||
// Is de status voor elke inspectie hetzelfde.
|
||||
var sql = "SELECT MIN(ins_deelsrtcontrole_status) minstatus"
|
||||
+ " , MAX(ins_deelsrtcontrole_status) maxstatus"
|
||||
+ " FROM ins_deelsrtcontrole"
|
||||
+ " WHERE ins_deelsrtcontrole_key IN (" + ingeslotendsc.join(",") + ")"
|
||||
+ " AND ins_scenario_key = 1";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
if (oRs("minstatus").Value == oRs("maxstatus").Value)
|
||||
{ // De statussen van alle inspecties zijn hetzelfde. Dan kan ik deze tonen.
|
||||
insstatus = oRs("minstatus").Value;
|
||||
status_str = ins.getinspectstatustext(oRs("minstatus").Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
%>
|
||||
@@ -304,18 +391,18 @@ if (ins_key_arr.length == 1)
|
||||
function ins_submit(finish)
|
||||
{
|
||||
// Controle verplichte velden.
|
||||
<% if (insPlan || (insEdit && insstatus == 0)) // Alleen de datum verplicht bij inplannen en bij het wijzigen van ingeplande inspectie.
|
||||
<% if (groupby == 7 && insPlan || (insEdit && insstatus == 0)) // Alleen de datum verplicht bij inplannen en bij het wijzigen van ingeplande inspectie.
|
||||
{ %>
|
||||
if (!validateForm("u2", { checkOnly: ["show_plandatum", "time_from_plandatum"] }))
|
||||
return false;
|
||||
<% }
|
||||
else if (!(insEdit && insstatus == 2)) // Bij wijzigen in status 2 is er geen enkel veld verplicht.
|
||||
else if (groupby == 7 && !(insEdit && insstatus == 2)) // Bij wijzigen in status 2 is er geen enkel veld verplicht.
|
||||
{ %>
|
||||
if (!validateForm("u2"))
|
||||
return false;
|
||||
<% } %>
|
||||
|
||||
<% if (insPlan)
|
||||
<% if (groupby == 7 && insPlan)
|
||||
{ %>
|
||||
// Controleren voor uren inspectie of plandatum niet in het verleden ligt.
|
||||
// Dit kan alleen voorkomen bij uren omdat de uren voor vandaag de hele dag ingevuld kunnen worden.
|
||||
@@ -326,7 +413,7 @@ if (ins_key_arr.length == 1)
|
||||
return false;
|
||||
}
|
||||
<% }
|
||||
else if (insClose)
|
||||
else if (groupby == 7 && insClose)
|
||||
{ %>
|
||||
// Controleren voor uren inspectie of inspectie uitvoerdatum na de laatste uitvoerdatum ligt.
|
||||
// Bij multi geldt de laatste uitvoerdatum van alle objecten.
|
||||
@@ -385,7 +472,7 @@ if (ins_key_arr.length == 1)
|
||||
}
|
||||
$("#finish").val(finish);
|
||||
<% }
|
||||
else if (insEdit)
|
||||
else if (groupby == 7 && insEdit)
|
||||
{ %>
|
||||
if (dsc_is_afgemeld)
|
||||
{
|
||||
@@ -400,7 +487,7 @@ if (ins_key_arr.length == 1)
|
||||
<% } %>
|
||||
|
||||
$.post($("form[name=u2]")[0].action,
|
||||
$("[name=u2]").serialize(),
|
||||
$("[name=u2]").serialize() + "<%=transitParam%>",
|
||||
FcltCallbackAndThenAlways(ins_submit_callback),
|
||||
"json");
|
||||
}
|
||||
@@ -410,7 +497,7 @@ if (ins_key_arr.length == 1)
|
||||
FcltMgr.closeDetail(window, { cancel: true } );
|
||||
}
|
||||
|
||||
<% if (insClose || insEdit)
|
||||
<% if (groupby == 7 && (insClose || insEdit))
|
||||
{ %>
|
||||
function onChangeDeelsrtcdatum(id)
|
||||
{
|
||||
@@ -443,7 +530,7 @@ if (ins_key_arr.length == 1)
|
||||
<body id="editbody">
|
||||
<% // Melding aanmaakbaar? Alleen meldingen die enigzins beperkt zijn tot onze object(soort/groep)
|
||||
var canMelding = false;
|
||||
if (!multi && ingesloten[0] > 0)
|
||||
if (groupby == 7 && !multi && ingesloten[0] > 0)
|
||||
{
|
||||
var sql = "SELECT COUNT(*) aantal"
|
||||
+ " FROM mld_stdmelding msm"
|
||||
@@ -486,7 +573,7 @@ if (ins_key_arr.length == 1)
|
||||
buttons.push({title: (insPlan? L("lcl_ins_schedule") : L("lcl_submit")), icon: "opslaan.png", action:"ins_submit(0)"});
|
||||
if (insClose)
|
||||
{ // Bij bulkacties (multi) alleen kijken naar de bulkactie die uitgevoerd moet worden.
|
||||
if (canClose && !(multi && fromfinish))
|
||||
if (groupby == 7 && canClose && !(multi && fromfinish))
|
||||
buttons.push({title: L("lcl_ins_close"), icon: "inspfinish.png", action:"ins_submit(0)"});
|
||||
var finishAfterClose = (nrCanFinishAfterClose > 0 && multi && !fromfinish); // Na het gereed melden kan voor minstens 1 periodieke taak worden afgerond.
|
||||
if ((canFinish && (!multi || fromfinish)) || finishAfterClose)
|
||||
@@ -509,25 +596,25 @@ if (ins_key_arr.length == 1)
|
||||
}
|
||||
IFRAMER_HEADER(titletext + " " + safe.html(desc), buttons);
|
||||
%>
|
||||
<form name="u2" action="ins_inspect_save.asp?ins_keys=<%=ingesloten.join(",")%>&srtcont_key_arr=<%=ingeslotensc.join(",")%>" method="post">
|
||||
<form name="u2" action="ins_inspect_save.asp" method="post">
|
||||
<input type="hidden" name="savemode" id="savemode" value="<%=insPlan? "P" : (insClose? "C" : "E")%>">
|
||||
<input type="hidden" name="ins_keys" id="ins_keys" value="<%=ingesloten.join(",")%>">
|
||||
<input type="hidden" name="srtcont_key_arr" id="srtcont_key_arr" value="<%=ingeslotensc.join(",")%>">
|
||||
<% if (insEdit)
|
||||
<% if (groupby == 7 && insEdit)
|
||||
{ %>
|
||||
<input type="hidden" name="deelsrtcont_key" id="deelsrtcont_key" value="<%=ingeslotendsc[0]%>">
|
||||
<% } %>
|
||||
<input type="hidden" name="finish" id="finish" value="0">
|
||||
<% var blocktext = (insPlan? L("lcl_ins_schedule") : (insClose? L("lcl_ins_stop") : L("lcl_details") ))
|
||||
+ (multi
|
||||
+ (multi || groupby < 7
|
||||
? " (" + L("lcl_count") + ":" + tobehandled + ")"
|
||||
: "");
|
||||
BLOCK_START("insMultiEdit", blocktext);
|
||||
if (ins_key_arr.length == 1)
|
||||
if (groupby == 7 && ins_key_arr.length == 1)
|
||||
{
|
||||
ROFIELDTR("fld", L("lcl_obj_sort"), sort );
|
||||
ROFIELDTR("fld", L("lcl_obj_sort"), sort );
|
||||
}
|
||||
if (!multi)
|
||||
if (groupby == 7 && !multi)
|
||||
{ // Inspecteren van <20><>n object met <20><>n of meerdere soortcontroles
|
||||
var sql = "SELECT xcp.ins_srtcontrole_key"
|
||||
+ " , " + lcl.xsqla('xcp.ins_srtcontrole_omschrijving', 'xcp.ins_srtcontrole_key')
|
||||
@@ -566,7 +653,7 @@ if (ins_key_arr.length == 1)
|
||||
|
||||
// Status tonen.
|
||||
var params = {};
|
||||
if (!multi && ingeslotendsc[0] > 0)
|
||||
if (groupby == 7 && !multi && ingeslotendsc[0] > 0)
|
||||
{
|
||||
params = { infoPointer: { Url: "appl/shared/status_info.asp?insc_key=" + ingeslotendsc[0] + "&urole=bo",
|
||||
Title: L("lcl_status_details") + " " + ingeslotendsc[0]
|
||||
@@ -577,108 +664,111 @@ if (ins_key_arr.length == 1)
|
||||
ROFIELDTR("fld", L("lcl_ins_status"), status_str, params);
|
||||
|
||||
|
||||
// Men mag alleen een inspectie-uitvoerdatum invoeren die later is dan de laatste inspectie-uitvoerdatum.
|
||||
// Bij multi ook de laatste uitvoerdatum bepalen.
|
||||
sql = "SELECT MAX(idsc.ins_deelsrtcontrole_datum) lastinspectdatum"
|
||||
+ " , MAX(idsc.ins_deelsrtcontrole_datum + 1) dag_na_lastinspectdatum"
|
||||
+ " , SUM (CASE"
|
||||
+ " WHEN COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, isc.ins_srtcontrole_eenheid) != 0" // Geen tijd eenheid maar dag, maand of jaar.
|
||||
+ " THEN 1" // Dag, maand of jaar.
|
||||
+ " ELSE 0" // Tijd.
|
||||
+ " END) aantal_dmj_eenheid"
|
||||
+ " , isc.ins_srtcontrole_mode"
|
||||
+ " FROM ins_deelsrtcontrole idsc"
|
||||
+ " , ins_srtcontrole isc"
|
||||
+ " , ins_srtcontroledl_xcp xcp"
|
||||
+ " WHERE idsc.ins_srtcontrole_key = isc.ins_srtcontrole_key"
|
||||
+ " AND idsc.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
|
||||
+ " AND idsc.ins_deel_key = xcp.ins_deel_key(+)"
|
||||
+ " AND COALESCE(xcp.ins_srtcontroledl_xcp_periode, isc.ins_srtcontrole_periode) > 0"
|
||||
+ " AND idsc.ins_deel_key IN (" + ingesloten.join(",") + ")"
|
||||
+ " AND idsc.ins_srtcontrole_key IN (" + ingeslotensc.join(",") + ")"
|
||||
+ " AND idsc.ins_scenario_key = 1"
|
||||
+ " AND xcp.ins_scenario_key(+) = 1"
|
||||
+ " GROUP BY isc.ins_srtcontrole_mode";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var lastinspectdatum;
|
||||
var dag_na_lastinspectdatum;
|
||||
var aantal_dmj_eenheid;
|
||||
var mode;
|
||||
var minDate = aanmaakdatum; // Als er nog geen inspecties zijn geweest dan is de aanmaakdatum de minimale datum.
|
||||
if (!oRs.eof && oRs("lastinspectdatum").Value != null)
|
||||
if (groupby == 7)
|
||||
{
|
||||
lastinspectdatum = new Date(oRs("lastinspectdatum").Value); // Kan uiterlijk vandaag zijn.
|
||||
dag_na_lastinspectdatum = new Date(oRs("dag_na_lastinspectdatum").Value); // Kan uiterlijk morgen zijn.
|
||||
aantal_dmj_eenheid = oRs("aantal_dmj_eenheid").Value;
|
||||
mode = oRs("ins_srtcontrole_mode").Value;
|
||||
if (mode == 0)
|
||||
// Momentmode.
|
||||
minDate = aantal_dmj_eenheid > 0? dag_na_lastinspectdatum : lastinspectdatum;
|
||||
else
|
||||
// Intervalmode.
|
||||
minDate = lastinspectdatum;
|
||||
%>
|
||||
<script type="text/javascript">
|
||||
var lastinspectdatum = new Date(<%=lastinspectdatum.getTime()%>);
|
||||
</script>
|
||||
<%
|
||||
}
|
||||
else
|
||||
{
|
||||
%>
|
||||
<script type="text/javascript">
|
||||
var lastinspectdatum = null;
|
||||
</script>
|
||||
<%
|
||||
}
|
||||
oRs.Close();
|
||||
|
||||
var dsc_is_afgemeld = false;
|
||||
var multidsc_has_afgemeld = false;
|
||||
if (!multi && ingeslotendsc[0] > 0)
|
||||
{ // Bestaande inspectie.
|
||||
var sql = "SELECT ins_deelsrtcontrole_datum"
|
||||
+ " , ins_controlemode_key"
|
||||
+ " , ins_deelsrtcontrole_opmerking"
|
||||
+ " , ins_deelsrtcontrole_plandatum"
|
||||
+ " , ins_deelsrtcontrole_status"
|
||||
+ " FROM ins_deelsrtcontrole"
|
||||
+ " WHERE ins_deelsrtcontrole_key = " + ingeslotendsc[0];
|
||||
// Men mag alleen een inspectie-uitvoerdatum invoeren die later is dan de laatste inspectie-uitvoerdatum.
|
||||
// Bij multi ook de laatste uitvoerdatum bepalen.
|
||||
sql = "SELECT MAX(idsc.ins_deelsrtcontrole_datum) lastinspectdatum"
|
||||
+ " , MAX(idsc.ins_deelsrtcontrole_datum + 1) dag_na_lastinspectdatum"
|
||||
+ " , SUM (CASE"
|
||||
+ " WHEN COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, isc.ins_srtcontrole_eenheid) != 0" // Geen tijd eenheid maar dag, maand of jaar.
|
||||
+ " THEN 1" // Dag, maand of jaar.
|
||||
+ " ELSE 0" // Tijd.
|
||||
+ " END) aantal_dmj_eenheid"
|
||||
+ " , isc.ins_srtcontrole_mode"
|
||||
+ " FROM ins_deelsrtcontrole idsc"
|
||||
+ " , ins_srtcontrole isc"
|
||||
+ " , ins_srtcontroledl_xcp xcp"
|
||||
+ " WHERE idsc.ins_srtcontrole_key = isc.ins_srtcontrole_key"
|
||||
+ " AND idsc.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
|
||||
+ " AND idsc.ins_deel_key = xcp.ins_deel_key(+)"
|
||||
+ " AND COALESCE(xcp.ins_srtcontroledl_xcp_periode, isc.ins_srtcontrole_periode) > 0"
|
||||
+ " AND idsc.ins_deel_key IN (" + ingesloten.join(",") + ")"
|
||||
+ " AND idsc.ins_srtcontrole_key IN (" + ingeslotensc.join(",") + ")"
|
||||
+ " AND idsc.ins_scenario_key = 1"
|
||||
+ " AND xcp.ins_scenario_key(+) = 1"
|
||||
+ " GROUP BY isc.ins_srtcontrole_mode";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
inspect_data = {deelsrtcontrole_datum: oRs("ins_deelsrtcontrole_datum").Value != null? new Date(oRs("ins_deelsrtcontrole_datum").Value): null,
|
||||
controlemode_key: oRs("ins_controlemode_key").Value,
|
||||
deelsrtcontrole_opmerking: oRs("ins_deelsrtcontrole_opmerking").Value,
|
||||
deelsrtcontrole_plandatum: oRs("ins_deelsrtcontrole_plandatum").Value != null? new Date(oRs("ins_deelsrtcontrole_plandatum").Value) : null,
|
||||
deelsrtcontrole_status: oRs("ins_deelsrtcontrole_status").Value,
|
||||
deelsrtcontrole_status_str: ins.getinspectstatustext(oRs("ins_deelsrtcontrole_status").Value)}
|
||||
// Als de tijd van de datum NIET middennacht (00:00) is dan mag je de datum niet wijzigen. Daarom tijd bepalen voor FCLTcalendar.
|
||||
// Wijzigen zet datum op middennacht wat problemen met een constraint kan geven.
|
||||
var hours = inspect_data.deelsrtcontrole_datum != null? inspect_data.deelsrtcontrole_datum.getHours() : new Date().getHours();
|
||||
var minutes = inspect_data.deelsrtcontrole_datum != null? inspect_data.deelsrtcontrole_datum.getMinutes() : new Date().getMinutes();
|
||||
dsc_is_afgemeld = inspect_data.deelsrtcontrole_status >= 5;
|
||||
oRs.Close();
|
||||
}
|
||||
else
|
||||
{ // Nieuwe inspectie of multi.
|
||||
// Inplannen: Als niet multi en het is de eerste inspectie en de startdatum heeft een waarde dan deze waarde invullen als PLANDATUM.
|
||||
// De minimum datum is dan gelijk de startdatum.
|
||||
// Gereed melden/Afronden: Als niet multi en het is de eerste inspectie en de startdatum heeft een waarde dan deze waarde invullen als CONTROLEDATUM.
|
||||
inspect_data = {deelsrtcontrole_datum: insClose && !multi && startdatum != null && eersteinspectie? startdatum : null,
|
||||
controlemode_key: -1,
|
||||
deelsrtcontrole_plandatum: insPlan? (!multi && startdatum != null && eersteinspectie? startdatum : new Date()): null,
|
||||
deelsrtcontrole_opmerking: "",
|
||||
deelsrtcontrole_status: insstatus,
|
||||
deelsrtcontrole_status_str: status_str};
|
||||
if (insPlan && !multi && startdatum != null && eersteinspectie)
|
||||
var lastinspectdatum;
|
||||
var dag_na_lastinspectdatum;
|
||||
var aantal_dmj_eenheid;
|
||||
var mode;
|
||||
var minDate = aanmaakdatum; // Als er nog geen inspecties zijn geweest dan is de aanmaakdatum de minimale datum.
|
||||
if (!oRs.eof && oRs("lastinspectdatum").Value != null)
|
||||
{
|
||||
if (mjob)
|
||||
minDate = new Date(startdatum.getFullYear() + 1, 0, 1);
|
||||
lastinspectdatum = new Date(oRs("lastinspectdatum").Value); // Kan uiterlijk vandaag zijn.
|
||||
dag_na_lastinspectdatum = new Date(oRs("dag_na_lastinspectdatum").Value); // Kan uiterlijk morgen zijn.
|
||||
aantal_dmj_eenheid = oRs("aantal_dmj_eenheid").Value;
|
||||
mode = oRs("ins_srtcontrole_mode").Value;
|
||||
if (mode == 0)
|
||||
// Momentmode.
|
||||
minDate = aantal_dmj_eenheid > 0? dag_na_lastinspectdatum : lastinspectdatum;
|
||||
else
|
||||
minDate = startdatum;
|
||||
// Intervalmode.
|
||||
minDate = lastinspectdatum;
|
||||
%>
|
||||
<script type="text/javascript">
|
||||
var lastinspectdatum = new Date(<%=lastinspectdatum.getTime()%>);
|
||||
</script>
|
||||
<%
|
||||
}
|
||||
else
|
||||
{
|
||||
%>
|
||||
<script type="text/javascript">
|
||||
var lastinspectdatum = null;
|
||||
</script>
|
||||
<%
|
||||
}
|
||||
oRs.Close();
|
||||
|
||||
var dsc_is_afgemeld = false;
|
||||
var multidsc_has_afgemeld = false;
|
||||
if (!multi && ingeslotendsc[0] > 0)
|
||||
{ // Bestaande inspectie.
|
||||
var sql = "SELECT ins_deelsrtcontrole_datum"
|
||||
+ " , ins_controlemode_key"
|
||||
+ " , ins_deelsrtcontrole_opmerking"
|
||||
+ " , ins_deelsrtcontrole_plandatum"
|
||||
+ " , ins_deelsrtcontrole_status"
|
||||
+ " FROM ins_deelsrtcontrole"
|
||||
+ " WHERE ins_deelsrtcontrole_key = " + ingeslotendsc[0];
|
||||
var oRs = Oracle.Execute(sql);
|
||||
inspect_data = {deelsrtcontrole_datum: oRs("ins_deelsrtcontrole_datum").Value != null? new Date(oRs("ins_deelsrtcontrole_datum").Value): null,
|
||||
controlemode_key: oRs("ins_controlemode_key").Value,
|
||||
deelsrtcontrole_opmerking: oRs("ins_deelsrtcontrole_opmerking").Value,
|
||||
deelsrtcontrole_plandatum: oRs("ins_deelsrtcontrole_plandatum").Value != null? new Date(oRs("ins_deelsrtcontrole_plandatum").Value) : null,
|
||||
deelsrtcontrole_status: oRs("ins_deelsrtcontrole_status").Value,
|
||||
deelsrtcontrole_status_str: ins.getinspectstatustext(oRs("ins_deelsrtcontrole_status").Value)}
|
||||
// Als de tijd van de datum NIET middennacht (00:00) is dan mag je de datum niet wijzigen. Daarom tijd bepalen voor FCLTcalendar.
|
||||
// Wijzigen zet datum op middennacht wat problemen met een constraint kan geven.
|
||||
var hours = inspect_data.deelsrtcontrole_datum != null? inspect_data.deelsrtcontrole_datum.getHours() : new Date().getHours();
|
||||
var minutes = inspect_data.deelsrtcontrole_datum != null? inspect_data.deelsrtcontrole_datum.getMinutes() : new Date().getMinutes();
|
||||
dsc_is_afgemeld = inspect_data.deelsrtcontrole_status >= 5;
|
||||
oRs.Close();
|
||||
}
|
||||
else
|
||||
{ // Nieuwe inspectie of multi.
|
||||
// Inplannen: Als niet multi en het is de eerste inspectie en de startdatum heeft een waarde dan deze waarde invullen als PLANDATUM.
|
||||
// De minimum datum is dan gelijk de startdatum.
|
||||
// Gereed melden/Afronden: Als niet multi en het is de eerste inspectie en de startdatum heeft een waarde dan deze waarde invullen als CONTROLEDATUM.
|
||||
inspect_data = {deelsrtcontrole_datum: insClose && !multi && startdatum != null && eersteinspectie? startdatum : null,
|
||||
controlemode_key: -1,
|
||||
deelsrtcontrole_plandatum: insPlan? (!multi && startdatum != null && eersteinspectie? startdatum : new Date()): null,
|
||||
deelsrtcontrole_opmerking: "",
|
||||
deelsrtcontrole_status: insstatus,
|
||||
deelsrtcontrole_status_str: status_str};
|
||||
if (insPlan && !multi && startdatum != null && eersteinspectie)
|
||||
{
|
||||
if (mjob)
|
||||
minDate = new Date(startdatum.getFullYear() + 1, 0, 1);
|
||||
else
|
||||
minDate = startdatum;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (insPlan || (insEdit && (insstatus == 0 || insstatus == 2)))
|
||||
if (groupby == 7 && (insPlan || (insEdit && (insstatus == 0 || insstatus == 2))))
|
||||
FCLTcalendar("plandatum",
|
||||
{ label: L("lcl_ins_controle_plandate"),
|
||||
datum: minDate > inspect_data.deelsrtcontrole_plandatum? minDate : inspect_data.deelsrtcontrole_plandatum,
|
||||
@@ -693,7 +783,7 @@ if (ins_key_arr.length == 1)
|
||||
suppressEmpty: true
|
||||
});
|
||||
|
||||
if (insClose || (insEdit && insstatus >= 5))
|
||||
if (groupby == 7 && (insClose || (insEdit && insstatus >= 5)))
|
||||
{
|
||||
FCLTcalendar("deelsrtcontrole_plandatum",
|
||||
{ label: L("lcl_ins_controle_plandate"),
|
||||
@@ -824,7 +914,29 @@ if (ins_key_arr.length == 1)
|
||||
)
|
||||
});
|
||||
}
|
||||
}
|
||||
else (groupby != 7)
|
||||
{
|
||||
FCLTcalendar("deelsrtcontrole_datum",
|
||||
{ label: L("lcl_ins_controle_datum"),
|
||||
datum: new Date(),
|
||||
minDate: new Date(),
|
||||
maxDate: new Date(),
|
||||
required: true,
|
||||
trclass: "invoerinsp",
|
||||
timeField: true,
|
||||
timeStep: 60,
|
||||
startTime: 0,
|
||||
endTime: 23.75,
|
||||
//onChangeDate: "onChangeDeelsrtcdatum('D')",
|
||||
//onChangeTime: "onChangeDeelsrtcdatum('T')",
|
||||
readonly: true
|
||||
});
|
||||
%> <input type="hidden" id="deelsrtcontrole_datum" name="deelsrtcontrole_datum" value="<%=new Date().getTime()%>">
|
||||
<% }
|
||||
|
||||
if (groupby == 7)
|
||||
{
|
||||
sql = "SELECT ins_controlemode_key"
|
||||
+ " , " + lcl.xsqla('ins_controlemode_oms', 'ins_controlemode_key')
|
||||
+ " FROM ins_controlemode"
|
||||
@@ -841,6 +953,49 @@ if (ins_key_arr.length == 1)
|
||||
readonly: (insEdit && !canMsuEdit) // Er geldt al (insEdit && insstatus >= 5). In status 5 en 6 met INSMSU rechten mag ik de methode aanpassen (canMsuEdit).
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
%>
|
||||
<tr><td><%=L("lcl_ins_controle_mode")%>:</td></tr>
|
||||
<%
|
||||
for (var i = 1; i <= 3; i++)
|
||||
{
|
||||
if (sumtyp[i] > 0)
|
||||
{
|
||||
var typeoms = "";
|
||||
switch (i)
|
||||
{
|
||||
case 1: {
|
||||
typeoms = L("lcl_ins_srtcontrole_insp");
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
typeoms = L("lcl_ins_srtcontrole_repl");
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
typeoms = L("lcl_ins_srtcontrole_cert");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
sql = "SELECT ins_controlemode_key"
|
||||
+ " , " + lcl.xsqla('ins_controlemode_oms', 'ins_controlemode_key')
|
||||
+ " FROM ins_controlemode"
|
||||
+ " WHERE ins_srtcontrole_type = " + i
|
||||
+ " ORDER BY 2";
|
||||
|
||||
// Methode is voor de status Afgemeld(5) en Historie/Verwerkt(6) altijd ingevuld.
|
||||
FCLTselector("sel_controlemode" + i,
|
||||
sql,
|
||||
{ label: " " + typeoms + " (" + L("lcl_count") + ":" + sumtyp[i] + ")",
|
||||
initKey: -1,
|
||||
emptyOption: L("lcl_select_controlemode"),
|
||||
required: true
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
%>
|
||||
<script type="text/javascript">
|
||||
var dsc_is_afgemeld = <%=dsc_is_afgemeld? 1 : 0%> == 1;
|
||||
@@ -850,13 +1005,14 @@ if (ins_key_arr.length == 1)
|
||||
RWTEXTAREATR("opmerk",
|
||||
"fldremark",
|
||||
L("lcl_remark"),
|
||||
inspect_data.deelsrtcontrole_opmerking,
|
||||
(groupby == 7? inspect_data.deelsrtcontrole_opmerking : ""),
|
||||
{ html: "rows='8'",
|
||||
trclass: "invoerinsp",
|
||||
maxlength: 4000
|
||||
}
|
||||
);
|
||||
%>
|
||||
if (groupby == 7)
|
||||
{ %>
|
||||
<script type="text/javascript">
|
||||
var insstatus = <%=insstatus%>;
|
||||
//var nextinspectdatum = new Date(< %=nextinspectdatum.getTime()% >);
|
||||
@@ -868,7 +1024,7 @@ if (ins_key_arr.length == 1)
|
||||
if (scmode == 0 && eenheid != 0)
|
||||
$("#time_from_plandatum").hide().next().hide();
|
||||
</script>
|
||||
<%
|
||||
<% }
|
||||
BLOCK_END();
|
||||
%>
|
||||
</td>
|
||||
@@ -876,7 +1032,7 @@ if (ins_key_arr.length == 1)
|
||||
<tr>
|
||||
<td>
|
||||
<%
|
||||
if (!multi)
|
||||
if (groupby == 7 && !multi)
|
||||
{
|
||||
BLOCK_START("insFlex2", ""); //block over gehele breedte
|
||||
%><div id='insFlexList'><% // Wrapper div voor dynamisch herladen
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -61,7 +61,7 @@ if (groupby < 7)
|
||||
var mjbXcped = getFParamInt("mjbXcped", 0) == 1; // Aangepast.
|
||||
|
||||
// Start building the query to fetch all objects satisfying
|
||||
var mjbparams = { niveau: groupby,
|
||||
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,
|
||||
@@ -78,114 +78,20 @@ if (groupby < 7)
|
||||
frequentie: frequentie,
|
||||
incbtw: incbtw,
|
||||
toyear: mjb_freeze_year,
|
||||
groupby: 7,
|
||||
groupby: 7, // Ik wil alle objecten opvragen.
|
||||
deel: deel,
|
||||
mjbMoved: mjbMoved,
|
||||
mjbFreezed: mjbFreezed,
|
||||
mjbXcped: mjbXcped,
|
||||
jaren: [mjb_freeze_year]
|
||||
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 aangevink regels uit het mjb overzicht.
|
||||
|
||||
var sql = "SELECT xcp.ins_deel_key"
|
||||
+ " , xcp.ins_srtcontrole_key"
|
||||
+ " , result.ins_deelsrtcontrole_status"
|
||||
+ " , " + user_key
|
||||
+ " , CASE"
|
||||
+ " WHEN result.ins_deelsrtcontrole_status IS NOT NULL"
|
||||
+ " THEN (SELECT ins.nextcyclusdate (xcp.ins_deel_key, xcp.ins_srtcontrole_key, 1, 1) FROM DUAL)"
|
||||
+ " ELSE NULL"
|
||||
+ " END nextdate"
|
||||
+ " , result.\"" + mjb_freeze_year + "\" bedrag"
|
||||
+ " , TRUNC(TO_DATE(TO_CHAR(SYSDATE, 'DD-MON') || '-" + mjb_freeze_year + "', 'DD-MON-YYYY'), 'YEAR') freez_date"
|
||||
+ " , CASE"
|
||||
+ " WHEN result.\"" + mjb_freeze_year + "\" = 0 AND result.\"" + mjb_freeze_year + "_ORGBEDRAG\" IS NOT NULL AND result.\"" + mjb_freeze_year + "_ORGBEDRAG\" > 0"
|
||||
+ " THEN " + safe.quoted_sql(L("lcl_mjb_performed_high"))
|
||||
+ " ELSE ''"
|
||||
+ " END opm_has_higherprio" // Opmerking als het een hogere prio heeft (has_higherprio)
|
||||
+ " FROM ins_v_defined_inspect_xcp xcp"
|
||||
+ " , ins_v_aanwezigdeel dl"
|
||||
+ " , ins_srtdeel isd"
|
||||
+ " , ins_srtgroep isg"
|
||||
+ " , ins_discipline dd"
|
||||
+ " , alg_district d"
|
||||
+ " , alg_locatie l"
|
||||
+ " , alg_gebouw g"
|
||||
+ " , alg_verdieping v"
|
||||
+ " , alg_ruimte r"
|
||||
+ " , (" + mjblist_sql + ") result"
|
||||
+ " WHERE xcp.ins_deel_key = dl.ins_deel_key"
|
||||
+ " AND dl.ins_srtdeel_key = isd.ins_srtdeel_key"
|
||||
+ " AND isd.ins_srtgroep_key = isg.ins_srtgroep_key"
|
||||
+ " AND isg.ins_discipline_key = dd.ins_discipline_key"
|
||||
+ " AND dl.ins_alg_ruimte_key = r.alg_ruimte_key"
|
||||
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
|
||||
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
|
||||
+ " AND g.alg_locatie_key = l.alg_locatie_key"
|
||||
+ " AND d.alg_district_key = l.alg_district_key"
|
||||
+ " AND xcp.ins_deel_key = result.ins_deel_key"
|
||||
+ " AND xcp.ins_srtcontrole_key = result.ins_srtcontrole_key"
|
||||
// Autorisatie:
|
||||
// Nu nog even checken of je mag accoderen (Freeze). Stuk voor stuk duurt veel te lang.
|
||||
// 0) invoerAfterNext is voor mjob (interval modus) altijd waar.
|
||||
// 1) niet vervallen.
|
||||
// 2) status <= 0 of status == 6
|
||||
// 3) actief object
|
||||
// 4) hasCTRwrite
|
||||
// 5) bij instelling "Actieve acties" het vinkje "Starten" aangevinkt.
|
||||
// 6) geen scenario (scenario_key is 1)
|
||||
// 7) ismjob
|
||||
// 8) isFreezeYear
|
||||
// 9) readuse rechten.
|
||||
+ " AND (xcp.ins_srtcontroledl_xcp_eind IS NULL OR xcp.ins_srtcontroledl_xcp_eind >= SYSDATE)" // 1) Niet vervallen.
|
||||
+ " AND (EXISTS" // 2) Geen controles of laatste controle status 6.
|
||||
+ " (SELECT idsc1.ins_deelsrtcontrole_status"
|
||||
+ " FROM ins_deelsrtcontrole idsc1"
|
||||
+ " WHERE idsc1.ins_deelsrtcontrole_key = (SELECT MAX(idsc2.ins_deelsrtcontrole_key)"
|
||||
+ " FROM ins_deelsrtcontrole idsc2"
|
||||
+ " WHERE idsc2.ins_deel_key = xcp.ins_deel_key"
|
||||
+ " AND idsc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
|
||||
+ " AND idsc2.ins_scenario_key = xcp.ins_scenario_key)"
|
||||
+ " AND idsc1.ins_deelsrtcontrole_status IN (0, 6))"
|
||||
+ " OR NOT EXISTS"
|
||||
+ " (SELECT idsc2.ins_deelsrtcontrole_key"
|
||||
+ " FROM ins_deelsrtcontrole idsc2"
|
||||
+ " WHERE idsc2.ins_deel_key = xcp.ins_deel_key"
|
||||
+ " AND idsc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
|
||||
+ " AND idsc2.ins_scenario_key = xcp.ins_scenario_key))"
|
||||
+ " AND ins_deel_actief = 1" // 3) Actief object.
|
||||
+ " AND xcp.ctr_discipline_key IN (SELECT w.ins_discipline_key" // 4) hasCTRwrite.
|
||||
+ " FROM fac_v_webgebruiker w"
|
||||
+ " , fac_functie f"
|
||||
+ " WHERE w.fac_functie_key = f.fac_functie_key"
|
||||
+ " AND f.fac_functie_code = 'WEB_CTRUSE'"
|
||||
+ " AND w.fac_gebruiker_prs_level_write < 9"
|
||||
+ " AND w.fac_gebruiker_alg_level_write < 9"
|
||||
+ " AND w.prs_perslid_key = " + user_key + ")"
|
||||
+ " AND BITAND(xcp.ins_srtcontrole_options, 2) = 2" // 5) Het vinkje "Starten" aangevinkt.
|
||||
+ " AND xcp.ins_scenario_key = 1" // 6) Geen scenario.
|
||||
+ " AND xcp.ctr_ismjob = 1" // 7) ismjob.
|
||||
+ " AND result.\"" + mjb_freeze_year + "\" IS NOT NULL"; // 8) isFreezeYear, bedrag in mjb_freeze_year is niet NULL.
|
||||
|
||||
sql = discxalg3d(sql, // 9) 3D-readuse rechten.
|
||||
"dd.ins_discipline_key",
|
||||
"d.alg_regio_key",
|
||||
"d.alg_district_key",
|
||||
"l.alg_locatie_key",
|
||||
"g.alg_gebouw_key",
|
||||
"v.alg_verdieping_key",
|
||||
"r.alg_ruimte_key",
|
||||
"WEB_INSUSE", //autfunction,
|
||||
"",
|
||||
false); // forwrite => read
|
||||
|
||||
sql += " ORDER BY xcp.ins_deel_key"
|
||||
+ " , xcp.ins_srtcontrole_key";
|
||||
// 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(sql);
|
||||
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 ";
|
||||
@@ -195,7 +101,7 @@ if (groupby < 7)
|
||||
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("bedrag").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});
|
||||
@@ -229,7 +135,7 @@ if (groupby < 7)
|
||||
|
||||
var err = Oracle.Execute(insert_sql, true);
|
||||
if (err.friendlyMsg)
|
||||
result.message = err.friendlyMsg
|
||||
result.message = err.friendlyMsg;
|
||||
|
||||
for (var i = 0; i < ingesloten.length; i++)
|
||||
{
|
||||
|
||||
@@ -314,8 +314,11 @@ function insClose(rowArray, isMulti, fromfinish)
|
||||
// Scenario's kunnen niet gestart worden. Hier de scenario's er al uit filteren.
|
||||
if (!rowdata.insScenKey || rowdata.insScenKey == 1)
|
||||
{ // Het is geen scenario. De periodieke taak kan gestart worden. De inspectie aan het array toevoegen.
|
||||
srtcontrolekeyArray[i - deleted] = rowdata.insSrtControleKey;
|
||||
deelsrtcontrkeyArray[i - deleted] = rowdata.insDeelSrtContrKey;
|
||||
if (groupby == 7)
|
||||
{
|
||||
srtcontrolekeyArray[i - deleted] = rowdata.insSrtControleKey;
|
||||
deelsrtcontrkeyArray[i - deleted] = rowdata.insDeelSrtContrKey;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // Het is een scenario. De ins_key verwijderen uit de lijst.
|
||||
@@ -336,7 +339,24 @@ function insClose(rowArray, isMulti, fromfinish)
|
||||
+ "&deelsrtcont_keys=" + deelsrtcontrkeyArray.join(",")
|
||||
+ (fromfinish
|
||||
? "&fromfinish=1"
|
||||
: "");
|
||||
: "")
|
||||
+ "&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
|
||||
+ "&groupby=" + groupby
|
||||
+ "&deel=" + deel
|
||||
+ "&actsit=" +
|
||||
+ "&mjbMoved=" + mjbMoved
|
||||
+ "&mjbFreezed=" + mjbFreezed
|
||||
+ "&mjbXcped=" + mjbXcped;
|
||||
FcltMgr.openDetail(url, L("lcl_ins_stop"));
|
||||
}
|
||||
|
||||
@@ -358,7 +378,8 @@ function insFinish(rowArray, isMulti)
|
||||
// Scenario's kunnen niet gestart worden. Hier de scenario's er al uit filteren.
|
||||
if (!rowdata.insScenKey || rowdata.insScenKey == 1)
|
||||
{ // Het is geen scenario. De periodieke taak kan gestart worden. De inspectie aan het array toevoegen.
|
||||
deelsrtcontrkeyArray[i - deleted] = rowdata.insDeelSrtContrKey;
|
||||
if (groupby == 7)
|
||||
deelsrtcontrkeyArray[i - deleted] = rowdata.insDeelSrtContrKey;
|
||||
isc_status = rowdata.ins_status;
|
||||
mustClose = mustClose || (isc_status != 5);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user