miércoles, 12 de junio de 2013

SageCRM - Pasar Contacto a Contacto


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&Uacute;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