FSN#51403 Beheer van contactpersonen door bedrijf savepoint
svn path=/Website/trunk/; revision=36547
This commit is contained in:
@@ -3602,11 +3602,11 @@ mld = {setmeldingstatus:
|
||||
|
||||
// -- CONTROLE LEESRECHTEN --
|
||||
// Al ik een contactpersoon ben dan heb ik alleen rechten om mijn eigen opdrachten van mijn eigen bedrijf te zien/wijzigen
|
||||
mresult.iamContact = mld.iamContact(); // Ben ik een contactpersoon?
|
||||
mresult.iamContact = user.iamContact(); // Ben ik een contactpersoon?
|
||||
mresult.iamBedrijfContact = false; // Aan bedrijf toegekend en ik ben contactpersoon van dat bedrijf? Bijv. vertaaldiensten UWVA
|
||||
if (mresult.iamContact && !mld_opdr.uitv_intern) // Extern Bedrijf.
|
||||
{ // Ik ga er van uit dat je NIET als vervanger van een contactpersoon van een ander bedrijf wordt aangewezen.
|
||||
mresult.iamBedrijfContact = mld.iamContact(mld_opdr.uitvoerende_key); // Ben ik contactpersoon van het uitvoerende bedrijf?
|
||||
mresult.iamBedrijfContact = user.iamContact(mld_opdr.uitvoerende_key); // Ben ik contactpersoon van het uitvoerende bedrijf?
|
||||
}
|
||||
mresult.canReadAny = mresult.canRead("WEB_ORDBOF") ||
|
||||
(mresult.iamContact? (mresult.canRead("WEB_ORDBO2") && mresult.iamBedrijfContact) : mresult.canRead("WEB_ORDBO2")) ||
|
||||
@@ -4079,28 +4079,6 @@ mld = {setmeldingstatus:
|
||||
return mld_key;
|
||||
},
|
||||
|
||||
// Ben ik contactpersoon van *een* bedrijf (maakt niet uit welke)
|
||||
// of specifiek van bedrijf_key
|
||||
_user_is_contact: null, // Caching versie zonder bedrijf voor performance
|
||||
iamContact: function _iamContact(bedrijf_key)
|
||||
{
|
||||
if (!bedrijf_key && mld._user_is_contact !== null)
|
||||
return mld._user_is_contact;
|
||||
|
||||
var sql = "SELECT prs_bedrijf_key"
|
||||
+ " FROM prs_contactpersoon"
|
||||
+ " WHERE prs_perslid_key = " + user_key
|
||||
+ " AND prs_contactpersoon_verwijder IS NULL";
|
||||
if (bedrijf_key)
|
||||
sql += " AND prs_bedrijf_key = " + bedrijf_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var isEof = oRs.Eof;
|
||||
oRs.Close();
|
||||
if (!bedrijf_key)
|
||||
mld._user_is_contact = !isEof;
|
||||
return !isEof;
|
||||
},
|
||||
|
||||
// levert een te tonen berichtstring op
|
||||
sendNeedApprovalNotification: function (opdr_key, approver_key)
|
||||
{
|
||||
@@ -5398,7 +5376,7 @@ mld = {setmeldingstatus:
|
||||
// 2) de opdracht toegekend is aan het eigen bedrijf. Opdrachten van het eigen bedrijf mag ik altijd zien.
|
||||
// 3) ik de contactpersoon ben van het uitvoerende externe bedrijf. Opdrachten van eigen bedrijf mag ik altijd zien.
|
||||
// Let op!!! Deze voorwaarde geldt dus alleen voor de WEB_ORDBO2 rechten.
|
||||
var exhandler = mld.iamContact(); // Later nodig voor bepaling eClose.
|
||||
var exhandler = user.iamContact(); // Later nodig voor bepaling eClose.
|
||||
|
||||
if (exhandler) // Dan mag ik *echt* alleen opdrachten toegekend aan mijn bedrijf zien
|
||||
{ // De andere helft van deze if is dan niet genoeg en bovendien *extreem* traag (FSN#29867)
|
||||
|
||||
@@ -317,7 +317,7 @@ function opdr_list(params)
|
||||
var hasAddFactuurRights = ((authparamsFINUSE && authparamsFINUSE.PRSwritelevel < 9) || (authparamsFINFOF && authparamsFINFOF.PRSwritelevel));
|
||||
var hasListFactuurRights = (authparamsFINUSE || authparamsFINFOF || authparamsFINBOF || user.isBudgethouder());
|
||||
|
||||
var exhandler = mld.iamContact(); // Later nodig voor bepaling eClose.
|
||||
var exhandler = user.iamContact(); // Later nodig voor bepaling eClose.
|
||||
function fnrowActionEnabler(oRs)
|
||||
{
|
||||
var o_stat = oRs("mld_statusopdr_key").Value;
|
||||
|
||||
@@ -308,7 +308,7 @@ oRs.close();
|
||||
// <!-- Uitvoerende -->
|
||||
// Ben ik toevallig een contactpersoon van een extern bedrijf? Dan mag ik automatisch
|
||||
// alleen de opdrachten van mijn bedrijf/bedrijven zien (AADS#)
|
||||
var exhandler = mld.iamContact();
|
||||
var exhandler = user.iamContact();
|
||||
|
||||
if (FreezeHandler)
|
||||
{ // Uitvoerende is vast
|
||||
|
||||
@@ -70,7 +70,7 @@ var verdieping_key = getQParamInt("verdieping_key", user.alg_verdieping_key({wit
|
||||
else
|
||||
{
|
||||
// a. ben ik een contactpersoon van een extern bedrijf? Dan mag ik opdrachten van mijn bedrijf zien.
|
||||
var exhandler = mld.iamContact();
|
||||
var exhandler = user.iamContact();
|
||||
if (exhandler)
|
||||
{
|
||||
listmode = 1;
|
||||
|
||||
@@ -33,7 +33,7 @@ function bedrijf_list (pautfunction, params)
|
||||
var outputmode = params.outputmode; // print to 0 = screen, 1 = printer, 2 = excel, etc.
|
||||
var isIntern= params.isIntern;
|
||||
var showall = params.showall;
|
||||
var naam = params.naam.toUpperCase();
|
||||
var naam = params.naam;
|
||||
var levNr = params.levNr;
|
||||
var postcode = params.postcode;
|
||||
var contactpersoon = params.contactpersoon;
|
||||
@@ -132,6 +132,10 @@ function bedrijf_list (pautfunction, params)
|
||||
if (contactpersoon)
|
||||
sql+= " AND UPPER(b.prs_bedrijf_contact_persoon) LIKE "+safe.quoted_sql_wild("%"+contactpersoon+"%");
|
||||
|
||||
if (params.cps_prs_key > 0)
|
||||
sql+= " AND EXISTS (SELECT 1 FROM prs_contactpersoon pcp WHERE pcp.prs_bedrijf_key = b.prs_bedrijf_key AND pcp.prs_perslid_key = {0})".format(params.cps_prs_key);
|
||||
|
||||
|
||||
if (postcode)
|
||||
sql+= " AND (UPPER(b.prs_bedrijf_bezoek_postcode) LIKE "+safe.quoted_sql_wild("%"+postcode+"%")
|
||||
+ " OR UPPER(b.prs_bedrijf_post_postcode) LIKE "+safe.quoted_sql_wild("%"+postcode+"%") +")";
|
||||
|
||||
@@ -28,7 +28,8 @@ var companyName = getQParam("companyName", -1);
|
||||
var companyNr = getQParam("companyNr", -1);
|
||||
var bezoekPostcode = getQParam("bezoekPostcode", -1);
|
||||
var bezoekPlaats = getQParam("bezoekPlaats", -1);
|
||||
var contactpersoon = getQParam("contactPrs", -1);
|
||||
var contactpersoon = getQParam("contactPrs", -1); // naam zoals ingevuld van een prs_bedrijf_contact_persoon
|
||||
var cps_prs_key = getQParamInt("cps_prs_key", -1); // perslidkey van een prs_contactpersoon.prs_perslid_key
|
||||
var locatiekey = getQParamInt("locatiekey", -1);
|
||||
var gebouwkey = getQParamInt("gebouwkey", -1);
|
||||
var dienstkey = getQParamInt("dienstkey", -1);
|
||||
@@ -50,6 +51,7 @@ bedrijf_list ( autfunction,
|
||||
postcode: (bezoekPostcode != -1 ? bezoekPostcode : null),
|
||||
plaats: (bezoekPlaats != -1 ? bezoekPlaats : null),
|
||||
contactpersoon: (contactpersoon != -1 ? contactpersoon : null),
|
||||
cps_prs_key: cps_prs_key,
|
||||
locatiekey: (locatiekey != -1 ? locatiekey : null),
|
||||
gebouwkey: (gebouwkey != -1 ? gebouwkey : null),
|
||||
dienstkey: (dienstkey != -1 ? dienstkey : null),
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
<!-- #include file="../Shared/resultset_table_v2.inc" -->
|
||||
<!-- #include file="../Shared/json2.js" -->
|
||||
<!-- #include file="../Shared/getkenmerksql.inc" -->
|
||||
<!-- #include file="./prs.inc" -->
|
||||
|
||||
<%
|
||||
FCLTHeader.Requires({ plugins:["jQuery"],
|
||||
@@ -42,8 +41,6 @@ function contactpersoon_list (params)
|
||||
{
|
||||
var authparams = user.checkAutorisation('WEB_RELUSE', true)
|
||||
user.auth_required_or_abort(authparams);
|
||||
if (prs.iamContact()) // Als ik contactpersoon ben dan moet ik het ook van dit bedrijf zijn
|
||||
user.auth_required_or_abort(prs.iamContact(params.bedrijf_key));
|
||||
var canAdd = (authparams && authparams.ALGwritelevel < 9); // Alleen met WEB_RELUSE rechten mag ik contactpersonen toevoegen en wijzigen.
|
||||
}
|
||||
|
||||
@@ -127,6 +124,13 @@ function contactpersoon_list (params)
|
||||
if (bedrijf_key > 0)
|
||||
sql += " AND b.prs_bedrijf_key = " + bedrijf_key;
|
||||
|
||||
if (user.iamContact()) // een stukje autorisatie, als ik contactpersoon ben dan moet ik het ook van dit bedrijf zijn
|
||||
sql += " AND b.prs_bedrijf_key IN"
|
||||
+ " (SELECT prs_bedrijf_key"
|
||||
+ " FROM prs_contactpersoon"
|
||||
+ " WHERE prs_perslid_key = " + user_key
|
||||
+ " AND prs_contactpersoon_verwijder IS NULL)";
|
||||
|
||||
if (!search)
|
||||
{
|
||||
if (intern)
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
<!-- #include file="../Shared/selector.inc" -->
|
||||
<!-- #include file="../Shared/bedrijfselector.inc" -->
|
||||
<!-- #include file="../Shared/plaatsselector.inc" -->
|
||||
<!-- #include file="./prs.inc" -->
|
||||
|
||||
<%
|
||||
FCLTHeader.Requires({plugins:["jQuery", "kenmerk"] });
|
||||
@@ -71,9 +70,9 @@ var ALGreadlevel = (authparams? authparams.ALGreadlevel : 9);
|
||||
<td><input type="text" class="fld wildcard" name="contact_name" <%="value='" + (contact_name != ""? safe.htmlattr(contact_name) : "") + "'"%>></td>
|
||||
</tr>
|
||||
<% var filtercode = null;
|
||||
if (prs.iamContact())
|
||||
if (user.iamContact())
|
||||
filtercode = "CP";
|
||||
FCLTbedrijfselector("bedrijf_key", // company
|
||||
FCLTbedrijfselector("bedrijf_key",
|
||||
"sgComp",
|
||||
{ companyKey: comp_key,
|
||||
label: L("lcl_prs_company"),
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
<!-- #include file="../Shared/common.inc" -->
|
||||
<!-- #include file="../Shared/iface.inc" -->
|
||||
<!-- #include file="../Shared/persoonselector.inc" -->
|
||||
<!-- #include file="../Shared/bedrijfselector.inc" -->
|
||||
<!-- #include file="../Shared/selector.inc" -->
|
||||
<!-- #include file="prs_flexkenmerk.inc" -->
|
||||
|
||||
@@ -133,28 +134,33 @@ if (cps_key > -1)
|
||||
<%
|
||||
BLOCK_START("prsPerslid", L("lcl_prs_basisblok"));
|
||||
|
||||
sql = "SELECT prs_bedrijf_key"
|
||||
+ ", prs_bedrijf_naam"
|
||||
+ " FROM prs_v_aanwezigbedrijf"
|
||||
+ " WHERE prs_bedrijf_intern IS NULL"
|
||||
+ " ORDER BY prs_bedrijf_naam_upper";
|
||||
FCLTselector("prs_bdrkey", sql,
|
||||
{ label: L("lcl_prs_companies_name"),
|
||||
initKey: prs_bdrkey,
|
||||
emptyOption: "",
|
||||
var filtercode = null;
|
||||
if (user.iamContact())
|
||||
filtercode = "CP";
|
||||
FCLTbedrijfselector("prs_bdrkey",
|
||||
"sgComp",
|
||||
{ companyKey: prs_bdrkey,
|
||||
label: L("lcl_prs_company"),
|
||||
//autlevel: ALGreadlevel, // Was voorheen niet aanwezig
|
||||
filtercode: filtercode,
|
||||
readonly: (prs_bdrkey != -1),
|
||||
required: true
|
||||
});
|
||||
|
||||
// Een readonly selector heeft geen name, en wordt dus niet gesubmit. Bij toevoegen heb ik die wel nodig.
|
||||
%>
|
||||
<input type="hidden" name="prs_bdrkey" value="<%=prs_bdrkey%>">
|
||||
<% FCLTpersoonselector("prs_prskey",
|
||||
<%
|
||||
if (!user.iamContact()) // Die heeft daar mee te maken
|
||||
{
|
||||
FCLTpersoonselector("prs_prskey",
|
||||
"sgPerson",
|
||||
{ label: L("lcl_person"),
|
||||
perslidKey: prs_prskey,
|
||||
filtercode: "ORDBO2",
|
||||
onChange: "onChangeName"
|
||||
});
|
||||
}
|
||||
RWFIELDTR("prs_naam", "fld", L("lcl_prs_companies_contact_naam"), prs_naam, {required: true, maxlength: 30});
|
||||
RWFIELDTR("prs_tsnvgs", "fldshort", L("lcl_prs_companies_contact_tussenv"), prs_tsnvgs, {maxlength: 15});
|
||||
RWFIELDTR("prs_voorl", "fldshort", L("lcl_prs_companies_contact_voorl"), prs_voorl, {maxlength: 10});
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
Modtime: 06-10-2009 $
|
||||
|
||||
File: prs_show_contactpersoon.asp
|
||||
Status: 60%
|
||||
Description:
|
||||
Parameters: cps_key (required)
|
||||
|
||||
@@ -14,7 +13,6 @@
|
||||
<!--#include file="../Shared/iface.inc" -->
|
||||
<!--#include file="../Shared/persoonselector.inc" -->
|
||||
<!--#include file="prs_flexkenmerk.inc" -->
|
||||
<!-- #include file="./prs.inc" -->
|
||||
|
||||
<%
|
||||
FCLTHeader.Requires({plugins:["jQuery"]})
|
||||
@@ -67,8 +65,8 @@ FCLTHeader.Requires({plugins:["jQuery"]})
|
||||
|
||||
oRs.Close();
|
||||
|
||||
if (prs.iamContact()) // Als ik contactpersoon ben dan moet ik het ook van dit bedrijf zijn
|
||||
user.auth_required_or_abort(prs.iamContact(prs_bdrkey));
|
||||
if (user.iamContact()) // Als ik contactpersoon ben dan moet ik het ook van dit bedrijf zijn
|
||||
user.auth_required_or_abort(user.iamContact(prs_bdrkey));
|
||||
|
||||
%>
|
||||
<html>
|
||||
|
||||
@@ -1437,6 +1437,27 @@ Perslid.prototype.collegakeylist = function ()
|
||||
return prsKeys.join(", ");
|
||||
}
|
||||
|
||||
// Ben ik contactpersoon van *een* bedrijf (maakt niet uit welke)
|
||||
// of specifiek van bedrijf_key
|
||||
Perslid.prototype.iamContact = function _iamContact(bedrijf_key)
|
||||
{
|
||||
if (!bedrijf_key && "_user_is_contact" in this) // _user_is_contact caching versie zonder bedrijf voor performance
|
||||
return this._user_is_contact;
|
||||
|
||||
var sql = "SELECT prs_bedrijf_key"
|
||||
+ " FROM prs_contactpersoon"
|
||||
+ " WHERE prs_perslid_key = " + user_key
|
||||
+ " AND prs_contactpersoon_verwijder IS NULL";
|
||||
if (bedrijf_key)
|
||||
sql += " AND prs_bedrijf_key = " + bedrijf_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var isEof = oRs.Eof;
|
||||
oRs.Close();
|
||||
if (!bedrijf_key)
|
||||
this._user_is_contact = !isEof;
|
||||
return !isEof;
|
||||
}
|
||||
|
||||
// =================================================================================================
|
||||
// =================================================================================================
|
||||
|
||||
|
||||
Reference in New Issue
Block a user