NYBU#55434: Flexkenmerken per artikelregel.
svn path=/Website/trunk/; revision=41575
This commit is contained in:
@@ -40,9 +40,11 @@ i.plancad {
|
||||
}
|
||||
|
||||
.tab_cat_sched.compressed tr.catline.notexisting { display: none; }
|
||||
.tab_cat_sched.compressed tr.catflexline.notexisting { display: none; }
|
||||
|
||||
.planbord.compressed tr.res_nofit { display: none; }
|
||||
.tab_cat_sched tr.catline.existing { background-color: #ddd; }
|
||||
.tab_cat_sched tr.catflexline.existing { background-color: #ddd; }
|
||||
|
||||
table.planbord tr label { font-weight: normal;overflow: hidden; white-space: nowrap; }
|
||||
table.planbord td { vertical-align: inherit; } /* Herstel de generieke 'top' uit default.csx */
|
||||
|
||||
@@ -99,12 +99,24 @@ res = {
|
||||
function (artikel_key, actie, params)
|
||||
{
|
||||
sql = "SELECT ra.res_artikel_omschrijving"
|
||||
+ " , ra.res_discipline_key"
|
||||
+ " FROM res_artikel ra"
|
||||
+ " WHERE ra.res_artikel_key = " + artikel_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var art_oms = oRs("res_artikel_omschrijving").Value;
|
||||
var discipline_key = oRs("res_discipline_key").Value;
|
||||
oRs.Close();
|
||||
var track = "";
|
||||
|
||||
var sql = "SELECT COALESCE(ks.prs_kostensoort_btw, 0) inclBTW"
|
||||
+ " FROM prs_kostensoort ks"
|
||||
+ " , res_discipline rd"
|
||||
+ " WHERE ks.prs_kostensoort_key = rd.prs_kostensoort_key"
|
||||
+ " AND rd.ins_discipline_key = " + discipline_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var inclBTW = (!oRs.eof? oRs("inclBTW").Value : 0);
|
||||
oRs.Close();
|
||||
|
||||
switch (actie)
|
||||
{
|
||||
case "delete": track = L("lcl_res_artdelete") + ": " + art_oms;
|
||||
@@ -113,13 +125,16 @@ res = {
|
||||
break;
|
||||
case "update": track = L("lcl_res_artupdate") + ": " + art_oms
|
||||
+ (params.old_number != params.new_number
|
||||
? "\n" + buildTrackText("number", params.old_number, params.new_number, { nodiff: true })
|
||||
? "\n" + L("lcl_count") + ": "
|
||||
+ buildTrackText("number", params.old_number, params.new_number, { nodiff: true })
|
||||
: "")
|
||||
+ (params.old_price != params.new_price
|
||||
? "\n" + buildTrackText("float", params.old_price, params.new_price, { nodiff: true })
|
||||
? "\n" + L("lcl_r_price5") + " " + (inclBTW? L("lcl_shared_inclBTW") : L("lcl_shared_exclBTW")) + ": "
|
||||
+ buildTrackText("float", safe.curr(params.old_price), safe.curr(params.new_price), { nodiff: true })
|
||||
: "")
|
||||
+ (params.old_date.getTime() != params.new_date.getTime()
|
||||
? "\n" + buildTrackText("datetime", params.old_date, params.new_date, { nodiff: true })
|
||||
? "\n" + L("lcl_time") + ": "
|
||||
+ buildTrackText("datetime", params.old_date, params.new_date, { nodiff: true })
|
||||
: "");
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -215,7 +215,7 @@ function make_cat(discipline_key, rsv_ruimte_key, existing_only, res_artikel_key
|
||||
var begintijd = oRs("res_artikel_begintijd").Value;
|
||||
var eindtijd = oRs("res_artikel_eindtijd").Value;
|
||||
var art_key = oRs("res_artikel_key").Value;
|
||||
var rsv_art_key = oRs("res_rsv_artikel_key").Value || 0;
|
||||
var rsv_art_key = oRs("res_rsv_artikel_key").Value || -1;
|
||||
var volgnr = oRs("volgnr").Value;
|
||||
var art_str = art_key + "_" + rsv_art_key;
|
||||
|
||||
@@ -284,7 +284,8 @@ function make_cat(discipline_key, rsv_ruimte_key, existing_only, res_artikel_key
|
||||
minimum="<%=minimum%>"
|
||||
size="4"
|
||||
<%=(cstatus_reado? "readonly style='background-color: #dddddd;' " : "")%>
|
||||
onblur='showTotPriceArt_ex(this);'>
|
||||
onblur='showTotPriceArt_ex(this);'
|
||||
onChange="checkRequiredGroup('10S<%=art_key%>', { emptyvalue: 0 });">
|
||||
<% if (existing && aantal == 0)
|
||||
{ /* Cursor in het aantal veld van meegegeven artikel (res_artikel_key) */
|
||||
%> <script type="text/javascript">
|
||||
@@ -339,28 +340,31 @@ function make_cat(discipline_key, rsv_ruimte_key, existing_only, res_artikel_key
|
||||
</td>
|
||||
<%
|
||||
}
|
||||
|
||||
//var ptmpfolder;
|
||||
//if (S("res_max_flex_on_line") > 0)
|
||||
//{
|
||||
// ptmpfolder = generateFlexKenmerkCodeArt ({ rsv_artikel_key: oRs("res_rsv_artikel_key").Value, // bez_key : oRs("bez_bezoekers_key").Value,
|
||||
// artikel_key: art_key,
|
||||
// rsv_ruimte_key: rsv_ruimte_key, //afspraak_key: afspraak_key,
|
||||
// reado: false,
|
||||
// flexcolumns: S("res_flexcolumns"),
|
||||
// resnum: art_key, //next_vis,
|
||||
// requiredbyfield: "res" + art_key, //next_vis,
|
||||
// notr: true,
|
||||
// flexend: parseInt(S("res_max_flex_on_line"), 10),
|
||||
// nolabel: true,
|
||||
// getTmpfolder: true, // Geef de tijdelijke folder terug waar bestanden zijn opgeslagen.
|
||||
// //filter: flexfilter_afhandel_default,
|
||||
// hidedefault: true
|
||||
// });
|
||||
//}
|
||||
%>
|
||||
</tr>
|
||||
<% //next_vis++;
|
||||
<tr id="row<%=art_key%>flex"
|
||||
class="catflexline <%=(ingang == 0 || verval == 0 || dirty? " res_fatal " : "")%> <%=(existing? " existing" : " notexisting")%>"
|
||||
>
|
||||
<td colspan="4">
|
||||
<div class="resflex">
|
||||
<table id="resFlexList<%=art_key%>">
|
||||
<tbody>
|
||||
<%
|
||||
generateFlexKenmerkCodeArt ({ rsv_artikel_key: oRs("res_rsv_artikel_key").Value,
|
||||
artikel_key: art_key,
|
||||
rsv_ruimte_key: rsv_ruimte_key,
|
||||
reado: false,
|
||||
flexcolumns: S("res_flexcolumns"),
|
||||
requiredbyfield: "inpb_c_" + art_str
|
||||
});
|
||||
%>
|
||||
</tbody>
|
||||
</table>
|
||||
<div id="resvFlexList%=art_key%>" style="display:none"></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
|
||||
oRs.MoveNext();
|
||||
}
|
||||
|
||||
@@ -158,6 +158,8 @@ var authparams = user.checkAutorisation(autfunction)
|
||||
|
||||
function res_submit()
|
||||
{
|
||||
if (!validateForm("u2"))
|
||||
return false;
|
||||
if (checkArtikelen(<%=safe.jsfloat(starttime_room)%>, <%=safe.jsfloat(endtime_room)%>))
|
||||
{
|
||||
$.post($("form[name=u2]")[0].action, $("[name=u2]").serialize(), FcltCallbackAndThenAlways(res_submit_callback), "json");
|
||||
@@ -172,25 +174,56 @@ var authparams = user.checkAutorisation(autfunction)
|
||||
FcltMgr.closeDetail(window, { cancel: true } );
|
||||
}
|
||||
|
||||
var new_item_key = 0; // Globaal
|
||||
var new_item_key = -1; // Globaal
|
||||
function res_addcat(elm)
|
||||
{
|
||||
new_item_key = new_item_key -1;
|
||||
var $tr = $(elm).closest("tr");
|
||||
var $clone = $tr.clone();
|
||||
var artkey = $tr.attr("id").substring(3);
|
||||
var res_rsv = artkey +"_"+ new_item_key;
|
||||
var $tr = $(elm).closest("tr");
|
||||
var $clone = $tr.clone();
|
||||
var artkey = $tr.attr("id").substring(3);
|
||||
var res_rsv = artkey + "_" + new_item_key;
|
||||
// De clone bijwerken..
|
||||
$clone.find(':button').parent().remove(); // De toevoeg knop eraf halen.
|
||||
$("[id^='inpbh1_c_']",$clone).val(""); // Urenveld leeg maken.
|
||||
$("[id^='inpbh1_c_']", $clone).val(""); // Urenveld leeg maken.
|
||||
var id_num = $("[id^='inpbh1_c_']", $clone).attr('id').substring(9);
|
||||
// Nieuwe unieke id's aan de velden toekennen.
|
||||
$("[id^='inpb_c_']", $clone).attr({id: "inpb_c_" +res_rsv, name: "inpb_c_" +res_rsv});
|
||||
$("[id^='inpbp_c_']", $clone).attr({id: "inpbp_c_" +res_rsv, name: "inpbp_c_" +res_rsv});
|
||||
$("[id^='inpbtp_c_']",$clone).attr({id: "inpbtp_c_"+res_rsv, name: "inpbtp_c_"+res_rsv});
|
||||
$("[id^='inpbh1_c_']",$clone).attr({id: "inpbh1_c_"+res_rsv, name: "inpbh1_c_"+res_rsv});
|
||||
$("[id^='inpbm1_c_']",$clone).attr({id: "inpbm1_c_"+res_rsv, name: "inpbm1_c_"+res_rsv});
|
||||
// Voeg clone onder de huidige regel toe.
|
||||
$tr.after($clone);
|
||||
$("[id^='inpb_c_']", $clone).attr({id: "inpb_c_" + res_rsv, name: "inpb_c_" + res_rsv}); // Aantal.
|
||||
$("[id^='inpbp_c_']", $clone).attr({id: "inpbp_c_" + res_rsv, name: "inpbp_c_" + res_rsv}); // Prijs.
|
||||
$("[id^='inpbtp_c_']", $clone).attr({id: "inpbtp_c_" + res_rsv, name: "inpbtp_c_" + res_rsv}); // Totaalprijs.
|
||||
$("[id^='inpbh1_c_']", $clone).attr({id: "inpbh1_c_" + res_rsv, name: "inpbh1_c_" + res_rsv}); // Tijd uren.
|
||||
$("[id^='inpbm1_c_']", $clone).attr({id: "inpbm1_c_" + res_rsv, name: "inpbm1_c_" + res_rsv}); // Tijd minuten.
|
||||
|
||||
// Zijn er flexkenmerken.
|
||||
var $trflex = $tr;
|
||||
var $cloneflex;
|
||||
var $trnext = $tr.next('tr');
|
||||
|
||||
var trflex_all = $trnext.find("#k_all");
|
||||
if (trflex_all)
|
||||
{ // Er zijn flexkenmerken. Deze staan in <20><>n tr.
|
||||
// Alle flexkenmerk regels clonen.
|
||||
var $cloneflex = $trnext.clone(true);
|
||||
//var res_rsv_ = artkey + "_-1" + new_item_key;
|
||||
// Nieuwe unieke id's aan de velden toekennen.
|
||||
for (var flex_num = 1; flex_num <= trflex_all.val(); flex_num++)
|
||||
{
|
||||
$("[id^='art" + id_num + "_" + flex_num + "val']", $cloneflex).attr({id: "art" + res_rsv + "_" + flex_num + "val", name: "art" + res_rsv + "_" + flex_num + "val"}); // val.
|
||||
$("[id^='art" + id_num + "_" + flex_num + "key']", $cloneflex).attr({id: "art" + res_rsv + "_" + flex_num + "key", name: "art" + res_rsv + "_" + flex_num + "key"}); // key.
|
||||
$("[id^='art" + id_num + "_" + flex_num + "t']", $cloneflex).attr({id: "art" + res_rsv + "_" + flex_num + "t", name: "art" + res_rsv + "_" + flex_num + "t"}); // t.
|
||||
$("[id^='art" + id_num + "_" + flex_num + "p']", $cloneflex).attr({id: "art" + res_rsv + "_" + flex_num + "p", name: "art" + res_rsv + "_" + flex_num + "p"}); // p.
|
||||
$("[id^='art" + id_num + "_" + flex_num + "d']", $cloneflex).attr({id: "art" + res_rsv + "_" + flex_num + "d", name: "art" + res_rsv + "_" + flex_num + "d"}); // d.
|
||||
$("[id^='art" + id_num + "_" + flex_num + "e']", $cloneflex).attr({id: "art" + res_rsv + "_" + flex_num + "e", name: "art" + res_rsv + "_" + flex_num + "e"}); // e.
|
||||
|
||||
// Aan het hidden checkbox veld has_xxx ook een nieuwe unieke id aan toekennen.
|
||||
$("[id^='has_art" + id_num + "_" + flex_num + "val']", $cloneflex).attr({id: "has_art" + res_rsv + "_" + flex_num + "val", name: "has_art" + res_rsv + "_" + flex_num + "val"}); // Hidden checkbox veld has_xxx.
|
||||
|
||||
// Op kalender klikken moet kalender openen in eigen veld. TODO: waarde wordt nu nog ingevuld in veld van orgineel.
|
||||
$("i[onclick^=\"$(\'#art" + id_num + "_" + flex_num + "val'\"]", $cloneflex).attr({onclick: "$('#art" + res_rsv + "_" + flex_num + "val').datepicker('show')"}); // datum uitklappen.
|
||||
}
|
||||
}
|
||||
|
||||
// Voeg beide clones onder de huidige regel toe.
|
||||
$trnext.after($clone, $cloneflex);
|
||||
$("[id^='inpbh1_c_']",$clone).focus(); // Zet cursor in urenveld.
|
||||
|
||||
FcltMgr.resized();
|
||||
|
||||
@@ -19,6 +19,7 @@ var JSON_Result = true;
|
||||
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="../Shared/save2db.inc" -->
|
||||
<!-- #include file="../shared/kenmerk_common.inc" -->
|
||||
<!-- #include file="../Shared/json2.js" -->
|
||||
<!-- #include file="res.inc"-->
|
||||
|
||||
@@ -93,6 +94,46 @@ function resObj(res_deel, res_rsv_deel, van_h, van_m, tot_h, tot_m, i_cnt, i_pri
|
||||
this.price = i_price;
|
||||
}
|
||||
|
||||
function saveFlexKenmerkenArt(rsv_artikel_key, params)
|
||||
{
|
||||
var currentKenmerkenSQL = "SELECT ka.res_kenmerk_key"
|
||||
+ " , ka.res_kenmerkartikel_waarde"
|
||||
+ " FROM res_kenmerkartikel ka"
|
||||
+ " , res_kenmerk k"
|
||||
+ " , res_rsv_artikel ra"
|
||||
+ " WHERE k.res_kenmerk_key = ka.res_kenmerk_key"
|
||||
+ " AND ra.res_rsv_artikel_key = ka.res_rsv_artikel_key"
|
||||
+ " AND res_kenmerkartikel_verwijder IS NULL"
|
||||
+ " AND ra.res_rsv_artikel_key = " + rsv_artikel_key;
|
||||
|
||||
var allKenmerkenSQL = "SELECT " + lcl.xsql('t.res_srtkenmerk_omschrijving', 't.res_srtkenmerk_key') + " kenmerk_omschrijving"
|
||||
+ ", t.res_srtkenmerk_kenmerktype kenmerk_kenmerktype"
|
||||
+ ", t.res_srtkenmerk_systeem kenmerk_systeem"
|
||||
+ ", k.res_kenmerk_toonbaar kenmerk_readonly"
|
||||
+ ", k.res_kenmerk_uniek kenmerk_uniek"
|
||||
+ ", fac_kenmerkdomein_key"
|
||||
+ " FROM res_kenmerk k"
|
||||
+ " , res_srtkenmerk t"
|
||||
+ " WHERE k.res_srtkenmerk_key = t.res_srtkenmerk_key"
|
||||
+ " AND k.res_kenmerk_key = "; /* wordt in saveFlexkenmerken uitgebreid */
|
||||
|
||||
var flextrack = saveFlexKenmerken(rsv_artikel_key,
|
||||
{ kenmerkTable: "res_kenmerkartikel",
|
||||
kenmerkParentKey : "res_rsv_artikel_key",
|
||||
kenmerkWaarde: "res_kenmerkartikel_waarde",
|
||||
kenmerkKey: "res_kenmerk_key",
|
||||
currentKenmerkenSQL: currentKenmerkenSQL,
|
||||
allKenmerkenSQL: allKenmerkenSQL,
|
||||
requestQF: Request.Form,
|
||||
nameprefix: params.nameprefix,
|
||||
isNew: params.isNew,
|
||||
flexPath: "RESA/R",
|
||||
tracking: true,
|
||||
module: "RES"
|
||||
});
|
||||
return flextrack;
|
||||
}
|
||||
|
||||
// consumable objects
|
||||
|
||||
// artikelen in de database
|
||||
@@ -254,6 +295,7 @@ for (i = 1; i <= Request.Form.Count; i++)
|
||||
}
|
||||
|
||||
var trackarray = [];
|
||||
var flextrack = [];
|
||||
//=================================================
|
||||
// DEEL TWEE: DE OBJECTEN BIJWERKEN
|
||||
// Onze checkboxen hebben een hidden veld 'has_xxx' waaraan je kunt zien dat het object gereservereerd was
|
||||
@@ -492,6 +534,10 @@ for (i = 0; i < r_a_key.length; i++)
|
||||
trackarray.push(updatetrack);
|
||||
}
|
||||
|
||||
flextrack = saveFlexKenmerkenArt(r_a_key[i].rsv_key,
|
||||
{ nameprefix: "art" + r_a_key[i].key + "_" + r_a_key[i].rsv_key + "_",
|
||||
isNew: false }); // The array r_a_key[i] is a list of previously reserved objects.
|
||||
|
||||
reserved++;
|
||||
continue;
|
||||
}
|
||||
@@ -529,40 +575,46 @@ for (i = 0; i < a_arIns.length; i++)
|
||||
must_warn = must_warn || is_expired(disc_key, jsDate);
|
||||
|
||||
// Niets aan de hand, toevoegen
|
||||
sql = "BEGIN "
|
||||
+ " INSERT INTO res_rsv_artikel"
|
||||
+ " ( res_artikel_key"
|
||||
+ " , res_rsv_artikel_aantal"
|
||||
+ " , res_rsv_ruimte_key"
|
||||
+ " , res_rsv_artikel_prijs"
|
||||
+ " , res_rsv_artikel_levering)"
|
||||
+ " VALUES (" + a_arIns[i].res_deel
|
||||
+ " ," + a_arIns[i].cnt
|
||||
+ " ," + rsv_ruimte_key
|
||||
var fields = [ { dbs: "res_artikel_key", typ: "key", val: a_arIns[i].res_deel },
|
||||
{ dbs: "res_rsv_artikel_aantal", typ: "key", val: a_arIns[i].cnt },
|
||||
{ dbs: "res_rsv_ruimte_key", typ: "key", val: rsv_ruimte_key },
|
||||
{ dbs: "res_rsv_artikel_levering", typ: "datetime", val: jsDate }
|
||||
];
|
||||
|
||||
// Backo had mogelijk flexprijs in beeld. Sla die dan op
|
||||
// Prijs alleen aan te passen als geen vaste prijs (flexprijs)
|
||||
if (backo && !isNaN(a_arIns[i].price) && !prijs_vast) // De prijs was in beeld en wijzigbaar
|
||||
{
|
||||
sql += " ," + parseFloat((a_arIns[i].cnt * a_arIns[i].price).toFixed(2))
|
||||
fields.push({ dbs: "res_rsv_artikel_prijs", typ: "float", val: parseFloat((a_arIns[i].cnt * a_arIns[i].price).toFixed(2))});
|
||||
}
|
||||
else // Fronto: of geen prijs in beeld (vaste prijs artikel)
|
||||
{
|
||||
sql += " , NULL";
|
||||
}
|
||||
sql += " ," + jsDate.toSQL(true) + ");";
|
||||
//else // Fronto: of geen prijs in beeld (vaste prijs artikel)
|
||||
|
||||
fields.push({ dbs: "res_rsv_artikel_key", typ: "key", seq: "res_s_res_rsv_artikel_key" });
|
||||
var resArtIns = buildInsert("res_rsv_artikel", fields);
|
||||
var rsv_artikel_key = resArtIns.sequences["res_rsv_artikel_key"];
|
||||
|
||||
sql = resArtIns.sql;
|
||||
var err = Oracle.Execute(sql, true);
|
||||
if (err.friendlyMsg)
|
||||
warning = err.friendlyMsg;
|
||||
|
||||
if (bonotify && (curr_discipline != last_discipline))
|
||||
{
|
||||
sql += " RES.notifybackoffice(" + rsv_ruimte_key + ", 'RESNEW', 'C', " + a_arIns[i].res_deel + ");";
|
||||
sql = "BEGIN "
|
||||
+ " RES.notifybackoffice(" + rsv_ruimte_key + ", 'RESNEW', 'C', " + a_arIns[i].res_deel + ");"
|
||||
+ " END;";
|
||||
last_discipline = curr_discipline;
|
||||
Oracle.Execute(sql);
|
||||
}
|
||||
sql += " END;"
|
||||
Oracle.Execute(sql);
|
||||
|
||||
// Tracking toevoegen.
|
||||
var inserttrack = res.trackartikel(a_arIns[i].res_deel, "insert");
|
||||
trackarray.push(inserttrack);
|
||||
|
||||
flextrack = saveFlexKenmerkenArt(rsv_artikel_key,
|
||||
{ nameprefix: "art" + a_arIns[i].res_deel + "_" + -1 + "_",
|
||||
isNew: true }); // rsv_artikel_key is a currently reserved article.
|
||||
|
||||
reserved++;
|
||||
}
|
||||
}
|
||||
@@ -589,8 +641,8 @@ var hasAnyCV = !oRs.Eof;
|
||||
|
||||
if (restype == "R")
|
||||
{
|
||||
if (trackarray.length > 0)
|
||||
res.trackreserveringupdate(rsv_ruimte_key, trackarray.length? L("lcl_res_is_resupdtrack").format(res_key + "/" + res_volgnr) + "\n" + trackarray.join("\n") : null);
|
||||
if (trackarray.length > 0 || flextrack.length > 0)
|
||||
res.trackreserveringupdate(rsv_ruimte_key, trackarray.length || flextrack.length > 0? L("lcl_res_is_resupdtrack").format(res_key + "/" + res_volgnr) + "\n" + trackarray.concat(flextrack).join("\n") : null);
|
||||
}
|
||||
else
|
||||
{ // CV
|
||||
@@ -603,7 +655,7 @@ else
|
||||
if (verynew == 1 && !this_res.min_bo) // misbruik this_res.min_bo: er was niets
|
||||
shared.trackaction("RESNEW", rsv_ruimte_key);
|
||||
else
|
||||
res.trackreserveringupdate(rsv_ruimte_key, trackarray.length? L("lcl_res_is_resupdtrack").format(res_key + "/" + res_volgnr) + "\n" + trackarray.join("\n") : null);
|
||||
res.trackreserveringupdate(rsv_ruimte_key, trackarray.length || flextrack.length > 0? L("lcl_res_is_resupdtrack").format(res_key + "/" + res_volgnr) + "\n" + trackarray.concat(flextrack).join("\n") : null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,84 +15,113 @@
|
||||
*/ %>
|
||||
<!-- #include file="../Shared/kenmerk_common.inc" -->
|
||||
<%
|
||||
function getSqlResFlexArt(rsv_artikel_key, artikel_key, filter)
|
||||
{
|
||||
var filter = filter || [];
|
||||
return sql = "SELECT k.res_kenmerk_key kenmerk_key"
|
||||
+ " , " + lcl.xsql("sk.res_srtkenmerk_omschrijving", "sk.res_srtkenmerk_key") + " kenmerk_omschrijving"
|
||||
+ " , sk.res_srtkenmerk_kenmerktype kenmerk_kenmerktype"
|
||||
+ " , sk.fac_kenmerkdomein_key kenmerkdomein_key"
|
||||
+ " , sk.res_srtkenmerk_lengte kenmerk_lengte"
|
||||
+ " , sk.res_srtkenmerk_dec kenmerk_dec"
|
||||
+ " , sk.res_srtkenmerk_nmin kenmerk_nmin"
|
||||
+ " , sk.res_srtkenmerk_nmax kenmerk_nmax"
|
||||
+ " , sk.res_srtkenmerk_systeem kenmerk_systeem"
|
||||
+ (rsv_artikel_key > 0
|
||||
? " , (SELECT v.res_kenmerkartikel_waarde "
|
||||
+ " FROM res_kenmerkartikel v "
|
||||
+ " WHERE v.res_rsv_artikel_key = " + rsv_artikel_key
|
||||
+ " AND v.res_kenmerk_key = k.res_kenmerk_key"
|
||||
+ " AND v.res_kenmerkartikel_verwijder IS NULL)"
|
||||
: " , " + lcl.xsql("k.res_kenmerk_default", "k.res_kenmerk_key")) + " kenmerk_waarde"
|
||||
+ " , k.res_kenmerk_volgnummer kenmerk_volgnr"
|
||||
+ " , " + lcl.xsql("sk.res_srtkenmerk_dimensie", "k.res_kenmerk_key") + " kenmerk_dimensie"
|
||||
+ " , " + lcl.xsql("k.res_kenmerk_hint", "k.res_kenmerk_key") + " kenmerk_hint"
|
||||
+ " , " + lcl.xsql("k.res_kenmerk_default", "k.res_kenmerk_key") + " kenmerk_default"
|
||||
+ " , k.res_kenmerk_verplicht kenmerk_verplicht"
|
||||
+ " , k.res_kenmerk_groep kenmerk_groep"
|
||||
+ " , NULL otherpath"
|
||||
+ " , k.res_kenmerk_toonbaar kenmerk_toonbaar"
|
||||
+ " , k.res_kenmerk_uniek kenmerk_uniek"
|
||||
+ " , k.res_kenmerk_regexp kenmerk_regexp"
|
||||
+ " FROM res_kenmerk k "
|
||||
+ " , res_srtkenmerk sk"
|
||||
+ " WHERE k.res_srtkenmerk_key = sk.res_srtkenmerk_key"
|
||||
+ " AND k.res_kenmerk_verwijder IS NULL"
|
||||
+ " AND k.res_artikel_key = " + artikel_key
|
||||
+ (filter.length > 0 ? " AND " + filter.join(" AND ") : "")
|
||||
+ " ORDER BY k.res_kenmerk_volgnummer"
|
||||
+ " , " + lcl.xsql("sk.res_srtkenmerk_omschrijving", "k.res_kenmerk_key");
|
||||
}
|
||||
|
||||
function generateFlexKenmerkCodeArt(params)
|
||||
{
|
||||
var rsv_artikel_key = params.rsv_artikel_key? params.rsv_artikel_key : -1; // res_rsv_artikel_key
|
||||
var artikel_key = params.artikel_key? params.artikel_key : -1; // artikel_key
|
||||
var reado = params.reado; // Readonly
|
||||
var flexcolumns = params.flexcolumns;
|
||||
var advanced = params.advanced; // Geavanceerd
|
||||
var flexcolumns= params.flexcolumns;
|
||||
var prs_key = (params.prs_key? params.prs_key : -1); // Perslid key
|
||||
var cont_key = (params.cont_key? params.cont_key : -1); // Contactpersoon key
|
||||
var resnum = params.resnum; // Bezoeker nummer
|
||||
var rownum = params.rownum; // Regel nummer (Artikel)
|
||||
var requiredbyfield = params.requiredbyfield; // required flexkenmerken is alleen required als veld met name=requiredbyfield is ingevuld
|
||||
var flexstart = params.flexstart;
|
||||
var flexend = params.flexend;
|
||||
var notr = params.notr;
|
||||
var ispopup = params.ispopup;
|
||||
var nolabel = params.nolabel;
|
||||
var tmpfolder = params.tmpfolder;
|
||||
var filter = params.filter;
|
||||
var hidedefault = params.hidedefault; // Afhandelingskenmerken >= 900 met een default waarde hidden maken.
|
||||
|
||||
disc_key_arr = [];
|
||||
var discs = "SELECT DISTINCT ra.res_discipline_key"
|
||||
+ " FROM res_rsv_artikel rra"
|
||||
+ " , res_artikel ra"
|
||||
+ " WHERE rra.res_artikel_key = ra.res_artikel_key"
|
||||
+ " AND rra.res_rsv_artikel_key = " + rsv_artikel_key;
|
||||
var oRs = Oracle.Execute(discs);
|
||||
while (!oRs.eof)
|
||||
{
|
||||
// Dicipline toevoegen
|
||||
disc_key_arr.push(oRs("res_discipline_key").Value);
|
||||
oRs.MoveNext();
|
||||
}
|
||||
oRs.Close();
|
||||
var my_resrechten = user.func_enabled2("RES", {ins_discipline_key: disc_key_arr.join(",")}); // res.func_enabled(rsv_ruimte_key) is overkill?
|
||||
|
||||
function isReadonly (volgnummer)
|
||||
{ // Backo mag kenmerken < 900 wel zien maar niet wijzigen. Kenmerken > 900 mag hij wel wijzigen.
|
||||
// Zie ook load_kenmerk.asp en bez_edit_bezoekers.inc
|
||||
if (reado)
|
||||
return true
|
||||
else
|
||||
{ // Mag ik de kenmerken wijzigen?
|
||||
if (reado) return true; // Als meegegeven dan altijd readonly
|
||||
|
||||
if (volgnummer < 100) // FO && BO altijd, FE alleen buiten de expire-tijden
|
||||
{
|
||||
var backo = !user.has("WEB_BEZFOF");
|
||||
return (ispopup && backo && volgnummer < 900)
|
||||
if (my_resrechten.canWrite("WEB_RESFOF") || my_resrechten.canWrite("WEB_RESBOF"))
|
||||
return false; // die mogen altijd
|
||||
|
||||
return readofe; // als ik via de FE-uitzondering binnen ben wordt <100 readonly
|
||||
}
|
||||
else if (volgnummer >= 100 && volgnummer <= 800) // FE && FO && BO
|
||||
{
|
||||
return false; // Zonder FE||FO||BO was je hier echt nooit gekomen
|
||||
}
|
||||
else if (volgnummer > 800 && volgnummer < 900) // FO
|
||||
return !my_resrechten.canWrite("WEB_RESFOF");
|
||||
else if (volgnummer == 900) // FO && BO
|
||||
return !my_resrechten.canWrite("WEB_RESFOF") && !my_resrechten.canWrite("WEB_RESBOF");
|
||||
else if (volgnummer > 900) // BO
|
||||
return !my_resrechten.canWrite("WEB_RESBOF");
|
||||
}
|
||||
|
||||
var sql = "SELECT k.res_kenmerk_key kenmerk_key"
|
||||
+ " , " + lcl.xsql("sk.res_srtkenmerk_omschrijving", "sk.res_srtkenmerk_key") + " kenmerk_omschrijving"
|
||||
+ " , sk.res_srtkenmerk_kenmerktype kenmerk_kenmerktype"
|
||||
+ " , sk.fac_kenmerkdomein_key kenmerkdomein_key"
|
||||
+ " , sk.res_srtkenmerk_lengte kenmerk_lengte"
|
||||
+ " , sk.res_srtkenmerk_dec kenmerk_dec"
|
||||
+ " , sk.res_srtkenmerk_nmin kenmerk_nmin"
|
||||
+ " , sk.res_srtkenmerk_nmax kenmerk_nmax"
|
||||
+ " , sk.res_srtkenmerk_systeem kenmerk_systeem"
|
||||
+ (rsv_artikel_key > 0
|
||||
? " , (SELECT v.res_kenmerkartikel_waarde "
|
||||
+ " FROM res_kenmerkartikel v "
|
||||
+ " WHERE v.res_rsv_artikel_key = " + rsv_artikel_key
|
||||
+ " AND v.res_kenmerk_key = k.res_kenmerk_key"
|
||||
+ " AND v.res_kenmerkartikel_verwijder IS NULL)"
|
||||
: " , " + lcl.xsql("k.res_kenmerk_default", "k.res_kenmerk_key")) + " kenmerk_waarde"
|
||||
+ " , k.res_kenmerk_volgnummer kenmerk_volgnr"
|
||||
+ " , " + lcl.xsql("sk.res_srtkenmerk_dimensie", "k.res_kenmerk_key") + " kenmerk_dimensie"
|
||||
+ " , " + lcl.xsql("k.res_kenmerk_hint", "k.res_kenmerk_key") + " kenmerk_hint"
|
||||
+ " , " + lcl.xsql("k.res_kenmerk_default", "k.res_kenmerk_key") + " kenmerk_default"
|
||||
+ " , k.res_kenmerk_verplicht kenmerk_verplicht"
|
||||
+ " , k.res_kenmerk_groep kenmerk_groep"
|
||||
+ " , NULL otherpath"
|
||||
+ " , k.res_kenmerk_toonbaar kenmerk_toonbaar"
|
||||
+ " , k.res_kenmerk_uniek kenmerk_uniek"
|
||||
+ " , k.res_kenmerk_regexp kenmerk_regexp"
|
||||
+ " FROM res_kenmerk k "
|
||||
+ " , res_srtkenmerk sk"
|
||||
+ " WHERE k.res_srtkenmerk_key = sk.res_srtkenmerk_key"
|
||||
+ " AND k.res_kenmerk_verwijder IS NULL"
|
||||
+ " AND k.res_artikel_key = " + artikel_key;
|
||||
|
||||
// Voor *nieuwe* reserveringen negeren we RESBAC en RESBOF nog even.
|
||||
// Omdat we (meestal) nog geen catalogus/discipline hebben op dit moment zie je anders
|
||||
// als je maar *ergens* RESBAC of RESBOF al te veel kenmerken
|
||||
if (!my_resrechten.canRead("WEB_RESBAC") || rsv_artikel_key < 0)
|
||||
{ // Ik heb geen RESBAC rechten
|
||||
// Dan mag ik alleen nog met RESBOF rechten reservering flexkenmerken boven de 900 zien.
|
||||
if (!my_resrechten.canRead("WEB_RESBOF") || rsv_artikel_key < 0)
|
||||
{ // Ik heb geen RESBOF rechten
|
||||
// Dan mag ik alleen nog met RESFOF rechten reservering flexkenmerken tussen de 800 en de 900 zien.
|
||||
if (!my_resrechten.canRead("WEB_RESFOF"))
|
||||
{ // Ik heb geen RESFOF rechten.
|
||||
// Dan mag ik alleen nog met RESUSE rechten reservering flexkenmerken onder de 800 zien.
|
||||
if (!my_resrechten.canRead("WEB_RESUSE"))
|
||||
// Ik mag geen enkel kenmerk zien.
|
||||
sql += " AND 1 = 0"; // Ik mag geen enkel kenmerk zien.
|
||||
else
|
||||
// Met WEB_RESUSErechten mag ik kenmerken <=800 zien.
|
||||
sql += " AND (k.res_kenmerk_volgnummer <= 800)";
|
||||
}
|
||||
else
|
||||
// Ik heb RESFOF rechten
|
||||
sql += " AND k.res_kenmerk_volgnummer <= 900";
|
||||
}
|
||||
}
|
||||
|
||||
function isHidden (volgnummer, defaultval)
|
||||
{ // Afhandelingskenmerken met een default waarde hidden weergeven zodat ze wel opgeslagen worden (kenmerken >= 900 en default is niet null).
|
||||
return (volgnummer >= 900 && defaultval != null);
|
||||
}
|
||||
|
||||
var sql = getSqlResFlexArt(rsv_artikel_key, artikel_key, filter);
|
||||
sql += " ORDER BY k.res_kenmerk_volgnummer"
|
||||
+ " , " + lcl.xsql("sk.res_srtkenmerk_omschrijving", "k.res_kenmerk_key");
|
||||
|
||||
var trn = 0;
|
||||
|
||||
@@ -100,24 +129,15 @@ function generateFlexKenmerkCodeArt(params)
|
||||
"RES", // Module
|
||||
rsv_artikel_key,
|
||||
{ flexcolumns: flexcolumns,
|
||||
label_colspan: ((notr || ispopup) ? null : (params.mobile? 1 : (S("bez_sel_contactpersoon") > 0 || S("bez_sel_internpersoon")? 3 : 2)) ),
|
||||
kenmerk_search: advanced,
|
||||
kenmerk_search: false,
|
||||
defaults: params.defaults,
|
||||
fnIsReadonly: isReadonly,
|
||||
fnIsHidden: (hidedefault? isHidden : null),
|
||||
prs_key: prs_key, // Wordt alleen gebruikt als geldt (!kenmerk_search && !multiMode)
|
||||
cont_key: cont_key, // Wordt alleen gebruikt als geldt (!kenmerk_search && !multiMode)
|
||||
parentKey: rsv_artikel_key,
|
||||
hideVervallen: rsv_artikel_key < 0,
|
||||
nameprefix: "flex" + resnum + "_",
|
||||
mobile: params.mobile,
|
||||
requiredbyfield: requiredbyfield,
|
||||
serie: resnum, // Het serie nummer (onderscheid tussen bezoekers) voor dezelfde serie flexkenmerken
|
||||
flexstart: flexstart,
|
||||
flexend: flexend,
|
||||
notr: notr,
|
||||
nolabel: nolabel,
|
||||
tmpfolder: tmpfolder
|
||||
parentKey: rsv_artikel_key,
|
||||
nameprefix: "art" + artikel_key + "_" + rsv_artikel_key + "_",
|
||||
requiredbyfield: requiredbyfield, // Aan dit veld de onChange="checkRequiredGroup('10S< %=artikel_key% >');"> toevoegen.
|
||||
requiredbyemptyval: 0,
|
||||
serie: artikel_key // Het serie nummer (onderscheid tussen artikelen). Nodig voor requiredbyfield verplichte kenmerken.
|
||||
}
|
||||
);
|
||||
} %>
|
||||
|
||||
|
||||
@@ -241,7 +241,7 @@ function BijlagenButton(pModule, pNiveau, pKey, tmpfolder, pKenmerk_key,
|
||||
+ ", true" // multi
|
||||
+ ", this)";
|
||||
res += " onClick='" + safe.htmlattr(blg) + "'"
|
||||
+ (!pReadonly ? " onChange='checkKenmerk(this, false,\"M\",0,0,0,0)'" : "");
|
||||
+ (!pReadonly ? " onChange='checkKenmerk(this, false,\"M\",0,0,0,0)'" : ""); // Bij bijlage button heb je geen requiredbyemptyval nodig.
|
||||
res += ">";
|
||||
res += "<i class='fa fa-folder-open fa-fw hasIcon bijlage' onClick='this.previousSibling.click()'></i>";
|
||||
// }
|
||||
@@ -494,30 +494,31 @@ function kenmerk_regel(kv_params)
|
||||
// ================================================================================================
|
||||
function listKenmerk(sql, module, key, props)
|
||||
{
|
||||
var flexcolumns = props.flexcolumns;
|
||||
var kenmerk_search = props.kenmerk_search;
|
||||
var kenmerk_colspan = props.kenmerk_colspan;
|
||||
var kenmerk_extraTD = props.kenmerk_extraTD;
|
||||
var multiMode = props.multiMode; // TODO: support this!
|
||||
var hideVervallen = props.hideVervallen;
|
||||
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 srtdeel_key = props.srtdeelKey;
|
||||
var requiredbyfield = props.requiredbyfield;
|
||||
var serie = props.serie || 0;
|
||||
var parent_list = props.parent_list; // Maak voor deze keys ook bijlagen knop
|
||||
var formobile = props.mobile;
|
||||
var notr = props.notr; // Geen tr's toevoegen.
|
||||
var nolabel = props.nolabel; // Geen labels toevoegen.
|
||||
var flexstart = props.flexstart || 1; // De kenmerken vanaf de flexstart-ste element tonen {flexstart >= 1 indien meegegeven).
|
||||
var flexend = props.flexend || -1; // De kenmerken tot het flexend-ste element tonen {flexend >= 1 indien meegegeven}.
|
||||
var hasfilter = props.hasfilter || false; // De kenmerken kunnen op naam gefilterd worden.
|
||||
var tmpfolder = props.tmpfolder || "";
|
||||
var showConfidential= props.showConfidential;
|
||||
var forceRequired = props.forceRequired; // In case only status dependent characteristics are shown (close confirm/...etc)
|
||||
var flexcolumns = props.flexcolumns;
|
||||
var kenmerk_search = props.kenmerk_search;
|
||||
var kenmerk_colspan = props.kenmerk_colspan;
|
||||
var kenmerk_extraTD = props.kenmerk_extraTD;
|
||||
var multiMode = props.multiMode; // TODO: support this!
|
||||
var hideVervallen = props.hideVervallen;
|
||||
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 srtdeel_key = props.srtdeelKey;
|
||||
var requiredbyfield = props.requiredbyfield;
|
||||
var requiredbyemptyval = props.requiredbyemptyval;
|
||||
var serie = props.serie || 0;
|
||||
var parent_list = props.parent_list; // Maak voor deze keys ook bijlagen knop
|
||||
var formobile = props.mobile;
|
||||
var notr = props.notr; // Geen tr's toevoegen.
|
||||
var nolabel = props.nolabel; // Geen labels toevoegen.
|
||||
var flexstart = props.flexstart || 1; // De kenmerken vanaf de flexstart-ste element tonen {flexstart >= 1 indien meegegeven).
|
||||
var flexend = props.flexend || -1; // De kenmerken tot het flexend-ste element tonen {flexend >= 1 indien meegegeven}.
|
||||
var hasfilter = props.hasfilter || false; // De kenmerken kunnen op naam gefilterd worden.
|
||||
var tmpfolder = props.tmpfolder || "";
|
||||
var showConfidential = props.showConfidential;
|
||||
var forceRequired = props.forceRequired; // In case only status dependent characteristics are shown (close confirm/...etc)
|
||||
var force_default_when_null = props.force_default_when_null || false;
|
||||
if (formobile) // Ik moet de API2 name weten. TODO Hier nog iets beters voor verzinnen....
|
||||
{
|
||||
@@ -761,7 +762,7 @@ function listKenmerk(sql, module, key, props)
|
||||
%>
|
||||
$("#<%=requiredbyfield%>").addClass("<%=required_class%>");
|
||||
<% } %>
|
||||
checkRequiredGroup("<%=required_group%>");
|
||||
checkRequiredGroup("<%=required_group%>", <%=(requiredbyemptyval != null? "{emptyvalue: " + requiredbyemptyval + "}" : "null")%>);
|
||||
$("#requiredgeg_<%=nameprefix + idCounter%>").remove(); // Na het uitvoeren kan de ready functie weer weg zodat deze niet
|
||||
});
|
||||
</script>
|
||||
@@ -895,10 +896,10 @@ function listKenmerk(sql, module, key, props)
|
||||
anyTextarea = true; // straks autogrow code
|
||||
kv = "<textarea "
|
||||
+ (kregexp ? " regexp='" + kregexp + "' " : "")
|
||||
+ " onChange='fvalid=checkKenmerk(this, false,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ")"
|
||||
+ " onChange='fvalid=checkKenmerk(this, false,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ", " + (requiredbyemptyval != null? "{emptyvalue: " + requiredbyemptyval + "}" : "null") + ")"
|
||||
+ onchangeExp
|
||||
+ "'"
|
||||
+ " onBlur='checkKenmerk(this, true,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ")'"
|
||||
+ " onBlur='checkKenmerk(this, true,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ", " + (requiredbyemptyval != null? "{emptyvalue: " + requiredbyemptyval + "}" : "null") + ")'"
|
||||
+ " class='fldflexC50 "
|
||||
+ (initTriggerChange ? " initTriggerChange " : "")
|
||||
+ (required ? required_class : "")
|
||||
@@ -933,10 +934,10 @@ function listKenmerk(sql, module, key, props)
|
||||
{
|
||||
kv = "<input type='text'"
|
||||
+ (kregexp ? " regexp='" + kregexp + "' " : "")
|
||||
+ " onChange='fvalid=checkKenmerk(this, false,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ")"
|
||||
+ " onChange='fvalid=checkKenmerk(this, false,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ", " + (requiredbyemptyval != null? "{emptyvalue: " + requiredbyemptyval + "}" : "null") + ")"
|
||||
+ onchangeExp
|
||||
+ "'"
|
||||
+ " onBlur='checkKenmerk(this, true,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ")'"
|
||||
+ " onBlur='checkKenmerk(this, true,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ", " + (requiredbyemptyval != null? "{emptyvalue: " + requiredbyemptyval + "}" : "null") + ")'"
|
||||
+ " id='" + nameprefix + idCounter + "val' name='" + nameprefix + idCounter + "val'"
|
||||
+ " class='"
|
||||
+ (initTriggerChange ? " initTriggerChange " : "")
|
||||
@@ -1203,7 +1204,7 @@ function listKenmerk(sql, module, key, props)
|
||||
+ (kenmerk_search ? " advmulti=1 " : "")
|
||||
+ (required ? " required='required' " : "")
|
||||
+ (required > 1
|
||||
? " onChange='checkRequiredGroup(\"" + required_group + "\");" + onchangeExp + "'"
|
||||
? " onChange='checkRequiredGroup(\"" + required_group + "\", " + (requiredbyemptyval != null? "{emptyvalue: " + requiredbyemptyval + "}" : "null") + ");" + onchangeExp + "'"
|
||||
: (flexExprIncluded && (!isExpression || forceFlexExprInclusion)? " onChange='" + onchangeExp + "'" : ""))
|
||||
+ ">"
|
||||
+ "<option value='-1' " + (required? " class='" + required_class + "'" : "") + "><!--lege waarde--></option>"
|
||||
@@ -1220,7 +1221,7 @@ function listKenmerk(sql, module, key, props)
|
||||
if (className.match(/required\d/g) && className.match(/required\d/g).length > 0)
|
||||
{ // Select hoort binnen een required groep.
|
||||
var group = $("#<%=parentkenmerkid%>val")[0].className.match(/required\d*S\d*/g)[0].substr(8);
|
||||
checkRequiredGroup(group);
|
||||
checkRequiredGroup(group, <%=(requiredbyemptyval != null? "{emptyvalue: " + requiredbyemptyval + "}" : "null")%>);
|
||||
}
|
||||
|
||||
$("#<%=nameprefix + idCounter%>val").
|
||||
@@ -1396,7 +1397,7 @@ function listKenmerk(sql, module, key, props)
|
||||
+ "'"
|
||||
+ (required ? " required='required' " : "")
|
||||
+ (required > 1
|
||||
? " onChange='checkRequiredGroup(\"" + required_group + "\")'"
|
||||
? " onChange='checkRequiredGroup(\"" + required_group + "\", " + (requiredbyemptyval != null? "{emptyvalue: " + requiredbyemptyval + "}" : "null") + ");" + onchangeExp + "'"
|
||||
: "")
|
||||
//+ " placeholder='"+flexkenmerklabel+"'"
|
||||
+ " value='" + safe.htmlattr(flexkenmerkwaarde) + "' "
|
||||
@@ -1548,11 +1549,11 @@ function listKenmerk(sql, module, key, props)
|
||||
kv = "<input type='text'"
|
||||
+ (!readonlyfield && kregexp ? " regexp='" + kregexp + "' " : "")
|
||||
+ (!readonlyfield
|
||||
? " onChange='fvalid=checkKenmerk(this, false,\"" + ktype + "\"," + klen + "," + kdec + ",\"" + kmin + "\",\"" + kmax + "\")"
|
||||
? " onChange='fvalid=checkKenmerk(this, false,\"" + ktype + "\"," + klen + "," + kdec + ",\"" + kmin + "\",\"" + kmax + "\", " + (requiredbyemptyval != null? "{emptyvalue: " + requiredbyemptyval + "}" : "null") + ")"
|
||||
+ onchangeExp
|
||||
+ "' "
|
||||
: "")
|
||||
+ (!readonlyfield ? " onBlur='checkKenmerk(this, true,\"" + ktype + "\"," + klen + "," + kdec + ",\"" + kmin + "\",\"" + kmax + "\")' " : "")
|
||||
+ (!readonlyfield ? " onBlur='checkKenmerk(this, true,\"" + ktype + "\"," + klen + "," + kdec + ",\"" + kmin + "\",\"" + kmax + "\", " + (requiredbyemptyval != null? "{emptyvalue: " + requiredbyemptyval + "}" : "null") + ")'" : "")
|
||||
+ (readonlyfield || maskeren
|
||||
? " readonly tabindex=-1 "
|
||||
: " id='" + nameprefix + idCounter + "val' name='" + nameprefix + idCounter + "val' ")
|
||||
@@ -1596,11 +1597,11 @@ function listKenmerk(sql, module, key, props)
|
||||
kv = "<input type='text'"
|
||||
+ (!readonlyfield && kregexp ? " regexp='" + kregexp + "' " : "")
|
||||
+ (!readonlyfield
|
||||
? " onChange='fvalid=checkKenmerk(this, false,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ")"
|
||||
? " onChange='fvalid=checkKenmerk(this, false,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ", " + (requiredbyemptyval != null? "{emptyvalue: " + requiredbyemptyval + "}" : "null") + ")"
|
||||
+ onchangeExp
|
||||
+ "' "
|
||||
: "")
|
||||
+ (!readonlyfield ? " onBlur='checkKenmerk(this, true,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ")' " : "")
|
||||
+ (!readonlyfield ? " onBlur='checkKenmerk(this, true,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ", " + (requiredbyemptyval != null? "{emptyvalue: " + requiredbyemptyval + "}" : "null") + ")' " : "")
|
||||
+ (readonlyfield || maskeren
|
||||
? " readonly tabindex=-1 "
|
||||
: " id='" + nameprefix + idCounter + "val' name='" + nameprefix + idCounter + "val' ");
|
||||
@@ -1653,10 +1654,10 @@ function listKenmerk(sql, module, key, props)
|
||||
+ (required ? required_class : "")
|
||||
+ (isExpression? " expression " + expressionClass : "")
|
||||
+ "'"
|
||||
+ " onChange='fvalid=checkKenmerk(this, false,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ")"
|
||||
+ " onChange='fvalid=checkKenmerk(this, false,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ", " + (requiredbyemptyval != null? "{emptyvalue: " + requiredbyemptyval + "}" : "null") + ")"
|
||||
+ onchangeExp
|
||||
+ "' "
|
||||
+ " onBlur='checkKenmerk(this, true,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ")' "
|
||||
+ " onBlur='checkKenmerk(this, true,\"" + ktype + "\"," + klen + "," + kdec + "," + kmin + "," + kmax + ", " + (requiredbyemptyval != null? "{emptyvalue: " + requiredbyemptyval + "}" : "null") + ")' "
|
||||
+ (flexkenmerkwaarde == 1
|
||||
? " checked"
|
||||
: "")
|
||||
@@ -1758,7 +1759,7 @@ function listKenmerk(sql, module, key, props)
|
||||
+ "'"
|
||||
+ (required ? " required='required' " : "")
|
||||
+ (required > 1
|
||||
? " onChange='checkRequiredGroup(\"" + required_group + "\")'"
|
||||
? " onChange='checkRequiredGroup(\"" + required_group + "\", " + (requiredbyemptyval != null? "{emptyvalue: " + requiredbyemptyval + "}" : "null") + ");" + onchangeExp + "'"
|
||||
: "")
|
||||
+ " type='text' "
|
||||
+ "name='" + nameprefix + idCounter + "val' "
|
||||
@@ -1855,7 +1856,7 @@ function listKenmerk(sql, module, key, props)
|
||||
if (className.match(/required\d/g) && className.match(/required\d/g).length > 0)
|
||||
{ // Suggest hoort binnen een required groep.
|
||||
var group = $("#Suggest<%=parentkenmerkid%>_show")[0].className.match(/required\d*S\d*/g)[0].substr(8);
|
||||
checkRequiredGroup(group);
|
||||
checkRequiredGroup(group, <%=(requiredbyemptyval != null? "{emptyvalue: " + requiredbyemptyval + "}" : "null")%>);
|
||||
}
|
||||
}
|
||||
<% } %>
|
||||
@@ -1864,7 +1865,7 @@ function listKenmerk(sql, module, key, props)
|
||||
{ %>
|
||||
function onChangeSKenmerk<%=nameprefix + idCounter%>(parentkey, txt)
|
||||
{
|
||||
checkRequiredGroup("<%=required_group%>");
|
||||
checkRequiredGroup("<%=required_group%>", <%=(requiredbyemptyval != null? "{emptyvalue: " + requiredbyemptyval + "}" : "null")%>);
|
||||
}
|
||||
<% } %>
|
||||
|
||||
|
||||
@@ -23,8 +23,10 @@ klen lengte
|
||||
kdec decimalen
|
||||
kmin kmax
|
||||
*/
|
||||
function checkRequiredGroup(group)
|
||||
function checkRequiredGroup(group, params)
|
||||
{
|
||||
params = params || {};
|
||||
var has_emptyvalue = typeof(params.emptyvalue) != "undefined"; // Er kan een empty waarde meegegeven zijn die als lege waarde opgevat moet worden, bijvoorbeeld als aantal 0 is.
|
||||
var requiredgroup = "required" + group;
|
||||
var groupisrequired = false;
|
||||
var rgroup = $("." + requiredgroup);
|
||||
@@ -45,7 +47,9 @@ function checkRequiredGroup(group)
|
||||
if (tagType == "checkbox")
|
||||
hasCheckbox = (tagName == "INPUT" && tagType == "checkbox" && ischecked);
|
||||
else
|
||||
hasInput = (((tagName == "INPUT" || tagName == "TEXTAREA") && rgvalue != "") && !isbijlage);
|
||||
hasInput = (((tagName == "INPUT" || tagName == "TEXTAREA") &&
|
||||
((!has_emptyvalue && rgvalue != "") || (has_emptyvalue && rgvalue != 0))) &&
|
||||
!isbijlage);
|
||||
|
||||
if (hasInput || hasSelect || hasBijlage || hasCheckbox)
|
||||
{
|
||||
@@ -72,8 +76,9 @@ function checkRequiredGroup(group)
|
||||
}
|
||||
|
||||
var in_use = false; // Semaphore(Seinvlag) om nested loop van de alerts van twee velden met te lange invoer te vermijden.
|
||||
function checkKenmerk(field, show, ktype, klen, kdec, kmin, kmax)
|
||||
function checkKenmerk(field, show, ktype, klen, kdec, kmin, kmax, params)
|
||||
{
|
||||
params = params || {};
|
||||
var valid = true;
|
||||
if (!in_use)
|
||||
{
|
||||
@@ -211,7 +216,7 @@ function checkKenmerk(field, show, ktype, klen, kdec, kmin, kmax)
|
||||
{ // Er is een required groep aanwezig.
|
||||
var requiredgroup = field.className.match(/required\d*S\d*/g)[0];
|
||||
var group = requiredgroup.substr(8);
|
||||
checkRequiredGroup(group);
|
||||
checkRequiredGroup(group, params);
|
||||
}
|
||||
|
||||
in_use = false;
|
||||
|
||||
Reference in New Issue
Block a user