208 lines
11 KiB
C++
208 lines
11 KiB
C++
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: bes/bes_flexkenmerk.inc
|
|
Description: Functie die html code genereert voor de presentatie van de flexvelden
|
|
Parameters: urole Rol van de gebruiker (frontend, frontoffice, backoffice, management info)
|
|
bes_key Bestelling key
|
|
disc_key Catalogus key
|
|
srtgroup_key Groep key
|
|
srtdeel_key Item key
|
|
kenmerktype Kenmerk type (B, I)
|
|
reado Readonly
|
|
advanced Geadvanceerd
|
|
prs_key Perslid key
|
|
ord Via ORD binnengekomen
|
|
Context: Functie wordt aangeroepen door
|
|
1) load_kenmerk.asp
|
|
2) bes_edit_bestelling.asp die initieel serverside deze html code invoegd.
|
|
Note:
|
|
*/ %>
|
|
<!-- #include file="../Shared/kenmerk_common.inc" -->
|
|
<%
|
|
function generateFlexKenmerkCode(params)
|
|
{
|
|
var urole = params.urole;
|
|
var fronto = (urole == "fo");
|
|
var backo = (urole == "bo");
|
|
var minfo = (urole == "mi");
|
|
var frontend = (urole == "fe" || (!fronto && !backo && !minfo));
|
|
|
|
var bes_key = params.bes_key; // Bestelling key
|
|
var disc_key = params.disc_key; // Catalogus key
|
|
var srtgroup_key = params.srtgroup_key; // Groep
|
|
var srtdeel_key = params.srtdeel_key; // Item
|
|
var kenmerktype = params.kenmerktype; // Kenmerktype
|
|
var bestelopdracht = params.bestelopdracht; // Bestelopdracht
|
|
var ord = params.ord; // Via ORD binnengekomen
|
|
var reado = params.reado; // Readonly
|
|
var advanced = params.advanced; // Geavanceerd
|
|
var hasfilter = params.hasfilter? params.hasfilter : null;
|
|
|
|
var autfunction = "";
|
|
switch(urole)
|
|
{
|
|
case "fe": autfunction = "WEB_BESUSE";
|
|
break;
|
|
case "fo": autfunction = "WEB_BESFOF";
|
|
break;
|
|
case "bo": autfunction = "WEB_BESBOF";
|
|
break;
|
|
case "mi": if (ord)
|
|
autfunction = "WEB_BESBOR"; // Via ORD binnengekomen dan ook ORD rechten pakken
|
|
else
|
|
autfunction = "WEB_BESBAC"; // Via BES binnengekomen dan ook BES rechten pakken
|
|
break;
|
|
}
|
|
|
|
// De functie checkAutorisation(autfunction) geeft een Response.End indien er geen autorisatie voor autfunction wordt gevonden
|
|
// TODO: Moeten we echt zo streng zijn? Fiatteur heeft namelijk geen BESUSE rechten
|
|
// var authparams = user.checkAutorisation(autfunction);
|
|
|
|
// Heb ik rechten om kenmerken met volgnummer 900 en hoger te zien?
|
|
// De functie checkAutorisation(autfunction, true) geeft null terug indien er geen autorisatie voor autofunction wordt gevonden
|
|
var besman_authparams = user.checkAutorisation("WEB_ORDSUP", true);
|
|
var besman = false;
|
|
if (besman_authparams)
|
|
besman = true;
|
|
|
|
if (kenmerktype != "B" && kenmerktype != "I" ||
|
|
kenmerktype != "B" && bestelopdracht)
|
|
{
|
|
%><p><%=L("lcl_internal_error")%></p><%
|
|
Response.End();
|
|
}
|
|
|
|
if (bes_key > 0) // Bestaande bestelling. Bij nieuwe bestelling wordt catalogus, groep en item doorgegeven.
|
|
{ // Catalogus, groep en item van bestelling opvragen
|
|
sql = "SELECT DISTINCT bd.ins_discipline_key catalogus"
|
|
+ " , isg.bes_srtgroep_key groep"
|
|
+ " , isd.bes_srtdeel_key item"
|
|
+ " FROM bes_bestelling_item bi"
|
|
+ " , bes_srtdeel isd"
|
|
+ " , bes_srtgroep isg"
|
|
+ " , bes_discipline bd"
|
|
+ " WHERE bi.bes_srtdeel_key = isd.bes_srtdeel_key"
|
|
+ " AND isd.bes_srtgroep_key = isg.bes_srtgroep_key"
|
|
+ " AND isg.ins_discipline_key = bd.ins_discipline_key"
|
|
+ " AND bi.bes_bestelling_key = " + bes_key;
|
|
oRs = Oracle.Execute(sql);
|
|
var disc_key = oRs("catalogus").Value;
|
|
var srtgroup_key = oRs("groep").Value;
|
|
var srtdeel_key = oRs("item").Value;
|
|
}
|
|
|
|
function isReadonly (volgnummer)
|
|
{
|
|
if (reado) return true;
|
|
}
|
|
|
|
var has_disc = (disc_key == -1 || disc_key == "" ? false : true); // Kan disc_key ook een string met bes_srtinstallatie_key s bevatten?
|
|
sql = "SELECT k.bes_kenmerk_key kenmerk_key"
|
|
+ " , 1 kenmerk_key_count"
|
|
+ " , sk.bes_srtkenmerk_key srtkenmerk_key"
|
|
+ " , COALESCE (" + lcl.xsql("k.bes_kenmerk_omschrijving", "k.bes_kenmerk_key")
|
|
+ " , " + lcl.xsql("sk.bes_srtkenmerk_omschrijving", "sk.bes_srtkenmerk_key") + ") kenmerk_omschrijving"
|
|
+ " , sk.bes_srtkenmerk_kenmerktype kenmerk_kenmerktype"
|
|
+ " , sk.fac_kenmerkdomein_key kenmerkdomein_key"
|
|
+ " , sk.bes_srtkenmerk_lengte kenmerk_lengte"
|
|
+ " , sk.bes_srtkenmerk_dec kenmerk_dec"
|
|
+ " , sk.bes_srtkenmerk_nmin kenmerk_nmin"
|
|
+ " , sk.bes_srtkenmerk_nmax kenmerk_nmax"
|
|
+ " , sk.bes_srtkenmerk_systeem kenmerk_systeem"
|
|
+ (bes_key > 0
|
|
? " , (SELECT MAX(CASE WHEN sk.bes_srtkenmerk_kenmerktype = 'M'"
|
|
+ " THEN NULL"
|
|
+ " ELSE v.bes_kenmerkbestell_waarde"
|
|
+ " END)"
|
|
+ " FROM bes_kenmerkbestell v"
|
|
+ " WHERE v.bes_bestelling_key = " + bes_key
|
|
+ " AND v.bes_kenmerk_key = k.bes_kenmerk_key"
|
|
+ " AND v.bes_kenmerkbestell_verwijder IS NULL)"
|
|
: " , " + lcl.xsql("k.bes_kenmerk_default", "k.bes_kenmerk_key")
|
|
) + " kenmerk_waarde"
|
|
+ " , k.bes_kenmerk_volgnummer kenmerk_volgnr"
|
|
+ " , " + lcl.xsql("sk.bes_srtkenmerk_dimensie", "sk.bes_srtkenmerk_key") + " kenmerk_dimensie"
|
|
+ " , " + lcl.xsql("k.bes_kenmerk_hint", "k.bes_kenmerk_key") + " kenmerk_hint"
|
|
+ " , " + lcl.xsql("k.bes_kenmerk_default", "k.bes_kenmerk_key") + " kenmerk_default"
|
|
+ " , k.bes_kenmerk_show_expr kenmerk_show_expr"
|
|
+ " , k.bes_kenmerk_verplicht kenmerk_verplicht"
|
|
+ " , k.bes_kenmerk_groep kenmerk_groep"
|
|
+ " , NULL otherpath"
|
|
+ " , k.bes_kenmerk_toonbaar kenmerk_toonbaar"
|
|
+ " , k.bes_kenmerk_uniek kenmerk_uniek"
|
|
+ " , k.bes_kenmerk_regexp kenmerk_regexp"
|
|
+ " , k.fac_functie_key"
|
|
+ " FROM bes_srtkenmerk sk"
|
|
+ " , bes_kenmerk k"
|
|
+ (kenmerktype == 'I'
|
|
? " WHERE (" + (has_disc ? "k.bes_srtinstallatie_key = " + disc_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')"
|
|
: " WHERE " + (has_disc ? "k.bes_srtinstallatie_key IN (" + disc_key + ")" : "(1=1)") )
|
|
+ (bestelopdracht
|
|
? " AND BITAND(k.bes_kenmerk_inlijst, 4) = 4"
|
|
: "")
|
|
+ " AND k.bes_kenmerk_verwijder IS NULL"
|
|
+ " AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key"
|
|
+ " AND sk.bes_srtkenmerk_verwijder IS NULL"
|
|
+ " AND k.bes_kenmerk_type = " + safe.quoted_sql(kenmerktype)
|
|
+ (!besman? " AND k.bes_kenmerk_volgnummer < 900 " : "")
|
|
+ " ORDER BY k.bes_kenmerk_volgnummer"
|
|
+ " , UPPER( COALESCE (" + lcl.xsql("k.bes_kenmerk_omschrijving", "k.bes_kenmerk_key")
|
|
+ " , " + lcl.xsql("sk.bes_srtkenmerk_omschrijving", "sk.bes_srtkenmerk_key") + "))";
|
|
|
|
|
|
if (advanced) // Nog harder de dubbelen er uit filteren. Een kenmerk kan bijvoorbeeld bij verschillende
|
|
{ // objectsoorten een ander volgnummer hebben en dat interesseert ons echt niet.
|
|
// Kenmerken van dezelfde kenmerksoort kunnen afwijkende labels (benamingen) hebben (FCLT#57667). Daarom niet het MIN nemen van kenmerk_omschrijving.
|
|
sql = "SELECT MIN(kenmerk_key) kenmerk_key"
|
|
+ " , count(kenmerk_key) kenmerk_key_count"
|
|
+ " , srtkenmerk_key"
|
|
// + " , MIN(mld_kenmerk_niveau) mld_kenmerk_niveau"
|
|
+ " , kenmerk_omschrijving kenmerk_omschrijving"
|
|
+ " , MIN(kenmerk_kenmerktype ) kenmerk_kenmerktype"
|
|
+ " , MIN(kenmerkdomein_key ) kenmerkdomein_key"
|
|
+ " , MIN(kenmerk_lengte ) kenmerk_lengte"
|
|
+ " , MIN(kenmerk_dec ) kenmerk_dec"
|
|
+ " , MIN(kenmerk_nmin ) kenmerk_nmin"
|
|
+ " , MIN(kenmerk_nmax ) kenmerk_nmax"
|
|
+ " , MIN(kenmerk_systeem ) kenmerk_systeem"
|
|
+ " , MIN(kenmerk_waarde ) kenmerk_waarde"
|
|
+ " , MIN(kenmerk_volgnr ) kenmerk_volgnr"
|
|
+ " , MIN(kenmerk_groep ) kenmerk_groep"
|
|
+ " , MIN(kenmerk_dimensie ) kenmerk_dimensie"
|
|
+ " , MIN(kenmerk_hint ) kenmerk_hint"
|
|
+ " , MIN(kenmerk_default ) kenmerk_default"
|
|
+ " , MIN(otherpath ) otherpath"
|
|
+ " , MIN(kenmerk_verplicht ) kenmerk_verplicht"
|
|
+ " , MIN(kenmerk_toonbaar ) kenmerk_toonbaar"
|
|
+ " , MIN(kenmerk_uniek ) kenmerk_uniek"
|
|
+ " , MIN(kenmerk_regexp ) kenmerk_regexp"
|
|
+ " , MIN(kenmerk_show_expr ) kenmerk_show_expr"
|
|
+ " , MIN(fac_functie_key ) fac_functie_key"
|
|
+ " FROM (" + sql + ")"
|
|
+ " GROUP BY srtkenmerk_key"
|
|
+ " , kenmerk_omschrijving";
|
|
}
|
|
|
|
var trn = 0;
|
|
|
|
listKenmerk(sql,
|
|
"BES",
|
|
bes_key,
|
|
{
|
|
kenmerk_search: advanced,
|
|
fnIsReadonly: isReadonly,
|
|
reado: reado,
|
|
mobile: params.mobile,
|
|
prs_key: params.prs_key,
|
|
hideVervallen: bes_key<0,
|
|
parentKey: bes_key,
|
|
defaults: params.defaults,
|
|
hasfilter: hasfilter
|
|
}
|
|
);
|
|
} %>
|