FCLT#84467 rolcode vervangt de restricties die in volgnummer waren verstopt -savepoint

svn path=/Website/trunk/; revision=69031
This commit is contained in:
Peter Feij
2025-05-15 11:34:20 +00:00
parent 579205c602
commit 61362a9e1d
28 changed files with 429 additions and 447 deletions

View File

@@ -25,22 +25,27 @@ function generateFlexKenmerkBlock(params)
var advanced = params.advanced; // Geavanceerd
var hasfilter = params.hasfilter? params.hasfilter : null;
function isReadonly (volgnummer)
function isReadonly (oRs)
{
if (reado)
return true;
if (volgnummer < 100 && !params.this_alg.writeman)
return true;
if (volgnummer > 100 && !params.this_alg.writeuse)
return true;
var rolcode = oRs("kenmerk_rolcode").value;
var canWrite = (params.this_alg.writeman && (rolcode&1)) || (params.this_alg.writeuse && (rolcode&2));
return !canWrite; // readonly
}
function isInvisible(volgnummer, ktype)
function isInvisible(oRs)
{
var ktype = oRs("kenmerk_kenmerktype").value;
if (params.multi)
return (ktype == 'M' || ktype == 'F' || ktype == 'E'); // onzichtbaar bij multi
}
// Wat mag ik op basis van mijn autorisatie (potentieel) zien, bepaal mijn rolcode-masker
var myreadrolcode = 0 + (params.this_alg.readman ? 1 : 0)
+ (params.this_alg.readuse ? 2 : 0);
var sql = "SELECT k.alg_kenmerk_key kenmerk_key"
+ " , 1 kenmerk_key_count"
+ " , NULL srtkenmerk_key"
@@ -65,6 +70,7 @@ function generateFlexKenmerkBlock(params)
: " , " + lcl.xsql("k.alg_kenmerk_default", "k.alg_kenmerk_key")
) + " kenmerk_waarde"
+ " , k.alg_kenmerk_volgnr kenmerk_volgnr"
+ " , k.alg_kenmerk_rolcode kenmerk_rolcode"
+ " , " + lcl.xsql("k.alg_kenmerk_dimensie", "k.alg_kenmerk_key") +" kenmerk_dimensie"
+ " , " + lcl.xsql("k.alg_kenmerk_hint", "k.alg_kenmerk_key") +" kenmerk_hint"
+ " , " + lcl.xsql("k.alg_kenmerk_default", "k.alg_kenmerk_key") + " kenmerk_default"
@@ -79,12 +85,11 @@ function generateFlexKenmerkBlock(params)
+ " FROM alg_kenmerk k "
+ " WHERE k.alg_kenmerk_niveau = " + safe.quoted_sql(onrgoed_niveau)
+ " AND k.alg_kenmerk_verwijder IS NULL "
+ (!params.this_alg.readman? " AND alg_kenmerk_volgnr >= 100" : "")
+ (!params.this_alg.readuse? " AND alg_kenmerk_volgnr <= 100" : "")
+ " AND BITAND(alg_kenmerk_rolcode, " + myreadrolcode + ") > 0 "
+ " ORDER BY k.alg_kenmerk_volgnr"
+ " , " + lcl.xsql("k.alg_kenmerk_omschrijving", "k.alg_kenmerk_key");
var trn = 0;
var trn = 0; // fijn, maar waarom?
listKenmerk(sql,
"ALG", //module

View File

@@ -47,14 +47,16 @@ var afgehandeld = false;
var kenmerk_key = -1;
if (alg_key > 0)
{
// Als ik canReadNotes heb dan heb ik canUSEread en/of canMANread rechten.
// Wat mag ik op basis van mijn autorisatie (potentieel) zien, bepaal mijn rolcode-masker
var myreadrolcode = 0 + (this_alg.canMANread ? 1 : 0)
+ (this_alg.canUSEread ? 2 : 0);
// Is er een bijlage kenmerk?
var sql = "SELECT k.alg_kenmerk_key"
+ " FROM alg_kenmerk k"
+ " WHERE k.alg_kenmerk_niveau IN ('R','V','G','T','L')"
+ " AND k.alg_kenmerk_verwijder IS NULL"
// Als ik canReadNotes heb dan heb ik canUSEread en/of canMANread rechten.
+ (!this_alg.canMANread ? " AND k.alg_kenmerk_volgnr >= 100" : "")
+ (!this_alg.canUSEread ? " AND k.alg_kenmerk_volgnr <= 100" : "")
+ " AND BITAND(k.alg_kenmerk_rolcode, " + myreadrolcode + ") > 0 "
+ " AND ( k.alg_kenmerk_verplicht IS NULL"
+ " OR k.alg_kenmerk_verplicht = 0)"
+ " AND k.alg_kenmerk_kenmerktype = 'M'"

View File

@@ -63,7 +63,7 @@
+ "4;"+ L("mgt_kenmerkrolcodemld_4") + ";"
+ "2;"+ L("mgt_kenmerkrolcodemld_2");
break;
case "OPD":
case "OPD": // deze is nog TODO
kenmerkRoleCodeLOV = "7;"+ L("mgt_kenmerkrolcodeopd_7") + ";"
+ "5;"+ L("mgt_kenmerkrolcodeopd_5") + ";"
+ "4;"+ L("mgt_kenmerkrolcodeopd_4") + ";" // ORDSUP
@@ -71,9 +71,10 @@
+ "2;"+ L("mgt_kenmerkrolcodeopd_2") + ";" // Afmelden?
+ "1;"+ L("mgt_kenmerkrolcodeopd_1"); // ORD*
break;
case "PRS": /// TODO under construction
kenmerkRoleCodeLOV = "7;"+ L("mgt_kenmerkrolcodeprs_7") + ";" // alles
+ "4;"+ L("mgt_kenmerkrolcodeprs_4") + ";" // tbd
case "PRS":
kenmerkRoleCodeLOV = "7;"+ L("mgt_kenmerkrolcodeprs_7") + ";" // alles,
+ "6;"+ L("mgt_kenmerkrolcodeprs_6") + ";" // PRSUSE+PROFIL
+ "3;"+ L("mgt_kenmerkrolcodeprs_3") + ";" // PRSMAN+PRSUSE
+ "2;"+ L("mgt_kenmerkrolcodeprs_2") + ";" // PRSUSE
+ "1;"+ L("mgt_kenmerkrolcodeprs_1"); // PRSMAN
break;
@@ -90,70 +91,6 @@
return kenmerkRoleCodeLOV;
}
// vertaal de lettercode naar tekst, leek me prettig maar dat kan zo niet in de SQL
// is hier vermoedeijk niet op zijn plaats, maar waar dan wel (stored function in oracle?)
function kenmerktypecode2text(kenmerktype)
{
var kenmerktypetext = "";
switch (kenmerktype)
{
case "C":
kenmerktypetext = L("mgt_srtkenmerk_karakter");
break;
case "N":
kenmerktypetext = L("mgt_srtkenmerk_numeriek");
break;
case "D":
kenmerktypetext = L("mgt_srtkenmerk_datum");
break;
case "T":
kenmerktypetext = L("mgt_srtkenmerk_tijd");
break;
case "R":
kenmerktypetext = L("mgt_srtkenmerk_referentie_l");
break;
case "S":
kenmerktypetext = L("mgt_srtkenmerk_referentie_s");
break;
case "r":
kenmerktypetext = L("mgt_srtkenmerk_referentie_r");
break;
case "X":
kenmerktypetext = L("mgt_srtkenmerk_bestandsnaam");
break;
case "F":
kenmerktypetext = L("mgt_srtkenmerk_bestand");
break;
case "E":
kenmerktypetext = L("mgt_srtkenmerk_bestand_e");
break;
case "M":
kenmerktypetext = L("mgt_srtkenmerk_bestand_f");
break;
case "L":
kenmerktypetext = L("mgt_srtkenmerk_label");
break;
case "l":
kenmerktypetext = L("mgt_srtkenmerk_label_i");
break;
case "b":
kenmerktypetext = L("mgt_srtkenmerk_label_ii");
break;
case "Q":
kenmerktypkenmerktypetexteLOV = L("mgt_srtkenmerk_blanco");
break;
case "B":
kenmerktypetext = L("mgt_srtkenmerk_berekening");
break;
case "V":
kenmerktypetext = L("mgt_srtkenmerk_checkbox");
break;
default:
kenmerktypetext = "?";
}
return kenmerktypetext;
}
function buildKenmerktypeLOV(kenmerktype, params)
{
var kenmerktypeLOV = "";

View File

@@ -261,6 +261,7 @@ MODAL_BLOCK_START("besItemFlex" , L("lcl_flexible_properties") + ": " + desc, {
)
) + " kenmerk_waarde"
+ " , k.bes_kenmerk_volgnummer kenmerk_volgnr"
+ " , k.bes_kenmerk_rolcode kenmerk_rolcode"
+ " , " + 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"
@@ -286,8 +287,6 @@ MODAL_BLOCK_START("besItemFlex" , L("lcl_flexible_properties") + ": " + desc, {
+ " , UPPER( COALESCE (" + lcl.xsql("k.bes_kenmerk_omschrijving", "k.bes_kenmerk_key")
+ " , " + lcl.xsql("sk.bes_srtkenmerk_omschrijving", "sk.bes_srtkenmerk_key") + "))";
var trn = 0;
listKenmerk(sql,
"BES",
-1,

View File

@@ -60,12 +60,8 @@ function generateFlexKenmerkCode(params)
// 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;
// userhasORDSUP true betekent: user mag flexkenmerken rolcode 4 (voorheen > 900) zien/editen
var userhasORDSUP = user.has("WEB_ORDSUP");
if (kenmerktype != "B" && kenmerktype != "I" ||
kenmerktype != "B" && bestelopdracht)
@@ -93,11 +89,19 @@ function generateFlexKenmerkCode(params)
var srtdeel_key = oRs("item").Value;
}
function isReadonly (volgnummer)
function isReadonly (oRs)
{
// er is dus geen read/write onderscheid op veldniveau
if (reado) return true;
}
// Als we het netjes zouden doen en het zou nuttig zijn, dan zouden we de kenmerkautorisatie
// ook op deze manier doen: met welke rechten mag ik wat zien. Maar dat laten we eerst maar hoe het was
//// Wat mag ik op basis van mijn autorisatie (potentieel) zien, bepaal mijn rolcode-masker
//var myreadrolcode = 0 + (this_bes.authparams.readman ? 1 : 0)
// + (this_bes.authparams.readuse ? 2 : 0)
// + (userhasORDSUP? 4 : 0);
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"
@@ -123,6 +127,7 @@ function generateFlexKenmerkCode(params)
: " , " + lcl.xsql("k.bes_kenmerk_default", "k.bes_kenmerk_key")
) + " kenmerk_waarde"
+ " , k.bes_kenmerk_volgnummer kenmerk_volgnr"
+ " , k.bes_kenmerk_rolcode kenmerk_rolcode"
+ " , " + 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"
@@ -148,7 +153,7 @@ function generateFlexKenmerkCode(params)
+ " 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 " : "")
+ (!userhasORDSUP? " AND BITAND(k.bes_kenmerk_rolcode, 7) <> 4 " : "") // het ordsup-bit moet niet als enige (4, 100) gezet zijn
+ " 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") + "))";
@@ -171,6 +176,7 @@ function generateFlexKenmerkCode(params)
+ " , MIN(kenmerk_systeem ) kenmerk_systeem"
+ " , MIN(kenmerk_waarde ) kenmerk_waarde"
+ " , MIN(kenmerk_volgnr ) kenmerk_volgnr"
+ " , MIN(kenmerk_rolcode ) kenmerk_rolcode"
+ " , MIN(kenmerk_groep ) kenmerk_groep"
+ " , MIN(kenmerk_dimensie ) kenmerk_dimensie"
+ " , MIN(kenmerk_hint ) kenmerk_hint"
@@ -187,8 +193,6 @@ function generateFlexKenmerkCode(params)
+ " , kenmerk_omschrijving";
}
var trn = 0;
listKenmerk(sql,
"BES",
bes_key,

View File

@@ -74,7 +74,8 @@ oRs.Close();
var sql = "SELECT COUNT(*) aantal"
+ " FROM bez_kenmerk"
+ " WHERE bez_kenmerk_verwijder IS NULL"
+ " AND bez_kenmerk_volgnr >= 900";
+ " AND BITAND(bez_kenmerk_rolcode,4) = 4";
var oRs = Oracle.Execute(sql);
var hasEditableProperties = (oRs("aantal").Value > 0);
oRs.Close();
@@ -130,7 +131,7 @@ var alleen_afhandelingskenmerken = (!user.has("WEB_BEZBOF") || ( (S("bez_show_pr
var flexfilter = [];
if (alleen_afhandelingskenmerken)
{
flexfilter = ["k.bez_kenmerk_volgnr > 900"];
flexfilter = ["BITAND(k.bez_kenmerk_rolcode,4) = 4"];
}
if (!alleen_afhandelingskenmerken && (S("vis_remark") == 1 || S("vis_remark") == 2))

View File

@@ -16,8 +16,17 @@
<%
function getSqlBezFlex(bez_key, filter)
{
var filter = filter || [];
return sql = "SELECT k.bez_kenmerk_key kenmerk_key"
var filter = filter || [];
// het filter geeft optioneel extra condities, voorheen bv op basis van het volgnummer
// ik vermoed dat dat eigenlijk niet altijd meer nodig is als we hier de autorisatiecontrole
// sowieso doen maar dat laten we nog maar even intact.
// Wat mag ik op basis van mijn autorisatie (potentieel) zien, bepaal mijn rolcode-masker
var myreadrolcode = 0 + (user.has("WEB_BEZUSE") ? 1 : 0)
+ (user.has("WEB_BEZFOF") ? 2 : 0)
+ (user.has("WEB_BEZBOF") ? 4 : 0);
var sql = "SELECT k.bez_kenmerk_key kenmerk_key"
+ " , 1 kenmerk_key_count"
+ " , NULL srtkenmerk_key"
+ " , " + lcl.xsql("k.bez_kenmerk_omschrijving", "k.bez_kenmerk_key") + " kenmerk_omschrijving"
@@ -40,6 +49,7 @@ function getSqlBezFlex(bez_key, filter)
: " , " + lcl.xsql("k.bez_kenmerk_default", "k.bez_kenmerk_key")
) + " kenmerk_waarde"
+ " , k.bez_kenmerk_volgnr kenmerk_volgnr"
+ " , k.bez_kenmerk_rolcode kenmerk_rolcode"
+ " , " + lcl.xsql("k.bez_kenmerk_dimensie", "k.bez_kenmerk_key") + " kenmerk_dimensie"
+ " , " + lcl.xsql("k.bez_kenmerk_hint", "k.bez_kenmerk_key") + " kenmerk_hint"
+ " , " + lcl.xsql("k.bez_kenmerk_default", "k.bez_kenmerk_key") + " kenmerk_default"
@@ -53,9 +63,11 @@ function getSqlBezFlex(bez_key, filter)
+ " , k.fac_functie_key"
+ " FROM bez_kenmerk k "
+ " WHERE k.bez_kenmerk_verwijder IS NULL "
+ " AND BITAND(bez_kenmerk_rolcode, " + myreadrolcode + ") > 0 "
+ (filter.length > 0 ? " AND " + filter.join(" AND ") : "")
+ " ORDER BY k.bez_kenmerk_volgnr"
+ " , " + lcl.xsql("k.bez_kenmerk_omschrijving", "k.bez_kenmerk_key");
return sql;
}
function generateFlexKenmerkCode(params)
@@ -74,30 +86,41 @@ function generateFlexKenmerkCode(params)
var nolabel = params.nolabel;
var tmpfolder = params.tmpfolder;
var filter = params.filter;
var hidedefault = params.hidedefault; // Afhandelingskenmerken >= 900 met een default waarde hidden maken.
var hidedefault = params.hidedefault; // Afhandelingskenmerken >= 900 (rolcode&4) met een default waarde hidden maken.
var hasfilter = params.hasfilter? params.hasfilter : null;
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
function isReadonly (oRs)
{
if (reado)
return true
else
{
var backo = !user.has("WEB_BEZFOF");
return (ispopup && backo && volgnummer < 900)
}
return true;
// Backo mag kenmerken < 900 wel zien maar niet wijzigen.
// Kenmerken > 900 mag hij wel wijzigen.
// Dus ze worden readonly als ..
// Dit kan logischer en beter: het is in feite als ik geen andere rechten heb enzo.
//
// Ik zou denken: var my_bezrechten = user.func_enabled("BEZ") en dan de SCHRIJFrechten van de verschillende autorisaties
// matchen met de kenmerk_rolcode. De bestaande aanpak was echter: als ik geen BEZFOF ben ik dus BEZBOF(-only)
// en dan moeten de kenmerken 0xx readonly worden..in de popup.. Enfin, dat stond al in DJIN#37247
// De specifieke intentie is hier dan: als je in De Binnenmeld-popup bent (impliceert al BEZBOF)
// dan mag je de niet-binnenmeld-kenmerken niet invullen, dus die maak je readonly
var rolcode = oRs("kenmerk_rolcode").value;
var backo = !user.has("WEB_BEZFOF") && user.has("WEB_BEZBOF");
// dit zou toch genoeg mogen zijn.. var backo = user.has("WEB_BEZBOF");
return (ispopup && backo && !(rolcode&4) ) // vroeger volgnummmer < 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);
function isHidden (rolcode, defaultval)
{
// Afhandelingskenmerken met een default waarde hidden opnemen in het scherm
// zodat ze wel opgeslagen worden (kenmerken >= 900 en default is niet null).
return ((rolcode&4)==4 /*volgnummer >= 900*/ && defaultval != null);
}
var sql = getSqlBezFlex(bez_key, filter);
var trn = 0;
listKenmerk(sql,
"BEZ", // Module
bez_key,
@@ -126,5 +149,6 @@ function generateFlexKenmerkCode(params)
hasfilter: hasfilter
}
);
} %>
}
%>

View File

@@ -166,7 +166,7 @@ function bez_list(pautfunction, params)
var sql = "SELECT COUNT(*) aantal"
+ " FROM bez_kenmerk"
+ " WHERE bez_kenmerk_verwijder IS NULL"
+ " AND bez_kenmerk_volgnr > 900"
+ " AND BITAND(bez_kenmerk_rolcode, 4) = 4" //BEZBOF-kenmerken
//+ " AND bez_kenmerk_kenmerktype NOT IN ('F','M','E','X')"
+ " AND 1=" + (user.has("WEB_BEZBOF") ? 1 : 0); // alleen backo mag per bezoeker aanmelden.
var oRs = Oracle.Execute(sql);

View File

@@ -44,7 +44,8 @@ var flexfilter = [];
var hidedefault = false; // Verberg default afhandelingskenmerken.
if (!backo || alleen_afhandelingskenmerken)
{
flexfilter = ["(k.bez_kenmerk_volgnr < 900 OR (k.bez_kenmerk_volgnr >= 900 AND k.bez_kenmerk_default IS NOT NULL))"];
//flexfilter = ["(k.bez_kenmerk_volgnr < 900 OR (k.bez_kenmerk_volgnr >= 900 AND k.bez_kenmerk_default IS NOT NULL))"];
flexfilter = ["(BITAND(k.bez_kenmerk_rolcode, 4) = 0 OR (BITAND(k.bez_kenmerk_rolcode,4) = 4 AND k.bez_kenmerk_default IS NOT NULL))"];
hidedefault = true;
}

View File

@@ -32,30 +32,24 @@ function getFlexKenmerkCodeSql(params)
else
var this_cnt = cnt.func_enabled_cnt(disc_key_arr.join(",")); // Disciplines als multi string meegeven.
function isReadonly (volgnummer, poRs)
function isReadonly (oRs)
{
var isBijlage = inArray(poRs("kenmerk_kenmerktype").Value, ["E", "F", "M"]);
var isBijlage = inArray(oRs("kenmerk_kenmerktype").Value, ["E", "F", "M"]);
if (params.reado && !(params.mobile && isBijlage))
return true;
if (volgnummer <= 100 && this_cnt.canMANwrite)
return false; // die mag je bewerken met CNTMAN
if (volgnummer >= 100 && this_cnt.canUSEwrite)
return false; // die mag je bewerken met CNTUSE
return true; // blijkbaar toch niet...
var rolcode = oRs("kenmerk_rolcode").value;
var canWrite = (this_cnt.canMANwrite && (rolcode&1)) || (this_cnt.canUSEwrite && (rolcode&2));
return !canWrite; // readonly
}
function isInvisible(volgnummer, ktype) // MGE: In de search mode (overzichtscherm) zien we altijd alle flexkenmerken?? Deze functie wordt dan niet gebruikt.
function isInvisible(oRs) // MGE: In de search mode (overzichtscherm) zien we altijd alle flexkenmerken?? Deze functie wordt dan niet gebruikt.
{
if (volgnummer < 100 && !this_cnt.canMANread)
return true; // Invisible
if (volgnummer > 100 && !this_cnt.canUSEread /* incl readself */)
return true; // Invisible
return false;
var rolcode = oRs("kenmerk_rolcode").value;
var canRead = ( ((rolcode&1) && this_cnt.canMANread)
|| ((rolcode&2) && this_cnt.canUSEread /* incl readself */)
)
return !canRead; // invisible
}
if (cnt_key > 0)
@@ -65,6 +59,10 @@ function getFlexKenmerkCodeSql(params)
var disc_key_arr = [loRs("ins_discipline_key").value];
}
// Wat mag ik op basis van mijn autorisatie (potentieel) zien, bepaal mijn rolcode-masker
var myreadrolcode = 0 + (this_cnt.canMANread ? 1 : 0)
+ (this_cnt.canUSEread ? 2 : 0);
sql = "SELECT DISTINCT k.cnt_kenmerk_key kenmerk_key"
+ " , 1 kenmerk_key_count"
+ " , k.cnt_srtkenmerk_key srtkenmerk_key"
@@ -89,6 +87,7 @@ function getFlexKenmerkCodeSql(params)
: " , " + lcl.xsql("k.cnt_kenmerk_default", "k.cnt_kenmerk_key")
) + " kenmerk_waarde"
+ " , k.cnt_kenmerk_volgnummer kenmerk_volgnr"
+ " , k.cnt_kenmerk_rolcode kenmerk_rolcode"
+ " , " + lcl.xsql("t.cnt_srtkenmerk_dimensie", "t.cnt_srtkenmerk_key") + " kenmerk_dimensie"
+ " , " + lcl.xsql("k.cnt_kenmerk_hint", "k.cnt_kenmerk_key") + " kenmerk_hint"
+ " , " + lcl.xsql("k.cnt_kenmerk_default", "k.cnt_kenmerk_key") + " kenmerk_default"
@@ -107,21 +106,19 @@ function getFlexKenmerkCodeSql(params)
+ " AND k.cnt_kenmerk_verwijder IS NULL"
+ " AND k.cnt_srtkenmerk_key = t.cnt_srtkenmerk_key"
+ " AND t.cnt_srtkenmerk_verwijder IS NULL"
+ " AND BITAND(k.cnt_kenmerk_rolcode, " + myreadrolcode + ") > 0 "
+ (disc_key_arr.length > 0
? " AND (s.ins_discipline_key IN (" + disc_key_arr.join(",") + ") OR s.ins_discipline_key IS NULL)"
: "")
+ (!this_cnt.canMANread
? " AND cnt_kenmerk_volgnummer >= 100"
: "")
+ (!this_cnt.canUSEread
? " AND cnt_kenmerk_volgnummer <= 100"
: "")
+ (multiEdit
? " AND t.cnt_srtkenmerk_kenmerktype NOT IN ('Q','L','l','F','M','E','X')"
: "")
+ ( (params.kenmerk_keys && params.kenmerk_keys.length) // Specifieke kenmerk_keys opgevraagd?
? " AND k.cnt_kenmerk_key IN (" + params.kenmerk_keys.join(",") + ")"
: "");
: "")
+ " ORDER BY k.cnt_kenmerk_volgnummer"
+ " , UPPER( COALESCE (" + lcl.xsql("k.cnt_kenmerk_omschrijving", "k.cnt_kenmerk_key")
+ " , " + lcl.xsql("t.cnt_srtkenmerk_omschrijving", "t.cnt_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.
@@ -138,6 +135,7 @@ function getFlexKenmerkCodeSql(params)
+ " , MIN(kenmerk_systeem ) kenmerk_systeem"
+ " , MIN(kenmerk_waarde ) kenmerk_waarde"
+ " , MIN(kenmerk_volgnr ) kenmerk_volgnr"
+ " , MIN(kenmerk_rolcode ) kenmerk_rolcode"
+ " , MIN(kenmerk_dimensie ) kenmerk_dimensie"
+ " , MIN(kenmerk_hint ) kenmerk_hint"
+ " , MIN(kenmerk_default ) kenmerk_default"
@@ -155,16 +153,8 @@ function getFlexKenmerkCodeSql(params)
+ " ORDER BY kenmerk_volgnr"
+ " , UPPER (kenmerk_omschrijving)"
}
else
{
sql += " ORDER BY k.cnt_kenmerk_volgnummer"
+ " , UPPER( COALESCE (" + lcl.xsql("k.cnt_kenmerk_omschrijving", "k.cnt_kenmerk_key")
+ " , " + lcl.xsql("t.cnt_srtkenmerk_omschrijving", "t.cnt_srtkenmerk_key") + "))";
}
var trn = 0;
listkenmerk_params = { kenmerk_search: advanced
, hideVervallen: cnt_key<0
, fnIsReadonly: isReadonly

View File

@@ -8,8 +8,6 @@
Betere layout, altijd een invulveld
Parameters: cnt_key (altijd verplicht hier)
Note: Nu kan iedereen hier zijn, FE of FOBO. FE mag de interne notes niet zien, let daarop.
*/
var cnt_key = getQParamInt("cnt_key"); // Altijd verplicht cnt_key.
@@ -38,6 +36,11 @@ var afgehandeld = cnt_info.contract_status == 1;
var kenmerk_key = -1;
if (cnt_key > 0)
{
// Als ik canReadNotes heb dan heb ik canUSEread en/of canMANread rechten.
// Wat mag ik op basis van mijn autorisatie (potentieel) zien, bepaal mijn rolcode-masker
var myreadrolcode = 0 + (this_cnt.canMANread ? 1 : 0)
+ (this_cnt.canUSEread ? 2 : 0);
// Is er een bijlage kenmerk?
var sql = "SELECT k.cnt_kenmerk_key"
+ " FROM cnt_srtkenmerk t"
@@ -49,13 +52,7 @@ if (cnt_key > 0)
+ " AND k.cnt_kenmerk_verwijder IS NULL"
+ " AND t.cnt_srtkenmerk_verwijder IS NULL"
+ " AND c.cnt_contract_key = " + cnt_key
// Als ik canReadNotes heb dan heb ik canUSEread en/of canMANread rechten.
+ (!this_cnt.canMANread
? " AND k.cnt_kenmerk_volgnummer >= 100"
: "")
+ (!this_cnt.canUSEread
? " AND k.cnt_kenmerk_volgnummer <= 100"
: "")
+ " AND BITAND(k.cnt_kenmerk_rolcode, " + myreadrolcode + ") > 0 "
+ " AND (k.cnt_kenmerk_verplicht IS NULL"
+ " OR k.cnt_kenmerk_verplicht = 0)"
+ " AND t.cnt_srtkenmerk_kenmerktype = 'M'"
@@ -73,7 +70,7 @@ if (cnt_key > 0)
var upload_url = protectQS.create("../Shared/BijlagenForm.asp?module=CNT&multi=1&key=" + cnt_key + "&kenmerk_key=" + kenmerk_key);
}
notes.show_note2("CNT", cnt_key, kenmerk_key, this_cnt, afgehandeld, upload_url);
notes.show_note2("CNT", cnt_key, kenmerk_key, this_cnt, afgehandeld, upload_url);
%>
<% ASPPAGE_END(); %>

View File

@@ -4,7 +4,7 @@
File: FAC/faq_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)
Parameters:
faq_key FAQnummer
reado Readonly
advanced Geadvanceerd
@@ -13,13 +13,13 @@
1) load_kenmerk.asp
2) fac_faq_show.asp die initieel serverside deze html code invoegd.
3) fac_faq_edit.asp die initieel serverside deze html code invoegd.
Note:
*/ %>
<!-- #include file="../Shared/kenmerk_common.inc" -->
<%
function generateFlexKenmerkCode(params)
{
function isReadonly (volgnummer)
function isReadonly (oRs)
{
return reado;
}
@@ -61,6 +61,7 @@ function generateFlexKenmerkCode(params)
: " , " + lcl.xsql("k.faq_kenmerk_default", "k.faq_kenmerk_key")
) + " kenmerk_waarde"
+ " , k.faq_kenmerk_volgnr kenmerk_volgnr"
+ " , k.faq_kenmerk_rolcode kenmerk_rolcode"
+ " , " + lcl.xsql("k.faq_kenmerk_dimensie", "k.faq_kenmerk_key") + " kenmerk_dimensie"
+ " , " + lcl.xsql("k.faq_kenmerk_hint", "k.faq_kenmerk_key") + " kenmerk_hint"
+ " , " + lcl.xsql("k.faq_kenmerk_default", "k.faq_kenmerk_key") + " kenmerk_default"
@@ -99,4 +100,3 @@ function generateFlexKenmerkCode(params)
}
);
} %>

View File

@@ -4,7 +4,7 @@
File: FIN/fin_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)
Parameters:
fin_key Factuurnummer
reado Readonly
advanced Geadvanceerd
@@ -12,6 +12,7 @@
Context: Functie wordt aangeroepen door
1) load_kenmerk.asp
2) fin_edit.asp die initieel serverside deze html code invoegd.
en nog een paar
Note:
*/ %>
<!-- #include file="../Shared/kenmerk_common.inc" -->
@@ -31,9 +32,9 @@ function generateFlexKenmerkCode(params)
var inline = params.inline || false;
var hasfilter = params.hasfilter? params.hasfilter : null;
function isReadonly (volgnummer, poRs)
function isReadonly (oRs)
{
var isBijlage = inArray(poRs("kenmerk_kenmerktype").Value, ["E", "F", "M"]);
var isBijlage = inArray(oRs("kenmerk_kenmerktype").Value, ["E", "F", "M"]);
return reado && !(params.mobile && isBijlage);
}
@@ -85,6 +86,7 @@ function generateFlexKenmerkCode(params)
+ " , k.fin_kenmerk_systeem kenmerk_systeem"
+ " , " + kenmerkwaarde + " kenmerk_waarde"
+ " , k.fin_kenmerk_volgnr kenmerk_volgnr"
+ " , k.fin_kenmerk_rolcode kenmerk_rolcode"
+ " , " + lcl.xsql("k.fin_kenmerk_dimensie", "k.fin_kenmerk_key") + " kenmerk_dimensie"
+ " , " + lcl.xsql("k.fin_kenmerk_hint", "k.fin_kenmerk_key") + " kenmerk_hint"
+ " , " + lcl.xsql("k.fin_kenmerk_default", "k.fin_kenmerk_key") + " kenmerk_default"
@@ -105,8 +107,6 @@ function generateFlexKenmerkCode(params)
+ " ORDER BY k.fin_kenmerk_volgnr"
+ " , UPPER(" + lcl.xsql("k.fin_kenmerk_omschrijving", "k.fin_kenmerk_key") + ")";
var trn = 0;
listKenmerk(sql,
"FIN",
(kenmerk_niveau == "F"? fin_key : regel_key),

View File

@@ -113,28 +113,24 @@ function generateFlexKenmerkBlock(params)
srtdeelkey_array = [oRs("ins_srtdeel_key").Value];
}
function isReadonly (volgnummer, oRs)
{ // Zonder WEB_INSMAN of WEB_SLEBOF rechten zijn flexkenmerken met volgnummer <= 100 readonly.
if (volgnummer <= 100 && ins_key > 0 && !writeman && !writeslebof && !this_ins.canChangeOwn)
return true;
function isReadonly (oRs)
{
var rolcode = oRs("kenmerk_rolcode").value;
if (volgnummer >= 900 && lendout && fronto) // Fronto mag uitleenkenmerken altijd bewerken
return oRs("ins_kenmerk_toonbaar").Value == 1;
// Zonder WEB_INSUSE of WEB_SLEBOF rechten zijn flexkenmerken met volgnummer >= 100 && volgnummer <= 900 readonly.
if (volgnummer >= 100 && volgnummer <= 900 && ins_key > 0 && !writeuse && !writeslebof)
return true;
// Zonder WEB_INSFOF of WEB_SLEFOF rechten zijn flexkenmerken met volgnummer >= 900 readonly.
if (volgnummer >= 900 && ins_key > 0 && !writefof && !writeslefof)
return true;
// Bij het bewerken van ins_delen en als het bewerk niveau van het flexkenmerk objectsoort ("S") is dan dit flexkenmerk readonly weergeven (ook in edit mode)
if (bewerkniveau == 'D' && oRs("bewerk_niveau").Value != 'D')
return true; // readonly
// Je mag een kennmerk wijzigen als je de juiste autorisatie voor die categorie hebt: MAN/USE/FOF voor beheer, beheer en uitlenen
// Tijdens uitlenen (fronto) mag je uitleenkenmerken altijd bewerken
// Flexkenmerken van het objectSOORT ("S") mag je niet muteren bij het bewerken van een object
// dan dus dit flexkenmerk readonly weergeven (zelfs in edit mode)
var canWrite = ( ((rolcode&1) && (writeman || writeslebof || (ins_key > 0 && this_ins.canChangeOwn)))
|| ((rolcode&2) && (writeuse || writeslebof )) // check die changeown nog ff
|| ((rolcode&4) && (writefof || writeslefof || (lendout && fronto && oRs("ins_kenmerk_toonbaar").Value == 1)))
|| ((rolcode&4) && (writefof || writeslefof ))
|| (bewerkniveau == "D" && oRs("bewerk_niveau").Value == "D")
);
var isBijlage = inArray(oRs("kenmerk_kenmerktype").Value, ["E", "F", "M"]);
return reado && !(mobile && isBijlage);
return (reado && !(mobile && isBijlage)) || !canWrite;
}
var isLendOut = false;
@@ -231,6 +227,7 @@ function generateFlexKenmerkBlock(params)
? "k.ins_kenmerk_default"
: "''")) + " kenmerk_waarde"
+ " , k.ins_kenmerk_volgnummer kenmerk_volgnr"
+ " , k.ins_kenmerk_rolcode kenmerk_rolcode"
+ " , " + lcl.xsql("t.ins_srtkenmerk_dimensie", "t.ins_srtkenmerk_key") + " kenmerk_dimensie"
+ " , k.ins_kenmerk_hint kenmerk_hint"
+ " , k.ins_kenmerk_default kenmerk_default"
@@ -239,7 +236,7 @@ function generateFlexKenmerkBlock(params)
+ " , k.ins_kenmerk_groep kenmerk_groep"
+ " , NULL otherpath"
+ (!fronto && !advanced // als niet fronto dan uitleenkenmerken altijd readonly. Maar advanced zoeken is natuurlijk nooit readonly
? " , CASE WHEN (k.ins_kenmerk_volgnummer >= 900 OR ins_kenmerk_toonbaar = 1) AND"
? " , CASE WHEN (BITAND (k.ins_kenmerk_rolcode,4) = 4 OR ins_kenmerk_toonbaar = 1) AND" //TODONE uitzoeken
+ " (k.ins_kenmerk_default NOT LIKE '%##EXPR##%' OR k.ins_kenmerk_default IS NULL)"
+ " THEN 1" // readonly (lege waarden niet zichtbaar)
+ " ELSE 0"
@@ -348,6 +345,7 @@ function generateFlexKenmerkBlock(params)
+ " , MIN(kenmerk_systeem ) kenmerk_systeem"
+ " , MIN(kenmerk_waarde ) kenmerk_waarde"
+ " , MIN(kenmerk_volgnr ) kenmerk_volgnr"
+ " , MIN(kenmerk_rolcode ) kenmerk_rolcode"
+ " , MIN(kenmerk_dimensie ) kenmerk_dimensie"
+ " , MIN(kenmerk_hint ) kenmerk_hint"
+ " , MIN(kenmerk_default ) kenmerk_default"
@@ -373,18 +371,19 @@ function generateFlexKenmerkBlock(params)
+ " , " + lcl.xsql("t.ins_srtkenmerk_omschrijving", "t.ins_srtkenmerk_key") + "))";
}
function isInvisible(volgnummer, ktype)
function isInvisible(oRs)
{
var ktype = oRs("kenmerk_kenmerktype").value;
// allow ktype 'F' (file), for instance for signature
if (params.multi)
return (ktype == 'M' || ktype == 'E'); // onzichtbaar bij multi
}
function isHidden(volgnummer, ktype)
function isHidden(rolcode, ktype)
{
// Bij het uitlenen/innemen (lendout) moeten de kenmerken <900 wel aanwezig maar hidden zijn,
// omdat de expressie kenmerken >=900 die afhankelijk zijn van kenmerken <900 wel berekend moeten kunnen worden.
if (lendout && volgnummer < 900)
// Bij het uitlenen/innemen (lendout) moeten de kenmerken "<900" (rolcode 0xx) wel aanwezig maar hidden zijn,
// omdat de expressie kenmerken ">=900" (rolcode 1xx) die afhankelijk zijn van die kenmerken wel berekend moeten kunnen worden.
if (lendout && (rolcode&4) == 0)
return true;
}

View File

@@ -75,6 +75,7 @@ function generateFlexKenmerkBlock(params)
" ''")
) + " kenmerk_waarde"
+ " , k.ins_kenmerk_volgnummer kenmerk_volgnr"
+ " , k.ins_kenmerk_rolcode kenmerk_rolcode"
+ " , " + lcl.xsql("t.ins_srtkenmerk_dimensie", "t.ins_srtkenmerk_key") + " kenmerk_dimensie"
+ " , k.ins_kenmerk_hint kenmerk_hint"
+ " , k.ins_kenmerk_default kenmerk_default"
@@ -120,7 +121,7 @@ function generateFlexKenmerkBlock(params)
+ " , UPPER( COALESCE (" + lcl.xsql("k.ins_kenmerk_omschrijving", "k.ins_kenmerk_key")
+ " , " + lcl.xsql("t.ins_srtkenmerk_omschrijving", "t.ins_srtkenmerk_key") + "))";
function isReadonly (volgnummer)
function isReadonly (oRs)
{
return reado;
}

View File

@@ -70,8 +70,8 @@ scaffolding(this_model,
"fields": [
"id",
"contractpropertytype",
"attributetypehide", // die zouden we overal wel willen
"contractpropertydesc",
"attributetypehide",
"contractdiscipline",
"rolecode",
"group",

View File

@@ -222,8 +222,7 @@ var model_params = {
"readonly",
"inlist",
"measurement",
"clear", // voor uitgifte/inname
"location" // uitleg?
"clear" // voor uitgifte/inname
]
}
]

View File

@@ -80,9 +80,9 @@ function level_LOV()
+ ";O;" + L("lcl_mld_typeopdr");
else
v_level = "A;" + L("mld_srtdiscipline_m_all")
+ ";S;" + L("lcl_complain")
+ ";T;" + L("lcl_mld_vakgroeptype")
+ ";D;" + L("lcl_mld_vakgroep")
+ ";T;" + L("lcl_mld_vakgroeptype");
+ ";S;" + L("lcl_complain");
}
else
{
@@ -97,9 +97,9 @@ function level_LOV()
default: v_level = "P;" + L("lcl_mld_opdr_all")
+ ";O;" + L("lcl_mld_typeopdr")
+ ";A;" + L("mld_srtdiscipline_m_all")
+ ";S;" + L("lcl_complain")
+ ";T;" + L("lcl_mld_vakgroeptype")
+ ";D;" + L("lcl_mld_vakgroep")
+ ";T;" + L("lcl_mld_vakgroeptype");
+ ";S;" + L("lcl_complain");
}
}
return v_level;
@@ -107,7 +107,7 @@ function level_LOV()
var model_params = {
"search": {
"autosearch": false,
"autosearch": false, // bewust, dit is de enige, want het zijn er vaak veel en het zoekblok ben je dan steeds kwijt
"filters": [
"objectpropertydesc",
(isOpdrachtKenmerk ? "issuepropertytype" : "issuepropertytypename"),
@@ -128,7 +128,7 @@ var model_params = {
"js": ["./mld_kenmerk.js"]
}
},
"list": { /* wordt voor opdrachten vererop overruled */
"list": { /* wordt voor opdrachten verderop overruled */
"columns": [
//"id",
"disciplinetype",
@@ -138,13 +138,13 @@ var model_params = {
"issuepropertytype",
"objectpropertydesc",
"rolecode",
"group",
"required",
"attributetype",
//"group",
//"required",
//"level",
"authorization",
"code",
"filled",
"authorization",
"id"
],
"orderby": [
@@ -175,6 +175,7 @@ var model_params = {
"fields": [
"id",
"issuepropertytype",
"attributetype", // wordt schijnbaar niet (altijd) getoond
"objectpropertydesc",
"level",
"disciplinetype",
@@ -188,7 +189,6 @@ var model_params = {
"hint",
"regexp",
"code",
"attributetype",
"treatmentteam"
]
},

View File

@@ -8,7 +8,7 @@ var niveau = getQParam("level"); // [ B | A | P | C ]
var this_model = new model_prs_kenmerk(niveau);
scaffolding(this_model,
var model_params =
{
"search": {
"autosearch": true,
@@ -51,14 +51,14 @@ scaffolding(this_model,
"id",
"name",
"level",
"position", // bij perslid de optionele srtperslid, zou graag iets van Alle functies tonen igv NULL -- TODO help
"rolecode",
"group",
"sequence",
"propertydefault",
"hint",
"regexp",
"code",
"position" // TODO check wat dit is
"code"
]
},
{
@@ -100,6 +100,14 @@ scaffolding(this_model,
"transit": {
"level": niveau
}
});
};
// Bij personen is er een functieafhankelijkheid
if (niveau == 'P')
{
model_params.list.columns.splice(0, 0, "position");
}
scaffolding(this_model, model_params);
%>
<% ASPPAGE_END(); %>

View File

@@ -74,7 +74,6 @@ var model_params = {
]
},
"edit": {
"modal": true,
"requires": {
"js": ["./res_kenmerk.js"]
}

View File

@@ -1547,7 +1547,8 @@ mld = {
+ " AND k_new.mld_kenmerk_verwijder IS NULL"
+ " AND t_old.mld_srtkenmerk_verwijder IS NULL"
+ " AND t_new.mld_srtkenmerk_verwijder IS NULL"
+ " AND k_new.mld_kenmerk_volgnummer > 0"
+ " AND k_new.mld_kenmerk_rolcode > 0" // hetzelfde als BITAND(k_new.mld_kenmerk_rolcode, 255) > 0
//+ " AND k_new.mld_kenmerk_volgnummer > 0"
+ " AND k_old.mld_kenmerk_groep = k_new.mld_kenmerk_groep"
+ " AND ((k_old.mld_kenmerk_niveau = 'A' AND k_new.mld_kenmerk_niveau = 'A')"
+ " OR (k_old.mld_kenmerk_niveau NOT IN ('A') AND k_new.mld_kenmerk_niveau NOT IN ('A')))"
@@ -7701,6 +7702,7 @@ mld = {
var sql = "SELECT mkm.mld_kenmerk_key"
+ " , mkm.mld_kenmerk_niveau"
+ " , mkm.mld_kenmerk_volgnummer"
+ " , mkm.mld_kenmerk_rolcode"
+ " , COALESCE (" + lcl.xsql("mkm.mld_kenmerk_omschrijving", "mkm.mld_kenmerk_key")
+ " , " + lcl.xsql("msk.mld_srtkenmerk_omschrijving", "msk.mld_srtkenmerk_key") + ") mld_kenmerk_omschrijving"
+ " , msk.mld_srtkenmerk_kenmerktype"

View File

@@ -1271,8 +1271,7 @@ for (var u = 0; u < uitvkeyArray.length; u++)
+ " AND k.mld_srtkenmerk_key = t.mld_srtkenmerk_key"
+ " AND t.mld_srtkenmerk_verwijder IS NULL"
+ " AND t.mld_srtkenmerk_kenmerktype <> 'M'"
+ " AND (k.mld_kenmerk_volgnummer <= 100"
+ " OR k.mld_kenmerk_volgnummer >= 900)" // Alleen bij of na afmelden mogen afmeld-kenmerken tussen de 100..900
+ " AND DECODE(k.mld_kenmerk_rolcode, 5) > 0" // afmeld-only kenmerken (010) uitsluiten, dus x0x
+ " AND " + sql_kenmerkwaarde + " IS NOT NULL";
var sql_insert = "INSERT INTO mld_kenmerkopdr (mld_opdr_key"
+ " , mld_kenmerk_key"
@@ -1314,8 +1313,9 @@ for (var u = 0; u < uitvkeyArray.length; u++)
+ " AND k.mld_srtkenmerk_key = t.mld_srtkenmerk_key"
+ " AND t.mld_srtkenmerk_verwijder IS NULL"
+ " AND t.mld_srtkenmerk_kenmerktype <> 'M'"
+ " AND (k.mld_kenmerk_volgnummer <= 100"
+ " OR k.mld_kenmerk_volgnummer >= 900)" // Alleen bij of na afmelden mogen afmeld-kenmerken tussen de 100..900
+ " AND DECODE(k.mld_kenmerk_rolcode, 5) > 0" // afmeld-only kenmerken (010) uitsluiten, dus x0x
//+ " AND (k.mld_kenmerk_volgnummer <= 100"
//+ " OR k.mld_kenmerk_volgnummer >= 900)" // Alleen bij of na afmelden mogen afmeld-kenmerken tussen de 100..900
+ " AND " + sql_kenmerkwaarde + " IS NOT NULL"
+ " ORDER BY mld_kenmerk_volgnummer";
Oracle.Execute(sql_kenmwaarden);

View File

@@ -52,9 +52,9 @@ function getFlexKenmerkBlockSql(params)
var hasfilter = params.hasfilter? params.hasfilter : null;
var multiEdit = params.multiEdit? params.multiEdit : false;
// opdrman true betekent: user mag opdracht flexkenmerken > 900 zien/editen
var authparamsORDSUP = user.checkAutorisation("WEB_ORDSUP", true);
var opdrman = authparamsORDSUP && (authparamsORDSUP.PRSreadlevel < 9 || authparamsORDSUP.PRSwritelevel < 9 || authparamsORDSUP.ALGreadlevel < 9 || authparamsORDSUP.ALGwritelevel < 9)
// userhasORDSUP true betekent: user mag opdracht flexkenmerken rolcode 4 (voorheen > 900) zien/editen
var userhasORDSUP = user.has("WEB_ORDSUP");
var mld_status = -1;
if (mld_key > 0)
@@ -455,7 +455,7 @@ function getFlexKenmerkBlockSql(params)
(mld_key == -1
// Nieuwe melding.
// Waarde behandelblok voor nieuwe melding (mld_key == -1)
// 0) Kenmerk valt niet onder een behandelbaar blok: Afhankelijk van pvolgnummer.
// 0) Kenmerk valt niet onder een behandelbaar blok: Afhankelijk van pvolgnummer. TODO nagaan
// 3) Geen behandelteam ingevuld (default geen invloed): Afhankelijk van rechten.
? " CASE"
+ " WHEN t.mld_srtkenmerk_kenmerktype != 'b'"
@@ -465,7 +465,7 @@ function getFlexKenmerkBlockSql(params)
: ((changeMelding || newMelding) && afd_key > 0)
? " CASE"
// Waarde behandelblok voor beataande melding (mld_key > 0)
// 0) Kenmerk valt niet onder een behandelbaar blok: Afhankelijk van pvolgnummer.
// 0) Kenmerk valt niet onder een behandelbaar blok: Afhankelijk van pvolgnummer. TODO nagaan
// 1) Behandelteam ingevuld en user zit in het team: Blok altijd tonen.
// 2) Behandelteam ingevuld en user zit NIET in het team: Blok niet tonen.
// 3) Geen behandelteam ingevuld: Afhankelijk van rechten.
@@ -497,6 +497,7 @@ function getFlexKenmerkBlockSql(params)
+ " , t.mld_srtkenmerk_systeem kenmerk_systeem"
+ " , " + sql_waarde + " kenmerk_waarde"
+ " , k.mld_kenmerk_volgnummer kenmerk_volgnr"
+ " , k.mld_kenmerk_rolcode kenmerk_rolcode"
+ " , k.mld_kenmerk_groep kenmerk_groep"
+ " , " + lcl.xsql("t.mld_srtkenmerk_dimensie", "t.mld_srtkenmerk_key") + " kenmerk_dimensie"
+ " , " + lcl.xsql("k.mld_kenmerk_hint", "k.mld_kenmerk_key") + " kenmerk_hint"
@@ -577,19 +578,27 @@ function getFlexKenmerkBlockSql(params)
+ " )";
var sql1 = "";
if (changeOpdracht || newOpdracht || advancedOpdracht || advancedNoOpdrtype)
{
// PF/MGE 29-09-09: Ook bij nieuw opdrachten mag ik afmeld-kenmerken tussen de 100..900 niet zien
if ((showClose || (opdr_status == 6 || opdr_status == 7)) && changeOpdracht && !copy)
{ // dan wil ik ze wel zien
// ** FLEXKENMERKEN VAN OPDRACHT **
// PF/MGE 29-09-09: Ook bij nieuwe opdrachten mag ik afmeld-kenmerken tussen de 100..900 niet zien
if ((showClose || opdr_status == 6 || opdr_status == 7) && changeOpdracht && !copy)
{
// dan wil ik ze wel zien
}
else
{ // Alleen bij of na afmelden mogen afmeld-kenmerken tussen de 100..900
sql1 = " AND (k.mld_kenmerk_volgnummer <= 100 OR k.mld_kenmerk_volgnummer >= 900)";
{
// Alleen bij of na afmelden mogen afmeld-kenmerken tussen de 100..900 dus hier niet
//sql1 = " AND (k.mld_kenmerk_volgnummer <= 100 OR k.mld_kenmerk_volgnummer >= 900)";
sql1 = " AND BITAND(k.mld_kenmerk_rolcode, 7) <> 2"; // niet alleen afmeld/ORDBOF (2, 010)
}
// Alleen met opdrman rechten mag ik opdracht flexkenmerken boven de 900 zien
if (!opdrman)
sql1 += " AND k.mld_kenmerk_volgnummer <= 900";
// Alleen met userhasORDSUP mag ik opdrachtflexkenmerken (boven de 900) voor ORDSUP zien,
// dus als ik dat niet heb, kan ik die wegfilteren
if (!userhasORDSUP)
//sql1 += " AND k.mld_kenmerk_volgnummer <= 900";
sql1 = " AND BITAND(k.mld_kenmerk_rolcode, 7) <> 4"; // niet alleen afmeld/ORDBOF (4, 100)
if (close || cancel)
{
var arrGroep = [];
@@ -615,7 +624,8 @@ function getFlexKenmerkBlockSql(params)
+ (arrGroep.length? " OR k.mld_kenmerk_groep IN (" + arrGroep.join(",") + "))" : ")")
+ " AND " + sql_waarde + " IS NULL"
+ (close && S("mld_afmelden_popup_for_all_km") == 1 ? // Tenzij bijlages optioneel zijn bij het opslaan
" OR (k.mld_kenmerk_volgnummer >= 100 AND k.mld_kenmerk_volgnummer <= 900)" : "")
//" OR (k.mld_kenmerk_volgnummer >= 100 AND k.mld_kenmerk_volgnummer <= 900)" : "")
" OR BITAND(k.mld_kenmerk_rolcode, 2) > 0" : "") // x1x
+")";
}
@@ -629,14 +639,24 @@ function getFlexKenmerkBlockSql(params)
}
}
else
{ // changeMelding || newMelding || advancedMelding
// Alleen met mldbof rechten mag ik melding flexkenmerken boven de 900 zien. New feature 02-02-2010
if (!my_mldrechten.canRead("WEB_MLDBOF")) {
if (my_mldrechten.canChangeKenmerkBlok) {
sql1 += " AND ( " + behandelblok_select + " <> 0" // Bewerk-, en zichtbaarheid van behandelblokken regelen we in resp. isReadonly & isInvisible
+ " OR k.mld_kenmerk_volgnummer <= 900)";
{
// ** FLEXKENMERKEN VAN MELDING **
// changeMelding || newMelding || advancedMelding
// Hier worden conditities toegevoegd om kenmerken die ik op grond van autorisatie niet mag zien (laat staan editen)
// helemaal achterwege te laten. Later wordt van het resultaat nog bepaald of en hoe deze gepresenteerd moeten worden.
// (was: Alleen met BO-rechten mag ik melding flexkenmerken boven de 900 zien. New feature 02-02-2010)
// Als ik geen BO-rechten heb, dan laat ik de BO-kenmerken hier al achterwege, tenzij ik blokbehandelaar ben/kan zijn
if (!my_mldrechten.canRead("WEB_MLDBOF"))
{
if (my_mldrechten.canChangeKenmerkBlok)
{
// Bewerk-, en zichtbaarheid van behandelblokken regelen we in resp. isReadonly & isInvisible
sql1 += " AND (" + behandelblok_select + " <> 0"
+ " OR BITAND(k.mld_kenmerk_rolcode, 7) <> 4)"; // alles muv alleen BO (4, 0100)
} else {
sql1 += " AND k.mld_kenmerk_volgnummer <= 900";
sql1 += " AND BITAND(k.mld_kenmerk_rolcode, 7) <> 4"; // alles muv alleen BO (4, 0100)
}
}
@@ -644,13 +664,19 @@ function getFlexKenmerkBlockSql(params)
!my_mldrechten.canRead("WEB_MLDBOF") && !my_mldrechten.canRead("WEB_MLDFOF") &&
!my_mldrechten.canRead("WEB_MLDBO2") && !my_mldrechten.canRead("WEB_MLDBO3") &&
!my_mldrechten.canRead("WEB_MLDORD") && !my_mldrechten.canRead("WEB_MLDBAC")
) { // Met alleen WEB_MLDUSE rechten mag ik kenmerken tussen 800 en 900 niet zien
)
{
// Met alleen WEB_MLDUSE rechten mag ik kenmerken tussen 800 en 900 niet zien
// Dan laat ik de FO-kenmerken hier al achterwege, tenzij ik blokbehandelaar ben/kan zijn
// Ook hier: bewerk-, en zichtbaarheid van behandelblokken regelen we in resp. isReadonly & isInvisible
if (my_mldrechten.canChangeKenmerkBlok) {
sql1 += " AND ( " + behandelblok_select + " <> 0" // Bewerk-, en zichtbaarheid van behandelblokken regelen we in resp. isReadonly & isInvisible
+ " OR k.mld_kenmerk_volgnummer <= 800)";
sql1 += " AND ( " + behandelblok_select + " <> 0"
+ " OR BITAND(k.mld_kenmerk_rolcode, 7) <> 2)"; // alles muv alleen FO (2, 0010)
} else {
sql1 += " AND k.mld_kenmerk_volgnummer <= 800";
sql1 += " AND BITAND(k.mld_kenmerk_rolcode, 7) <> 2"; // alles muv alleen FO (2, 0010)
}
// ik voeg nog toe: rolcode 0 tonen we niet TODO: nagaan, alsook ook volgnummer < 0
// ?? sql1 += " AND BITAND(k.mld_kenmerk_rolcode, 7) > 0"; // alles muv alleen FO (2, 0010)
}
if (close || cancel)
@@ -687,6 +713,7 @@ function getFlexKenmerkBlockSql(params)
+ " , MIN(kenmerk_systeem ) kenmerk_systeem"
+ " , MIN(kenmerk_waarde ) kenmerk_waarde"
+ " , MIN(kenmerk_volgnr ) kenmerk_volgnr"
+ " , MIN(kenmerk_rolcode ) kenmerk_rolcode"
+ " , MIN(kenmerk_groep ) kenmerk_groep"
+ " , MIN(kenmerk_dimensie ) kenmerk_dimensie"
+ " , MIN(kenmerk_hint ) kenmerk_hint"
@@ -727,17 +754,25 @@ function getFlexKenmerkBlockSql(params)
var key = mld_key;
}
function isReadonly (pvolgnummer, poRs)
/**
* Bepaalt of een gegeven kenmerk in de UI alleen-lezen (readonly) moet zijn.
* @param {object} oRs Recordset-object met eigenschappen van het kenmerk.
* @returns {boolean} true als het kenmerk readonly moet zijn, anders false.
*/
function isReadonly (oRs)
{
var isBijlage = inArray(poRs("kenmerk_kenmerktype").Value, ["E", "F", "M"]);
var prolcode = oRs("kenmerk_rolcode").value;
var isBijlage = inArray(oRs("kenmerk_kenmerktype").Value, ["E", "F", "M"]);
// Als "reado" meegegeven is dan altijd readonly (mobile bijlagen uitgezonderd)
if (reado && !(params.mobile && isBijlage))
return true; // Als meegegeven dan altijd readonly (mobile bijlagen uitgezonderd)
return true;
if (changeMelding || newMelding) // Advanced zoeken (advancedOpdracht) is nooit readonly
{ // Als de user een behandelaar van het blok is die niet is afgemeld, dan zijn de bijbehorende kenmerken altijd door de user te wijzigen.
{ // Als de user een behandelaar van het blok is dat niet is afgemeld, dan zijn de kenmerken van dat blok altijd door de user te wijzigen.
// Waarde behandelblok.
// 0) Kenmerk valt niet onder een behandelbaar blok: Afhankelijk van pvolgnummer.
// Waarde [globale] behandelblok.
// 0) Kenmerk valt niet onder een behandelbaar blok: Afhankelijk van prolcode. TODO nagaan
// 1) Behandelteam ingevuld en user zit in het team: Blok altijd tonen.
// 2) Behandelteam ingevuld en user zit NIET in het team: Blok niet tonen.
// 3) Geen behandelteam ingevuld: Afhankelijk van rechten.
@@ -745,7 +780,7 @@ function getFlexKenmerkBlockSql(params)
if (behandelblok > 0) {
if (behandelblok == 1 && !blokisafgemeld)
return false;
// Als de user een behandelaar van het blok is die is afgemeld, dan de bijbehorende kenmerken readonly tonen.
// Als de user een behandelaar van het blok is dat is afgemeld, dan de kenmerken van dat blok readonly tonen.
else if (blokisafgemeld)
return true;
// als ik alleen rechten op een kenmerkenblok had en geen canFlexChange rechten heb, dan het kenmerk readonly tonen.
@@ -753,63 +788,59 @@ function getFlexKenmerkBlockSql(params)
return true;
// else gelden de rechten.
}
// JGL: een en ander kan veel compacter beschreven worden maar dat
// is dan niet meer te begrijpen.
// Dat was het behandelblok. Nu voor de normale kenmerken
// Voor bestaande meldingen zou eigenlijk my_mldrechten.canFlexChange meegenomen moeten worden.
// Maar daar zorgt de parameter reado nu al voor.
// Als de user het behandelbare blok moet invullen dan is deze niet readonly.
if (pvolgnummer <= 800)
{
if (my_mldrechten.canWrite("WEB_MLDFOF") && my_mldrechten.canWrite("WEB_MLDBOF"))
return false; //ik mag schrijven
// characteristics below 800 with mld_status 0 (Pending), 2 (nieuw) and 3 (te accepteren) can be changed by user with WEB_MLDFOF rights HSLE#55301
if ((newMelding && my_mldrechten.canWrite("WEB_MLDFOF")) || (my_mldrechten.canWrite("WEB_MLDFOF") && my_mldrechten.canFoChangeBelow800) || my_mldrechten.canFEwrite)
return false; // ik mag schrijven
return true;
}
if (pvolgnummer > 800 && pvolgnummer < 900)
{
if (my_mldrechten.canWrite("WEB_MLDFOF"))
return false; //ik mag schrijven
return true; // niet
}
if (pvolgnummer == 900)
{
if (my_mldrechten.canWrite("WEB_MLDFOF") || my_mldrechten.canWrite("WEB_MLDBOF"))
return false;
return true;
}
if (pvolgnummer > 900) // het enige wat overblijft
{
if (my_mldrechten.canWrite("WEB_MLDBOF"))
return false; // ik mag
return true; // niet
}
// Omgeschreven naar prolcode: wie mag zien en wijzigen:
// prolcode & 1 : FE
// prolcode & 2 : FO
// prolcode & 4 : BO
// dus wanneer is een kenmerk readonly? Precies andersom
var canWrite = (((prolcode & 1) && my_mldrechten.canFEwrite)
|| (((prolcode & 2) || newMelding || my_mldrechten.canFoChangeBelow800) && my_mldrechten.canWrite("WEB_MLDFOF")) // HSLE#55301
|| ((prolcode & 4) && my_mldrechten.canWrite("WEB_MLDBOF"))
)
return !canWrite;
}
if (changeOpdracht || newOpdracht) // Advanced zoeken (advancedOpdracht) is nooit readonly
{
if (opdr_status == 7)
return true; // bij AV mag je nooit wijzigen
if (opdr_status != 7 && pvolgnummer >= 900 && opdrman)
return false; // bij TV en opdrman mag je nog boven de 900 flexkenmerken aanpassen
if (pvolgnummer > 100 && pvolgnummer <= 900)
return !showClose; // afmeld-kenmerken mag je alleen tijdens het afmelden wijzigen
if (!cancel && !close) // Wijzigen is mogelijk bij afwijzen (cancel) en afronden (close) en in de statussen "Afgewezen(1)" en "Afgerond/Kosten Voltooid(9)"
return (poRs("kenmerk_obligation").Value == 1 && opdr_status != 1 && opdr_status != 9)
// uiteindelijk dan nog de flexkenmerken <= 100 (vermoeden is dat MLDBOF hier eigenlijk niet bij hoort)
return !my_mldrechten.canWrite("WEB_MLDBOF") && !my_mldrechten.canWrite("WEB_EXTORD") && !my_mldrechten.canWrite("WEB_ORDBO2") && !my_mldrechten.canWrite("WEB_ORDBOF");
// status 7 is nu dus sowieso weg
// deze kenmerken mag je met de juiste (true/false) autorisatie sowieso bewerken
if ((prolcode & 4) && userhasORDSUP)
return false;
// afmeld-kenmerken mag je alleen tijdens het afmelden wijzigen
if ((prolcode & 2))
return !showClose;
// Wijzigen is verder mogelijk bij afwijzen (cancel) en afronden (close)
// en in de statussen "Afgewezen(1)" en "Afgerond/Kosten Voltooid(9)"
if (!cancel && !close)
return (oRs("kenmerk_obligation").Value == 1 && opdr_status != 1 && opdr_status != 9)
// uiteindelijk dan nog de overige flexkenmerken (<= 100) conform mijn opdrachtautorisatie
if ((prolcode & 1))
return !(my_mldrechten.canWrite("WEB_EXTORD") || my_mldrechten.canWrite("WEB_ORDBO2") || my_mldrechten.canWrite("WEB_ORDBOF"));
}
return false; // 'k vind het wel best
}
// Deze functie bepaalt of kenmerken invisible moeten zijn,
// omdat ze onder een blok vallen waar ik niets binnen mag muteren.
function isInvisible (pvolgnummer, pktype, poRs)
{ // Labels altijd tonen. Deze worden wel hidden gemaakt als het blok geen kenmerken bevat.
if (pktype == "b" || pktype == "l" || pktype == "Q")
return false;
function isInvisible (oRs)
{
var ktype = oRs("kenmerk_kenmerktype").value;
// Labels altijd tonen. Deze worden wel hidden gemaakt als het blok geen kenmerken bevat.
if (ktype == "b" || ktype == "l" || ktype == "Q")
return false; // visible
var hasFOBO = my_mldrechten.canRead("WEB_MLDBOF") || my_mldrechten.canRead("WEB_MLDFOF") ||
my_mldrechten.canRead("WEB_MLDBO2") || my_mldrechten.canRead("WEB_MLDBO3") ||
@@ -817,7 +848,7 @@ function getFlexKenmerkBlockSql(params)
if ((newMelding || changeMelding) &&
behandelblok >= 2 && !hasFOBO)
{
return true;
return true; // invisible
}
return false;
}

View File

@@ -154,7 +154,7 @@ function mld_list (pautfunction, params)
+ " , sk.mld_srtkenmerk_kenmerktype"
+ " FROM mld_srtkenmerk sk, mld_kenmerk k"
+ " WHERE BITAND (mld_kenmerk_inlijst, 1) = 1"
+ " AND BITAND (mld_srtkenmerk_systeem, 4) = 0" // niet als vertrouwelijk
+ " AND BITAND (mld_srtkenmerk_systeem, 4) = 0" // niet als vertrouwelijk en TODO wellicht nog rolcode?
+ " AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key"
+ " AND k.mld_kenmerk_niveau NOT IN ('P', 'O')"
+ " AND k.mld_kenmerk_verwijder IS NULL"
@@ -592,6 +592,12 @@ function mld_list (pautfunction, params)
if (anyflex)
{
// Wat mag ik op basis van mijn autorisatie zien, bepaal mijn rolcode-masker. In principe.
// Je wilt controleren maar dan moet je voor elk record (!) de complete 3D-scope (!) controleren
// Dat is niet te doen, daarom leggen we de verantwoordelijkheid bij de applicatiebeheerder
// Die moet alleen kenmerken in de lijst laten zien die iedereen mag zien.
var myreadrolcode = 7; // alles.
sqln += ", (SELECT LISTAGG("
+ (multiflex ? "COALESCE (" + lcl.xsql("k.mld_kenmerk_omschrijving", "k.mld_kenmerk_key")
+ " , " + lcl.xsql("skm.mld_srtkenmerk_omschrijving", "skm.mld_srtkenmerk_key") + ")"
@@ -617,6 +623,7 @@ function mld_list (pautfunction, params)
+ " AND k.mld_kenmerk_key = km.mld_kenmerk_key"
+ " AND BITAND(k.mld_kenmerk_inlijst,1) = 1"
+ " AND BITAND(skm.mld_srtkenmerk_systeem,4) = 0" // niet als vertrouwelijk
// + " AND BITAND(k.mld_kenmerk_rolcode, "+ myreadrolcode +") > 0" // met waarde 7 voegt dat niks toe
+ " AND skm.mld_srtkenmerk_key = k.mld_srtkenmerk_key"
+ " AND skm.mld_srtkenmerk_verwijder IS NULL"
+ " AND k.mld_kenmerk_verwijder IS NULL"

View File

@@ -58,8 +58,8 @@ var multipleBijlagenTypes = false;
if (mld_key > 0)
{
// Zijn er een bijlage kenmerken?
var sql = mld.getMldKenmerk_sql(mld_key, {wheres: ["mkm.mld_kenmerk_volgnummer < 800",
"mkm.mld_kenmerk_volgnummer >= 0",
var sql = mld.getMldKenmerk_sql(mld_key, {wheres: ["BITAND(mkm.mld_kenmerk_rolcode, 1) > 0", // FE mag het zien
"mkm.mld_kenmerk_volgnummer >= 0", // negatieven zijn verstopt
"msk.mld_srtkenmerk_kenmerktype = 'M'",
"(mkm.mld_kenmerk_toonbaar = 0 OR mkm.mld_kenmerk_toonbaar IS NULL)"]}
);

View File

@@ -9,33 +9,56 @@
srt_key prs_srt_key
niveau "P",
publiconly als true dan alleen/alle kenmerken tussen 800 en 900 , ongeacht autorisatie
(phonebook gebruik)
reado false,
(phonebook gebruik) TODO CHECK WHAT TO DO
prsauthparams (resultaat van prs.checkAutorisation voor writeman e.d., alleen personen)
Context: Functie wordt aangeroepen door
1) load_kenmerk.asp
2) prs_edit_xxx.asp die initieel serverside deze html code invoegt.
Note:
Note: Kenmerken met kenmerk_rolcode&4 luisternen naar WEB_PROFIL voor persoonsgegevens, dus read/write als het om je EIGEN gevens gaat
Ik denk zo: TODO TESTEN
- persoon P-link_key = user_key
- afdeling A-link_key = user_key.afdeling_key
- bedrijf B-link_key = user_key.afdeling_key.bedrijf_key
- bedrijf C-link_key = contactpersoon_key[user_key]
*/ %>
<!-- #include file="../Shared/kenmerk_common.inc" -->
<%
function generateFlexKenmerkCode(params)
{
var link_key = params.link_key; // organisatieding-key (B/A/C/P-key)
var srt_key = params.srt_key; // soort perslid
var niveau = params.niveau; // Onroerendgoed niveau (B/A/C/P)
var advanced = params.advanced; // Geavanceerd
var reqId = params.reqId; // Perslid key (!search && multiMode)
var reado = params.reado; // Readonly
var hasfilter = params.hasfilter? params.hasfilter : null;
var link_key = params.link_key; // organisatieding-key (B/A/C/P-key)
var srt_key = params.srt_key; // soort perslid
var niveau = params.niveau; // Onroerendgoed niveau (B/A/C/P)
var advanced = params.advanced; // Geavanceerd
var reqId = params.reqId; // Perslid key (!search && multiMode)
var reado = params.reado; // Readonly
var hasfilter = params.hasfilter ? params.hasfilter : null;
// Om de een of andere reden wordt deze voor P al meegegeven, verderop kijken we zelf als dat niet zo is.
//if (niveau=="P")
// var params.prsauthparams = prs.checkAutorisation(prs_key);
// Voor het kunnen zien/editen van "eigen" kenmerken kijken we naar de PROFIL-autorisatie
var prsauthparams = {}
var itsmine = ( (niveau=="P" && link_key == user_key)
|| (niveau=="A" && link_key == user.prs_afdeling_key())
|| (niveau=="B" && link_key == user.afdeling().prs_bedrijf_key())
|| (niveau=="C" && link_key == user.isBedrijfContact(link_key))
);
var authparamsSELF= user.checkAutorisation("WEB_PROFIL", true);
prsauthparams.readself = itsmine && (authparamsSELF.PRSreadlevel < 9 || authparamsSELF.ALGreadlevel < 9);
prsauthparams.writeself = itsmine && (authparamsSELF.PRSwritelevel < 9 || authparamsSELF.ALGwritelevel < 9);
// Voor afdelingen en contactpersonen zijn we heel flexibel. Waarom?
// Mogelijk omdat we hier alleen komen als we al minstens (lees) autorisatie hadden?
// Voor afdelingen en contactpersonen zijn we heel flexibel
if (niveau=="A" || niveau=="C")
params.prsauthparams = { writeman: true, writeuse: true, readman: true, readuse: true, readself: true, writeself: true }
// writeuse and readuse autorisation for company
params.prsauthparams = { writeman: true, writeuse: true, readman: true, readuse: true, readself: prsauthparams.readself, writeself: prsauthparams.writeself }
else if (niveau=="B")
{
params.prsauthparams = { writeman: true, writeuse: true, readman: true, readuse: true, readself: true, writeself: true }
params.prsauthparams = { writeman: true, writeuse: true, readman: true, readuse: true, readself: prsauthparams.readself, writeself: prsauthparams.writeself }
// Een eenvoudig contactpersoon mag de MAN-kenmerken niet zien
if (user.iamContact(link_key))
{
params.prsauthparams.writeman = false;
@@ -44,57 +67,50 @@ function generateFlexKenmerkCode(params)
}
else if (niveau =="P" && !params.prsauthparams) // flex search en profiel
{
params.prsauthparams = { readman: true, readuse: true, readself: link_key == user_key }
params.prsauthparams = { readman: true, readuse: true, readself: prsauthparams.readself, writeself: prsauthparams.writeself }
var authparamsUSE = user.checkAutorisation("WEB_PRSUSE", true)||{PRSreadlevel: 9};
var authparamsMAN = user.checkAutorisation("WEB_PRSMAN", true)||{PRSreadlevel: 10};
// Als authparamsMAN en authparamsUSE verschillen zou het heel ingewikkeld worden.
// Daarom tonen we dan voor de veiligheid geen MAN meer.
// Daarom tonen we dan voor de veiligheid geen MAN meer. Beetje lomp
if (authparamsMAN.PRSreadlevel > -1 && authparamsMAN.PRSreadlevel != authparamsUSE.PRSreadlevel)
params.prsauthparams.readman = false;;
params.prsauthparams.readman = false;
if (authparamsUSE.PRSreadlevel > -1)
params.prsauthparams.readuse = false;;
params.prsauthparams.readuse = false;
}
// Van jezelf mag je vanalles zien.
if (params.prsauthparams.readself)
params.prsauthparams.readuse = true;
// Van jezelf mag je vanalles zien. -> dit gaat nu vanzelf met rolcode, die je kunt combineren
function isReadonly (volgnummer)
function isReadonly (oRs)
{
if ( params.reado )
return true;
if (volgnummer <= 100 && params.prsauthparams.writeman )
return false; // die mag je bewerken met PRSMAN
var rolcode = oRs("kenmerk_rolcode").value;
var canWrite = ( ((rolcode&1) && params.prsauthparams.writeman)
|| ((rolcode&2) && params.prsauthparams.writeuse)
|| ((rolcode&4) && prsauthparams.writeself)
);
if (volgnummer >= 800 && params.prsauthparams.writeself )
return false; // die mag ik bewerken
if (volgnummer >= 100 && params.prsauthparams.writeuse )
return false; // die mag je bewerken met PRSUSE
return true; // blijkbaar toch niet...
return !canWrite; // readonly
}
// Merk op dat een deel ook al door de query is uitgefilterd
function isInvisible(volgnummer, ktype)
function isInvisible(oRs)
{
if (volgnummer<100 && !params.prsauthparams.readman )
return true; // Invisible
var rolcode = oRs("kenmerk_rolcode").value;
var canRead = ( ((rolcode&1) && params.prsauthparams.readman)
|| ((rolcode&2) && params.prsauthparams.readuse) /* incl readself */
|| ((rolcode&4) && (prsauthparams.readself || params.publiconly)) // sowieso wel *visible* in telefoonboekje, ongeacht autorisatie TODO CHECK
);
// Boven de 900 zijn de kenmerken privacy gevoelig->niet in telefoonboekje
if (params.publiconly && volgnummer > 900)
return true; // invisible in telefoonboekje
if (params.publiconly && volgnummer > 800)
return false; // sowieso wel *visible* in telefoonboekje, ongeacht autorisatie
if (volgnummer>100 && !params.prsauthparams.readuse /* incl readself */)
return true; // Invisible
return false;
return !canRead; // invisible
}
var authparamsPHB = user.checkAutorisation("WEB_PHONEB", true);
// Wat mag ik op basis van mijn autorisatie (potentieel) zien, bepaal mijn rolcode-masker
var myreadrolcode = 0 + (params.prsauthparams.readman ? 1 : 0)
+ (params.prsauthparams.readuse ? 2 : 0)
+ (params.prsauthparams.readself? 4 : 0);
var sql = "SELECT k.prs_kenmerk_key kenmerk_key"
+ " , 1 kenmerk_key_count"
@@ -120,6 +136,7 @@ function generateFlexKenmerkCode(params)
: " , " + lcl.xsql("k.prs_kenmerk_default", "k.prs_kenmerk_key")
) + " kenmerk_waarde"
+ " , k.prs_kenmerk_volgnr kenmerk_volgnr"
+ " , k.prs_kenmerk_rolcode kenmerk_rolcode"
+ " , " + lcl.xsql("k.prs_kenmerk_dimensie", "k.prs_kenmerk_key") + " kenmerk_dimensie"
+ " , " + lcl.xsql("k.prs_kenmerk_hint", "k.prs_kenmerk_key") + " kenmerk_hint"
+ " , " + lcl.xsql("k.prs_kenmerk_default", "k.prs_kenmerk_key") + " kenmerk_default"
@@ -134,14 +151,12 @@ function generateFlexKenmerkCode(params)
+ " FROM prs_kenmerk k "
+ " WHERE k.prs_kenmerk_niveau = " + safe.quoted_sql(niveau)
+ " AND k.prs_kenmerk_verwijder IS NULL "
+ " AND BITAND(k.prs_kenmerk_rolcode, " + myreadrolcode + ") > 0 "
+ " AND (k.prs_srtperslid_key IS NULL "
+ ((niveau=="P" && srt_key > 0)
? " OR k.prs_srtperslid_key = "+ srt_key +")"
: ")"
)
+ (!params.prsauthparams.readman? " AND prs_kenmerk_volgnr >= 100" : "")
+ (!params.prsauthparams.readuse && !authparamsPHB? " AND prs_kenmerk_volgnr <= 100" : "")
+ (!params.prsauthparams.readuse && authparamsPHB? " AND prs_kenmerk_volgnr BETWEEN 800 AND 900" : "")
+ " ORDER BY k.prs_kenmerk_volgnr"
+ " , " + lcl.xsql("k.prs_kenmerk_omschrijving", "k.prs_kenmerk_key");

View File

@@ -90,27 +90,18 @@ function generateFlexKenmerkBlock(params)
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)
{ // Mag ik de kenmerken wijzigen?
if (reado) return true; // Als meegegeven dan altijd readonly
// Mag ik de kenmerken *niet* wijzigen?
function isReadonly (oRs)
{
// Als meegegeven dan altijd readonly
if (reado) return true;
var rolcode = oRs("kenmerk_rolcode").value;
if (volgnummer < 100) // FO && BO altijd, FE alleen buiten de expire-tijden
{
if (my_resrechten.canWrite("WEB_RESFOF") || my_resrechten.canWrite("WEB_RESBOF"))
return false; // die mogen altijd
var canWrite = ( ((rolcode&1) && !readofe)
|| ((rolcode&2) && my_resrechten.canWrite("WEB_RESFOF"))
|| ((rolcode&4) && my_resrechten.canWrite("WEB_RESBOF")));
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");
return !canWrite; // readonly
}
if (act_change)
@@ -137,6 +128,21 @@ function generateFlexKenmerkBlock(params)
+ " AND v.res_kenmerk_key = k.res_kenmerk_key" // res_kenmerk_key is uniek
+ " AND v.res_kenmerkwaarde_verwijder IS NULL)";
var myreadrolcode = 0
// Wat mag ik op basis van mijn autorisatie (potentieel) zien, bepaal mijn rolcode-masker
// Met WEB_RESBAC mag ik alles zien
if (my_resrechten.canRead("WEB_RESBAC")
myreadrolcode = 7;
else
myreadrolcode = 0 + (my_resrechten.canRead("WEB_RESUSE") ? 1 : 0)
+ (my_resrechten.canRead("WEB_RESFOF") ? 2 : 0)
+ (my_resrechten.canRead("WEB_RESBOF") ? 4 : 0);
// Voor *nieuwe* reserveringen negeren we RESBOF nog even.
// Omdat we (meestal) nog geen catalogus/discipline hebben op dit moment zie je anders
// als je maar *ergens* RESBOF voor hebt al te veel kenmerken
if (rsv_ruimte_key < 0 && !params.advanced) // kennelijk niet bij zoeken
myreadrolcode = myreadrolcode - 4;
sql = "SELECT k.res_kenmerk_key kenmerk_key"
+ " , 1 kenmerk_key_count"
@@ -155,6 +161,7 @@ function generateFlexKenmerkBlock(params)
: " , " + lcl.xsql("k.res_kenmerk_default", "k.res_kenmerk_key")
) + " kenmerk_waarde"
+ " , k.res_kenmerk_volgnummer kenmerk_volgnr"
+ " , k.res_kenmerk_rolcode kenmerk_rolcode"
+ " , " + lcl.xsql("t.res_srtkenmerk_dimensie", "t.res_srtkenmerk_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"
@@ -176,34 +183,9 @@ function generateFlexKenmerkBlock(params)
: "")
+ " AND k.res_kenmerk_verwijder IS NULL"
+ " AND k.res_srtkenmerk_key = t.res_srtkenmerk_key"
+ " AND t.res_srtkenmerk_verwijder IS NULL";
// 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_ruimte_key < 0 && !params.advanced))
{ // 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_ruimte_key < 0 && !params.advanced))
{ // 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";
}
}
sql += " ORDER BY k.res_kenmerk_volgnummer"
+ " AND t.res_srtkenmerk_verwijder IS NULL"
+ " AND BITAND(k.res_kenmerk_rolcode, " + myreadrolcode + ") > 0 "
+ " ORDER BY k.res_kenmerk_volgnummer"
+ " , UPPER( COALESCE (" + lcl.xsql("k.res_kenmerk_omschrijving", "k.res_kenmerk_key")
+ " , " + lcl.xsql("t.res_srtkenmerk_omschrijving", "t.res_srtkenmerk_key") + "))";
@@ -224,6 +206,7 @@ function generateFlexKenmerkBlock(params)
+ " , MIN(kenmerk_systeem ) kenmerk_systeem"
+ " , MIN(kenmerk_waarde ) kenmerk_waarde"
+ " , MIN(kenmerk_volgnr ) kenmerk_volgnr"
+ " , MIN(kenmerk_rolcode ) kenmerk_rolcode"
+ " , MIN(kenmerk_groep ) kenmerk_groep"
+ " , MIN(kenmerk_dimensie ) kenmerk_dimensie"
+ " , MIN(kenmerk_hint ) kenmerk_hint"
@@ -240,7 +223,6 @@ function generateFlexKenmerkBlock(params)
+ " , kenmerk_omschrijving";
}
var trn = 0;
listKenmerk(sql,
"RES",

View File

@@ -3,13 +3,13 @@
$Id$
File: res/res_flexkenmerk_art.inc
Description: Functie die html code genereert voor de presentatie van de flexvelden van artikelen
Parameters: urole Rol van de gebruiker (frontend, frontoffice, backoffice, management info)
reado Readonly
Description: Functie die html code genereert voor de presentatie van de flexvelden van reserveringsartikelen
Parameters: reado Readonly
advanced Geadvanceerd
Context: Functie wordt aangeroepen door
1) load_kenmerk.asp
2) bez_edit_xxx.asp die initieel serverside deze html code invoegd.
1) res_cat.inc
Note: We ondersteunen ook reserverings kenmerken bij een rsv_ruimte.
*/ %>
<!-- #include file="../Shared/kenmerk_common.inc" -->
@@ -26,29 +26,36 @@ function generateFlexKenmerkCodeArt(params)
var my_resrechten = user.func_enabled2("RES", {ins_discipline_key: discipline_key}); // res.func_enabled(rsv_ruimte_key) is overkill?
function isReadonly (volgnummer)
{ // Mag ik de kenmerken wijzigen?
if (reado) return true; // Als meegegeven dan altijd readonly
function isReadonly (oRs)
{
// Als meegegeven dan altijd readonly
if (reado)
return true;
if (volgnummer < 100) // FO && BO altijd, FE alleen buiten de expire-tijden
{
if (my_resrechten.canWrite("WEB_RESFOF") || my_resrechten.canWrite("WEB_RESBOF"))
return false; // die mogen altijd
var rolcode = oRs("kenmerk_rolcode").value;
var canWrite = ( ((rolcode&1) && !params.readofe)
|| ((rolcode&2) && my_resrechten.canWrite("WEB_RESFOF"))
|| ((rolcode&4) && my_resrechten.canWrite("WEB_RESBOF")));
return params.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");
return !canWrite;
}
var myreadrolcode = 0
// Wat mag ik op basis van mijn autorisatie (potentieel) zien, bepaal mijn rolcode-masker
// Met WEB_RESBAC mag ik alles zien
if (my_resrechten.canRead("WEB_RESBAC")
myreadrolcode = 7;
else
myreadrolcode = 0 + (my_resrechten.canRead("WEB_RESUSE") ? 1 : 0)
+ (my_resrechten.canRead("WEB_RESFOF") ? 2 : 0)
+ (my_resrechten.canRead("WEB_RESBOF") ? 4 : 0);
// Voor *nieuwe* reserveringen negeren we RESBOF nog even.
// Omdat we (meestal) nog geen catalogus/discipline hebben op dit moment zie je anders
// als je maar *ergens* RESBOF voor hebt al te veel kenmerken
if (rsv_ruimte_key < 0 && !params.advanced) // kennelijk niet bij zoeken
myreadrolcode = myreadrolcode - 4;
var sql = "SELECT k.res_kenmerk_key kenmerk_key"
+ " , 1 kenmerk_key_count"
+ " , sk.res_srtkenmerk_key srtkenmerk_key"
@@ -88,39 +95,11 @@ function generateFlexKenmerkCodeArt(params)
+ " WHERE k.res_srtkenmerk_key = sk.res_srtkenmerk_key"
+ " AND k.res_kenmerk_verwijder IS NULL"
+ " AND sk.res_srtkenmerk_verwijder IS NULL"
+ " AND (k.res_artikel_key = " + artikel_key + " OR k.res_discipline_key = " + discipline_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";
}
}
sql += " ORDER BY k.res_kenmerk_volgnummer"
+ " , UPPER( COALESCE (" + lcl.xsql("k.res_kenmerk_omschrijving", "k.res_kenmerk_key")
+ " , " + lcl.xsql("sk.res_srtkenmerk_omschrijving", "sk.res_srtkenmerk_key") + "))";
var trn = 0;
+ " AND BITAND(k.res_kenmerk_rolcode, " + myreadrolcode + ") > 0 "
+ " AND (k.res_artikel_key = " + artikel_key + " OR k.res_discipline_key = " + discipline_key + ")"
+ " ORDER BY k.res_kenmerk_volgnummer"
+ " , UPPER( COALESCE (" + lcl.xsql("k.res_kenmerk_omschrijving", "k.res_kenmerk_key")
+ " , " + lcl.xsql("sk.res_srtkenmerk_omschrijving", "sk.res_srtkenmerk_key") + "))";
var nameprefix = "art" + artikel_key + "_" + rsv_artikel_key + "_";
if (artikel_key < 0 || rsv_artikel_key < 0)
nameprefix = nameprefix.replace("-", "_");