Files
Facilitor/APPL/BES/bes_flexkenmerk.inc

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
}
);
} %>