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

svn path=/Website/trunk/; revision=69090
This commit is contained in:
Peter Feij
2025-05-21 12:28:38 +00:00
parent e88c8740ba
commit 126fc06cc7
14 changed files with 41 additions and 53 deletions

View File

@@ -1043,8 +1043,7 @@ function model_orders(opdr_key, params)
+ " 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 BITAND(k.mld_kenmerk_rolcode, 5) > 0" // Alleen bij of na afmelden mogen afmeld-kenmerken 0x0
+ " AND " + sql_kenmerkwaarde + " IS NOT NULL";
Oracle.Execute(sql_insert);
}

View File

@@ -54,8 +54,8 @@ function bez_edit_bezoekers(afspraak_key, afspraak_begin, afspraak_eind, loc_key
var flexfilter_afhandel_default = [];
if (alleen_afhandelingskenmerken)
{
flexfilter = ["k.bez_kenmerk_volgnr < 900"];
flexfilter_afhandel_default = ["(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"];
flexfilter_afhandel_default = ["(BITAND(k.bez_kenmerk_rolcode, 4) = 0 OR (BITAND(k.bez_kenmerk_rolcode,4) = 4 AND k.bez_kenmerk_default IS NOT NULL))"];
}
// else: kenmerken voor nieuwe bezoekers worden aangemaakt door load_kenmerk.asp

View File

@@ -44,7 +44,6 @@ 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 = ["(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

@@ -2218,7 +2218,7 @@ ins = {checkAutLevel:
+ " AND km.ins_kenmerk_niveau = 'G')"
+ " OR ( km.ins_srtinstallatie_key = gr.ins_discipline_key"
+ " AND km.ins_kenmerk_niveau = 'D'))"
+ " AND km.ins_kenmerk_volgnummer >= 900"
+ " AND BITAND(km.ins_kenmerk_rolcode,4) = 4"
+ " GROUP BY sd.ins_srtdeel_key) k";
var sqlKenmerkBewerkbaar_where = " AND dl.ins_srtdeel_key = k.ins_srtdeel_key(+)";
}

View File

@@ -365,7 +365,7 @@ function clear_properties(adapt, balie, ingesloten_i)
+ " AND k.ins_srtkenmerk_key = s.ins_srtkenmerk_key"
+ " AND k.ins_kenmerk_niveau <> 'C'"
+ " AND k.ins_kenmerk_verwijder IS NULL"
+ " AND k.ins_kenmerk_volgnummer > 900"
+ " AND BITAND(k.ins_kenmerk_rolcode, 4) = 4"
+ " AND k.ins_kenmerk_wissen = " + balie //(lendout ? 2 : 1) // Als uitgeleend dan wissen bij inname.
+ " AND w.ins_deel_key = " + ingesloten_i
+ " AND b.fac_bijlagen_kenmerk_key(+) = k.ins_kenmerk_key"

View File

@@ -13,9 +13,9 @@
Het overzicht is standaard chronologisch descending, nieuwste document bovenaan.
Voor objecten hebben dit nog (uit: Help), dat gehoorzamen we
Volgnummers <= 100 zijn zichtbaar met WEB_INSMAN
Volgnummers >= 100 zijn zichtbaar met WEB_INSUSE (PF: en <= 900 toch?)
Volgnummers >= 900 zijn zichtbaar met WEB_INSFOF (tbv uitleenregistratie)
rolcode&1 zijn zichtbaar met WEB_INSMAN
rolcode&2 zijn zichtbaar met WEB_INSUSE (PF: en <= 900 toch?)
rolcode&4 zijn zichtbaar met WEB_INSFOF (tbv uitleenregistratie)
Parameters: ins_key (required)
@@ -36,7 +36,7 @@ var filenamelength = 49; // constante. Keuze, normaal maken we ook van 50+ een
var this_ins = ins.func_enabled_deel(ins_key); // Wat heb ik zoal aan rechten op dit object?
user.auth_required_or_abort(this_ins.canReadAny); // Heb ik enige lees rechten op dit object?
// Ik mag dus sowieso iets. Nou moet ik vooral weten wat ik evt niet mag voor km.ins_kenmerk_volgnummer
// Ik mag dus sowieso iets. Nou moet ik vooral weten wat ik evt niet mag voor km.ins_kenmerk_rolcode
var readman = this_ins.readman;
var readuse = this_ins.readuse;
var readfof = this_ins.writefof; // niet erg logisch, maar ook niet onmogelijk. readfof wordt niet eens bepaald..
@@ -78,10 +78,15 @@ function fnFilesize (oRs)
// Iemand zou kunnen vinden dat alleen de bijlagen van de laatste taak opgenomen zou moeten worden,
// maar waarom zouden we niet het hele archief tonen? Vandaar op datum, nieuwste bovenaan.
// Qua autorisatie disciplines, volgnummers meenemen zodat
// Qua autorisatie disciplines, rolcodes meenemen zodat
// er autorisaties toegepast kunnen worden:
// - ik mag mogelijk niet alle taken zien, dus ook de daarbij behorende (bijlage)kenmerken niet
// - er is mogelijk ook nog iets met kenmerk-volgnummers van het object waar ik wel/geen rechten op heb
// Wat mag ik op basis van mijn autorisatie en deze situatie zien, bepaal mijn rolcode-masker
var myreadrolcode = 0 + (my_mldrechten.canRead("WEB_INSMAN") ? 1 : 0)
+ (my_mldrechten.canRead("WEB_INSUSE") ? 2 : 0)
+ (my_mldrechten.canRead("WEB_INSFOF") ? 4 : 0);
// Kenmerken van het type Map (folder met files) worden niet in ins_kmdeelsrtcontr geregistreerd.
// Voor het type File weet ik het niet, maar anders zou dat deze query moeten zijn. Het duurde even
@@ -162,15 +167,7 @@ var sql_taakbijlagen = "SELECT d.ins_deel_omschrijving "
+ " AND fb.fac_bijlagen_kenmerk_key = km.ins_kenmerk_key(+) "
+ " AND skm.ins_srtkenmerk_key = km.ins_srtkenmerk_key "
+ " AND km.ins_kenmerk_niveau NOT IN ('T','C','E') " // niet bij taken
+ (readallekenmerken ? ""
: (readmanusekenmerken ? " AND km.ins_kenmerk_volgnummer <= 900 "
: (readman ? " AND km.ins_kenmerk_volgnummer <= 100 "
: (readuse ? " AND km.ins_kenmerk_volgnummer >= 100 AND km.ins_kenmerk_volgnummer <= 900 "
: (readfof ? " AND km.ins_kenmerk_volgnummer >= 900 " : "")
)
)
)
)
+ " AND BITAND(km.ins_kenmerk_rolcode, " + myreadrolcode + ") > 0"
+ " AND d.ins_deel_key = " + ins_key;
var sql_allebijlagen = sql_taakbijlagen + " UNION " + sql_deelbijlagen

View File

@@ -535,7 +535,7 @@ var ins_deel_aantal = 1;
+ " AND k.ins_kenmerk_verwijder IS NULL"
+ " AND t.ins_srtkenmerk_verwijder IS NULL"
+ (urole == "fo"
? " AND k.ins_kenmerk_volgnummer > 900"
? " AND BITAND(k.ins_kenmerk_rolcode, 4) = 4"
: "");
oRs = Oracle.Execute(sql);
if (!oRs.eof) {

View File

@@ -392,7 +392,7 @@ oRs.Close();
+ " AND g.ins_srtgroep_key = s.ins_srtgroep_key"
+ " AND k.ins_kenmerk_verwijder IS NULL"
+ " AND t.ins_srtkenmerk_verwijder IS NULL"
+ (urole == "fo"?" AND k.ins_kenmerk_volgnummer > 900" : "");
+ (urole == "fo"?" AND BITAND(k.ins_kenmerk_rolcode, 4) = 4" : "");
oRs = Oracle.Execute(sql);
var uitleen_flex_present = false;
if (!oRs.eof) uitleen_flex_present = true;

View File

@@ -58,7 +58,6 @@ if (ins_key > 0)
+ " AND ((km.ins_srtinstallatie_key = sd.ins_srtdeel_key AND km.ins_kenmerk_niveau = 'S')"
+ " OR (km.ins_srtinstallatie_key = sd.ins_srtgroep_key AND km.ins_kenmerk_niveau = 'G')"
+ " OR (km.ins_srtinstallatie_key = gr.ins_discipline_key AND km.ins_kenmerk_niveau = 'D'))"
//+ " AND km.ins_kenmerk_volgnummer >= 900"
+ " AND d.ins_srtdeel_key = sd.ins_srtdeel_key"
+ " AND sk.ins_srtkenmerk_kenmerktype = 'M'"
+ " AND d.ins_deel_key = " + ins_key;

View File

@@ -46,7 +46,7 @@ FCLTHeader.Requires({ plugins: [] });
if (mld_key > 0)
{
// Is er een bijlage kenmerk?
var sql = mld.getMldKenmerk_sql(mld_key, {wheres: ["mkm.mld_kenmerk_volgnummer < 800",
var sql = mld.getMldKenmerk_sql(mld_key, {wheres: ["BITAND(mkm.mld_kenmerk_rolcode,1) = 1",
"(mkm.mld_kenmerk_verplicht IS NULL OR mkm.mld_kenmerk_verplicht=0)",
"msk.mld_srtkenmerk_kenmerktype = 'M'"]}
);

View File

@@ -1314,8 +1314,6 @@ for (var u = 0; u < uitvkeyArray.length; u++)
+ " AND t.mld_srtkenmerk_verwijder IS NULL"
+ " AND t.mld_srtkenmerk_kenmerktype <> 'M'"
+ " AND BITAND(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

@@ -682,7 +682,7 @@ res = {
+ " AND sk.res_srtkenmerk_kenmerktype = 'M'"
+ " AND (k.res_artikel_key = " + p_key
+ " OR k.res_discipline_key = " + disc_key + ")"
+ " AND k.res_kenmerk_volgnummer <= 900";
+ " AND BITAND(k.res_kenmerk_rolcode, 3) > 0";
var oRs_k = Oracle.Execute(sql_k);
while (!oRs_k.eof)
{

View File

@@ -35,6 +35,11 @@ user.auth_required_or_abort(this_res.canReadAny);
// Finds required res_kenmerken (regular or of type 'M'(bijlagen))
// that are either missing or have no value for a specific reservation.
var mywriterolcode = 0 + (this_res.canWrite("WEB_RESUSE") ? 1 : 0)
+ (this_res.canWrite("WEB_RESFOF") ? 2 : 0)
+ (this_res.canWrite("WEB_RESBOF") ? 4 : 0);
var sql = "SELECT COUNT (*) amount"
+ " FROM res_rsv_ruimte rrr"
+ " JOIN res_activiteit ra"
@@ -57,12 +62,7 @@ var sql = "SELECT COUNT (*) amount"
+ " WHERE rrr.res_rsv_ruimte_key = " + rsv_ruimte_key
+ " AND rk.res_kenmerk_verplicht = 1"
+ " AND rk.res_kenmerk_verwijder IS NULL"
+ " AND (rk.res_kenmerk_volgnummer <= 800 "
+ (this_res.canWrite("WEB_RESFOF") ?
" OR (rk.res_kenmerk_volgnummer > 800 AND rk.res_kenmerk_volgnummer <= 900)" : "")
+ (this_res.canWrite("WEB_RESBOF") ?
" OR (rk.res_kenmerk_volgnummer >= 900)" : "")
+ " )"
+ " AND BITAND(rk.res_kenmerk_rolcode, " + mywriterolcode + ") > 0"
+ " AND rk.res_kenmerk_show_expr IS NULL" // We gaan deze niet inline evalueren; als er een show-expressie bestaat, sluiten we deze uit
+ " AND rk.fac_functie_key IS NULL" // Idem; We gaan deze niet inline evalueren; als er een extra autorisatie bestaat, sluiten we deze uit
+ " AND (rk.res_kenmerk_toonbaar IS NULL OR rk.res_kenmerk_toonbaar = 0)" // Volgens mij altijd NULL of 1, maar voor de zekerheid ..
@@ -474,7 +474,7 @@ var bulkFields = " distinct "
+ " , ins_srtdeel isd"
+ "{1}"
+ " , ( SELECT sd.ins_srtdeel_key"
+ " , COUNT (km.ins_kenmerk_volgnummer) km900"
+ " , COUNT (km.ins_kenmerk_rolcode) km900" // kolomalias is historisch, maar zo gelaten
+ " FROM ins_srtkenmerk sk"
+ " , ins_kenmerk km"
+ " , ins_srtdeel sd"
@@ -489,7 +489,7 @@ var bulkFields = " distinct "
+ " AND km.ins_kenmerk_niveau = 'G')"
+ " OR (km.ins_srtinstallatie_key = gr.ins_discipline_key"
+ " AND km.ins_kenmerk_niveau = 'D'))"
+ " AND km.ins_kenmerk_volgnummer >= 900"
+ " AND BITAND(km.ins_kenmerk_rolcode,4) = 4" // uitleenkenmerken
+ " GROUP BY sd.ins_srtdeel_key) k"
+ " WHERE rrd.res_rsv_ruimte_key = rr.res_rsv_ruimte_key"
+ " AND rr.res_rsv_ruimte_key = " + rsv_ruimte_key

View File

@@ -462,7 +462,7 @@ function getSqlFlex(flexModule, flexId, flexParams)
+ " WHERE sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key"
+ " AND km.mld_kenmerk_key = k.mld_kenmerk_key"
+ " AND sk.mld_srtkenmerk_verwijder IS NULL"
+ (flexParams && (flexParams.readuse || flexParams.readman)? " AND k.mld_kenmerk_volgnummer < 800" : ""); // Dit kan nergens op slaan, wat dan wel TODO
+ (flexParams && (flexParams.readuse || flexParams.readman)? " AND BITAND(k.mld_kenmerk_rolcode, 3) > 0" : ""); // Close enough. Strikt zou man&1 en use&2 zijn
break;
}
@@ -514,23 +514,19 @@ function getSqlFlex(flexModule, flexId, flexParams)
}
case "PRS": {
var where = [];
if (flexId.toLowerCase()=="prs_perslid_key")
{
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.
/*
if (authparamsMAN.PRSreadlevel > -1 && authparamsMAN.PRSreadlevel != authparamsUSE.PRSreadlevel)
where.push("prs_kenmerk_volgnr >= 100");
if (authparamsUSE.PRSreadlevel > -1) // Dit had toch MAN moeten zijn??!
where.push("prs_kenmerk_volgnr <= 100");
*/
}
var myreadrolcode = 0 + (user.has("WEB_PRSMAN") ? 1 : 0)
+ (user.has("WEB_PRSUSE") ? 2 : 0);
if (authparamsMAN.PRSreadlevel > -1 && authparamsMAN.PRSreadlevel != authparamsUSE.PRSreadlevel)
myreadrolcode = myreadrolcode - 1; // om recht te doen aan de eerdere werking: verschillende levels voor MAN en USE => geen PRSMAN
if (flexId.toLowerCase()=="prs_perslid_key")
{
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.
if (authparamsMAN.PRSreadlevel > -1 && authparamsMAN.PRSreadlevel != authparamsUSE.PRSreadlevel)
myreadrolcode = myreadrolcode - 1; // om recht te doen aan de eerdere werking: verschillende levels voor MAN en USE => geen PRSMAN
}
sql_prs_kenmerkprs = "SELECT pk.prs_kenmerk_key"
+ " , p." + flexId // prs_afdeling_key, prs_perslid_key