1389 lines
67 KiB
Plaintext
1389 lines
67 KiB
Plaintext
<%@language = "javascript" %>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: mjb_search_list.asp
|
|
Description:
|
|
Parameters:
|
|
|
|
Context:
|
|
|
|
Note:
|
|
|
|
*/ %>
|
|
<!-- #include file="../Shared/common.inc" -->
|
|
<!-- #include file="../Shared/resultset_table_v2.inc" -->
|
|
<!-- #include file="../Shared/json2.js" -->
|
|
<!-- #include file="../ins/ins.inc" -->
|
|
<%
|
|
FCLTHeader.Requires({plugins: ["jQuery"],
|
|
js : ["jquery-ui.js", "../ins/ins_list.js"]}); // Voor slepen en acties.
|
|
|
|
var urole = getQParamSafe("urole", ""); // Indien niet meegegeven, veronderstel dan frontend gebruik
|
|
|
|
|
|
// FORM parameters: de waarde indien aanwezig, anders null
|
|
// Vaak is een lege selectie ook een -1, dus dan is-ie wel aanwezig, maar hoeft niet
|
|
// als filter te worden toegepast. Dan is null dus gelijk aan -1, qua betekenis,
|
|
// Vandaar dat een default van -1 ipv null ook mag
|
|
// In eerste instantie identificeren we elk veld gewoon 1-op-1.
|
|
var outputmode = getQParamInt("outputmode", 0); // 0 = screen, 1 = print, 2 = excel etc
|
|
var print = (outputmode == 1 || outputmode == 5);
|
|
var excel = (outputmode == 2 || outputmode == 6);
|
|
var showall = getQParamInt("showall", 0) == 1;
|
|
|
|
// Er zijn zeker enkele INSUSE én CTRUSE rechten nodig.
|
|
var authparamsINSUSE = user.checkAutorisation("WEB_INSUSE");
|
|
var authparamsCTRUSE = user.checkAutorisation("WEB_CTRUSE");
|
|
|
|
var hasWriteCTRUSE = authparamsCTRUSE.ALGwritelevel < 9 && authparamsCTRUSE.PRSwritelevel < 9;
|
|
|
|
// Rechten om exception (xcp) waarden van de inspectie/taak te kunnen zien en om details van het object te kunnen zien.
|
|
var authparamsINSMAN = user.checkAutorisation("WEB_INSMAN", true);
|
|
var hasReadINSMAN = authparamsINSMAN && authparamsINSMAN.ALGreadlevel < 9 && authparamsINSMAN.PRSreadlevel < 9;
|
|
var hasWriteINSMAN = authparamsINSMAN && authparamsINSMAN.ALGwritelevel < 9 && authparamsINSMAN.PRSwritelevel < 9;
|
|
|
|
// Rechten om alg (locatie) details te kunnen zien.
|
|
var authparamsALGUSE = user.checkAutorisation("WEB_ALGUSE", true);
|
|
var hasReadALGUSE = authparamsALGUSE && authparamsALGUSE.ALGreadlevel < 9 && authparamsALGUSE.PRSreadlevel < 9;
|
|
|
|
var authparamsALGMAN = user.checkAutorisation("WEB_ALGMAN", true);
|
|
var hasReadALGMAN = authparamsALGMAN && authparamsALGMAN.ALGreadlevel < 9 && authparamsALGMAN.PRSreadlevel < 9;
|
|
|
|
var mjb_start_year = S("mjb_start_year");
|
|
var mjb_freeze_year = S("mjb_freeze_year");
|
|
|
|
var groupby = getQParamInt("groupby");
|
|
var fulldetails = (groupby == 7); // Geen aggregate, dan kun je van alles manipuleren
|
|
var fromyear = getQParamInt("fromyear", mjb_freeze_year);
|
|
var toyear = getQParamInt("toyear");
|
|
|
|
var deel = getQParam("deel", ""); // Identieficatie
|
|
var groep = getQParam("groep", ""); // Groep
|
|
if (groep == -1) groep = "";
|
|
var categorie_key = getQParamInt("categorie_key", -1); // Categorie
|
|
//var reg_key = getQParamInt("regiokey", -1); // Regio
|
|
var dist_key = getQParamInt("districtkey", -1);
|
|
var loc_key = getQParamInt("locatiekey", -1); // Locatie
|
|
var bld_key = getQParamInt("gebouwkey", -1); // Gebouw
|
|
var disc_key = getQParamInt("disc", -1);
|
|
var srtgroep_key = getQParamInt("srtgroep", -1);
|
|
var srtdeel_key = getQParamInt("srtdeel", -1);
|
|
var srtcontrole = getQParamIntArray("srtcontrole", []); // Taak
|
|
var inflatiepct = S("mjb_inflation");
|
|
var inflatiefactor = 1 + (inflatiepct / 100);
|
|
var frequentie = getQParamIntArray("frequentie", []); // Array met frequenties.
|
|
var incbtw = getQParamInt("incbtw", 0) == 1; // Lijst inclusief BTW weergeven.
|
|
|
|
var scenario = getQParamInt("scenario", 1); // Scenario
|
|
var actsit = getQParamInt("actsit", 0) == 1; // Ook actuele situatie.
|
|
var mjbshowempty = getQParamInt("mjbshowempty", 0) == 1; // Ook lege regels.
|
|
|
|
// FORM status checkboxes
|
|
var mjbMoved = getQParamInt("mjbMoved", 0) == 1; // Verschoven.
|
|
var mjbFreezed = getQParamInt("mjbFreezed", 0) == 1; // In behandeling.
|
|
var mjbXcped = getQParamInt("mjbXcped", 0) == 1; // Aangepast.
|
|
|
|
var ctrdisc_key = getQParamInt("ctrdisc_key", -1); // Ctrdiscipline
|
|
if (ctrdisc_key > 0)
|
|
lcl.set_dialect(ctrdisc_key, "INS_TAB_DISCIPLINE_KEY");
|
|
|
|
var params = { deel: (deel != ""? deel : null),
|
|
groep: (groep != ""? groep : null),
|
|
categorie_key: categorie_key,
|
|
dist_key: dist_key,
|
|
loc_key: loc_key,
|
|
bld_key: bld_key,
|
|
disc_key: disc_key,
|
|
insgroup_key: srtgroep_key,
|
|
objsrt_key_arr: srtdeel_key,
|
|
mjbgroup: groupby,
|
|
mjbtoyear: toyear,
|
|
mjbsrtcontr: srtcontrole.join(","),
|
|
mjbinfl_pct: inflatiepct,
|
|
mjbfreq: frequentie.join(","),
|
|
mjbincbtw: incbtw
|
|
};
|
|
var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrole", "inflatie",
|
|
"frequentie", "incbtw", "toyear", "alg_startlevel", "alg_endlevel",
|
|
"deel", "groep", "categorie_key", "scenario", "actsit",
|
|
"mjbMoved", "mjbFreezed", "mjbXcped"]);
|
|
%>
|
|
<html>
|
|
<head>
|
|
<style>
|
|
div#timetip {position:absolute;border:1px solid #666;background-color:#fff;padding:2px;z-index:999;display:none;}
|
|
</style>
|
|
<%
|
|
FCLTHeader.Generate({ outputmode: outputmode });
|
|
|
|
if (outputmode == 0) {
|
|
%>
|
|
<script type="text/javascript">
|
|
var urole = "<%=urole%>";
|
|
var fulldetails = <%=fulldetails? 1 : 0%> == 1;
|
|
|
|
function naargebouw(bld_key, deze)
|
|
{
|
|
if (fulldetails)
|
|
var url = "appl/alg/alg_gebouw.asp?key=" + bld_key;
|
|
else
|
|
var url = "appl/mjb/mjb_search.asp?autosearch=1&groupby=7<%=transitParam%>&gebouw_key=" + bld_key;
|
|
FcltMgr.openDetail(url, $(deze).text());
|
|
}
|
|
|
|
function naardeel(ins_key, deze)
|
|
{
|
|
var url = "appl/ins/ins_deel.asp?ins_key=" + ins_key + "&urole=bo";
|
|
FcltMgr.openDetail(url, $(deze).text());
|
|
}
|
|
|
|
function exception(ins_key, srtcont_key, scen_key, ttl)
|
|
{
|
|
var url = "../ins/ins_xcp.asp?ins_key=" + ins_key + "&srtcont_key=" + srtcont_key + "&scen_key=" + scen_key + "&urole=bo";
|
|
FcltMgr.openModalDetail(url, { titel: L("lcl_ins_change_xcp")+" "+ttl, callback: <%=bld_key > 0? "FcltMgr.reload ": "null"%> });
|
|
}
|
|
|
|
function moveplan(evt, ins_key, srtcont_key, scen_key, dlsrtcont_key, jaar)
|
|
{
|
|
FcltMgr.stopPropagation(evt);
|
|
if (!jaar)
|
|
return;
|
|
|
|
var minjaar = <%=S("mjb_freeze_year")%> || (new Date()).getFullYear();
|
|
var savemode, plandatum;
|
|
|
|
if (jaar >= minjaar && jaar < (minjaar + <%=S("mjb_show_years")%>))
|
|
{
|
|
savemode = "P"; // (absolute) plan-mode
|
|
plandatum = new Date(jaar, 11, 31).getTime();
|
|
}
|
|
else if (jaar > -<%=S("mjb_show_years")%> && jaar < <%=S("mjb_show_years")%>)
|
|
{
|
|
savemode = "R" // relative plan-mode
|
|
plandatum = jaar;
|
|
}
|
|
else
|
|
return;
|
|
|
|
var data = { savemode : savemode,
|
|
ins_keys : ins_key,
|
|
srtcont_key_arr : srtcont_key,
|
|
deelsrtcont_key : dlsrtcont_key,
|
|
scen_key_arr : scen_key,
|
|
plandatum : plandatum,
|
|
mjob : 1
|
|
};
|
|
|
|
protectRequest.dataToken(data);
|
|
$.post("../ins/ins_inspect_save.asp"
|
|
, data
|
|
, FcltCallbackRefresh
|
|
, "json"
|
|
);
|
|
}
|
|
|
|
$(function ()
|
|
{
|
|
$('td.mjbjaar').droppable(
|
|
{ drop: function(event, ui)
|
|
{
|
|
$td = $(this);
|
|
$td.css('border', '3px solid grey');
|
|
// Zoek de TH erbij. Daarin staat het drop-jaartal
|
|
var $th = $td.closest('table').find('th').eq($td.index()); // werkt omdat we geen colspan's hebben
|
|
var row = $td.closest('tr')[0];
|
|
var insData = eval("(" + row.getAttribute("ROWDATA") + ")");
|
|
moveplan(null, insData.insKey, insData.insSrtControleKey, insData.insScenKey, null, $th.text());
|
|
}
|
|
});
|
|
|
|
|
|
$('span.draggable').each(function ()
|
|
{
|
|
var element = $(this);
|
|
element.draggable(
|
|
{
|
|
scroll: false,
|
|
axis: "x",
|
|
revert: "invalid"
|
|
});
|
|
});
|
|
$("#mjobtable").mousemove(function (event)
|
|
{
|
|
$('#timetip').show();
|
|
$td = $(event.target).closest("td");
|
|
$tr = $(event.target).closest("tr");
|
|
|
|
if (!$td.hasClass('mjbjaar'))
|
|
{
|
|
$('#timetip').hide();
|
|
return;
|
|
}
|
|
// Zoek de TH erbij. Daarin staat het drop-jaartal
|
|
var $th = $td.closest('table').find('th').eq($td.index()); // werkt omdat we geen colspan's hebben
|
|
var jaar = $th.text();
|
|
|
|
// Als de inspectie gepland is (tr heeft class "mjbplanned") dan de oorspronkelijke datum tonen.
|
|
// Oorspronkelijke datum alleen tonen op het schuifbare bedrag, anders gewoon jaar van de kolom.
|
|
if ($tr.hasClass("mjbplanned") && $td.find("span").hasClass("draggable"))
|
|
{ // Inspectie is gepland.
|
|
var data = eval('(' + $tr[0].getAttribute("ROWDATA") + ')');
|
|
|
|
if (data.insCtrControleType == 1)
|
|
// Oorspronkelijke jaar is onbepaald.
|
|
jaar = L("lcl_mjb_original").format(L("lcl_ins_controle_first").toLowerCase());
|
|
else
|
|
// Oorspronkelijke jaar weergeven.
|
|
jaar = L("lcl_mjb_original").format(data.insNexdate0);
|
|
}
|
|
|
|
$("#timetip").html(jaar)
|
|
.css({ left: parseInt(event.pageX, 10) + 30 + "px",
|
|
top: parseInt(event.pageY, 10) - 30 + "px"
|
|
})
|
|
.show();
|
|
});
|
|
$("#mjobtable").mouseout(function ()
|
|
{
|
|
$('#timetip').hide();
|
|
});
|
|
})
|
|
|
|
var mjbDeelKeyArray = [];
|
|
var mjbSrtContrKeyArray = [];
|
|
var mjbDlSrtContKeyArr = [];
|
|
var mjbScenKeyArray = [];
|
|
function dragDropCallback(json, textStatus, tweede)
|
|
{
|
|
for (var i = 0; i < mjbDeelKeyArray.length; i++)
|
|
{
|
|
moveplan(null, mjbDeelKeyArray[i], mjbSrtContrKeyArray[i], mjbScenKeyArray[i], mjbDlSrtContKeyArr[i], json.year);
|
|
}
|
|
FcltCallbackRefresh(json, textStatus);
|
|
}
|
|
|
|
function mjb_dragdrop(rowArray, isMulti)
|
|
{
|
|
mjbDeelKeyArray = [];
|
|
mjbSrtContrKeyArray = [];
|
|
mjbDlSrtContKeyArr = [];
|
|
mjbScenKeyArray = [];
|
|
for (var i = 0; i < rowArray.length; i++)
|
|
{
|
|
rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')');
|
|
mjbDeelKeyArray.push(rowdata.insKey);
|
|
mjbSrtContrKeyArray.push(rowdata.insSrtControleKey);
|
|
mjbDlSrtContKeyArr.push(rowdata.insDeelSrtContrKey);
|
|
mjbScenKeyArray.push(rowdata.insScenKey)
|
|
}
|
|
url = "../mjb/mjb_dragdropyear.asp?ctrdisc_key=<%=ctrdisc_key%>&ins_keys=" + mjbDeelKeyArray.join(",");
|
|
FcltMgr.openModalDetail(url, L("lcl_mjb_dragdrop"), {callback: dragDropCallback});
|
|
}
|
|
|
|
function mjb_moveYearBack(rowArray, isMulti)
|
|
{
|
|
var ins_key_arr = [];
|
|
var srtcont_key_arr = [];
|
|
var dlsrtcont_key_arr = [];
|
|
var scen_key_arr = [];
|
|
for (var i = 0; i < rowArray.length; i++)
|
|
{
|
|
rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')');
|
|
|
|
// Delete the following ins_deelsrtcontrole records
|
|
if (rowdata.insDeelSrtContrKey != null && rowdata.insDeelSrtContrKey > -1 &&
|
|
rowdata.insDeelSrtContrStatus != null && rowdata.insDeelSrtContrStatus == 0) // Ingepland (0)
|
|
{
|
|
ins_key_arr.push(rowdata.insKey);
|
|
srtcont_key_arr.push(rowdata.insSrtControleKey);
|
|
dlsrtcont_key_arr.push(rowdata.insDeelSrtContrKey);
|
|
scen_key_arr.push(rowdata.insScenKey);
|
|
}
|
|
}
|
|
if (ins_key_arr.length)
|
|
{
|
|
var data = { savemode : "D", // delete-mode
|
|
ins_keys : ins_key_arr.join(","),
|
|
srtcont_key_arr : srtcont_key_arr.join(","),
|
|
dlsrtcont_key_arr: dlsrtcont_key_arr.join(","),
|
|
scen_key_arr : scen_key_arr.join(","),
|
|
mjob : 1
|
|
};
|
|
|
|
protectRequest.dataToken(data);
|
|
$.post("../ins/ins_inspect_save.asp"
|
|
, data
|
|
, FcltCallbackRefresh
|
|
, "json"
|
|
);
|
|
}
|
|
// else: er hoeven geen taken worden teruggezet
|
|
}
|
|
|
|
// Nu in "MJOP Scenario's" aan te roepen.
|
|
//function insInstituteScen()
|
|
//{
|
|
// var subject = L("lcl_mjb_inst_scen");
|
|
// var url = "../mjb/mjb_institute_scen.asp";
|
|
// FcltMgr.openModalDetail(url, subject, {callback: FcltCallbackRefresh});
|
|
//}
|
|
|
|
//function insAddTCScen()
|
|
//{
|
|
// var subject = L("lcl_mjb_incl_scen");
|
|
// var url = "../mjb/mjb_incl_scen.asp?totalcopy=1";
|
|
// FcltMgr.openModalDetail(url, subject, {callback: FcltCallbackRefresh});
|
|
//}
|
|
|
|
function insAddScen(rowArray)
|
|
{
|
|
var insKeyString = getKeyString(rowArray);
|
|
var srtcontrolekeyArray = new Array();
|
|
var deleted = 0;
|
|
for (var i = 0; i < rowArray.length; i++)
|
|
{
|
|
rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')');
|
|
// Scenario's kunnen niet opgenomen worden in een scenario. Hier de scenario's er al uit filteren.
|
|
if (!rowdata.insScenKey || rowdata.insScenKey == 1)
|
|
{ // Het is geen scenario. De periodieke taak kan in een scenario worden opgenomen. De inspectie aan het array toevoegen.
|
|
srtcontrolekeyArray[i] = rowdata.insSrtControleKey;
|
|
}
|
|
else
|
|
{ // Het is een scenario. De ins_key verwijderen uit de lijst.
|
|
var insKeyString_arr = insKeyString.split(",");
|
|
insKeyString_arr.splice(i - deleted, 1);
|
|
insKeyString = insKeyString_arr.join(",");
|
|
deleted++;
|
|
}
|
|
}
|
|
|
|
if (insKeyString.length > 0)
|
|
{
|
|
if (<%=scenario%> > 1)
|
|
{
|
|
var data = { ins_keys: insKeyString,
|
|
srtcont_keys: srtcontrolekeyArray.join(","),
|
|
scen_key: <%=scenario%>
|
|
};
|
|
protectRequest.dataToken(data);
|
|
$.post("../mjb/mjb_incl_scen_save.asp"
|
|
, data
|
|
, FcltCallbackRefresh
|
|
, "json"
|
|
);
|
|
}
|
|
else
|
|
{
|
|
var subject = L("lcl_mjb_incl_scen");
|
|
var url = "../mjb/mjb_incl_scen.asp?ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekeyArray.join(",");
|
|
FcltMgr.openModalDetail(url, subject, {callback: FcltCallbackRefresh});
|
|
}
|
|
}
|
|
// else: alle taken zitten al in het scenario.
|
|
}
|
|
</script>
|
|
<%
|
|
} //if (outputmode == 0)
|
|
%>
|
|
</head>
|
|
<body id="listbody">
|
|
<div id='timetip'></div>
|
|
|
|
<%
|
|
// De datum (jaar) van de *eerstvolgende* onderhoudsbeurt volgt uit:
|
|
// Datum laatste (/laatste geplande) inspectie
|
|
// of anders: ins_deel_aanmaak
|
|
// waarbij verondersteld wordt dat inspecties in het verleden wel zijn uitgevoerd
|
|
|
|
// SQL van objecten met hun eerste vervanging
|
|
var sql_componenten =
|
|
"SELECT e.ins_deel_key"
|
|
+ " , e.ins_srtcontroledl_xcp_key"
|
|
+ " , e.ins_srtcontrole_key"
|
|
+ " , e.ins_srtcontrole_level"
|
|
+ " , e.ins_srtcontrole_omschrijving"
|
|
+ " , e.ins_srtcontrole_kosten"
|
|
+ " , e.ins_srtcontrole_kosten2"
|
|
+ " , e.ins_srtcontrole_kosten3"
|
|
+ " , e.ins_srtcontrole_materiaal"
|
|
+ " , e.ins_srtcontrole_periode"
|
|
+ " , e.ins_srtcontrole_percentage"
|
|
+ " , e.ins_srtcontrole_opmerking"
|
|
// 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.
|
|
+ " , EXTRACT (YEAR FROM COALESCE(c.plandatum" // Plandatum.
|
|
+ " , CASE" // Eventueel startdatum (ins_srtcontroledl_xcp_startdat) i.g.v. als er nog geen inspectie heeft plaatsgevonden.
|
|
+ " WHEN c.laatste IS NULL" // Als er al een inspectie is geweest, is de startdatum niet meer van belang.
|
|
+ " THEN e.ins_srtcontroledl_xcp_startdat"
|
|
+ " ELSE NULL"
|
|
+ " END"
|
|
+ " , CASE" // Berekenen jaar.
|
|
+ " WHEN c.laatste IS NULL AND e.ctr_controle_type = 1" // 1: Controle.
|
|
+ " THEN TO_DATE('" + mjb_freeze_year + "', 'YYYY')"
|
|
+ " WHEN c.laatste IS NULL AND e.ctr_controle_type != 1" // 2: Vervanging, 3: Certificering.
|
|
+ " THEN" // Er is nog geen inspectie geweest
|
|
+ " CASE"
|
|
+ " WHEN EXTRACT(YEAR FROM e.nextdate) > " + mjb_freeze_year
|
|
+ " THEN" // Nextdate is na de freeze datum.
|
|
+ " CASE"
|
|
+ " WHEN EXTRACT(YEAR FROM ADD_MONTHS(e.nextdate, -1 * 12 * e.ins_srtcontrole_periode)) >= " + mjb_start_year + " AND"
|
|
+ " EXTRACT(YEAR FROM ADD_MONTHS(e.nextdate, -1 * 12 * e.ins_srtcontrole_periode)) != EXTRACT(YEAR FROM e.ins_deel_aanmaak)"
|
|
+ " THEN TO_DATE('" + mjb_freeze_year + "', 'YYYY')" // Nu en vorige inspectie liggen tussen start en freeze jaar.
|
|
+ " ELSE e.nextdate"
|
|
+ " END"
|
|
+ " ELSE" // Nextdate is voor of in het freeze jaar.
|
|
+ " CASE"
|
|
+ " WHEN EXTRACT(YEAR FROM e.nextdate) >= " + mjb_start_year
|
|
+ " THEN TO_DATE('" + mjb_freeze_year + "', 'YYYY')" // Nextdate tussen start en freeze jaar.
|
|
+ " ELSE ADD_MONTHS(e.nextdate, 12 * e.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 e.nextdate) > EXTRACT(YEAR FROM SYSDATE)"
|
|
+ " THEN e.nextdate" // Volgende inspectie is in de toekomst.
|
|
+ " ELSE TO_DATE('" + mjb_freeze_year + "', 'YYYY')" // Laatst ingeplande inspectie is nog niet uitgevoerd.
|
|
+ " END"
|
|
+ " END)) vervangingsjaar"
|
|
+ " , e.ins_deel_aantal"
|
|
+ " , e.ins_srtdeel_eenheid"
|
|
+ " , e.ins_srtcontrole_eind"
|
|
+ " , e.ins_srtcontrole_afbouwtijd"
|
|
+ " , e.fin_btwtabelwaarde_key"
|
|
+ " , e.ins_srtcontroledl_xcp_eind"
|
|
+ " , e.ctr_controle_type"
|
|
+ " , e.ins_scenario_key"
|
|
+ " , e.hasscenario2"
|
|
+ " , e.scenario_oms"
|
|
+ " , e.scenario_aantal"
|
|
+ " , c.ins_deelsrtcontrole_freezedate"
|
|
+ " , c.ins_deelsrtcontrole_status"
|
|
+ " FROM (SELECT el.ins_deel_key"
|
|
+ " , el.ins_srtcontroledl_xcp_key"
|
|
+ " , el.ins_srtcontrole_omschrijving"
|
|
+ " , el.ins_srtcontrole_kosten"
|
|
+ " , el.ins_srtcontrole_kosten2"
|
|
+ " , el.ins_srtcontrole_kosten3"
|
|
+ " , el.ins_srtcontrole_materiaal"
|
|
+ " , el.ins_deel_aanmaak"
|
|
+ " , el.ins_srtcontrole_periode"
|
|
+ " , el.ins_srtcontrole_percentage"
|
|
+ " , el.ins_srtcontrole_opmerking"
|
|
+ " , el.ins_srtcontrole_key"
|
|
+ " , el.ins_srtcontrole_level"
|
|
+ " , el.ins_deel_aantal"
|
|
+ " , el.ins_srtdeel_eenheid"
|
|
+ " , el.ins_srtcontrole_eind"
|
|
+ " , el.ins_srtcontrole_afbouwtijd"
|
|
+ " , el.fin_btwtabelwaarde_key"
|
|
+ " , el.ins_srtcontroledl_xcp_startdat"
|
|
+ " , el.ins_srtcontroledl_xcp_eind"
|
|
+ " , el.ctr_controle_type"
|
|
+ " , ins.nextcyclusdate(el.ins_deel_key, el.ins_srtcontrole_key, 1, 0) nextdate"
|
|
+ " , el.ins_scenario_key"
|
|
+ (scenario > 1
|
|
? " , COALESCE((SELECT MAX(1)" // Heeft de periodieke taak ook de meegegeven scenario 'scenario'.
|
|
+ " FROM ins_srtcontroledl_xcp xcp2"
|
|
+ " WHERE xcp2.ins_deel_key = el.ins_deel_key"
|
|
+ " AND xcp2.ins_srtcontrole_key = el.ins_srtcontrole_key"
|
|
+ " AND xcp2.ins_scenario_key = " + scenario + "), 0)"
|
|
: " , 0") + " hasscenario2"
|
|
+ (fulldetails && scenario == 1 ?
|
|
" , (SELECT LISTAGG(isc.ins_scenario_omschrijving, ', ') WITHIN GROUP (ORDER BY isc.ins_scenario_omschrijving)"
|
|
+ " FROM ins_srtcontroledl_xcp xcp"
|
|
+ " , ins_scenario isc"
|
|
+ " WHERE xcp.ins_scenario_key = isc.ins_scenario_key "
|
|
+ " AND xcp.ins_srtcontrole_key = el.ins_srtcontrole_key"
|
|
+ " AND isc.ins_scenario_key <> 1" // actuele situatie niet meenemen
|
|
+ " AND xcp.ins_deel_key = el.ins_deel_key)"
|
|
: " , 'dummy'") + " scenario_oms"
|
|
+ (fulldetails && scenario == 1 ?
|
|
" , (SELECT COUNT(isc.ins_scenario_omschrijving)"
|
|
+ " FROM ins_srtcontroledl_xcp xcp"
|
|
+ " , ins_scenario isc"
|
|
+ " WHERE xcp.ins_scenario_key = isc.ins_scenario_key"
|
|
+ " AND xcp.ins_srtcontrole_key = el.ins_srtcontrole_key"
|
|
+ " AND isc.ins_scenario_key <> 1" // actuele situatie niet meetellen
|
|
+ " AND xcp.ins_deel_key = el.ins_deel_key)"
|
|
: " , -1") + " scenario_aantal"
|
|
+ " FROM ins_v_defined_inspect_xcp el"
|
|
+ " WHERE el.ins_srtcontrole_periode > 0"
|
|
+ (scenario == 1? " AND ins_scenario_key = 1" : (actsit ? "": " AND ins_scenario_key = " + scenario))
|
|
+ " AND el.ctr_ismjob = 1"
|
|
// Je moet read CTRUSE rechten hebben op de CTR disciplines om de taken te kunnen zien.
|
|
+ " AND el.ctr_discipline_key IN (SELECT w.ins_discipline_key"
|
|
+ " 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_read < 9"
|
|
+ " AND w.fac_gebruiker_alg_level_read < 9"
|
|
+ " AND w.prs_perslid_key = " + user_key
|
|
+ " AND w.ins_discipline_key = el.ctr_discipline_key)"
|
|
// Vroeg filteren is *heel* goed voor performance
|
|
+ (dist_key > 0
|
|
? " AND el.ins_alg_locatie_key IN (SELECT alg_locatie_key FROM alg_locatie WHERE alg_district_key = " + dist_key + ")"
|
|
: "")
|
|
+ (loc_key > 0
|
|
? " AND el.ins_alg_locatie_key = " + loc_key
|
|
: "")
|
|
+ (bld_key > 0 // elders in dit bestand wordt scherper gefilterd, deze is voor de performance
|
|
? " AND el.ins_alg_locatie_key = (SELECT alg_locatie_key FROM alg_gebouw WHERE alg_gebouw_key = " + bld_key + ")"
|
|
: "")
|
|
+ (disc_key > 0
|
|
? " AND el.ins_discipline_key = " + disc_key
|
|
: "")
|
|
+ (srtgroep_key > 0
|
|
? " AND el.ins_srtgroep_key = " + srtgroep_key
|
|
: "")
|
|
+ (srtdeel_key > 0
|
|
? " AND el.ins_srtdeel_key = " + srtdeel_key
|
|
: "")
|
|
+ (groep
|
|
? " AND UPPER(ins_srtcontrole_groep) LIKE " + safe.quoted_sql_wild("%" + groep + "%")
|
|
: "")
|
|
+ (categorie_key > 0
|
|
? " AND el.ctr_discipline_key = " + categorie_key
|
|
: "")
|
|
+ (srtcontrole.length > 0
|
|
? " AND el.ins_srtcontrole_key IN (" + srtcontrole.join(",") + ")"
|
|
: "")
|
|
+ (frequentie.length > 0
|
|
? " AND el.ins_srtcontrole_periode IN (" + frequentie.join(",") + ")"
|
|
: "")
|
|
+ " ) e"
|
|
+ " LEFT OUTER JOIN" // uitgevoerde taken
|
|
+ " (SELECT dsc.ins_srtcontrole_key"
|
|
+ " , dsc.ins_deel_key"
|
|
+ " , dsc.ins_scenario_key"
|
|
+ " , dsc.ins_deelsrtcontrole_freezedate"
|
|
+ " , dsc.ins_deelsrtcontrole_status"
|
|
+ " , MAX((SELECT dsc1.ins_deelsrtcontrole_plandatum"
|
|
+ " FROM ins_deelsrtcontrole dsc1"
|
|
+ " WHERE dsc1.ins_deel_key = dsc.ins_deel_key"
|
|
+ " AND dsc1.ins_srtcontrole_key = dsc.ins_srtcontrole_key"
|
|
+ " AND dsc1.ins_scenario_key = dsc.ins_scenario_key"
|
|
+ " AND dsc1.ins_deelsrtcontrole_status < 5)) plandatum"
|
|
+ " , MAX(dsc.ins_deelsrtcontrole_datum) laatste"
|
|
+ " FROM ins_deelsrtcontrole dsc"
|
|
+ " WHERE ins_deelsrtcontrole_key = (SELECT MAX(id2.ins_deelsrtcontrole_key)" // Laatste record.
|
|
+ " FROM ins_deelsrtcontrole id2"
|
|
+ " WHERE id2.ins_deel_key = dsc.ins_deel_key"
|
|
+ " AND id2.ins_srtcontrole_key = dsc.ins_srtcontrole_key"
|
|
+ " AND id2.ins_scenario_key = dsc.ins_scenario_key)"
|
|
+ " GROUP BY dsc.ins_srtcontrole_key"
|
|
+ " , dsc.ins_deel_key"
|
|
+ " , dsc.ins_scenario_key"
|
|
+ " , dsc.ins_deelsrtcontrole_freezedate"
|
|
+ " , dsc.ins_deelsrtcontrole_status) c"
|
|
+ " ON e.ins_deel_key = c.ins_deel_key"
|
|
+ " AND e.ins_srtcontrole_key = c.ins_srtcontrole_key"
|
|
+ " AND e.ins_scenario_key = c.ins_scenario_key"
|
|
|
|
var ins_xcp_active_cost = S("ins_xcp_active_cost");
|
|
var costarray = [];
|
|
if (ins_xcp_active_cost & 1) costarray.push("COALESCE(comp.ins_srtcontrole_kosten, 0)");
|
|
if (ins_xcp_active_cost & 2) costarray.push("COALESCE(comp.ins_srtcontrole_kosten2, 0)");
|
|
if (ins_xcp_active_cost & 4) costarray.push("COALESCE(comp.ins_srtcontrole_kosten3, 0)");
|
|
if (ins_xcp_active_cost & 8) costarray.push("COALESCE(comp.ins_srtcontrole_materiaal, 0)");
|
|
var sqlcost = "";
|
|
if (costarray.length > 0)
|
|
sqlcost = "(" + costarray.join(" + ") + ") *";
|
|
|
|
var sql_yearcost =
|
|
"SELECT comp.ins_deel_key"
|
|
+ " , comp.ins_srtcontroledl_xcp_key"
|
|
+ " , comp.ins_srtcontrole_key"
|
|
+ " , comp.ins_srtcontrole_level"
|
|
+ " , comp.ins_srtcontrole_omschrijving"
|
|
+ " , comp.vervangingsjaar"
|
|
+ " , comp.ins_srtcontrole_periode"
|
|
+ " , comp.ins_srtcontrole_opmerking"
|
|
+ " , COALESCE (comp.ins_deel_aantal *"
|
|
+ sqlcost
|
|
+ " (COALESCE(comp.ins_srtcontrole_percentage, 100) / 100) *"
|
|
+ (incbtw
|
|
? " (1 + COALESCE((SELECT fbtw.fin_btwtabelwaarde_perc"
|
|
+ " FROM fin_btwtabelwaarde fbtw"
|
|
+ " WHERE fbtw.fin_btwtabelwaarde_key = comp.fin_btwtabelwaarde_key) / 100"
|
|
+ " , 0)) *"
|
|
: "")
|
|
+ " POWER(" + inflatiefactor + " , comp.vervangingsjaar - EXTRACT(YEAR FROM SYSDATE))"
|
|
+ " , 0) bedrag"
|
|
+ " , hierlevel"
|
|
+ " , comp.ins_deel_aantal"
|
|
+ " , comp.ins_srtdeel_eenheid"
|
|
+ " , comp.ins_srtcontrole_eind"
|
|
+ " , comp.ins_srtcontrole_afbouwtijd"
|
|
+ " , comp.fin_btwtabelwaarde_key"
|
|
+ " , comp.ins_srtcontroledl_xcp_eind"
|
|
+ " , comp.ctr_controle_type"
|
|
+ " , comp.ins_scenario_key"
|
|
+ " , comp.hasscenario2"
|
|
+ " , comp.scenario_oms"
|
|
+ " , comp.scenario_aantal"
|
|
+ " , comp.ins_deelsrtcontrole_freezedate"
|
|
+ " , comp.ins_deelsrtcontrole_status"
|
|
+ " FROM (WITH comps (ins_deel_key" // Recursive WITH statement om het volgende vervangingsjaar te vinden (m.vervangingsjaar + m.ins_srtcontrole_periode).
|
|
+ " , ins_srtcontroledl_xcp_key"
|
|
+ " , ins_srtcontrole_key"
|
|
+ " , ins_srtcontrole_level"
|
|
+ " , ins_srtcontrole_omschrijving"
|
|
+ " , ins_srtcontrole_kosten"
|
|
+ " , ins_srtcontrole_kosten2"
|
|
+ " , ins_srtcontrole_kosten3"
|
|
+ " , ins_srtcontrole_materiaal"
|
|
+ " , ins_srtcontrole_periode"
|
|
+ " , ins_srtcontrole_percentage"
|
|
+ " , ins_srtcontrole_opmerking"
|
|
+ " , vervangingsjaar"
|
|
+ " , hierlevel"
|
|
+ " , ins_deel_aantal"
|
|
+ " , ins_srtdeel_eenheid"
|
|
+ " , ins_srtcontrole_eind"
|
|
+ " , ins_srtcontrole_afbouwtijd"
|
|
+ " , fin_btwtabelwaarde_key"
|
|
+ " , ins_srtcontroledl_xcp_eind"
|
|
+ " , ctr_controle_type"
|
|
+ " , ins_scenario_key"
|
|
+ " , hasscenario2"
|
|
+ " , scenario_oms"
|
|
+ " , scenario_aantal"
|
|
+ " , ins_deelsrtcontrole_freezedate"
|
|
+ " , ins_deelsrtcontrole_status)"
|
|
+ " AS (SELECT ins_deel_key"
|
|
+ " , ins_srtcontroledl_xcp_key"
|
|
+ " , ins_srtcontrole_key"
|
|
+ " , ins_srtcontrole_level"
|
|
+ " , ins_srtcontrole_omschrijving"
|
|
+ " , ins_srtcontrole_kosten"
|
|
+ " , ins_srtcontrole_kosten2"
|
|
+ " , ins_srtcontrole_kosten3"
|
|
+ " , ins_srtcontrole_materiaal"
|
|
+ " , ins_srtcontrole_periode"
|
|
+ " , ins_srtcontrole_percentage"
|
|
+ " , ins_srtcontrole_opmerking"
|
|
+ " , vervangingsjaar"
|
|
+ " , 1 hierlevel"
|
|
+ " , ins_deel_aantal"
|
|
+ " , ins_srtdeel_eenheid"
|
|
+ " , ins_srtcontrole_eind"
|
|
+ " , ins_srtcontrole_afbouwtijd"
|
|
+ " , fin_btwtabelwaarde_key"
|
|
+ " , ins_srtcontroledl_xcp_eind"
|
|
+ " , ctr_controle_type"
|
|
+ " , ins_scenario_key"
|
|
+ " , hasscenario2"
|
|
+ " , scenario_oms"
|
|
+ " , scenario_aantal"
|
|
+ " , ins_deelsrtcontrole_freezedate"
|
|
+ " , ins_deelsrtcontrole_status"
|
|
+ " FROM (" + sql_componenten + ")"
|
|
+ " WHERE vervangingsjaar IS NOT NULL"
|
|
+ " UNION ALL" // latere jaren
|
|
+ " SELECT m.ins_deel_key"
|
|
+ " , m.ins_srtcontroledl_xcp_key"
|
|
+ " , m.ins_srtcontrole_key"
|
|
+ " , m.ins_srtcontrole_level"
|
|
+ " , m.ins_srtcontrole_omschrijving"
|
|
+ " , m.ins_srtcontrole_kosten"
|
|
+ " , m.ins_srtcontrole_kosten2"
|
|
+ " , m.ins_srtcontrole_kosten3"
|
|
+ " , m.ins_srtcontrole_materiaal"
|
|
+ " , m.ins_srtcontrole_periode"
|
|
+ " , m.ins_srtcontrole_percentage"
|
|
+ " , m.ins_srtcontrole_opmerking"
|
|
+ " , m.vervangingsjaar + m.ins_srtcontrole_periode"
|
|
+ " , m.hierlevel + 1"
|
|
+ " , m.ins_deel_aantal"
|
|
+ " , m.ins_srtdeel_eenheid"
|
|
+ " , m.ins_srtcontrole_eind"
|
|
+ " , m.ins_srtcontrole_afbouwtijd"
|
|
+ " , m.fin_btwtabelwaarde_key"
|
|
+ " , m.ins_srtcontroledl_xcp_eind"
|
|
+ " , ctr_controle_type"
|
|
+ " , ins_scenario_key"
|
|
+ " , hasscenario2"
|
|
+ " , scenario_oms"
|
|
+ " , scenario_aantal"
|
|
+ " , ins_deelsrtcontrole_freezedate"
|
|
+ " , ins_deelsrtcontrole_status"
|
|
+ " FROM comps m"
|
|
+ " WHERE (m.vervangingsjaar + m.ins_srtcontrole_periode <= " + toyear + "))"
|
|
+ " SELECT *"
|
|
+ " FROM comps"
|
|
+ " ) comp"
|
|
|
|
var jaren = [];
|
|
for (var i = fromyear; i <= toyear; i++)
|
|
jaren.push(i);
|
|
|
|
var keyColomn = "";
|
|
switch (groupby)
|
|
{
|
|
case 1: keyColumn = "d.alg_district_key";
|
|
break;
|
|
case 2: keyColumn = "g.alg_gebouw_key";
|
|
break;
|
|
case 3: keyColumn = "dl.ins_discipline_key";
|
|
break;
|
|
case 4: keyColumn = "isg.ins_srtgroep_key";
|
|
break;
|
|
case 5: keyColumn = "isd.ins_srtdeel_key";
|
|
break;
|
|
case 6:
|
|
case 7: keyColumn = "dl.ins_deel_key";
|
|
break;
|
|
}
|
|
|
|
var sql_cost_verval = "SELECT d.alg_district_key"
|
|
+ " , d.alg_district_omschrijving"
|
|
+ " , g.alg_gebouw_omschrijving"
|
|
+ " , g.alg_gebouw_key"
|
|
+ " , dl.ins_deel_omschrijving"
|
|
+ " , cy.ins_deel_aantal"
|
|
+ " , cy.ins_srtdeel_eenheid"
|
|
+ " , dl.ins_deel_opmerking"
|
|
+ " , dd.ins_discipline_omschrijving"
|
|
+ " , isg.ins_srtgroep_omschrijving"
|
|
+ " , isd.ins_srtdeel_omschrijving"
|
|
+ " , cy.ins_srtcontrole_omschrijving"
|
|
+ " , cy.ins_deel_key"
|
|
+ " , " + keyColumn + " keyColumn"
|
|
+ " , cy.ins_srtcontroledl_xcp_key"
|
|
+ " , cy.ins_srtcontrole_key"
|
|
+ " , cy.ins_srtcontrole_periode"
|
|
+ " , cy.ins_srtcontrole_opmerking"
|
|
+ " , cy.ins_srtcontrole_level"
|
|
+ " , g.alg_gebouw_vervaldatum"
|
|
+ " , dl.ins_deel_vervaldatum"
|
|
+ " , cy.ins_srtcontroledl_xcp_eind"
|
|
+ " , cy.ins_srtcontrole_eind"
|
|
+ " , EXTRACT(YEAR FROM LEAST (COALESCE(g.alg_gebouw_vervaldatum"
|
|
+ " , dl.ins_deel_vervaldatum"
|
|
+ " , COALESCE(cy.ins_srtcontroledl_xcp_eind, cy.ins_srtcontrole_eind))"
|
|
+ " , COALESCE(COALESCE(cy.ins_srtcontroledl_xcp_eind, cy.ins_srtcontrole_eind)"
|
|
+ " , g.alg_gebouw_vervaldatum"
|
|
+ " , dl.ins_deel_vervaldatum)"
|
|
+ " , COALESCE(dl.ins_deel_vervaldatum"
|
|
+ " , COALESCE(cy.ins_srtcontroledl_xcp_eind, cy.ins_srtcontrole_eind)"
|
|
+ " , g.alg_gebouw_vervaldatum))"
|
|
+ " ) vervaljaar"
|
|
+ " , vervangingsjaar"
|
|
+ " , ins_srtcontrole_afbouwtijd afbouwtijd"
|
|
+ " , bedrag"
|
|
+ " , cy.ctr_controle_type"
|
|
+ " , cy.ins_scenario_key"
|
|
+ " , cy.hasscenario2"
|
|
+ " , cy.scenario_oms"
|
|
+ " , cy.scenario_aantal"
|
|
+ " , cy.ins_deelsrtcontrole_freezedate"
|
|
+ " , cy.ins_deelsrtcontrole_status"
|
|
+ " FROM (" + sql_yearcost + ") cy"
|
|
+ " , 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"
|
|
+ " WHERE cy.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";
|
|
|
|
if (deel)
|
|
sql_cost_verval += " AND dl.ins_deel_upper LIKE " + safe.quoted_sql_wild("%" + deel + "%");
|
|
|
|
if (bld_key > 0)
|
|
sql_cost_verval += " AND g.alg_gebouw_key = " + bld_key;
|
|
|
|
var sql_cost = "SELECT cv.alg_district_key"
|
|
+ " , cv.alg_district_omschrijving"
|
|
+ " , cv.alg_gebouw_omschrijving"
|
|
+ " , cv.alg_gebouw_key"
|
|
+ " , cv.ins_deel_omschrijving"
|
|
+ " , cv.ins_deel_aantal"
|
|
+ " , cv.ins_srtdeel_eenheid"
|
|
+ " , cv.ins_deel_opmerking"
|
|
+ " , cv.ins_discipline_omschrijving"
|
|
+ " , cv.ins_srtgroep_omschrijving"
|
|
+ " , cv.ins_srtdeel_omschrijving"
|
|
+ " , cv.ins_srtcontrole_omschrijving"
|
|
+ " , cv.ins_deel_key"
|
|
+ " , cv.keyColumn"
|
|
+ " , cv.ins_srtcontroledl_xcp_key"
|
|
+ " , cv.ins_srtcontrole_key"
|
|
+ (fulldetails?" , ins.nextcyclusdate (cv.ins_deel_key, cv.ins_srtcontrole_key, cv.ins_scenario_key, 0) org_nexdate_0" // Eerstaankomende inspectie: 1-ste dit jaar of in de toekomst.
|
|
:" , NULL org_nexdate_0")
|
|
+ " , cv.ins_srtcontrole_periode"
|
|
+ " , cv.ins_srtcontrole_opmerking"
|
|
+ " , cv.ins_srtcontrole_level"
|
|
+ " , cv.vervaljaar"
|
|
+ " , cv.vervangingsjaar"
|
|
+ " , cv.afbouwtijd"
|
|
+ " , CASE"
|
|
+ " WHEN (SELECT idsc.ins_deelsrtcontrole_key"
|
|
+ " FROM ins_deelsrtcontrole idsc"
|
|
+ " WHERE idsc.ins_deel_key = cv.ins_deel_key"
|
|
+ " AND idsc.ins_srtcontrole_key = cv.ins_srtcontrole_key"
|
|
+ " AND idsc.ins_deelsrtcontrole_status IN (0)"
|
|
+ " AND idsc.ins_scenario_key = cv.ins_scenario_key) IS NOT NULL"
|
|
+ " THEN 1"
|
|
+ " ELSE 0"
|
|
+ " END isPlanned"
|
|
+ " , CASE"
|
|
+ " WHEN (SELECT idsc.ins_deelsrtcontrole_key"
|
|
+ " FROM ins_deelsrtcontrole idsc"
|
|
+ " WHERE idsc.ins_deel_key = cv.ins_deel_key"
|
|
+ " AND idsc.ins_srtcontrole_key = cv.ins_srtcontrole_key"
|
|
+ " AND idsc.ins_deelsrtcontrole_status IN (2, 5)"
|
|
+ " AND idsc.ins_scenario_key = cv.ins_scenario_key) IS NOT NULL"
|
|
+ " THEN 0"
|
|
+ " ELSE 1"
|
|
+ " END canBePlanned"
|
|
+ " , COALESCE((SELECT MAX(idsc2.ins_deelsrtcontrole_key)"
|
|
+ " FROM ins_deelsrtcontrole idsc2"
|
|
+ " WHERE idsc2.ins_deel_key = cv.ins_deel_key"
|
|
+ " AND idsc2.ins_srtcontrole_key = cv.ins_srtcontrole_key"
|
|
+ " AND (idsc2.ins_scenario_key = cv.ins_scenario_key))"
|
|
+ " , -1) ins_deelsrtcontrole_key"
|
|
+ " , cv.bedrag AS orgbedrag"
|
|
// Als er een andere inspectie is met een lagere ins_srtcontrole_level
|
|
// in hetzelfde jaar dan springt ons bedrag op 0
|
|
+ " , CASE WHEN MIN(cv.ins_srtcontrole_level) KEEP (DENSE_RANK FIRST ORDER BY cv.ins_srtcontrole_level) "
|
|
+ " OVER (PARTITION BY cv.ins_deel_key, cv.vervangingsjaar, cv.ins_scenario_key) < cv.ins_srtcontrole_level"
|
|
+ " OR"
|
|
+ " cv.vervaljaar - COALESCE(cv.afbouwtijd, 0) < cv.vervangingsjaar"
|
|
+ " THEN 0 "
|
|
+ " ELSE cv.bedrag "
|
|
+ " END bedrag"
|
|
+ " , cv.ctr_controle_type"
|
|
+ " , cv.ins_scenario_key"
|
|
+ " , cv.hasscenario2"
|
|
+ " , cv.scenario_oms"
|
|
+ " , cv.scenario_aantal"
|
|
+ " , cv.ins_deelsrtcontrole_freezedate"
|
|
+ " , cv.ins_deelsrtcontrole_status"
|
|
+ " FROM (" + sql_cost_verval + ") cv";
|
|
|
|
var sqlArray = [];
|
|
var sql_cost_where = "";
|
|
if (mjbMoved) // Aangepast.
|
|
{
|
|
sqlArray.push("isPlanned = 1");
|
|
}
|
|
if (mjbFreezed) // In behandeling (Bevroren).
|
|
{
|
|
sqlArray.push("ins_deelsrtcontrole_freezedate IS NOT NULL AND ins_deelsrtcontrole_status = 2");
|
|
}
|
|
if (mjbXcped) // Aangepast.
|
|
{
|
|
sqlArray.push("ins_srtcontroledl_xcp_key IS NOT NULL AND ins_scenario_key = 1");
|
|
}
|
|
|
|
if (sqlArray.length)
|
|
sql_cost_where = " WHERE ((" + sqlArray.join(") OR (") + "))";
|
|
|
|
if (!fulldetails)
|
|
{
|
|
var fields = ["alg_district_omschrijving", "alg_gebouw_omschrijving", "ins_discipline_omschrijving",
|
|
"ins_srtgroep_omschrijving", "ins_srtdeel_omschrijving", "ins_deel_omschrijving"];
|
|
while (fields.length > groupby) // TODO: dit kan toch echt niet kloppen!?
|
|
fields.pop();
|
|
if (fields.length == 6) // bij omschrijving hoort ook aantal met eenheid.
|
|
{
|
|
fields.push("ins_deel_aantal")
|
|
fields.push("ins_srtdeel_eenheid")
|
|
}
|
|
|
|
var sql_cost = "SELECT " + fields.join(", ")
|
|
+ (groupby > 1
|
|
? " , alg_gebouw_key"
|
|
: "")
|
|
+ " , keyColumn"
|
|
+ (keyColumn == "dl.ins_deel_key"
|
|
? " , ins_deel_opmerking"
|
|
: "")
|
|
+ " , vervangingsjaar"
|
|
+ " , SUM(bedrag) bedrag"
|
|
+ " , SUM(orgbedrag) orgbedrag"
|
|
+ " , hasscenario2"
|
|
+ " , ins_scenario_key"
|
|
+ " FROM (" + sql_cost + ")"
|
|
+ sql_cost_where
|
|
+ " GROUP BY " + fields.join(", ")
|
|
+ (groupby > 1
|
|
? " , alg_gebouw_key"
|
|
: "" )
|
|
+ " , keyColumn"
|
|
+ (keyColumn == "dl.ins_deel_key"
|
|
? " , ins_deel_opmerking"
|
|
: "")
|
|
+ " , vervangingsjaar"
|
|
+ " , hasscenario2"
|
|
+ " , ins_scenario_key";
|
|
}
|
|
|
|
var sql = "SELECT *"
|
|
+ " FROM ("
|
|
+ sql_cost
|
|
+ ") PIVOT (SUM(bedrag), SUM(orgbedrag) AS orgbedrag "
|
|
+ " FOR vervangingsjaar IN (" + jaren.join(",") + ") )";
|
|
|
|
if (scenario > 1)
|
|
{
|
|
if (!actsit)
|
|
sql += " WHERE ins_scenario_key IN (" + scenario + ") AND hasscenario2 = 1";
|
|
else
|
|
sql += " WHERE ins_scenario_key IN (" + scenario + ") OR (hasscenario2 = 0 AND ins_scenario_key = 1)";
|
|
}
|
|
else
|
|
{
|
|
// actsit hier geen invloed.
|
|
sql += " WHERE ins_scenario_key = 1";
|
|
}
|
|
|
|
if (fulldetails && sqlArray.length)
|
|
sql += " AND ((" + sqlArray.join(") OR (") + "))";
|
|
|
|
sql += " ORDER BY 1";
|
|
for (var i = 2; i <= groupby; i++)
|
|
{
|
|
sql += "," + String(i)
|
|
}
|
|
|
|
// Functions of ResultsetTable.
|
|
function fnkeyFunction(oRs)
|
|
{
|
|
if (fulldetails)
|
|
return oRs("ins_deel_key").Value; // + "-" + oRs("ins_srtcontrole_key").Value;
|
|
else
|
|
return oRs("keyColumn").Value;
|
|
}
|
|
|
|
function fnrowData(oRs)
|
|
{
|
|
var data = {};
|
|
if (fulldetails)
|
|
{
|
|
data.insKey = oRs("ins_deel_key").Value;
|
|
data.insSrtControleKey = oRs("ins_srtcontrole_key").Value;
|
|
data.insDeelSrtContrKey = oRs("ins_deelsrtcontrole_key").Value ? oRs("ins_deelsrtcontrole_key").Value : -1;
|
|
data.insDeelSrtContrStatus = oRs("ins_deelsrtcontrole_status").Value == null ? -1 : oRs("ins_deelsrtcontrole_status").Value;
|
|
data.insNexdate0 = new Date(oRs("org_nexdate_0").Value).getFullYear(); // Eerstaankomende vandaag of in de toekomst.
|
|
data.insCtrControleType = oRs("ctr_controle_type").Value;
|
|
data.insScenKey = oRs("ins_scenario_key").Value;
|
|
}
|
|
|
|
return JSON.stringify(data);
|
|
}
|
|
|
|
function fnrowClass(oRs)
|
|
{
|
|
if (!fulldetails)
|
|
return "";
|
|
var scen_key = oRs("ins_scenario_key").Value;
|
|
var lclass = scen_key == 1 && oRs("ins_srtcontroledl_xcp_key").Value != null? "mjbxcp" : "mjbstd";
|
|
if (scen_key > 1)
|
|
lclass += " scenerized1";
|
|
if (oRs("isPlanned").Value == 1)
|
|
lclass += " mjbplanned";
|
|
return lclass;
|
|
}
|
|
|
|
// true als er *ergens* een bedrag is ingevuld
|
|
function fnrowFilter(oRs)
|
|
{
|
|
if (mjbshowempty)
|
|
return true;
|
|
|
|
for (var j = 0; j < jaren.length; j++)
|
|
{
|
|
if (oRs(String(jaren[j])).Value)
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
|
|
function fnrowActionEnabler(oRs)
|
|
{
|
|
var data = {};
|
|
//var eShowInsp = false;
|
|
var ePlan = false;
|
|
var eStart = false;
|
|
var eClose = false;
|
|
var eFinish = false;
|
|
var eAddScen = false;
|
|
if (fulldetails)
|
|
{ // Functie ins.func_enabled_deel kost tijd om voor elke regel uit te voeren.
|
|
// Query uit ins.func_enabled_deel samenvoegen met query van dit overzicht is bijna niet te doen.
|
|
// Inspectie acties alleen zichtbaar in het overzicht gegroepeerd naar Taken. Het gebouw filter is dan al vaak ingevuld.
|
|
var this_ins = ins.func_enabled_deel(oRs("ins_deel_key").Value,
|
|
{ srtcont_key: oRs("ins_srtcontrole_key").Value,
|
|
deelsrtcont_key: oRs("ins_deelsrtcontrole_key").Value? oRs("ins_deelsrtcontrole_key").Value : -1,
|
|
scen_key: oRs("ins_scenario_key").Value
|
|
});
|
|
ePlan = this_ins.canInspPlan;
|
|
eStart = this_ins.canInspStart;
|
|
eClose = this_ins.canInspClose;
|
|
eFinish = this_ins.canInspFinish;
|
|
eFreeze = this_ins.canInspFreeze;
|
|
eAddScen = true;
|
|
}
|
|
var data = {ePlan: ePlan, eStart: eStart, eClose: eClose, eFinish: eFinish, eFreeze: eFreeze};
|
|
return data;
|
|
}
|
|
|
|
function fnHasScenario(oRs)
|
|
{
|
|
if (oRs("scenario_aantal").Value > 0)
|
|
{
|
|
return "<nobr>" + (oRs("scenario_aantal").Value > 1? "*" : "") + "<i class='fa fa-fw fa-clone' title='" + safe.htmlattr(oRs("scenario_oms").Value) + "'></i>" + "</nobr>"
|
|
}
|
|
else
|
|
return "";
|
|
}
|
|
|
|
function fnGebouw(oRs)
|
|
{
|
|
var isSenario = oRs("ins_scenario_key").Value > 1;
|
|
if ((hasReadALGUSE || hasReadALGMAN) && !isSenario)
|
|
{
|
|
return "<span class='details' title='{2}' onclick='naargebouw({0}, this)'>{1}</span>".format(oRs("alg_gebouw_key").Value, safe.htmlattr(oRs("alg_gebouw_omschrijving").Value), (fulldetails ? safe.htmlattr(L("lcl_estate_gebouw_title")): L("ins_srtcontrole_m")));
|
|
}
|
|
else
|
|
return safe.html(oRs("alg_gebouw_omschrijving").Value);
|
|
}
|
|
|
|
function fnDeel(oRs)
|
|
{ // Alleen voor groupby Element(6) en Taak(7)
|
|
var isSenario = oRs("ins_scenario_key").Value > 1;
|
|
if (hasReadINSMAN && !isSenario)
|
|
{
|
|
return "<span class='details' title='{2}' onclick='naardeel({0}, this)'>{1}</span>".format(oRs("keyColumn").Value, safe.html(oRs("ins_deel_omschrijving").Value), (oRs("ins_deel_opmerking").Value == null ? safe.htmlattr(L("lcl_mld_deel_details")) : safe.htmlattr(oRs("ins_deel_opmerking").Value)));
|
|
}
|
|
else
|
|
return "<span title='{2}'>{1}</span>".format(oRs("keyColumn").Value, safe.htmlattr(oRs("ins_deel_omschrijving").Value), safe.htmlattr(oRs("ins_deel_opmerking").Value));
|
|
}
|
|
|
|
function fnSrtcontrole(oRs)
|
|
{
|
|
var hasXcp = oRs("ins_srtcontroledl_xcp_key").Value != null;
|
|
if ((hasXcp && hasReadINSMAN) || (hasWriteCTRUSE && hasWriteINSMAN))
|
|
{
|
|
var fncall = "exception({0}, {1}, '{2}', '{3}')"
|
|
.format(oRs("ins_deel_key").Value,
|
|
oRs("ins_srtcontrole_key").Value,
|
|
oRs("ins_scenario_key").Value,
|
|
safe.jsstring(oRs("ins_deel_omschrijving").Value));
|
|
return "<span class='details' onclick='{0}'>{1}</span>"
|
|
.format(safe.htmlattr(fncall),
|
|
safe.html(oRs("ins_srtcontrole_omschrijving").Value));
|
|
}
|
|
else
|
|
return safe.html(oRs("ins_srtcontrole_omschrijving").Value);
|
|
}
|
|
|
|
function fnfnBedrag(jaar) // altijd afronden
|
|
{
|
|
return function (oRs)
|
|
{
|
|
if (oRs(jaar).Value == null)
|
|
return "";
|
|
var v = safe.curr(Math.round(oRs(jaar).Value), true);
|
|
return v;
|
|
}
|
|
}
|
|
|
|
function fnfnBedragNumber(jaar) // Voor optellen
|
|
{
|
|
return function (oRs)
|
|
{
|
|
return Math.round(oRs(jaar).Value);
|
|
}
|
|
}
|
|
|
|
function totalShow(column, rowNum)
|
|
{
|
|
return safe.curr(column.totalsum, true);
|
|
}
|
|
|
|
// Voor de laatste kolom
|
|
function fnTotal(oRs)
|
|
{
|
|
var s = 0;
|
|
for (var j = 0; j < jaren.length; j++)
|
|
{
|
|
s = s + Math.round(oRs(String(jaren[j])).Value);
|
|
}
|
|
return s;
|
|
}
|
|
|
|
function fnTotalText(oRs)
|
|
{
|
|
return safe.curr(fnTotal(oRs), true);
|
|
}
|
|
|
|
var doneclik = {}; // Altijd alleen de eerste klikken
|
|
function fnfnClickBedrag(jaar) // altijd afronden
|
|
{
|
|
return function (oRs)
|
|
{
|
|
if (oRs(jaar).Value == null)
|
|
return "";
|
|
var v = Math.round(oRs(jaar).Value);
|
|
var org_v = Math.round(oRs(jaar + "_ORGBEDRAG").Value);
|
|
if (v == 0) // (jaar >= vervaljaar) //
|
|
{
|
|
var vervaljaar = oRs("vervaljaar").Value;
|
|
var afbouwtijd = oRs("afbouwtijd").Value || 0;
|
|
if (vervaljaar != null && jaar > vervaljaar - afbouwtijd) // Als 2022 vervaljaar is en afbouwtijd is 2 jaar, dan 2020 nog 0 tonen.
|
|
return "";
|
|
}
|
|
if (v != org_v) {
|
|
if (outputmode == 0) {
|
|
v = "<span class='mjborgbedrag' title='{1}'>{0}</span>".format(safe.curr(v, true), L('lcl_valutasign') + safe.curr(org_v, true));
|
|
} else {
|
|
v = "{0}".format(safe.curr(v, true));
|
|
}
|
|
}
|
|
|
|
var deel_key = oRs("ins_deel_key").Value;
|
|
var srtcont_key = oRs("ins_srtcontrole_key").Value;
|
|
if ((deel_key + ":" + srtcont_key) in doneclik )
|
|
return safe.curr(v, true);
|
|
|
|
doneclik[deel_key + ":" + srtcont_key] = 1;
|
|
|
|
var scen_key = oRs("ins_scenario_key").Value;
|
|
// INSUSE read rechten heb je al nodig om dit overzicht te zien.
|
|
// Inspecties in de status gestart(2) of gereedgemeld(5) mogen niet drag en drop zijn. Planningsdatum is daarvan niet aan te passen.
|
|
return "<span" + (hasWriteCTRUSE? " class='" + (oRs("canBePlanned").Value == 1 && (scenario == 1 || scen_key > 1 || oRs("hasscenario2").Value == 1)? "details draggable" : "") + "'" : "") + ">{0}</span>".format(safe.curr(v, true))
|
|
}
|
|
}
|
|
|
|
function fnfncolClass(jaar)
|
|
{
|
|
return function (oRs)
|
|
{
|
|
if (fulldetails)
|
|
{
|
|
var vervaljaar = oRs("vervaljaar").Value;
|
|
var afbouwtijd = oRs("afbouwtijd").Value || 0;
|
|
var freezeclass = "";
|
|
if (jaar > vervaljaar - afbouwtijd) // Afzien van taken/vervanging/inspecties. Geen kosten meer.
|
|
{
|
|
if (vervaljaar != null && afbouwtijd != null && jaar > vervaljaar - afbouwtijd && jaar <= vervaljaar)
|
|
return "mjbjaar mjbafbouw" + freezeclass;
|
|
else if (vervaljaar != null && jaar > vervaljaar)
|
|
return "mjbjaar mjbverval";
|
|
}
|
|
else
|
|
{
|
|
if (jaar == mjb_freeze_year && oRs("ins_deelsrtcontrole_freezedate").Value != null && oRs("ins_deelsrtcontrole_status").Value == 2)
|
|
freezeclass = " mjbfreezed";
|
|
}
|
|
}
|
|
return "mjbjaar" + freezeclass;
|
|
}
|
|
}
|
|
|
|
function fncolCloneClass()
|
|
{
|
|
return function (oRs)
|
|
{
|
|
if (oRs("scenario_aantal").Value > 0)
|
|
{
|
|
return "mjbcloned"
|
|
}
|
|
else
|
|
return "";
|
|
}
|
|
}
|
|
|
|
var buttons = [];
|
|
//buttons.push({ icon: "plus.png", title: L("lcl_mjb_incl_scen"), action: 'insAddTCScen()' });
|
|
//buttons.push({ icon: "plus.png", title: L("lcl_mjb_inst_scen"), action: 'insInstituteScen()' });
|
|
buttons.push({ icon: "page_refresh.png", title: L("lcl_refresh"), action: "FcltMgr.reload()" });
|
|
buttons.push({ icon: "legenda.png", title: L("lcl_ins_controle_legenda"), action: 'openLegenda()' });
|
|
|
|
var rst = new ResultsetTable({ keyColumn: fnkeyFunction,
|
|
sql: sql,
|
|
ID: "mjobtable",
|
|
rowData: fnrowData,
|
|
rowClass: fnrowClass,
|
|
rowFilter: fnrowFilter,
|
|
//suppressKeyRepeat: "alg_locatie_omschrijving",
|
|
rowActionEnabler: fnrowActionEnabler,
|
|
totalShow: totalShow,
|
|
flexModule: "INS",
|
|
multiple: true,
|
|
filterParams: params,
|
|
outputmode: outputmode,
|
|
title: L("lcl_mjb_begroting") + (inflatiepct != 0 ? " "+L("lcl_mjb_inflation").format(safe.curr(inflatiepct)): ""),
|
|
showAll: showall,
|
|
buttons: buttons
|
|
});
|
|
|
|
//rst.addColumn(new Column({caption: L("level"), content: "ins_srtcontrole_level" /*, hasActions: true*/}));
|
|
if (fulldetails && scenario == 1)
|
|
rst.addColumn(new Column({caption: "<span title='{0}'>".format(safe.htmlattr(L("lcl_mjb_scenarios"))) + I("fa-clone") + "</span>", content: fnHasScenario }));
|
|
rst.addColumn(new Column({caption: L("lcl_district"), content: "alg_district_omschrijving", purpose: (dist_key > -1 ? PRINTING_ONLY : PRINT_AND_VIEW)}));
|
|
if (groupby > 1)
|
|
rst.addColumn(new Column({caption: L("lcl_building"), content: fnGebouw }));
|
|
if (!fulldetails)
|
|
{
|
|
if (groupby > 2) rst.addColumn(new Column({caption: L("lcl_discipline"), content: "ins_discipline_omschrijving"}));
|
|
if (groupby > 3) rst.addColumn(new Column({caption: L("lcl_obj_group"), content: "ins_srtgroep_omschrijving"}));
|
|
if (groupby > 4) rst.addColumn(new Column({caption: L("lcl_obj_sort"), content: "ins_srtdeel_omschrijving"}));
|
|
}
|
|
if (groupby > 5)
|
|
{
|
|
rst.addColumn(new Column({caption: L("lcl_ins_object"), content: fnDeel}));
|
|
rst.addColumn(new Column({caption: L("lcl_amount"), content: "ins_deel_aantal", datatype: "float"}));
|
|
rst.addColumn(new Column({caption: L("lcl_obj_unit"), content: "ins_srtdeel_eenheid"}));
|
|
}
|
|
if (fulldetails)
|
|
{
|
|
rst.addColumn(new Column({caption: L("lcl_ins_controle_srt"), content: fnSrtcontrole, tooltip: "ins_srtcontrole_opmerking"}));
|
|
}
|
|
for (var j = 0; j < jaren.length; j++)
|
|
{
|
|
if (fulldetails)
|
|
var content = fnfnClickBedrag(String(jaren[j]));
|
|
else
|
|
var content = fnfnBedrag(String(jaren[j]));
|
|
rst.addColumn(new Column({caption: String(jaren[j]), datatype: "number",
|
|
content: content,
|
|
columnClass: fnfncolClass(String(jaren[j])), // tdClass dan niet meer nodig.
|
|
total: true,
|
|
fnAmount: fnfnBedragNumber(String(jaren[j]))
|
|
}));
|
|
}
|
|
rst.addColumn(new Column({caption: L("lcl_Total"), datatype: "number",
|
|
tdClass: "mjbtotal",
|
|
content: fnTotalText,
|
|
fnAmount: fnTotal,
|
|
total: true
|
|
}));
|
|
|
|
/* de mogelijke acties */
|
|
if (fulldetails)
|
|
{
|
|
rst.addAction({ action: "mjb_dragdrop", caption: L("lcl_mjb_dragdrop"), multi: true, multiOnce: true, onlyMulti: true });
|
|
rst.addAction({ action: "mjb_moveYearBack", caption: L("lcl_mjb_move_back"), multi: true, multiOnce: true, onlyMulti: true });
|
|
|
|
if (scenario == 1)
|
|
{
|
|
// Vooralsnog de acties niet in de regels weergeven en alleen als multi aanbieden.
|
|
// Anders zijn de links naar gebouw, object en taak vaak niet niet zichtbaar en daardoor niet klikbaar.
|
|
// De aanwezigheid van deze acties zou mogen afhangen van de vinkjes, maar dan is het bepalen best lastig/duur (is er in de selectie *een* taak met enz)
|
|
// en eigenklijk weten we wel dat ze hier weg moeten. Dus halen we ze hard weg hier.
|
|
//rst.addAction({ action: "insPlan", caption: L("lcl_ins_schedule"), multi: true, multiOnce: true, enabler: "ePlan", onlyMulti: true });
|
|
//rst.addAction({ action: "insStart", caption: L("lcl_ins_start"), multi: true, multiOnce: true, enabler: "eStart", onlyMulti: true });
|
|
//rst.addAction({ action: "insClose", caption: L("lcl_ins_close") + "/" + L("lcl_ins_finish"), multi: true, multiOnce: true, enabler: "eClose", onlyMulti: true });
|
|
//rst.addAction({ action: "insFinish", caption: L("lcl_ins_finish"), multi: true, multiOnce: true, enabler: "eFinish", onlyMulti: true });
|
|
|
|
rst.addAction({ action: "insFreeze", caption: L("lcl_mjb_freeze"), multi: true, multiOnce: true, enabler: "eFreeze", onlyMulti: true });
|
|
rst.addAction({ action: "insAddScen", caption: L("lcl_mjb_incl_scen"), multi: true, multiOnce: true, enabler: "eAddScen", onlyMulti: true });
|
|
}
|
|
else if (scenario > 1 && actsit)
|
|
{
|
|
var oRs = Oracle.Execute("SELECT ins_scenario_omschrijving FROM ins_scenario WHERE ins_scenario_key = " + scenario);
|
|
var scen_oms = oRs("ins_scenario_omschrijving").Value;
|
|
oRs.Close();
|
|
rst.addAction({ action: "insAddScen", caption: L("lcl_mjb_incl_scen0").format(scen_oms), multi: true, multiOnce: true, enabler: "eAddScen", onlyMulti: true });
|
|
}
|
|
}
|
|
|
|
var count = rst.processResultset();
|
|
|
|
|
|
if (!excel && !print)
|
|
{
|
|
%>
|
|
<!-- LEGENDA -->
|
|
<script type="text/javascript">
|
|
function openLegenda()
|
|
{
|
|
params = { width: 500,
|
|
minWidth: 250,
|
|
minHeight: 10,
|
|
resizable: false,
|
|
position: {my: "right top", at: "right top + 30"},
|
|
title: "<%=L("lcl_ins_controle_legenda")%>"
|
|
}
|
|
$('div#legenda').dialog(params).dialog('open');
|
|
FcltMgr.resized();
|
|
}
|
|
</script>
|
|
<div id="legenda" style="display:none; line-height: 30px;">
|
|
<table id="inslegenda">
|
|
<tr class="mjbfreezed">
|
|
<td title="<%= L("lcl_mjb_started") %>"><%= L("lcl_ins_controle_gestart") %></td>
|
|
</tr>
|
|
<tr class="mjbplanned">
|
|
<td title="<%= L("lcl_mjb_moved") %>"><%= L("lcl_mjb_moved") %></td>
|
|
</tr>
|
|
<tr class="mjbxcp">
|
|
<td title="<%= L("lcl_mjb_overruled_xcp") %>"><%= L("lcl_mjb_overruled_xcp") %></td>
|
|
</tr>
|
|
<tr class="scenerized1">
|
|
<td title="<%= L("lcl_mjb_scenario") %>"><%= L("lcl_mjb_scenario") %></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="mjbfreezed" title="<%= L("lcl_mjb_started") %>"><%= L("lcl_mjb_started") %></td>
|
|
</tr>
|
|
<tr class="mjbafbouw">
|
|
<td title="<%= L("lcl_mjb_phasingout") %>"><%= L("lcl_mjb_phasingout") %></td>
|
|
</tr>
|
|
<tr class="mjbverval">
|
|
<td title="<%= L("lcl_mjb_becancelled") %>"><%= L("lcl_mjb_becancelled") %></td>
|
|
</tr>
|
|
<tr class="mjbcloned">
|
|
<td title="<%= L("lcl_mjb_part_scenario") %>">
|
|
<span style="z-index:-1;"><%= L("lcl_mjb_part_scenario") %></span>
|
|
<span style="position:absolute; left:242px;"><%= I("fa-clone") %></span>
|
|
</td>
|
|
</tr>
|
|
<tr class="mjbcloned">
|
|
<td title="<%= L("lcl_mjb_part_scenario_m") %>">
|
|
<span style="z-index:-1;"><%= L("lcl_mjb_part_scenario_m") %></span>
|
|
<span style="position:absolute; left:242px;">*<%= I("fa-clone") %></span>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<%
|
|
}
|
|
%>
|
|
</body>
|
|
</html>
|