421 lines
17 KiB
C++
421 lines
17 KiB
C++
<% /*
|
|
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: alg.inc
|
|
Status:
|
|
Description: defines usefull functions (both serverside and clientside)
|
|
Globals defined:
|
|
Context:
|
|
Note: Met betrekking tot werkplekken:
|
|
ALGUSE schrijfrechten==>je mag PRS_WERKPLEK records aanmaken/muteren/verwijderen
|
|
PRSBOF schrijfrechten==>je mag PRS_PERSLIDWERKPLEK records aanmaken/muteren/verwijderen
|
|
en/of PRS_RUIMTEAFDELING records
|
|
Met betrekking tot ruimtes
|
|
ALGMAN schrijfrechten==>je mag ALG_RUIMTE records aanmaken etc.
|
|
ALGUSE schrijfrechten==>je mag flexkenmerken boven de 100 en afhankelijk van <<== werkt nog niet
|
|
S("alg_ruimtenr_aut_use") ook nog ruimtenummer/omschrijving
|
|
PAS OP: De diverse canWriteRegio etc. functies heten eigenlijk verkeerd.
|
|
RegioInScope etc. zou een beel betere benaming zijn geweest
|
|
*/
|
|
|
|
alg = {
|
|
// merk op: ALGMAN heeft geen PRS-scope, ALGUSE wel maar die negeren we
|
|
checkAutorisation: function (isOptional)
|
|
{
|
|
var autfunction = "WEB_ALGMAN";
|
|
var authparams = user.checkAutorisation(autfunction, true);
|
|
if (authparams) {
|
|
|
|
var mALGreadlevel = authparams.ALGreadlevel;
|
|
var mALGwritelevel = authparams.ALGwritelevel;
|
|
}
|
|
else {
|
|
var mALGreadlevel = 9;
|
|
var mALGwritelevel = 9;
|
|
}
|
|
|
|
var autfunction = "WEB_ALGUSE";
|
|
var authparams = user.checkAutorisation(autfunction, isOptional);
|
|
if (authparams)
|
|
{
|
|
var uALGreadlevel = authparams.ALGreadlevel;
|
|
var uALGwritelevel = authparams.ALGwritelevel;
|
|
}
|
|
else
|
|
{
|
|
var uALGreadlevel = 9;
|
|
var uALGwritelevel = 9;
|
|
}
|
|
|
|
// From now use the highest authorisations (lowest values)
|
|
var ALGreadlevel = mALGreadlevel < uALGreadlevel? mALGreadlevel : uALGreadlevel ;
|
|
var ALGwritelevel = mALGwritelevel < uALGwritelevel? mALGwritelevel: uALGwritelevel;
|
|
|
|
var autfunction = "WEB_RUIMAN";
|
|
var authparams = user.checkAutorisation(autfunction, true);
|
|
if (authparams) {
|
|
|
|
var rmALGreadlevel = authparams.ALGreadlevel;
|
|
var rmALGwritelevel = authparams.ALGwritelevel;
|
|
}
|
|
else {
|
|
var rmALGreadlevel = 9;
|
|
var rmALGwritelevel = 9;
|
|
}
|
|
|
|
var autfunction = "WEB_TERMAN";
|
|
var authparams = user.checkAutorisation(autfunction, true);
|
|
if (authparams) {
|
|
|
|
var tmALGreadlevel = authparams.ALGreadlevel;
|
|
var tmALGwritelevel = authparams.ALGwritelevel;
|
|
}
|
|
else {
|
|
var tmALGreadlevel = 9;
|
|
var tmALGwritelevel = 9;
|
|
}
|
|
|
|
return ({ALGreadlevel: ALGreadlevel, ALGwritelevel: ALGwritelevel,
|
|
mALGreadlevel: mALGreadlevel, mALGwritelevel: mALGwritelevel,
|
|
uALGreadlevel: uALGreadlevel, uALGwritelevel: uALGwritelevel,
|
|
rmALGreadlevel: rmALGreadlevel, rmALGwritelevel: rmALGwritelevel,
|
|
tmALGreadlevel: tmALGreadlevel, tmALGwritelevel: tmALGwritelevel
|
|
});
|
|
},
|
|
|
|
|
|
func_enabled: function alg_func_enabled (alg_key, p_onrgoedlvl)
|
|
{
|
|
var onrgoedlvl = (p_onrgoedlvl ? p_onrgoedlvl.toUpperCase() : "");
|
|
if (alg_key < 0 ||
|
|
onrgoedlvl == "G" || onrgoedlvl == "T" || onrgoedlvl == "V" || onrgoedlvl == "R")
|
|
{
|
|
var rresult = user.func_enabled("ALG",
|
|
null, // geen disciplines
|
|
alg_key,
|
|
null); // nooit prs-scope
|
|
|
|
var autfunctionMAN = "WEB_ALGMAN";
|
|
var autfunctionUSE = "WEB_ALGUSE";
|
|
|
|
// Met ALG* bepaal je wat je ziet (Read).
|
|
rresult.readman = rresult.canRead (autfunctionMAN);
|
|
if (onrgoedlvl != "T")
|
|
rresult.readuse = rresult.canRead (autfunctionUSE);
|
|
|
|
// Met RUI* en TER* bepaal je wat je kunt wijzigen (Write).
|
|
switch (onrgoedlvl)
|
|
{
|
|
case "T": autfunctionMAN = "WEB_TERMAN";
|
|
break;
|
|
case "R": autfunctionMAN = "WEB_RUIMAN";
|
|
autfunctionUSE = "WEB_RUIUSE";
|
|
break;
|
|
}
|
|
rresult.writeman = rresult.canWrite(autfunctionMAN);
|
|
|
|
if (onrgoedlvl != "T")
|
|
rresult.writeuse = rresult.canWrite(autfunctionUSE);
|
|
}
|
|
else // iets meer werk
|
|
{
|
|
var rresult = user.func_enabled("ALG",
|
|
null, // geen disciplines
|
|
null, // deze werkt niet voor alg_key van regio's, districten en locaties
|
|
null); // nooit prs-scope
|
|
|
|
var sql= "SELECT -1 FROM DUAL"; // hoe 'ver' weg is alg_key?
|
|
switch (onrgoedlvl)
|
|
{
|
|
case "L":
|
|
sql = "SELECT MAX(niveau) FROM fac_v_my_locations "
|
|
+ "WHERE prs_perslid_key = " + user_key
|
|
+ " AND alg_locatie_key = " + alg_key;
|
|
break;
|
|
case "D":
|
|
sql = "SELECT MAX(niveau) FROM fac_v_my_districts "
|
|
+ "WHERE prs_perslid_key = " + user_key
|
|
+ " AND alg_district_key = " + alg_key;
|
|
break;
|
|
case "RG":
|
|
sql = "SELECT MAX(niveau) FROM fac_v_my_regions "
|
|
+ "WHERE prs_perslid_key = " + user_key
|
|
+ " AND alg_regio_key = " + alg_key;
|
|
break;
|
|
}
|
|
var oRs = Oracle.Execute(sql);
|
|
var level = (oRs(0).Value==null)?-1:oRs(0).Value;
|
|
oRs.Close();
|
|
|
|
rresult.readman = rresult.authparams("WEB_ALGMAN").ALGreadlevel <= level;
|
|
rresult.writeman = rresult.authparams("WEB_ALGMAN").ALGwritelevel <= level;
|
|
rresult.readuse = rresult.authparams("WEB_ALGUSE").ALGreadlevel <= level;
|
|
rresult.writeuse = rresult.authparams("WEB_ALGUSE").ALGwritelevel <= level;
|
|
}
|
|
return rresult;
|
|
},
|
|
|
|
canWriteRegio: function (pregio_key, pniveau)
|
|
{
|
|
if (pniveau <= -1)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
var sql = "SELECT alg_regio_key FROM fac_v_my_regions "
|
|
+ "WHERE prs_perslid_key = " + user_key
|
|
+ " AND alg_regio_key = " + pregio_key
|
|
+ " AND niveau = " + pniveau;
|
|
|
|
var oRs = Oracle.Execute(sql);
|
|
var res = !oRs.eof;
|
|
oRs.Close();
|
|
return (res);
|
|
}
|
|
},
|
|
|
|
canWriteDistrict: function (pdistrict_key, pniveau)
|
|
{
|
|
if (pniveau <= -1)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
var sql = "SELECT alg_district_key FROM fac_v_my_districts "
|
|
+ "WHERE prs_perslid_key = " + user_key
|
|
+ " AND alg_district_key = " + pdistrict_key
|
|
+ " AND niveau = " + pniveau;
|
|
|
|
var oRs = Oracle.Execute(sql);
|
|
var res = !oRs.eof;
|
|
oRs.Close();
|
|
return (res);
|
|
}
|
|
},
|
|
|
|
canWriteLocatie: function (plocatie_key, pniveau)
|
|
{
|
|
if (pniveau <= -1)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
var sql = "SELECT alg_locatie_key FROM fac_v_my_locations "
|
|
+ "WHERE prs_perslid_key = " + user_key
|
|
+ " AND alg_locatie_key = " + plocatie_key
|
|
+ " AND niveau = " + pniveau;
|
|
|
|
var oRs = Oracle.Execute(sql);
|
|
var res = !oRs.eof;
|
|
oRs.Close();
|
|
return (res);
|
|
}
|
|
},
|
|
|
|
canWriteGebouw: function (pgebouw_key, pniveau)
|
|
{
|
|
if (pniveau <= -1)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
var sql = "SELECT alg_gebouw_key FROM fac_v_my_buildings "
|
|
+ "WHERE prs_perslid_key = " + user_key
|
|
+ " AND alg_gebouw_key = " + pgebouw_key
|
|
+ " AND niveau = " + pniveau;
|
|
|
|
var oRs = Oracle.Execute(sql);
|
|
var res = !oRs.eof;
|
|
oRs.Close();
|
|
return (res);
|
|
}
|
|
},
|
|
|
|
canWriteVerdieping: function (pverdieping_key, pniveau)
|
|
{
|
|
if (pniveau <= -1)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
else
|
|
{
|
|
var sql = "SELECT alg_verdieping_key FROM fac_v_my_floors "
|
|
+ "WHERE prs_perslid_key = " + user_key
|
|
+ " AND alg_verdieping_key = " + pverdieping_key
|
|
+ " AND niveau = " + pniveau;
|
|
|
|
var oRs = Oracle.Execute(sql);
|
|
var res = !oRs.eof;
|
|
oRs.Close();
|
|
return (res);
|
|
}
|
|
},
|
|
|
|
canWriteRuimte: function (pruimte_key, pniveau)
|
|
{
|
|
if (pniveau <= -1)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
var sql = "SELECT alg_ruimte_key FROM fac_v_my_rooms "
|
|
+ "WHERE prs_perslid_key = " + user_key
|
|
+ " AND alg_ruimte_key = " + pruimte_key
|
|
+ " AND niveau = " + pniveau
|
|
|
|
var oRs = Oracle.Execute(sql);
|
|
var res = !oRs.eof;
|
|
oRs.Close();
|
|
return (res);
|
|
}
|
|
},
|
|
|
|
alg_gebouwinfo: function _alg_gebouw(alg_gebouw_key)
|
|
{
|
|
var sql = "SELECT g.alg_gebouw_naam"
|
|
+ " , g.alg_gebouw_code"
|
|
+ " , g.alg_gebouw_omschrijving"
|
|
+ " , g.alg_srtgebouw_key"
|
|
+ " , g.prs_kostenplaats_key"
|
|
+ " , g.mld_adres_key"
|
|
+ " , g.alg_gebouw_opmerking"
|
|
+ " , g.alg_gebouw_ordernr"
|
|
+ " , g.alg_gebouw_bez"
|
|
+ " , g.alg_locatie_key"
|
|
+ " , k.prs_kostenplaats_module"
|
|
+ " , " + S("prs_kpn_string") + " kpstring"
|
|
+ " , " + S("prs_pers_string") + " budgethouder"
|
|
+ " , p.prs_perslid_key"
|
|
+ " , COALESCE(g.alg_gebouw_beginuur, -1) alg_gebouw_beginuur"
|
|
+ " , COALESCE(g.alg_gebouw_einduur, -1) alg_gebouw_einduur"
|
|
+ " FROM alg_gebouw g"
|
|
+ " , prs_kostenplaats k"
|
|
+ " , prs_perslid p"
|
|
+ " WHERE g.prs_kostenplaats_key = k.prs_kostenplaats_key(+)"
|
|
+ " AND k.prs_perslid_key = p.prs_perslid_key(+)"
|
|
+ " AND g.alg_gebouw_key = " + alg_gebouw_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
|
|
var result = {};
|
|
if (!oRs.eof)
|
|
{
|
|
result = { alg_gebouw_key: alg_gebouw_key,
|
|
alg_gebouw_naam: oRs("alg_gebouw_naam").Value,
|
|
alg_gebouw_code: oRs("alg_gebouw_code").Value,
|
|
alg_gebouw_omschrijving: oRs("alg_gebouw_omschrijving").Value,
|
|
alg_srtgebouw_key: oRs("alg_srtgebouw_key").Value,
|
|
alg_kostenplaats_key: oRs("prs_kostenplaats_key").Value,
|
|
mld_adres_key: oRs("mld_adres_key").Value,
|
|
alg_gebouw_opmerking: oRs("alg_gebouw_opmerking").Value,
|
|
alg_gebouw_ordernr: oRs("alg_gebouw_ordernr").Value,
|
|
alg_gebouw_bez: oRs("alg_gebouw_bez").Value == "1",
|
|
alg_locatie_key: oRs("alg_locatie_key").Value,
|
|
kostenplaats_omschrijving: oRs("kpstring").Value,
|
|
kostenplaats_module: oRs("prs_kostenplaats_module").Value,
|
|
kostenplaats_budgethouder_key: oRs("prs_perslid_key").Value,
|
|
kostenplaats_budgethouder: oRs("budgethouder").Value,
|
|
gebouw_beginuur: oRs("alg_gebouw_beginuur").Value,
|
|
gebouw_einduur: oRs("alg_gebouw_einduur").Value
|
|
};
|
|
}
|
|
oRs.Close();
|
|
|
|
return result;
|
|
},
|
|
|
|
alg_terreinsectorinfo: function _alg_terreinsector(alg_terreinsector_key)
|
|
{
|
|
var sql = "SELECT g.alg_terreinsector_naam"
|
|
+ ", g.alg_terreinsector_code"
|
|
+ ", g.alg_terreinsector_omschrijving"
|
|
+ ", g.alg_srtterreinsector_key"
|
|
+ ", g.prs_kostenplaats_key"
|
|
+ ", g.alg_terreinsector_ordernr"
|
|
+ ", g.alg_locatie_key"
|
|
+ ", k.prs_kostenplaats_module"
|
|
+ ", " + S("prs_kpn_string") + " kpstring"
|
|
+ ", " + S("prs_pers_string") + " budgethouder"
|
|
+ ", p.prs_perslid_key"
|
|
+ " FROM alg_terreinsector g"
|
|
+ ", prs_kostenplaats k"
|
|
+ ", prs_perslid p"
|
|
+ " WHERE g.prs_kostenplaats_key = k.prs_kostenplaats_key"
|
|
+ " AND k.prs_perslid_key = p.prs_perslid_key"
|
|
+ " AND g.alg_terreinsector_key = " + alg_terreinsector_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
|
|
var result = {};
|
|
if (!oRs.eof)
|
|
{
|
|
result = { alg_terreinsector_key: alg_terreinsector_key,
|
|
alg_terreinsector_naam: oRs("alg_terreinsector_naam").Value,
|
|
alg_terreinsector_code: oRs("alg_terreinsector_code").Value,
|
|
alg_terreinsector_omschrijving: oRs("alg_terreinsector_omschrijving").Value,
|
|
alg_srtterreinsector_key: oRs("alg_srtterreinsector_key").Value,
|
|
alg_kostenplaats_key: oRs("prs_kostenplaats_key").Value,
|
|
alg_terreinsector_ordernr: oRs("alg_terreinsector_ordernr").Value,
|
|
alg_locatie_key: oRs("alg_locatie_key").Value,
|
|
kostenplaats_omschrijving: oRs("kpstring").Value,
|
|
kostenplaats_module: oRs("prs_kostenplaats_module").Value,
|
|
kostenplaats_budgethouder_key: oRs("prs_perslid_key").Value,
|
|
kostenplaats_budgethouder: oRs("budgethouder").Value
|
|
};
|
|
}
|
|
oRs.Close();
|
|
|
|
return result;
|
|
},
|
|
|
|
func_enabled_ruimte: // Wat mag ik zoal op deze specifieke ruimte?
|
|
function _func_enabled_ruimte(pruimte_key) // kan ook gebruikt worden met verdieping_key
|
|
{
|
|
// WEB_PRSBOF is onderdeel van de PRS module
|
|
var aresult = user.func_enabled("PRS",
|
|
-1, // ins_discipline_key
|
|
pruimte_key, // alg_key
|
|
user_key, // prs_key
|
|
false, // checkOptimistic
|
|
true); // isOptional
|
|
|
|
aresult.canPRSBOFwrite = aresult.canWrite("WEB_PRSBOF"); // werkplekbeheer
|
|
|
|
return aresult;
|
|
},
|
|
|
|
calc_algm2: function _calc_algm2(alg_key, lvl)
|
|
{
|
|
var sql = "SELECT SUM (alg_ruimte_bruto_vloeropp) opp1, "
|
|
+ " SUM (alg_ruimte_opp_alt1) opp2, "
|
|
+ " SUM (alg_ruimte_opp_alt2) opp3 "
|
|
+ " FROM alg_ruimte r, alg_verdieping v "
|
|
+ " WHERE v.alg_verdieping_key = r.alg_verdieping_key "
|
|
+ " AND r.alg_ruimte_verwijder IS NULL";
|
|
|
|
if (lvl == "G")
|
|
{
|
|
sql += " AND alg_gebouw_key = " + alg_key;
|
|
}
|
|
|
|
if (lvl == "V")
|
|
{
|
|
sql += " AND r.alg_verdieping_key = " + alg_key;
|
|
}
|
|
|
|
var oRs = Oracle.Execute(sql);
|
|
|
|
var algm2 = { oppbruto: oRs("opp1").Value, oppalt1: oRs("opp2").Value, oppalt2: oRs("opp3").Value }
|
|
|
|
oRs.Close();
|
|
|
|
return algm2;
|
|
}
|
|
}
|
|
%> |