FCLT#83231 Individuele vervangers moeten blijven werken ongeacht prs_collegas_groep

svn path=/Website/trunk/; revision=64651
This commit is contained in:
Jos Groot Lipman
2024-05-14 16:06:07 +00:00
parent 1048ddc5d0
commit f7902c0a6e

View File

@@ -1501,17 +1501,23 @@ Perslid.prototype._require_prs_collegas = function __require_prs_collegas()
{
if (!this._prs_collegas)
{
this._prs_collegas = [];
this._prs_collegas = {}; // Object, geen array!
this._prs_collegas[this._prs_perslid_key] = true;
var sql = "SELECT prs_perslid_key"
+ " , 0 isgroep"
+ " FROM prs_collega"
+ " WHERE prs_perslid_key_alt = " + this._prs_perslid_key;
var oRs = Oracle.Execute(sql);
while (!oRs.Eof)
{
this._prs_collegas[oRs("prs_perslid_key").Value]=true;
oRs.MoveNext();
}
oRs.Close();
if (S("prs_collegas_groep") > 0)
{
sql += " UNION ALL"
+ " SELECT prs_perslid_key"
+ " , 1 isgroep"
var groepKeys = [];
sql = " SELECT prs_perslid_key"
+ " FROM fac_gebruikersgroep fgg "
+ " WHERE EXISTS "
+ " (SELECT 1 "
@@ -1520,14 +1526,25 @@ Perslid.prototype._require_prs_collegas = function __require_prs_collegas()
+ " AND fgg2.fac_groep_key = fg.fac_groep_key "
+ " AND fgg2.prs_perslid_key = " + this._prs_perslid_key
+ " AND fg.fac_groep_collega = 1)";
var oRs = Oracle.Execute(sql);
while (!oRs.Eof)
{
groepKeys.push(oRs("prs_perslid_key").Value);
oRs.MoveNext();
}
oRs.Close();
if (groepKeys.length > S("prs_collegas_groep"))
{
__Log("Te veel groepsvervangers gedefinieerd ({0}). Alle groepsvervangers worden genegeerd.".format(groepKeys.length), "#FF0000");
}
else
{
for (var i = 0; i < groepKeys.length; i++)
{
this._prs_collegas[groepKeys[i]] = true;
}
}
}
var oRs = Oracle.Execute(sql);
while (!oRs.Eof)
{
this._prs_collegas[oRs("prs_perslid_key").Value]=oRs("isgroep").Value;
oRs.MoveNext();
}
oRs.Close();
}
return this._prs_collegas;
}
@@ -1542,33 +1559,26 @@ Perslid.prototype.isCollega = function (prs_key)
Perslid.prototype.hasCollegas = function (prs_key)
{
this._require_prs_collegas();
var lijst = this.collegakeylist();
return lijst.indexOf(",") > 0; // Zelf zit je er ook altijd in
var lijst = this.collegakeyarray();
return lijst.length > 1; // Zelf zit je er ook altijd in
}
// Komma-gescheiden lijst van jezelf en al je collega's
Perslid.prototype.collegakeylist = function ()
{
this._require_prs_collegas();
var vervangerKeys = [];
var groepKeys = [];
for (var i=0; i<this._prs_collegas.length; i++)
{
switch (this._prs_collegas[i])
{
case 0: vervangerKeys.push(i); break; // vervangers bij persoon
case 1: groepKeys.push(i); break; // vervangers in autorisatiegroepen
// geen default: voor alle andere i=prs_perslid_key is er geen waarde.
}
}
return prototype.collegakeyarray().join(", ");
}
var prsKeys = vervangerKeys.concat(groepKeys); // alle vervangers
if (S("prs_collegas_groep") > 0 && groepKeys.length > S("prs_collegas_groep"))
// Array) van jezelf en al je collega's
Perslid.prototype.collegakeyarray = function ()
{
this._require_prs_collegas();
var prsKeys = [];
for (var prs_key in this._prs_collegas)
{
__Log("Te veel groepsvervangers gedefinieerd ({0}). Alle groepsvervangers worden genegeerd.".format(groepKeys.length), "#FF0000");
var prsKeys = vervangerKeys.concat(this._prs_perslid_key); // Dan negeren we alleen groepsvervangers
prsKeys.push(prs_key);
}
return prsKeys.join(", ");
return prsKeys;
}
// Is deze gebruiker contactpersoon van *een* bedrijf (maakt niet uit welke)