FSN#36298: 1. Scenario’s (per complex moeten verschillende scenario’s gemaakt moeten kunnen.

svn path=/Website/trunk/; revision=34652
This commit is contained in:
Maykel Geerdink
2017-07-19 05:32:03 +00:00
parent 8d95282e2e
commit c2ed172ce5
5 changed files with 132 additions and 49 deletions

View File

@@ -65,32 +65,36 @@ FCLTHeader.Requires({ plugins: ["jQuery"],
<script>
var hassenarios = <%=hassenarios? 1 : 0%> == 1;
function mjb_newscen()
{
$("#mjbexistscen").hide();
$("#mjbnewscen").show();
FcltMgr.resized(window);
$("#btn_new_scen").hide(); // Button "Nieuw scenario" verbergen.
$("#scen_key").val(-1); // Nieuw scenario => scen_key waarde -1 geven.
$("#scenoms").addClass("required");
}
function afsluiten(jdata)
{ // Sluit onszelf.
FcltMgr.closeDetail(window, { warning: jdata.warning, success: true });
}
var newinvoer = false;
function mjb_inclscen()
{
// Standaard checks op verplichte velden, datum formaat, numeriek en float formaat, currency formaat.
if (!validateForm("u2"))
return false;
if ($("#scenario").val() > 0 || newinvoer)
{
// Standaard checks op verplichte velden, datum formaat, numeriek en float formaat, currency formaat.
if (!validateForm("u2"))
return false;
$.post($("form[name=u2]")[0].action,
$("[name=u2]").serialize(),
FcltCallbackAndThenAlways(afsluiten),
"json");
return true; // disable button
$.post($("form[name=u2]")[0].action,
$("[name=u2]").serialize(),
FcltCallbackAndThenAlways(afsluiten),
"json");
return true; // disable button
}
else
{ // Nieuw scenario. Invoervelden voor nieuw scenario zichtbaar maken en selectbox verbergen.
$("#mjbexistscen").hide();
$("#mjbnewscen").show();
FcltMgr.resized(window);
$("#scen_key").val(-1); // Nieuw scenario => scen_key waarde -1 geven.
$("#scenoms").addClass("required");
newinvoer = true;
return false; // Button niet disablen.
}
}
function mld_cancel()
@@ -125,7 +129,7 @@ FCLTHeader.Requires({ plugins: ["jQuery"],
sql,
{ label: L("lcl_mjb_scenarios"),
initKey: -1,
emptyOption: "",
emptyOption: L("lcl_mjb_new_scenario"),
onChange: "onChangeScenario()",
selectjustone: true
});
@@ -147,9 +151,7 @@ FCLTHeader.Requires({ plugins: ["jQuery"],
</div>
<%
var buttons = [];
if (hassenarios)
buttons.push({title: L("lcl_mjb_new_scenario"), action:"mjb_newscen()", singlepress: true, id: "btn_new_scen"}); // Nieuw scenario.
buttons.push({title: L("lcl_mjb_incl_scen"), action:"mjb_inclscen()", singlepress: true, id: "btn_submit"}); // Opnemen in scenario.
buttons.push({title: L("lcl_ok"), action:"mjb_inclscen()", singlepress: true, id: "btn_submit"}); // Opnemen in scenario.
buttons.push({title: L("lcl_cancel"), action:"mld_cancel()"});
CreateButtons(buttons);

View File

@@ -8,7 +8,7 @@
Parameters:
ins_keys Array van object keys.
srtcont_keys Array van soort controlesopdracht keys
scenario Scenario key waarin de periodieke taken in opgenomen dienen te worden.
scen_key Scenario key waarin de periodieke taken in opgenomen dienen te worden.
Context:
Note:
@@ -55,7 +55,6 @@ for (var i = 0; i < ins_key_arr.length; i++)
notexist = oRs.eof;
}
var this_ins = ins.func_enabled_deel(ins_key_arr[i], {srtcont_key: srtcont_key_arr[i]});
if (notexist && this_ins.canChangeXcp) // Mag ik nieuwe exceptions (xcp) waarden van de taak voor het nieuwe scenario wijzigen?
{
@@ -140,6 +139,39 @@ for (var i = 0; i < ingesloten.length; i++)
result.warning = err.friendlyMsg;
result.success = false;
}
sql = "INSERT INTO ins_deelsrtcontrole(ins_deelsrtcontrole_key"
+ " , ins_deel_key"
+ " , ins_srtcontrole_key"
+ " , ins_deelsrtcontrole_plandatum"
+ " , ins_deelsrtcontrole_status"
+ " , prs_perslid_key"
+ " , ins_scenario_key)"
+ " SELECT ins_s_ins_deelsrtcontrole_key.NEXTVAL"
+ " , xcp.ins_deel_key"
+ " , xcp.ins_srtcontrole_key"
+ " , (SELECT dsc.ins_deelsrtcontrole_plandatum"
+ " FROM ins_deelsrtcontrole dsc"
+ " WHERE dsc.ins_deel_key = xcp.ins_deel_key"
+ " AND dsc.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
+ " AND dsc.ins_scenario_key IS NULL"
+ " AND dsc.ins_deelsrtcontrole_status < 5) plandatum"
+ " , 0"
+ " , " + user_key
+ " , " + scen_key
+ " FROM ins_v_defined_inspect_xcp xcp"
+ " WHERE xcp.ins_srtcontrole_periode > 0"
+ " AND xcp.ins_deel_key = " + ingesloten[i].ins_key
+ " AND xcp.ins_srtcontrole_key = " + ingesloten[i].srtcont_key
+ " AND xcp.ins_scenario_key IS NULL"
+ " AND xcp.ctr_ismjob = 1"
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
{
result.warning = err.friendlyMsg;
result.success = false;
}
}
Response.Write(JSON.stringify(result));

View File

@@ -223,6 +223,7 @@ var authparamsCTRUSE = user.checkAutorisation("WEB_CTRUSE");
+ " FROM ins_srtcontrole isc"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE isc.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
+ " AND xcp.ins_scenario_key IS NULL"
+ " AND COALESCE (xcp.ins_srtcontroledl_xcp_groep, isc.ins_srtcontrole_groep) IS NOT NULL"
+ " ORDER BY UPPER (COALESCE(xcp.ins_srtcontroledl_xcp_groep, isc.ins_srtcontrole_groep))";
FCLTselector("groep",
@@ -265,6 +266,7 @@ var authparamsCTRUSE = user.checkAutorisation("WEB_CTRUSE");
+ " FROM ins_srtcontrole isc"
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE isc.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
+ " AND xcp.ins_scenario_key IS NULL"
+ " AND COALESCE (xcp.ins_srtcontroledl_xcp_periode, isc.ins_srtcontrole_periode) > 0"
+ " ORDER BY 1";
FCLTselector("frequentie", // Frequentie

View File

@@ -137,7 +137,7 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
FcltMgr.openModalDetail(url, { titel: L("lcl_ins_change_xcp") + " " + ttl, callback: <%=bld_key > 0? "FcltMgr.reload ": "null"%> });
}
function moveplan(evt, ins_key, srtcont_key, jaar)
function moveplan(evt, ins_key, srtcont_key, scen_key, jaar)
{
FcltMgr.stopPropagation(evt);
if (!jaar)
@@ -146,6 +146,7 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
var data = { savemode: "P", // plan-mode
ins_keys: ins_key,
srtcont_key_arr: srtcont_key,
scen_key_arr: scen_key,
plandatum: new Date(jaar, 11, 31).getTime(),
mjob: 1
};
@@ -167,7 +168,7 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
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, $th.text());
moveplan(null, insData.insKey, insData.insSrtControleKey, insData.insScenKey, $th.text());
}
});
@@ -225,11 +226,12 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
var mjbDeelKeyArray = [];
var mjbSrtContrKeyArray = [];
var mjbScenKeyArray = [];
function dragDropCallback(json, textStatus, tweede)
{
for (var i = 0; i < mjbDeelKeyArray.length; i++)
{
moveplan(null, mjbDeelKeyArray[i], mjbSrtContrKeyArray[i], json.year)
moveplan(null, mjbDeelKeyArray[i], mjbSrtContrKeyArray[i], mjbScenKeyArray[i], json.year)
}
FcltCallbackRefresh(json, textStatus);
};
@@ -240,22 +242,33 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
for (var i = 0; i < rowArray.length; i++)
{
rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')');
// Scenario's kunnen niet gestart worden. Hier de scenario's er al uit filteren.
if (!rowdata.insScenKey || rowdata.insScenKey < 0)
{ // Het is geen scenario. De periodieke taak kan in tijd verschoven worden. De periodieke taak aan het array toevoegen.
mjbDeelKeyArray.push(rowdata.insKey);
mjbSrtContrKeyArray.push(rowdata.insSrtControleKey);
}
mjbDeelKeyArray.push(rowdata.insKey);
mjbSrtContrKeyArray.push(rowdata.insSrtControleKey);
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 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") + ')');
@@ -264,6 +277,13 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
{ // 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++;
}
}
var subject = L("lcl_mjb_incl_scen");
@@ -358,7 +378,7 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
+ " , (SELECT COUNT(isc.ins_scenario_omschrijving)"
+ " FROM ins_srtcontroledl_xcp xcp"
+ " , ins_scenario isc"
+ " WHERE xcp.ins_scenario_key = isc.ins_scenario_key "
+ " WHERE xcp.ins_scenario_key = isc.ins_scenario_key"
+ " AND xcp.ins_srtcontrole_key = el.ins_srtcontrole_key"
+ " AND xcp.ins_deel_key = el.ins_deel_key"
+ " AND xcp.ins_scenario_key IS NOT NULL) scenario_aantal"
@@ -410,16 +430,23 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
+ " LEFT OUTER JOIN" // uitgevoerde taken
+ " (SELECT dsc.ins_srtcontrole_key"
+ " , dsc.ins_deel_key"
+ " , dsc.ins_scenario_key"
+ " , 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 IS NULL AND dsc.ins_scenario_key IS NULL)"
+ " OR (dsc1.ins_scenario_key = dsc.ins_scenario_key AND dsc.ins_scenario_key IS NOT NULL))"
+ " AND dsc1.ins_deelsrtcontrole_status < 5)) plandatum"
+ " , MAX(dsc.ins_deelsrtcontrole_datum) laatste"
+ " FROM ins_deelsrtcontrole dsc"
+ " GROUP BY dsc.ins_srtcontrole_key, dsc.ins_deel_key) c"
+ " GROUP BY dsc.ins_srtcontrole_key"
+ " , dsc.ins_deel_key"
+ " , dsc.ins_scenario_key) c"
+ " ON e.ins_deel_key = c.ins_deel_key"
+ " AND e.ins_srtcontrole_key = c.ins_srtcontrole_key"
+ " AND ((c.ins_scenario_key IS NULL AND e.ins_scenario_key IS NULL)"
+ " OR (c.ins_scenario_key = e.ins_scenario_key AND e.ins_scenario_key IS NOT NULL))"
var ins_xcp_active_cost = S("ins_xcp_active_cost");
var costarray = [];
@@ -654,7 +681,9 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
+ " 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)) IS NOT NULL"
+ " AND idsc.ins_deelsrtcontrole_status IN (0)"
+ " AND ((idsc.ins_scenario_key IS NULL AND cv.ins_scenario_key IS NULL)"
+ " OR (idsc.ins_scenario_key = cv.ins_scenario_key AND cv.ins_scenario_key IS NOT NULL))) IS NOT NULL"
+ " THEN 1"
+ " ELSE 0"
+ " END isPlanned"
@@ -663,14 +692,18 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
+ " 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)) IS NOT NULL"
+ " AND idsc.ins_deelsrtcontrole_status IN (2, 5)"
+ " AND ((idsc.ins_scenario_key IS NULL AND cv.ins_scenario_key IS NULL)"
+ " OR (idsc.ins_scenario_key = cv.ins_scenario_key AND cv.ins_scenario_key IS NOT NULL))) 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_srtcontrole_key = cv.ins_srtcontrole_key"
+ " AND ((idsc2.ins_scenario_key IS NULL AND cv.ins_scenario_key IS NULL)"
+ " OR (idsc2.ins_scenario_key = cv.ins_scenario_key AND cv.ins_scenario_key IS NOT NULL)))"
+ " , -1) ins_deelsrtcontrole_key"
+ " , cv.bedrag AS orgbedrag"
// Als er een andere inspectie is met een lagere ins_srtcontrole_level
@@ -710,6 +743,8 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
+ " , vervangingsjaar"
+ " , SUM(bedrag) bedrag"
+ " , SUM(orgbedrag) orgbedrag"
+ " , hasscenario"
+ " , ins_scenario_key"
+ " FROM (" + sql_cost + ")"
+ " GROUP BY " + fields.join(", ")
+ (groupby > 1
@@ -717,7 +752,9 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
: "" )
+ " , keyColumn"
+ (keyColumn == 'dg.ins_deel_key'?" , ins_deel_opmerking":"")
+ " , vervangingsjaar";
+ " , vervangingsjaar"
+ " , hasscenario"
+ " , ins_scenario_key";
}
var sql = "SELECT *"
@@ -799,9 +836,10 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
// 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,
isScenario: oRs("ins_scenario_key").Value? true : null});
{ 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? oRs("ins_scenario_key").Value : -1
});
ePlan = this_ins.canInspPlan;
eStart = this_ins.canInspStart;
eClose = this_ins.canInspClose;
@@ -930,10 +968,9 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
doneclik[deel_key + ":" + srtcont_key] = 1;
var scen_key = oRs("ins_scenario_key").Value? oRs("ins_scenario_key").Value : -1;
// 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 && scen_key == -1? "details draggable" : "") + "'" : "") + ">{0}</span>".format(safe.curr(v, true))
return "<span" + (hasWriteCTRUSE? " class='" + (oRs("canBePlanned").Value == 1? "details draggable" : "") + "'" : "") + ">{0}</span>".format(safe.curr(v, true))
/* experimenteel inline schuiven
var fnprev = "moveplan(event, {0}, {1}, {2}-1)".format(deel_key, srtcont_key, jaar);
@@ -979,6 +1016,8 @@ var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrol
}
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()' });

View File

@@ -105,7 +105,8 @@ if (srtcontrole_key < 0)
+ " WHERE idsc1.ins_deelsrtcontrole_key = (SELECT MAX(idsc2.ins_deelsrtcontrole_key)"
+ " FROM ins_deelsrtcontrole idsc2"
+ " WHERE idsc2.ins_deel_key = id.ins_deel_key"
+ " AND idsc2.ins_srtcontrole_key = isc.ins_srtcontrole_key)) < 6"
+ " AND idsc2.ins_srtcontrole_key = isc.ins_srtcontrole_key"
+ " AND idsc2.ins_scenario_key IS NULL)) < 6"
+ " )"
: "")
+ " GROUP BY id.ins_deel_omschrijving";
@@ -205,7 +206,8 @@ if (srtcontrole_key < 0 || defaultmode_key > 0)
+ " , xcp.ins_srtcontroledl_xcp_eind"
+ " FROM ins_srtcontroledl_xcp xcp"
+ " WHERE xcp.ins_deel_key = " + ins_key
+ " )xcp"
+ " AND xcp.ins_scenario_key IS NULL"
+ " ) xcp"
+ " ON i.ins_deel_key = xcp.ins_deel_key"
+ " AND i.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
+ " WHERE COALESCE (ins_srtcontroledl_xcp_eenheid, ins_srtcontrole_eenheid) <> 0"
@@ -216,7 +218,8 @@ if (srtcontrole_key < 0 || defaultmode_key > 0)
+ " 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)) != 6)"
+ " AND idsc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
+ " AND idsc2.ins_scenario_key IS NULL)) != 6)"
// Alleen de disciplines tonen waar de user rechten op heb.
+ " AND i.ctr_discipline_key IN (SELECT g.ins_discipline_key"
+ " FROM fac_v_webgebruiker g"
@@ -301,6 +304,7 @@ else
+ " AND isc.ctr_discipline_key = cdp.ctr_ins_discipline_key"
+ " AND idsc.ins_deel_key(+) = " + ins_key // PF: lijkt mij alleen indien deelsrtcont_key == -1
+ " AND isc.ins_srtcontrole_key = " + srtcontrole_key // PF: lijkt mij alleen indien deelsrtcont_key == -1
+ " AND idsc.ins_scenario_key(+) IS NULL"
+ (deelsrtcont_key > 0
? " AND idsc.ins_deelsrtcontrole_key = " + deelsrtcont_key
: "")
@@ -362,6 +366,8 @@ else
+ " AND idsc.ins_deel_key = xcp.ins_deel_key(+)"
+ " AND idsc.ins_deel_key IN (" + ins_key + ")"
+ " AND isc.ins_srtcontrole_key = " + srtcontrole_key
+ " AND idsc.ins_scenario_key IS NULL"
+ " AND xcp.ins_scenario_key(+) IS NULL"
+ " AND COALESCE(isc.ins_srtcontrole_periode, xcp.ins_srtcontroledl_xcp_periode) > 0";
var oRs = Oracle.Execute(sql);
while (!oRs.eof)
@@ -520,6 +526,7 @@ else
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_deel_key = " + ins_key
+ " AND idsc.ins_deelsrtcontrole_status = 6"
+ " AND idsc.ins_scenario_key IS NULL"
+ " ORDER BY ins_deelsrtcontrole_datum DESC";
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
@@ -532,7 +539,8 @@ else
var sql = "SELECT idsc.ins_deelsrtcontrole_plandatum"
+ " FROM ins_deelsrtcontrole idsc"
+ " WHERE idsc.ins_deel_key = " + ins_key
+ " AND idsc.ins_deelsrtcontrole_status != 6";
+ " AND idsc.ins_deelsrtcontrole_status != 6"
+ " AND idsc.ins_scenario_key IS NULL";
var oRs = Oracle.Execute(sql);
if (!oRs.eof && oRs("ins_deelsrtcontrole_plandatum").Value != null)