Files
Facilitor/APPL/Shared/besitemselector.inc
Peter Feij d1a407cb4d FSN#37938 m adressen via suggest
svn path=/Website/trunk/; revision=31684
2016-11-25 16:55:42 +00:00

185 lines
8.0 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?
}
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;
var oRs = Oracle.Execute(sql);
lbesitemName = oRs("bes_srtdeel_omschrijving").value;
//lextraInit = oRs("extra").value;
params.bessrtdeel_key = oRs("bes_srtdeel_key").value;
}
}
// 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="fldbesitem<%=!params.readonly&&params.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">
jQuery(document).ready
(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)%>">');
<% }
} %>
}
);
</script>
<div id="besitemfields">
</div>
<%
}
if (params.label)
{ %>
</td></tr>
<%
}
}
%>