191 lines
8.1 KiB
C++
191 lines
8.1 KiB
C++
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: besitemselector.inc
|
|
Description: Algemene interface functie om een artikel (bestel item) suggestbox te maken
|
|
|
|
parameters: fieldName: veldnaam van het key veld. Dit veld wordt gesubmit.
|
|
objectName: naam van het suggest object dat wordt aangemaakt.
|
|
params: object met meegegeven parameters.
|
|
bessrtdeel_key: initiële key waarde van het artikel (bestel item) die ingevuld moet worden.
|
|
autfunctionKey: verplicht fac_function_key
|
|
label: label dat voor het veld wordt weergegeven.
|
|
filtercode: extra filtercode voor de query die gebruikt wordt voor de suggest.
|
|
onChange: onchange op het textveld.
|
|
extraParamField: veldnaam voor een extra hidden parameter veld.
|
|
isBad: boolean die aangeeft dat het veld als ongeldig
|
|
en leeg weergegeven moet worden (true|false(default)).
|
|
readonly: geeft aan of het veld readonly weergegeven moet worden (true|false(default)).
|
|
*/ %>
|
|
|
|
<%
|
|
FCLTHeader.Requires({ plugins: ["suggest", "jQuery"], js: [] });
|
|
|
|
function FCLTbesitemselector(fieldName, objectName, params)
|
|
{
|
|
if (typeof params == "undefined") params = {};
|
|
|
|
var lwhenEmpty = params.readonly ? "" : L("lcl_select_besitem");
|
|
var lbesitemName = (device.test(device.supportsPlaceholder) ? "" : lwhenEmpty);
|
|
|
|
var lextraInit = "";
|
|
var filt_params = params; // params.artikelgroepKey kan ook meegegeven worden met urlAdd zodat de waarde uit een veld wordt gehaald
|
|
if (params.urlAdd)
|
|
{
|
|
for (i in params.urlAdd)
|
|
{
|
|
if (params.urlAdd[i].init)
|
|
filt_params[params.urlAdd[i].urlParam] = params.urlAdd[i].init;
|
|
}
|
|
}
|
|
if (params.bessrtdeel_key && params.bessrtdeel_key > 0)
|
|
{
|
|
//var filtClause = getFiltClauseBesItem(params);
|
|
//var extraInf = getExtraInfBesItem(params.extracode);
|
|
|
|
sql = "SELECT " + lcl.xsql('bes_srtdeel_omschrijving', 'isd.bes_srtdeel_key')
|
|
//+ extraInf
|
|
+ " FROM bes_srtdeel isd"
|
|
+ " WHERE isd.bes_srtdeel_verwijder IS NULL"
|
|
+ " AND (bes_srtdeel_vervaldatum IS NULL"
|
|
+ " OR bes_srtdeel_vervaldatum > SYSDATE)"
|
|
+ " AND bes_srtdeel_key = " + params.bessrtdeel_key;
|
|
//+ filtClause;
|
|
|
|
var oRs = Oracle.Execute(sql);
|
|
if (!oRs.eof)
|
|
{
|
|
lbesitemName = oRs("bes_srtdeel_omschrijving").value;
|
|
//lextraInit = oRs("extra").value;
|
|
}
|
|
// TODO: dit gaat nog niet zo lekker; als ik binnen het kennelijk geldende filter geen Name kan vinden
|
|
// moet-ie dan bv bad worden getoond? Of wat?
|
|
oRs.Close(); // close the recordset
|
|
}
|
|
else
|
|
{
|
|
//var filtClause = getFiltClauseBesItem(params);
|
|
//var extraInf = getExtraInfBesItem(params.extracode);
|
|
sql = "SELECT COUNT(*) aantal"
|
|
+ " FROM bes_srtdeel isd"
|
|
+ " WHERE isd.bes_srtdeel_verwijder IS NULL"
|
|
+ " AND (bes_srtdeel_vervaldatum IS NULL"
|
|
+ " OR bes_srtdeel_vervaldatum > SYSDATE)"
|
|
+ (params.artikelgroepKey
|
|
? " AND bsg.bes_srtgroep_key = " + params.artikelgroepKey
|
|
: "");
|
|
//+ filtClause;
|
|
var oRs = Oracle.Execute(sql);
|
|
// Als er maar één artikel (bestel item) is, dan deze selecteren.
|
|
if (oRs("aantal").value == 1)
|
|
{
|
|
sql = "SELECT isd.bes_srtdeel_key"
|
|
+ ", " + lcl.xsql('bes_srtdeel_omschrijving', 'isd.bes_srtdeel_key')
|
|
//+ extraInf
|
|
+ " FROM bes_srtdeel isd"
|
|
+ " WHERE isd.bes_srtdeel_verwijder IS NULL"
|
|
+ " AND (bes_srtdeel_vervaldatum IS NULL"
|
|
+ " OR bes_srtdeel_vervaldatum > SYSDATE)"
|
|
+ (params.artikelgroepKey
|
|
? " AND bsg.bes_srtgroep_key = " + params.artikelgroepKey
|
|
: "");
|
|
//+ filtClause;
|
|
oRs.Close(); // close the above recordset first
|
|
var oRs = Oracle.Execute(sql);
|
|
lbesitemName = oRs("bes_srtdeel_omschrijving").value;
|
|
//lextraInit = oRs("extra").value;
|
|
params.bessrtdeel_key = oRs("bes_srtdeel_key").value;
|
|
|
|
}
|
|
oRs.Close(); // close the recordset
|
|
}
|
|
|
|
// Bouw de url voor de persoons query op
|
|
var besitemQueryUrl = rooturl + "/appl/shared/suggest/SuggestBesItem.asp?a=1"
|
|
+ (params.perslidKey? "&perslidKey=" + params.perslidKey : "") // Kan ook met urlAdd meegegeven worden
|
|
+ (params.disc_key > 0? "&disc_key=" + params.disc_key : "")
|
|
+ (params.filtercode? "&filtcode=" + params.filtercode : "");
|
|
if (params.label)
|
|
{ %><tr>
|
|
<td class="label">
|
|
<label class="selector" for="<%=fieldName%>"><%=params.label%></label>
|
|
<% if (params.favouritelist)
|
|
{ %>
|
|
<span class="labelextra details" title="<%=L("lcl_bes_favour_title")%>" onclick="favouriteList()"><%=I('fa-star')%></span>
|
|
<% } %>
|
|
</td>
|
|
<td>
|
|
<%
|
|
} %>
|
|
<nobr>
|
|
<input id="<%=fieldName%>_show" class="fld<%=!params.readonly&¶ms.required? " required" : ""%>"
|
|
value="<%=safe.htmlattr(lbesitemName)%>" placeholder="<%=lwhenEmpty%>"
|
|
<%=params.readonly? " readonly":""%>
|
|
<%=params.onChange && !params.readonly? " sgonChange='" + params.onChange + "'":""%>>
|
|
<input type="hidden" id="<%=fieldName%>" name="<%=fieldName%>" value="<%=params.bessrtdeel_key%>">
|
|
<%
|
|
if (params.extraParamField)
|
|
{ /* het extra parameter veld wordt door suggest object gevuld */%>
|
|
<input type="hidden" id="<%=params.extraParamField%>" name="<%=params.extraParamField%>" value="<%=safe.htmlattr(lextraInit)%>">
|
|
<%
|
|
} %>
|
|
</nobr>
|
|
<%
|
|
|
|
if (!params.readonly)
|
|
{
|
|
if (params.urlAdd)
|
|
{
|
|
var urlAddTxt = "[";
|
|
for (var i = 0; i < params.urlAdd.length; i++)
|
|
{
|
|
urlAddTxt += (i > 0? ", " : "") + "{ urlParam: \"" + params.urlAdd[i].urlParam + "\", field: \"" + params.urlAdd[i].field + "\" }";
|
|
}
|
|
urlAddTxt += "]"
|
|
}
|
|
%>
|
|
<script type="text/javascript">
|
|
$(function()
|
|
{
|
|
<%=objectName%> = new Suggest({ objectName: "<%=objectName%>",
|
|
queryField: $("#<%=fieldName%>_show")[0],
|
|
queryUrl: "<%=besitemQueryUrl%>",
|
|
initKey: <%=params.bessrtdeel_key? params.bessrtdeel_key : -1%>,
|
|
keyField: $("#<%=fieldName%>")[0]
|
|
<%=params.urlAdd? ", urlAdd: " + urlAddTxt : ""%>
|
|
<%=params.extraParamField? ", extraParamField: $(\"" + "#" + params.extraParamField + "\")[0]" : ""%>
|
|
<%=params.extraParamField? ", initExtraParam: \"" + safe.jsstring("" + lextraInit) + "\"": ""%>
|
|
<%=params.isBad? ", isBad: true": ""%>
|
|
<%=params.readonly? ", fieldReadonly: true": ""%>
|
|
,highlightDescript: true
|
|
});
|
|
<% // Indien veld dat meegegeven is met urlAdd niet aanwezig is, dan deze als hidden veld aanmaken en vullen met init waarde.
|
|
// Beter is om dan de waarde van perslidKey gewoon als parameter mee te geven. Onderstaande code kan dan wellicht weer weg.
|
|
if (params.urlAdd)
|
|
{
|
|
for (i in params.urlAdd)
|
|
{ %>
|
|
if ($("#<%=params.urlAdd[i].field%>").length == 0)
|
|
$("#besitemfields").append('<input type="hidden" id="<%=params.urlAdd[i].field%>" name="<%=params.urlAdd[i].field%>" value="<%=safe.htmlattr(params.urlAdd[i].init)%>">');
|
|
<% }
|
|
}
|
|
|
|
if (params.callback)
|
|
{ %>
|
|
window["<%=params.callback%>"]();
|
|
<% } %>
|
|
});
|
|
</script>
|
|
<div id="besitemfields">
|
|
</div>
|
|
<%
|
|
}
|
|
|
|
if (params.label)
|
|
{ %>
|
|
</td></tr>
|
|
<%
|
|
}
|
|
}
|
|
%> |