UWVA#22765: SLE: Verfijning sleutelbeheer.

svn path=/Website/trunk/; revision=11500
This commit is contained in:
Maykel Geerdink
2012-06-12 14:11:34 +00:00
parent 78a325753e
commit 81e3de4673
8 changed files with 105 additions and 37 deletions

View File

@@ -688,7 +688,7 @@ if (obj_key > 0)
<td> <%
generateFlexKenmerkCode({ urole: urole,
ins_key: copy? ins_copy_key : obj_key,
srtdeel_arr: [sort_key],
srtdeel_arr: sort_key > 0? [sort_key] : [],
reado: false
});
%> </td>

View File

@@ -210,7 +210,7 @@ else
generateFlexKenmerkCode({ urole: urole,
srtgroep_key: srtdeel.srtgroep_key,
bewerkniveau: "S",
srtdeel_arr: [srtdeel_key],
srtdeel_arr: srtdeel_key > 0? [srtdeel_key] : [],
reado: false
});

View File

@@ -43,9 +43,14 @@ function generateFlexKenmerkCode(params)
var lendout = params.lendout; // Uitlenen van object. Alleen kenmerken met volgnummer 900 of hoger tonen.
var reqId = params.reqId; // Perslid key (!search && multiMode)
var nodefaults = params.nodefaults; // Niet de default waarden invullen voor flexkenmerk maar leeg laten
var srtgroep_key = params.srtgroep_key || -1; // Soort groep key
var nameprefix = params.nameprefix? params.nameprefix : null;
var extraserie = params.extraserie? params.extraserie : null;
var autfunction = "";
if ((ins_key > 0 && ins.isSleCil(ins_key)) || ins.isSleCil(srtdeel_arr[0], "S"))
if ((srtgroep_key > 0 && (srtgroep_key == S("cil_ins_srt_groep_key") || srtgroep_key == S("sle_ins_srt_groep_key"))) ||
(ins_key > 0 && ins.isSleCil(ins_key)) ||
(srtdeel_arr.length > 0 && ins.isSleCil(srtdeel_arr[0], "S")))
{
if (urole == "fo")
autfunction = "WEB_SLEFOF";
@@ -156,18 +161,28 @@ function generateFlexKenmerkCode(params)
+ ", ins_kenmerk k"
+ ", ins_srtdeel s"
+ ", ins_srtgroep g"
+ " WHERE s.ins_srtdeel_key IN (" + (srtdeel_arr.length == 0? "-1" : srtdeel_arr.join(",")) + ")"
+ (bewerkniveau=='S'? " AND ins_kenmerk_bewerkniveau = 'S'":"")
+ " AND ((k.ins_srtinstallatie_key = s.ins_srtdeel_key"
+ " AND k.ins_kenmerk_niveau='S')"
+ " OR (k.ins_srtinstallatie_key = s.ins_srtgroep_key"
+ " AND k.ins_kenmerk_niveau='G')"
+ " OR(k.ins_srtinstallatie_key = g.ins_discipline_key"
+ " AND k.ins_kenmerk_niveau = 'D'))"
+ " AND k.ins_srtkenmerk_key = t.ins_srtkenmerk_key"
+ " WHERE k.ins_srtkenmerk_key = t.ins_srtkenmerk_key"
+ " AND g.ins_srtgroep_key = s.ins_srtgroep_key"
+ " AND k.ins_kenmerk_verwijder IS NULL"
+ " AND t.ins_srtkenmerk_verwijder IS NULL"
+ (srtgroep_key == -1 || srtdeel_arr.length > 0
? " AND s.ins_srtdeel_key IN (" + (srtdeel_arr.length == 0? "-1" : srtdeel_arr.join(",")) + ")"
: "")
+ (bewerkniveau == 'S'
? " AND ins_kenmerk_bewerkniveau = 'S'"
: "")
+ (srtgroep_key > 0
? " AND s.ins_srtgroep_key = " + srtgroep_key
: "")
+ " AND ("
+ (srtdeel_arr.length > 0
? "(k.ins_srtinstallatie_key = s.ins_srtdeel_key"
+ " AND k.ins_kenmerk_niveau = 'S') OR"
: "")
+ " (k.ins_srtinstallatie_key = s.ins_srtgroep_key"
+ " AND k.ins_kenmerk_niveau = 'G')"
+ " OR(k.ins_srtinstallatie_key = g.ins_discipline_key"
+ " AND k.ins_kenmerk_niveau = 'D'))"
+ (lendout // Bij uitlenen alleen kenmerken met volgnummer 900 en hoger.
? " AND k.ins_kenmerk_volgnummer >= 900"
: "")
@@ -184,7 +199,9 @@ function generateFlexKenmerkCode(params)
kenmerk_colspan: false,
fnIsReadonly: isReadonly,
hideVervallen: ins_key < 0,
parentKey: ins_key }
parentKey: ins_key,
nameprefix: nameprefix,
extraserie: extraserie }
);
}

View File

@@ -31,6 +31,7 @@ var DOCTYPE_Disable = true;
generateFlexKenmerkCode ({ urole: getQParamSafe("urole"),
ins_key: getQParamInt("ins_key", -1), // Deel key
srtdeel_arr: getQParamIntArray("srtdeel_str", []), // Objectsoort string
srtgroep_key: getQParamInt("srtgroep_key", -1), // Soort groep key
reado: getQParamInt("reado", 0) == 1, // Readonly
advanced: getQParamInt("advanced", 0) == 1, // Geavanceerd
lendout: getQParamInt("lendout", 0) == 1, // Uitlenen van object. Alleen kenmerken met volgnummer 900 of hoger tonen.

View File

@@ -14,9 +14,9 @@
*/ %>
<!--#include file="../Shared/common.inc"-->
<!--#include file="../Shared/iface.inc"-->
<!--#include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/plaatsselector.inc" -->
<!-- #include file="../ins/ins_flexkenmerk.inc" -->
@@ -35,8 +35,6 @@ var couple = getQParamInt("couple", 0) == 1;
if (couple)
sletype = "S";
var srtcode = "";
var srtomschr = "";
if (ins_srtdeel_key > 0) // bestaande sleutel/cilinder
@@ -54,9 +52,37 @@ if (ins_srtdeel_key > 0) // bestaande sleutel/cilinder
oRs = Oracle.Execute(sql);
srtcode = oRs("ins_srtdeel_code").value;
srtomschr = oRs("ins_srtdeel_omschrijving").value;
srtgroep_key = oRs("ins_srtgroep_key").value;
sletype = (srtgroep_key == S("sle_ins_srt_groep_key")?"S":"C");
var srtgroep_key = oRs("ins_srtgroep_key").value;
sletype = (srtgroep_key == S("sle_ins_srt_groep_key")? "S" : "C");
}
// Bepaal of er kenmerken zijn
if (couple)
var srtgroep = S("sle_ins_srt_groep_key") + ", " + S("cil_ins_srt_groep_key");
else
var srtgroep = (sletype == "S"? S("sle_ins_srt_groep_key") : S("cil_ins_srt_groep_key"));
var sql = "SELECT k.ins_kenmerk_key"
+ " FROM ins_srtkenmerk t"
+ ", ins_kenmerk k"
+ ", ins_srtdeel s"
+ ", ins_srtgroep g"
+ " WHERE s.ins_srtgroep_key IN (" + srtgroep + ")"
+ " AND ins_kenmerk_bewerkniveau = 'S'"
+ " AND ( ( k.ins_srtinstallatie_key = s.ins_srtdeel_key"
+ " AND k.ins_kenmerk_niveau = 'S')"
+ " OR ( k.ins_srtinstallatie_key = s.ins_srtgroep_key"
+ " AND k.ins_kenmerk_niveau = 'G')"
+ " OR ( k.ins_srtinstallatie_key = g.ins_discipline_key"
+ " AND k.ins_kenmerk_niveau = 'D')"
+ " )"
+ " AND k.ins_srtkenmerk_key = t.ins_srtkenmerk_key"
+ " AND g.ins_srtgroep_key = s.ins_srtgroep_key"
+ " AND k.ins_kenmerk_verwijder IS NULL"
+ " AND t.ins_srtkenmerk_verwijder IS NULL";
oRs = Oracle.Execute(sql);
var uitleen_flex_present = false;
if (!oRs.eof) uitleen_flex_present = true;
%>
<html>
@@ -95,7 +121,7 @@ if (ins_srtdeel_key > 0) // bestaande sleutel/cilinder
<input type="hidden" name="sletype" id="sletype" value="<%=sletype%>"
<% BLOCK_START("sleInfo", L("lcl_sle_general_info"));
RWFIELDTR("srtcode", "fldnum", L(sletype=="S"?"lcl_sle_code":"lcl_cil_cilinder_code"), srtcode,
RWFIELDTR("srtcode", "fldnum", L(sletype == "S"? "lcl_sle_code" : "lcl_cil_cilinder_code"), srtcode,
{ required: true,
maxlength: 10
});
@@ -150,17 +176,34 @@ if (ins_srtdeel_key > 0) // bestaande sleutel/cilinder
<%
BLOCK_END();
}
if (urole != "fo" || uitleen_flex_present) // FO ziet ze alleen als er uitleen flex zijn?
if (uitleen_flex_present) // Je ziet alleen flexkenmerken als ze er zijn
{
BLOCK_START("insFlex", L("lcl_flexible_properties"));
BLOCK_START("insFlex", L("lcl_flexible_properties") + " " + (sletype == "S"? L("lcl_sle_sleutel_set").toLowerCase() : L("lcl_cil_cilinder_set").toLowerCase()));
%> <tr>
<td> <%
generateFlexKenmerkCode({ urole: urole,
bewerkniveau: "S",
srtgroep_key: (sletype == "S"? S("cil_ins_srt_groep_key") : S("sle_ins_srt_groep_key")),
srtdeel_arr: [ins_srtdeel_key],
srtgroep_key: (sletype == "S"? S("sle_ins_srt_groep_key") : S("cil_ins_srt_groep_key")),
srtdeel_arr: ins_srtdeel_key > 0? [ins_srtdeel_key] : [],
reado: false
});
%> </td>
</tr> <%
BLOCK_END();
}
if (uitleen_flex_present && couple) // Bij aanmaken sleutel/cilinder sets ook de cilinder flexkenmerken tonen.
{
BLOCK_START("insFlex", L("lcl_flexible_properties") + " " + L("lcl_cil_cilinder_set").toLowerCase());
%> <tr>
<td> <%
generateFlexKenmerkCode({ urole: urole,
bewerkniveau: "S",
srtgroep_key: S("cil_ins_srt_groep_key"),
srtdeel_arr: [],
reado: false,
nameprefix: "kk",
extraserie: true
});
%> </td>
</tr> <%
BLOCK_END();

View File

@@ -29,7 +29,7 @@ function AddItem()
var room_key = $("#ruimtekey").val();
if (room_key <= 0)
{
alert(L("lcl_shared_choose_item_first"));
alert(L("lcl_sle_no_ruimte"));
return;
}

View File

@@ -36,7 +36,7 @@ var binding = 0;
var sleutel_binding = srtdeel_binding & (BIND_RUIMTE + BIND_TERREI);
var cilinder_binding = srtdeel_binding & (BIND_RUIMTE + BIND_TERREI);
function updateSrtKenmerkdeel(srtdeel_key, params)
function saveSrtKenmerkdeel(srtdeel_key, params)
{
params = params || [];
var currentKenmerkenSQL = "SELECT v.ins_kenmerk_key, v.ins_kenmerkdeel_waarde"
@@ -61,13 +61,13 @@ function updateSrtKenmerkdeel(srtdeel_key, params)
currentKenmerkenSQL: currentKenmerkenSQL,
allKenmerkenSQL: allKenmerkenSQL,
requestQF: Request.Form,
isNew: params.isnew,
flexPath: "INS/S",
//multiMode: params.multimode,
tracking: true,
module: "INS"
module: "INS",
nameprefix: params.couple? "kk" : null,
extraserie: params.couple? true : null
});
return flextrack;
return flextrack;
}
function doUpdateSrtDeel(ins_srtdeel_key, fields)
{
@@ -79,7 +79,7 @@ function doUpdateSrtDeel(ins_srtdeel_key, fields)
error = err.friendlyMsg;
else // de flex
{
updateSrtKenmerkdeel(ins_srtdeel_key);
saveSrtKenmerkdeel(ins_srtdeel_key);
}
return error;
@@ -100,7 +100,7 @@ function doInsertDeel(fields)
return {ins_deel_key: ins_deel_key, warning: error};
}
function doInsertSrtDeel(fields)
function doInsertSrtDeel(fields, params)
{
fields.push({ dbs: "ins_srtdeel_key", typ: "key", seq: "ins_s_ins_srtinst_keys" });
var regIns = buildInsert("ins_srtdeel", fields);
@@ -111,6 +111,10 @@ function doInsertSrtDeel(fields)
var error = "";
if (err.friendlyMsg)
error = err.friendlyMsg;
else // de flex
{
saveSrtKenmerkdeel(ins_srtdeel_key, params);
}
return {ins_srtdeel_key: ins_srtdeel_key, warning: error};
}
@@ -185,7 +189,7 @@ else
{ dbs: "ins_srtdeel_binding", typ: "key", val: cilinder_binding },
{ dbs: "ins_srtdeel_uitleenbaar", typ: "key", val: 1 },
{ dbs: "ins_srtdeel_module", typ: "varchar", val: "INS" }];
insertInfo = doInsertSrtDeel(fields);
insertInfo = doInsertSrtDeel(fields, {couple: true});
if (insertInfo.warning)
abort_with_warning(insertInfo.warning);

View File

@@ -185,6 +185,7 @@ function listKenmerk(sql, module, key, props)
var prs_key = props.prs_key || props.reqId; // Oude obsolete reqId nog even ondersteunen
var cont_key = props.cont_key;
var nameprefix = props.nameprefix || "k";
var extraserie = props.extraserie || false;
var niveau = props.niveau || "";
var requiredbyfield = props.requiredbyfield;
var serie = props.serie || 0;
@@ -1151,7 +1152,8 @@ if (anyDate && !kenmerk_search)
}
kenmerk_write('<tr><td><input type="hidden" id="k_all" name="k_all" value="' + (idCounter - 1) + '"></td></tr>');
var counterName = (extraserie? nameprefix + "_all" : "k_all");
kenmerk_write('<tr><td><input type="hidden" id="' + counterName + '" name="' + counterName + '" value="' + (idCounter - 1) + '"></td></tr>');
kenmerk_write('<tr><td><input type="hidden" id="k_flexsql" name="k_flexsql" value="' + (prssql? 1 : 0) + '"></td></tr>');
}
@@ -1361,8 +1363,9 @@ function _saveFlexKenmerken(parentKey, params) // TODO: support multiMode!
}
var trackarray = []; // eventuele tracking
if (params.requestQF("k_all").count > 0)
var kall = params.requestQF("k_all")(1); // bij bezoekers komt k_all meerdere keren voor maar wel altijd identiek
var counterName = (params.extraserie? nameprefix + "_all" : "k_all");
if (params.requestQF(counterName).count > 0)
var kall = params.requestQF(counterName)(1); // bij bezoekers komt counterName (k_all) meerdere keren voor maar wel altijd identiek
else
{ // JGL: komt normaal nooit voor, alleen als edit-scherm flexkenmerken niet goed heeft kunnen laden, bijv. AKZA#21569
// Normaal laten we zoiets gewoon gebeuren maar