En SageCRM tenemos una entidad llamada biblioteca, dónde podemos adjuntar cualquier tipo de documentación.
Además esta documentación podrá ir vinculada a cualquier otra entidad (Empresa, Persona, Incidencia...)
Los documentos de la biblioteca pueden estar en borrador o en estado final (un documento en estado borrador nos permitirá modificarlo directamente en SageCRM).
El problema lo encontramos cuando queremos restringir ciertos documentos a ciertos usuarios.
Debido a que la entidad de Biblioteca no es una entidad "Principal" no podemos asignar permisos sobre ella.
Aún así, aquí traigo una solución a este problema. Solamente necesitamos hacer 4 cosas:
1. Indicar a cada documento de la biblioteca un equipo
2. Definir a cada usuario su equipo primario, y que otros equipos puede visualizar
3. Añadir el campo de "Equipo" dentro de la pantalla de filtro de la biblioteca.
4. Escribir el siguiente script dentro del script de creación del campo "Eqiupo" de la pantalla de filtro.
eWare.Mode=1
idprofile=eWare.GetContextInfo("selecteduser","user_territoryprofile")
if ((idprofile==17) ||
(idprofile==20) || (idprofile==15))
{
user=new
String(eWare.GetContextInfo("selecteduser","user_userid"))
if
((user=="undefined") || (user=="") ||
(user=="null"))
user=0
equipo=new
String(eWare.GetContextInfo("selecteduser","user_primarychannelid"))
if
((equipo=="undefined") || (equipo=="") ||
(equipo=="null"))
equipo=0
record=eWare.FindRecord("Channel_Link","ChLi_User_Id="
+ user)
Query=eWare.CreateQueryObj("Select
* from Custom_captions where capt_family='channels'")
Query.SelectSQL();
if (!record.eof)
{
while
(!Query.eof)
{
existe=false
if
(Query("Capt_code")==equipo)
existe=true
while(!record.eof)
{
if
(Query("Capt_code")==record.ChLi_Channel_Id)
existe=true
record.NextRecord();
}
if
(existe==false)
RemoveLookup(Query("Capt_code"))
record.FirstRecord();
Query.NextRecord();
}
DefaultValue=equipo
}
}
|
Que hace este script?
Lo primero que hace es obtener el perfil del usuario (En este ejemplo, sólo funcionará para los usuarios que estén dentro del perfil 15, 17 o 20)
A continuación obtiene el id del usuario , y el id del equipo primario.
Luego obtenemos todos los equipos que puede visualizar el usuario (Channel_Link) y todos los Equipos que existen.
Recorremos todos los equipos que existen en el CRM y en el caso que uno de los equipos del CRM, no sea uno de los equipos que puede visualizar el usuario, lo eliminamos del desplegable.
De esta manera, finalmente nos quedará un desplegable de Equipos, únicamente con los equipos que puede visualizar el usuario
A tener en cuenta
Esto no funciona para los usuarios administradores, ya que en estos casos, todo y que eliminemos los valores del desplegable, cuando marquemos la opción de "TODOS", visualizaremos los documentos de todos los equipos. En cambio, un usuario que no sea administrador, cuando marque la opción "TODOS", sólo verá los documentos de los equipos que hay definidos en el desplegable.
No hay comentarios:
Publicar un comentario