OBJETIVO – PASAR CONTACTO A
CONTACTO
SageCRM permite hacer una búsqueda de empresas pero no permite pasar
de empresa a empresa de una manera fácil.
Actualmente, desde la pantalla de búsqueda se
puede abrir una nueva pestaña para cada una de las empresas, con el
inconveniente que cada nueva pestaña implica un nuevo proceso de IExplore que
recarga el uso del CRM. Además al trabajar en varias pestañas a la vez tenemos
la posibilidad de interactuar con varias empresas a la vez y esto causa
desajustes en los resultados del CRM.
El objetivo es conseguir que desde la pantalla
personalizada de “resumen Total” de la empresa se pueda pasar contacto a
contacto hacia adelante y hacia atrás manteniendo la selección de la búsqueda
realizada.
ANTECEDENTES (ACT! 6.0)
Si miramos en otras aplicaciones de gestión de contactos (como ACT 6.0), veremos que si se incluía está función.
Se tiene que tener en cuenta que ACT! 6.0 es
una aplicación de escritorio y SageCRM es una aplicación Web. Por lo tanto
incluir esta funcionalidad en ACT! es mucho más sencillo.
BOTÓN IR A BÚSQUEDA, DESDE LA PANTALLA DE BÚSQUEDA
DE EMPRESA
Se ha creado un nuevo
grupo de Botones que nos permite incluir el Botón de Ir a Búsqueda desde la
pantalla de Búsqueda de Empresas.
Se ha definido la ruta del botón en la siguiente página web: CustomPages/Busqueda/IraBusqueda.asp
Desde la pantalla de
Busqueda de Empresas ahora tendremos el siguiente botón: Ir a Busqueda
MODIFICAR RUTA DEL BOTÓN PARA QUE TENGA EN CUENTA
LOS FILTROS
La ruta del botón Ir a Búsqueda es una ruta fija
(Busqueda/IraBusqueda.asp), pero nosotros queremos que tenga en cuenta los
valores de los filtros.
Para resolver este problema, a través de
Javascript primero remplazaremos la ruta estática del botón por una llamada a
una función javascript (javascript:IraBuqueda();), y luego en esta función de
javascipt obtendremos los valores de los campos (getElementById) y abriremos la
ruta IraBusqueda.asp con los parámetros definidos.
Además, obtenemos el valor del SID mediante un
sustring de las posiciones de la url, para mantener el identificador de sesión
del usuario.
Por lo tanto cuando se clique el botón ir a búsqueda
se ejecutará la función javascript:IraBusqueda(SID)
4
FUNCIÓN JAVASCRIPT IRABUSQUEDA
Crearemos una función Javascript que obtenga el
valor de los filtros (con la función document.getElementById()),
y abre la url IraBusqueda.asp pasándole por parámetros estos valores.
En la URL definitiva también añadiremos el
valor del SID que hemos obtenido a través del parámetro que envía la función
para mantener el identificador de sesión del usuario
PÁGINA “IRABUSQUEDA.ASP”
4
OBTENER ID DEL USUARIO
iduser=eWare.GetContextInfo("selecteduser","user_userid")
;
4
AÑADIR EN LA TABLA “BUSQUEDA” LOS VALORES DE LOS FILTROS
SELECCIONADOS
Se ha creado una nueva tabla en CRM para
registrar la búsqueda realizada por el usuario
Tabla BUSQUEDA
Busq_busq_busquedaid
|
Id de la tabla
|
Busq_userid
|
Id del usuario que
realiza la búsqueda
|
Busq_proyecto
|
Id del proyecto
filtrado
|
Busq_estado
|
Id del estado filtrado
|
…
|
…
|
4
CREAR LA TABLA “EMPRESASBUSQUEDA”
En esta tabla se insertarán las empresas que
forman parte del filtro de búsqueda
Tabla EMPRESASBUSQUEDA
Embu_embu_empresasbusquedaid
|
Id de la tabla
|
Embu_busquedaid
|
Id de la tabla de
búsqueda
|
Embu_userid
|
Id del usuario que
realiza la búsqueda
|
Embu_companyid
|
Id de la empresa de lal
búsqueda
|
4
HACER SELECT EN SQL PARA OBTENER LAS EMPRESAS QUE FORMAN
PARTE DEL FILTRO Y AÑADIRLAS EN LA TABLA “EMPRESAS BUSQUEDA”
recordEmpresas=eWare.FindRecord("Company","comp_secterr="
+ proyecto + " and comp_status='" + estado +"'")
while
(!recordEmpresas.eof)
{
idempresa=recordEmpresas.comp_companyid
recordEM=eWare.CreateRecord("EmpresasBusqueda")
recordEM.Embu_companyid=idempresa
recordEM.Embu_userid=iduser
recordEM.embu_busquedaid=idbusqueda
recordEM.SaveChanges();
recordEmpresas.NextRecord();
}
Response.Write(eWare.GetPage())
|
4
ABRIR LA URL COMPANYSUMMARY.ASP PARA LA PRIMERA EMPRESA
DEL FILTRO
Response.Redirect(eWare.URL("companysummary.asp?Key0=1&Key1="+
idempresa +""))
NOTA: Previamente se tiene que crear una
página asp que simule la página de resumen de empresa (CompanySummary.asp)
PÁGINA “COMPANYSUMMARY.ASP”
4
MIRAR SI LA EMPRESA ESTÁ DENTRO DE LA TABLA
EMPRESASBUSQUEDA PARA EL USERID
recordempresabusuqeda=eWare.FindRecord("EmpresasBusqueda",
"Embu_userid=" + iduser + " and Embu_companyid=" +
comp_companyid + "")
if
(!recordempresabusuqeda.eof)
{
Response.Write("La empresa pertenece a
la busqueda " + recordempresabusuqeda.embu_busquedaid + "")
}
|
4
VERIFICAR QUE LA EMPRESA AÚN CUMPLE LOS REQUERIMIENTOS DE
LA BÚSQUEDA
Se tiene que tener en cuenta que sólo se
contarán las empresas que pertenezcan a la búsqueda y sigan manteniendo los
criterios con los que se realizó la búsqueda.
Por ejemplo, si la búsqueda incluye todas las
empresa del proyecto “DEMO” con estado abierta, en el momento que una de estas
empresas cambie de estado ya no pertenecerá a la búsqueda y ya no se
contabilizará para el total de empresas de la búsqueda.
recordcompanybuscada=eWare.FindRecord("company","comp_companyid="
+ idempresabusqueda + "")
sectorempresabuscada=recordcompanybuscada.comp_secterr
estadoempresabuscada=recordcompanybuscada.comp_status
if
(((sectorempresabuscada==sectorbusqueda) &&
(estadoempresabuscada==estadobusqueda)) ||
(idempresabusqueda==comp_companyid))
{
maxcontactos=maxcontactos+1
}
|
Además tampoco se podrá
acceder desde el botón Anterior o Siguiente a una empresa de la búsqueda que ya
no mantenga los criterios de búsqueda.
4
OBTENER LA EMPRESA ANTERIOR Y SIGUIENTE
//MIRAR SI LA
EMPRESA PERTENECE A UNA BUSQUEDA DEL USUARIO
mostrarcontactoacontacto=false
recordempresabusqueda=eWare.FindRecord("EmpresasBusqueda",
"Embu_userid=" + iduser + " and Embu_companyid=" +
comp_companyid + "")
if
(!recordempresabusqueda.eof)
{
mostrarcontactoacontacto=true
idbusqueda=recordempresabusqueda.embu_busquedaid
recordempresabusqueda2=eWare.FindRecord("EmpresasBusqueda","embu_busquedaid="
+ idbusqueda + "")
empresaanterior=-1
idanterior=0
idsiguiente=0
maxcontactos=0
contactoactual=0
//OBTENER LOS FILTROS DE BUSQUEDA UTILIZADOS
recordBusqueda=eWare.FindRecord("Busqueda","busq_Busq_busquedaid="
+ idbusqueda + "")
sectorbusqueda=""
estadobusqueda=""
if (!recordBusqueda.eof)
{
sectorbusqueda=recordBusqueda.busq_proyecto
estadobusqueda=recordBusqueda.busq_estado
}
//OBTENER LA EMPRESA SIGUIENTE Y LA EMPRESA ANTERIOR
while (!recordempresabusqueda2.eof)
{
idempresabusqueda=recordempresabusqueda2.Embu_companyid
//VERIFICAR QUE LA EMPRESA AUN MANTIENE LOS
CRITERRIOS DE BUSQUEDA PARA INCREMENTAR EL CONTADOR DE TOTAL DE EMPRESAS
recordcompanybuscada=eWare.FindRecord("company","comp_companyid="
+ idempresabusqueda + "")
sectorempresabuscada=recordcompanybuscada.comp_secterr
estadoempresabuscada=recordcompanybuscada.comp_status
if
(((sectorempresabuscada==sectorbusqueda) &&
(estadoempresabuscada==estadobusqueda)) ||
(idempresabusqueda==comp_companyid))
{
maxcontactos=maxcontactos+1
}
if(idempresabusqueda==comp_companyid)
{
contactoactual=maxcontactos
idanterior=empresaanterior
}
else
{
//VERIFICAR QUE LA EMPRESA AUN MANTIENE LOS
CRITERRIOS DE BUSQUEDA PARA INDICAR QUE SEA LA SIGUIENTE O LA ANTERIOR
recordcompanysiguiente=eWare.FindRecord("company","comp_companyid="
+ idempresabusqueda + "")
if
((recordcompanysiguiente.comp_secterr==sectorbusqueda) &&
(recordcompanysiguiente.comp_status==estadobusqueda))
{
if ((idanterior!=0) && (idsiguiente==0)) //El siguinte paso despues de encontrar el
id actual {
idsiguiente=idempresabusqueda
}
empresaanterior=idempresabusqueda
}
}
recordempresabusqueda2.NextRecord();
}
}
|
4
MOSTRAR CONTACTO ACTUAL DE TOTAL CONTACTOS
//AÑADIR LA
BARRA DE BUSQUEDA ACTUAL "CONTACTO
ACTUAL DE TOTAL CONTACTOS EN LA BUSQUEDA PASAR CONTACTO A CONTACTO
if (eWare.Mode ==View){
if
(mostrarcontactoacontacto==true){
content=eWare.GetBlock('content')
content.contents="<table width='95%'
bgcolor=#C0C0C0><tr><td><b>BÚSQUEDA
ACTUAL:</B></TD><TD align=right> <b>" +
contactoactual + " de " + maxcontactos +
"</b></td></tr></table>"
AddBlock(content)
}
}
|
Resultado Final
Finalmente, sólo nos
quedará mostrar cómo hacer para acceder a un número
específico de la búsqueda, pero esto ya lo veremos en otro post.
No hay comentarios:
Publicar un comentario