DJIN#55139 D&O: Maat aanpassen in bestelopdracht (kenmerk van bestelregel)

svn path=/Website/trunk/; revision=41506
This commit is contained in:
Erik Groener
2019-03-12 12:21:38 +00:00
parent 7833264ca7
commit d1245136fb
4 changed files with 79 additions and 22 deletions

View File

@@ -30,7 +30,12 @@
var prs_key = getQParamInt('prs_key',-1);
var urole = getQParamSafe("urole");
var PRSreadlevel = getQParamInt('PRSreadlevel',-1);
if (bestel_item_key == -1)
{
var km_key_arr = getQParamIntArray("km_key", []);
var km_val_arr = getQParamArray("km_val", []);
}
var autfunction = {fo: 'WEB_BESFOF', bo: 'WEB_BESBOF'}[urole] || 'WEB_BESUSE';
authparams = user.checkAutorisation(autfunction, true, dis_key);
@@ -223,6 +228,26 @@ function changeName(prs_key) {
<tr><td><table width=100% id="theTable">
<%
var sql_km_key = "(SELECT w.bes_kenmerkbesteli_waarde"
+ " FROM bes_kenmerkbesteli w"
+ " WHERE w.bes_bestelling_item_key = " + bestel_item_key
+ " AND w.bes_kenmerk_key = k.bes_kenmerk_key"
+ ")";
var sql_km_new = "";
if (bestel_item_key == -1 && km_key_arr.length > 0)
{
sql_km_new = "DECODE(k.bes_kenmerk_key";
// de waarden die al ingevuld zijn.
for (k=0; k<km_key_arr.length; k++)
{
sql_km_new += "," + km_key_arr[k] + "," + safe.quoted_sql(km_val_arr[k]);
}
sql_km_new += "," + lcl.xsql("k.bes_kenmerk_default", "k.bes_kenmerk_key")
+ ")";
}
sql = "SELECT k.bes_kenmerk_key kenmerk_key, "
+ lcl.xsql('sk.bes_srtkenmerk_omschrijving', 'sk.bes_srtkenmerk_key') +" kenmerk_omschrijving, "
+ " sk.bes_srtkenmerk_kenmerktype kenmerk_kenmerktype, "
@@ -233,8 +258,11 @@ function changeName(prs_key) {
+ " sk.bes_srtkenmerk_nmax kenmerk_nmax, "
+ " sk.bes_srtkenmerk_systeem kenmerk_systeem, "
+ ( bestel_item_key > -1
? " w.bes_kenmerkbesteli_waarde"
: lcl.xsql('k.bes_kenmerk_default', 'k.bes_kenmerk_key')
? sql_km_key
: ( sql_km_new == ""
? lcl.xsql("k.bes_kenmerk_default", "k.bes_kenmerk_key")
: sql_km_new
)
) + " kenmerk_waarde, "
+ " k.bes_kenmerk_volgnummer kenmerk_volgnr, "
+ lcl.xsql('sk.bes_srtkenmerk_dimensie', 'sk.bes_srtkenmerk_key') +" kenmerk_dimensie, "
@@ -248,7 +276,6 @@ function changeName(prs_key) {
+ " k.bes_kenmerk_regexp kenmerk_regexp"
+ " FROM bes_srtkenmerk sk"
+ " , bes_kenmerk k"
+ (bestel_item_key > -1 ? " , bes_kenmerkbesteli w" : "")
+ " WHERE (k.bes_srtinstallatie_key = " + dis_key + " AND k.bes_kenmerk_niveau LIKE 'D'"
+ " OR k.bes_srtinstallatie_key = " + srtgroup_key + " AND k.bes_kenmerk_niveau LIKE 'G'"
+ " OR k.bes_srtinstallatie_key = " + srtdeel_key + " AND k.bes_kenmerk_niveau LIKE 'S')"
@@ -256,7 +283,6 @@ function changeName(prs_key) {
+ " AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key"
+ " AND sk.bes_srtkenmerk_verwijder IS NULL"
+ " AND k.bes_kenmerk_type = 'I'"
+ (bestel_item_key > -1 ? " AND k.bes_kenmerk_key = w.bes_kenmerk_key AND w.bes_bestelling_item_key = "+bestel_item_key : "")
+ " ORDER BY k.bes_kenmerk_volgnummer, UPPER("+lcl.xsql('sk.bes_srtkenmerk_omschrijving', 'sk.bes_srtkenmerk_key')+")";
var trn = 0;

View File

@@ -48,10 +48,25 @@ if (bresult.canWrite("WEB_BESBOF"))
{
for (i=0; i<kenmerk_key_array.length; i++)
{
var sql = "UPDATE bes_kenmerkbesteli"
+ " SET bes_kenmerkbesteli_waarde = " + safe.quoted_sql(kenmerk_val_array[i])
+ " WHERE bes_bestelling_item_key = " + bes_item_key
+ " AND bes_kenmerk_key = " + kenmerk_key_array[i];
// UPSERT
var sql = "MERGE INTO bes_kenmerkbesteli t"
+ " USING (SELECT " + bes_item_key + " item_key"
+ " , " + kenmerk_key_array[i] + " kenmerk_key"
+ " , " + safe.quoted_sql(kenmerk_val_array[i]) + " kenmerk_waarde"
+ " FROM DUAL) s"
+ " ON ( t.bes_bestelling_item_key = s.item_key"
+ " AND t.bes_kenmerk_key = s.kenmerk_key"
+ ")"
+ " WHEN MATCHED THEN"
+ " UPDATE SET t.bes_kenmerkbesteli_waarde = s.kenmerk_waarde"
+ " WHEN NOT MATCHED THEN"
+ " INSERT ( bes_bestelling_item_key"
+ ", bes_kenmerk_key"
+ ", bes_kenmerkbesteli_waarde)"
+ " VALUES ( s.item_key"
+ ", s.kenmerk_key"
+ ", s.kenmerk_waarde)";
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
{

View File

@@ -250,7 +250,7 @@ function generateDetails(bes_key, params)
opmerking: "<%=safe.jsstring(oRs("bes_srtdeel_opmerking").value || "")%>",
urole: "<%=safe.jsstring(params.urole)%>",
disc_key: <%=oRs("ins_discipline_key").Value%>,
srtgroep_key: <%=oRs("bes_srtgroep_key").Value%>,
srtgroup_key: <%=oRs("bes_srtgroep_key").Value%>,
auth: { canWriteBESBOF: <%=(bresult.canWrite("WEB_BESBOF")?1:0)%> }
};

View File

@@ -281,6 +281,7 @@ var new_item_key = 0;
// levert een verwijzing naar de aantal_cell op.
function CreateRow(bes_item_info, aantal, received, editable, objFlex, urole)
{
var is_new_item = false;
var table = $("#sel_items>tbody")[0];
// insert data rows
@@ -292,14 +293,10 @@ function CreateRow(bes_item_info, aantal, received, editable, objFlex, urole)
else
{
tr.title = bes_item_info.srtgroup_text;
tr.setAttribute("urole", bes_item_info.urole);
tr.setAttribute("disc_key", bes_item_info.disc_key);
tr.setAttribute("srtgroep_key", bes_item_info.srtgroep_key);
tr.setAttribute("srtdeel_key", bes_item_info.srtdeel_key);
tr.setAttribute("item_key", bes_item_info.item_key);
}
if (!bes_item_info.item_key || String(bes_item_info.item_key).match(/^new/))
{
is_new_item = true;
new_item_key ++; // alstie vooralsnog maar uniek is.
// Maak een kloon van bes_item_info omdat we het (compleet) gaan opslaan in de <tr>
// JScript slaat alleen een referentie naar het object op en elke regel zou anders
@@ -312,6 +309,15 @@ function CreateRow(bes_item_info, aantal, received, editable, objFlex, urole)
bes_item_info = binfo;
bes_item_info.item_key = "new" + new_item_key;
}
if (!bes_item_info.isFreeArticle)
{
tr.setAttribute("disc_key", bes_item_info.disc_key);
tr.setAttribute("srtdeel_key", bes_item_info.srtdeel_key);
tr.setAttribute("srtgroup_key", bes_item_info.srtgroup_key);
tr.setAttribute("new_id", bes_item_info.item_key);
tr.setAttribute("item_key", (is_new_item ? -1 : bes_item_info.item_key));
tr.setAttribute("urole", (is_new_item ? urole : bes_item_info.urole));
}
tr.bes_item_info = bes_item_info;
if (editable)
@@ -331,7 +337,7 @@ function CreateRow(bes_item_info, aantal, received, editable, objFlex, urole)
? "<i class='fa fa-fw fa-trash-o fa-lg' onclick='cancel_item(this)' style='cursor:pointer'></i><BR>"
: ""
)
+ ( editable && objFlex[0].length && bes_item_info.auth.canWriteBESBOF==1 // minimaal 1 kenmerk aanwezig en BESBOF-rechten op catalogus
+ ( editable && !is_new_item && objFlex[0].length && bes_item_info.auth.canWriteBESBOF==1 // minimaal 1 kenmerk aanwezig en BESBOF-rechten op catalogus
? "<i class='fa fa-fw fa-edit' title='"+ L("lcl_change") +"' onclick='edit_kenmerk_item(this)' style='cursor:pointer'></i><BR>"
: ""
)
@@ -379,10 +385,12 @@ function CreateRow(bes_item_info, aantal, received, editable, objFlex, urole)
var flexkeys = [];
var flexdeels = [];
var flexitems = [];
var flexvals = [];
var cell_arr = [];
for (i=0; i<objFlex[0].length; i++) {
cell_arr.push(objFlex[2][i] + ": " + objFlex[3][i]);
flexkeys.push(objFlex[0][i]);
flexvals.push(escape(objFlex[1][i]));
tr.flexvals.push(escape(objFlex[1][i])); // escape om komma's in teksten te ondersteunen
flexdeels.push(bes_item_info.srtdeel_key);
flexitems.push(bes_item_info.item_key);
@@ -397,14 +405,17 @@ function CreateRow(bes_item_info, aantal, received, editable, objFlex, urole)
$("#besitemflex").append(newDiv);
cell.appendChild(newDiv);
cell.innerHTML += "<input type='hidden' name='flexkeys" + id_key + "' id='flexkeys" + id_key + "' value='" + flexkeys.join(",") + "'>";
cell.innerHTML += "<input type='hidden' name='flexkeys" + id_key + "' id='flexkeys" + id_key + "' value='" + flexkeys.join(",") + "'>";
cell.innerHTML += "<input type='hidden' name='flexdeels" + id_key + "' id='flexdeels" + id_key + "' value='" + flexdeels.join(",") + "'>";
cell.innerHTML += "<input type='hidden' name='flexitems" + id_key + "' id='flexitems" + id_key + "' value='" + flexitems.join(",") + "'>";
cell.innerHTML += "<input type='hidden' name='flexvals" + id_key + "' id='flexvals" + id_key + "' value='" + flexvals.join(",") + "'>";
}
else {
cell.innerHTML += "<input type='hidden' name='flexkeys" + id_key + "' id='flexkeys" + id_key + "' value='-1'>";
else
{
cell.innerHTML += "<input type='hidden' name='flexkeys" + id_key + "' id='flexkeys" + id_key + "' value='-1'>";
cell.innerHTML += "<input type='hidden' name='flexdeels" + id_key + "' id='flexdeels" + id_key + "' value=''>";
cell.innerHTML += "<input type='hidden' name='flexitems" + id_key + "' id='flexitems" + id_key + "' value=''>";
cell.innerHTML += "<input type='hidden' name='flexvals" + id_key + "' id='flexvals" + id_key + "' value=''>";
}
cell.innerHTML += "<div id='div" + id_key + "' style='display: \"none\"'></div>"+ "</nobr>";
@@ -521,14 +532,19 @@ function edit_kenmerk_item(een_cell)
var prs_key = document.u2.person.value;
var srtdeel_key = $tr.attr("srtdeel_key");
var item_id = $tr.attr("new_id");
v_url = "../bes/bes_edit_item_kenmerk.asp"
+ "?urole=" + $tr.attr("urole")
+ "&srtdeel_key=" + $tr.attr("srtdeel_key")
+ "&srtgroup_key=" + $tr.attr("srtgroep_key")
+ "&srtgroup_key=" + $tr.attr("srtgroup_key")
+ "&dis_key=" + $tr.attr("disc_key")
+ "&prs_key=" + prs_key
+ "&item_key=" + $tr.attr("item_key");
FcltMgr.openModalDetail(v_url, L("lcl_kenmerk_frame"));
+ "&item_key=" + $tr.attr("item_key")
+ "&km_key=" + $("#flexkeys"+srtdeel_key+"_"+item_id).val()
+ "&km_val=" + $("#flexvals"+srtdeel_key+"_"+item_id).val();
FcltMgr.openModalDetail(v_url, L("lcl_kenmerk_frame"), {callback: FcltMgr.reload});
}
function checkInput()