Software Lab

Joomla 3 – Problema al instalar con la tabla usergroups

Mar
08

Existe un problema al instalar joomla 3 con la creación de la tabla usergroups

Se crean todas las tablas de la base de datos excepto la tabla #__usergroups.

Para solucionarlo hay que abrir el fichero installation\sql\mysql\joomla.sql

Modificar la línea…
Código:
KEY `idx_usergroup_nested_set_lookup` (`lft`,`rgt`) USING BTREE

…Por
Código:
KEY `idx_usergroup_nested_set_lookup`USING BTREE  (`lft`,`rgt`)

Y volver a lanzar el proceso de instalación.

SageCRM v7.1 – Abrir archivos PDF ubicados en el server de Sage CRM.

Ene
22

Con esta herramienta podremos disponer en una ventana de Sage CRM de todos los archivos PDF que tengamos en nuestra carpeta personalizada del server. Cada usuario accede a su carpeta de archivos PDF sin salir de Sage CRM.

Funciona en pcs y tablets con conexión a internet.

Ningún otro usuario podrá acceder a nuestra carpeta de archivos PDF porque está restringida la apertura solo a la carpeta asignada a cada usuario.

No es un visor PDF. El visor PDF será el que cada usuario tenga instalado en su dispositivo.

Nuestro sistema es un sistema instalado en el server de Sage CRM, seguro y estable que emplea las credenciales de los usuarios para permitir de forma selectiva la visualización de los informes PDF a los que tiene acceso.

..

Lo tenemos desarrollado y testado.

Si estás interesado, puedes ponerte en contacto con nosotros.

 

SageCRM v7.1 – Rellenar Población y Provincia entrando solo el campo Código Postal.

Ene
22

Una aplicación del artículo precedente en el que utilizamos el ‘Google Maps API Geocode web service’ para traer a la ficha de Direcciones Postales de Sage CRM, en tiempo real, los datos de Población y Provincia entrando el Código Postal.

Empleando este procedimiento no necesitaremos mantener una tabla de códigos postales en nuestro propio sistema.

En este vídeo mostramos el resultado. Como verás una vez introducido el código postal la población y la provincia se rellenan dinámicamente. Tanto en la creación de un nuevo registro como en la modificación de un registro existente.

A continuación el lugar de Sage CRM donde incrustamos la función JavaScript para activar la llamada al WS de Google que nos devuelve en tiempo real la Población y Provincia dinámicamente al entrar el Código Postal…

Sin-título-1

 

 

Sin-título2

La función está operativa solo para códigos postales de España (ES), pero con una pequeña modificación del país en la cadena de la url de llamada al Web Service se puede adaptar para cargar datos postales de otras naciones.

La solución invoca al motor de datos de Google que le pide sean devueltos en formato Json. Hay dos formatos disponibles: XML y JSON. Nosotros para este primer ejemplo hemos resuelto hacerlo con Json.

Código JavaScript de nuestra función:

<script type=»text/javascript»>
function cpostal() {
    (function() {
        var Lib = {
            ajax: {
                xhr: function() {
                    var instance = new XMLHttpRequest();
                    return instance;
                },
                getJSON: function(options, callback) {
                    var xhttp = this.xhr();
                    options.url = options.url || location.href;
                    options.data = options.data || null;
                    callback = callback ||
                    function() {};
                    options.type = options.type || ‘json’;
                    var url = options.url;
                    if (options.type == ‘jsonp’) {
                        window.jsonCallback = callback;
                        var $url = url.replace(‘callback=?’, ‘callback=jsonCallback’);
                        var script = document.createElement(‘script’);
                        script.src = $url;
                        document.body.appendChild(script);
                    }
                    xhttp.open(‘GET’, options.url, true);
                    xhttp.send(options.data);
                    xhttp.onreadystatechange = function() {
                        if (xhttp.status == 200 && xhttp.readyState == 4) {
                            callback(xhttp.responseText);
                        }
                    };
                }
            }
        };
        window.Lib = Lib;
    })()
        var valor =  document.getElementById(‘addr_postcode’).value ;
        Lib.ajax.getJSON({
            url: ‘http://maps.google.com/maps/api/geocode/json?address=’+valor+’&components=country:ES&sensor=false’,
            type: ‘jsonp’
        }, function(jsondata) {
            var info = JSON.parse(jsondata);
            var poblacion = info.results[0].address_components[1].long_name;
            var provincia = info.results[0].address_components[2].long_name;
            EntryForm.addr_city.value = poblacion;
            EntryForm.addr_state.value = provincia;
        });
}
</script>

Una vista en el navegador de una consulta en al Google Maps API Geocode solicitada en JSON y devuelta en tiempo real seleccionando el código postal ‘35001’ de España ‘ES’.

http://maps.googleapis.com/maps/api/geocode/json?address=35001&components=country:ES&sensor=true

Sin-título3

 

Como complemento a la solución anterior acompañamos también el código incluyendo la petición que nos sea devuelta en formato de datos XML:

<script type=»text/JavaScript»>
//xml parse
//API google maps service
//IE,chrome,firefox,safari
//@angel_torre 2014 feb
//input cpostal,request google maps api,retrieve city and state.
function cpostal() {
var valor = document.getElementById(‘addr_postcode’).value;
fichXML = ‘http://maps.google.com/maps/api/geocode/xml?address=’+valor+’&components=country:ES&sensor=false’;
var xhr = new XMLHttpRequest();
xhr.open(‘GET’,fichXML,false);
xhr.onreadystatechange = function() {
if (xhr.readyState==4) {
var xmlDoc = xhr.responseText;
var pos0 = xmlDoc.indexOf(«<long_name>»);
if (pos0!=-1) {
var pos1 = xmlDoc.indexOf(«<long_name>»,pos0+1);
var pos2 = xmlDoc.indexOf(«</long_name>»,pos1+1);
var prim = xmlDoc.slice(pos1+11,pos2);
var pos3 = xmlDoc.indexOf(«<long_name>»,pos2+1);
var pos4 = xmlDoc.indexOf(«</long_name>»,pos3+1);
var segu = xmlDoc.slice(pos3+11,pos4);
document.forms[0].addr_city.value = prim;
EntryForm.addr_city.value = prim;
document.forms[0].addr_state.value = segu;
EntryForm.addr_state.value = segu;
}
}
}
xhr.send(null);
}
</script>

 

Ejemplo de formato de los datos recibidos de Google en XML

 

Captura

 

Espero tus sugerencias y comentarios, siempre bienvenidos.
Gracias por tu atención.

 

Recuperar población y provincia dando el código postal usando google maps api geocode

Ene
21

Presentamos una herramienta desarrollada en código javascript para html5 que realiza el siguiente proceso:

Dando un código postal español válido nos devuelve su población y su provincia.

Para ello hemos utilizado el  ‘Google Maps Api Geocode’. Se trata de un webservice de Google que devuelve todos los datos de una dirección postal en formato de datos XML o JSON estructurado.

Para nuestra herramienta hemos preferido trabajar con el modelo de datos JSON por compatibilidad y facilidad de  integración con código JavaScript.

La documentación de Google sobre este Web Service tan útil se encuentra en https://developers.google.com/maps/documentation/geocoding/?hl=es

Y nuestro código html con los scripts incrustados es:

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Recuperar población y provincia dando el código postal usando google maps api, by @angel_torre</title>
</head>
<body>
<script type=»text/javascript»>
function locationvars(){
var src = String( window.location.href ).split(‘=’)[1];
//var vrs = src.split(‘&’);
//var arr = [];
//for (var x = 0, c = vrs.length; x < c; x++)
//{
// arr[x] = vrs[x].split(‘=’)[1];
//};
return src;
}
</script>
<script type=»text/javascript»>
(function() {
var Lib = {
ajax: {
xhr: function() {
var instance = new XMLHttpRequest();
return instance;
},
getJSON: function(options, callback) {
var xhttp = this.xhr();
options.url = options.url || location.href;
options.data = options.data || null;
callback = callback ||
function() {};
options.type = options.type || ‘json’;
var url = options.url;
if (options.type == ‘jsonp’) {
window.jsonCallback = callback;
var $url = url.replace(‘callback=?’, ‘callback=jsonCallback’);
var script = document.createElement(‘script’);
script.src = $url;
document.body.appendChild(script);
}
xhttp.open(‘GET’, options.url, true);
xhttp.send(options.data);
xhttp.onreadystatechange = function() {
if (xhttp.status == 200 && xhttp.readyState == 4) {
callback(xhttp.responseText);
}
};
}
}
};
window.Lib = Lib;
})()
var valor = locationvars() ;
Lib.ajax.getJSON({
url: ‘http://maps.google.com/maps/api/geocode/json?address=’+valor+’&components=country:ES&sensor=false’,
type: ‘jsonp’
}, function(jsondata) {
document.querySelector(‘#codigo’).innerHTML=jsondata;
var info = JSON.parse(jsondata);
//document.querySelector(‘#codigos2’).innerHTML=(info.results.address_components[0].long_name);
var poblacion = info.results[0].address_components[1].long_name;
var provincia = info.results[0].address_components[2].long_name;
document.querySelector(‘#codigo2’).innerHTML = poblacion;
document.querySelector(‘#codigo3’).innerHTML = provincia;
});
</script>
Recuperar población y provincia dando el código postal usando google maps api, by @angel_torre<br><br>
<form name=»entrada» onsubmit=»locationvars()»>
<label>Codigo Postal</label><input type=»text» id=»codposid» name=»codigopostal»><input type=»submit» value=»Ok»><br><br>
</form>
<div id=»codigo2″></div><br>
<div id=»codigo3″></div><br>
<div id=»codigo»></div><br>
</body>
</html>

Confío en que esta herramienta sea útil. Hemos utilizado solo una muy pequeña función de este API, no obstante te animo a que lo utilices a fondo, ya que Google ha realizado una importante labor de documentación que  por no tener coste no deja de tener un gran valor.

Para cualquier comentario o sugerencia, no dudes en contactar.

 

MySql y las eñes

Nov
30

¿Alguna vez te ha sucedido que importando datos no has podido IMPORTAR registros con palabras con eñes o se han modificado por otros caracteres?

La solución es muy concreta: se debe modificar la colación de la base de datos:

ALTER DATABASE ‘mydatabase’ DEFAULT CHARACTER SET latin1 COLLATE latin1_spanish_ci;

En algunos casos hemos tenido que utilizar UTF8 en lugar de latin1 para mantener compatibilidad con todos los demás caracteres:

ALTER DATABASE ‘mydatabase’ DEFAULT CHARACTER SET UTF8 COLLATE latin1_spanish_ci;

Sencillo y útil, ¿verdad?

Deja tus comentarios sobre esta experiencia.

Qué, quién, cómo, cuándo y dónde CRM. Sage entrevista a un partner histórico de Sage CRM.

Jul
29

Transcripción de la entrevista realizada por Ainhoa Blanco de Sage a Angel de la Torre de Ademán, partner de SageCRM, el  viernes 12 de julio de 2013.

1.   Qué es para ti un CRM y cómo se lo explicas al cliente

 

Depende del interlocutor.

 

a) Si el interlocutor es un interlocutor de empresa (gerente, directivo, socio) se lo explico como una estrategia de negocio en la cual toda la compañía se organiza para focalizar su esfuerzo hacia la comunicación, captación y conservación de sus clientes.

 

b) Si es un interlocutor informático se lo explico como que es un programa  informático full-web al que entra todo el mundo en la empresa y que tiene miles de herramientas como email masivo, posibilidad de conexión web con tablets y smartphones, etc, que funciona en SQLServer de Microsoft o en Oracle.

 

c) Si es el personal comercial o el personal de soporte o márketing, se lo explico como que es el único programa que van a utilizar ellos y todos sus compañeros, que con dedicarle unos minutos a introducir cada dato de agendas, oportunidades, incidencias y acciones luego van a tener muchos beneficios en cuanto a controlar toda la información (no de gestión ni contable), de sus clientes.

 

2.   Lleváis mucho tiempo con CRM, ¿por qué escogísteis SAGE CRM y no otro?

 

Desde 2005, antes tuvimos algunas experiencias con ACT! y como no eran del todo satisfactorias y SageCRM no terminaba de entrar en España, miramos Salesforce que lo desestimamos por la dependencia tan grande de la fábrica de software.

 

En cuanto SageCRM se presentó en España nos gustó el modelo de software, de negocio (que es diferente al actual que nos gusta más ahora realmente) y comenzamos a trabajar en interno con ello 22 usuarios, y a realizar planes comerciales para venderlo a nuestros clientes.

 

3.   ¿Qué tipología de clientes tenéis actualmente?

 

Cliente heterogéneo en cuanto a su actividad, pero la mayoría son clientes de base instalada, con aplicaciones ERP de Sage.

 

Como somos empresa especializada en ERP Sage desde siempre el enfoque inicial de mercado que dimos a sageCRM es de producto complementario para B.I. pero según fue evolucionando el conocimiento general en las posibilidades de la herramienta (nuestra y del mercado) así como fueron madurando nuestros clientes informáticamente, lo consideramos un  producto fundamental en nuestro portfolio.

 

4.   ¿Trabajáis con Base Instalada o bien buscáis nuevo cliente?

 

Fundamentalmente base instalada por la proximidad a ellos y el conocimiento de sus necesidades. Es interesante remarcar que el conocimiento de una herramienta CRM para la mayor parte de los clientes les ha llegado a través nuestro. Gracias al CRM hemos tenido la oportunidad de establecer nuevos canales de comunicación con los clientes y se han abierto por consiguiente una fuente de ingresos.

Pero también tenemos clientes de New Business, con necesidades puntuales de búsqueda de una solución comercial o de soporte o de marketing incluso con diferente ERP a Sage.

 

5.   En el caso de Nuevo cliente, ¿cómo lo detectáis? ¿en que os basáis para ver la posibilidad de que lo necesita? ¿Tenéis diferente argumento para nuevo cliente que para base instalada?

 

Es diferente.

 

El cliente maduro de N.B. se espera una empresa de comunicación, marketing, formación a empresas, una consultora o similar que lleve 10 años implantando cualquier CRM que le pase por delante o que asuma el reto de implantar un CRM equis que el señor cliente haya visto en su propia competencia, en la de su sector. Frente a este tipo de clientes, luchamos por posicionar marca y estrategia global CRM/ERP/Servicios.

 

Si es un cliente de N.B. no maduro, empieza una carrera de fondo, larga y lenta, en la que hay que informarles desde el scratch, es decir, desde la nada, haciendo de evangelistas y confesores demostrando por qué es tan importante el CRM. Un cliente no maduro se detecta porque no tiene cultura de colaboración interna en cuanto a compartir información o simplemente quiere que todo vaya mejor en su departamento comercial y no sabe cómo y pide ayuda.

 

Al cliente de B.I. lo conocemos bien, tenemos diferentes canales para obtener un feedback tanto de su situación como empresa como de su posición respecto a adoptar nuevas tecnologías y su predisposición a cambiar incluso procedimientos.

        

6.   En el caso de la Base Instalada, ¿quién detecta la necesidad y/o como le creáis la necesidad?

 

Como decía antes, disponemos de diferentes canales para detectar las necesidades de nuestros clientes.

 

El primer canal es nuestro departamento de atención al cliente que en Ademán está centralizado, es el primer filtro por el que pasa un cliente y es derivado desde allí hacia otras áreas. El departamento de atención al cliente es especialmente sensible en detectar necesidades del cliente, pues ha de derivar posteriormente la consulta de un cliente al área de negocio que tiene la misión de dar una solución a ser posible al primer intento.

 

El siguiente canal de comuncación es nuestro primer nivel de soporte, nuestra hotline. Decir en este punto que somos consumidores y usuarios de SageCRM y que desde hace 6 años lo utilizamos para la gestión de incidencias de clientes de ERP, con gran satisfacción por parte de todo nuestro equipo y por supuesto de los clientes con contrato de mantenimiento. Nuestro cliente sabe, desde el minuto 1 que su consulta técnica está registrada, tiene un número de caso y sabe que el motor ya se ha puesto en marcha.

 

El tercer canal es nuestro departamento comercial, que habla periódicamente con el cliente ante una renovación de mantenimiento, una convocatoria, una oferta que pide el cliente, etc, etc. El departamento comercial ofrece a los clientes soluciones tanto si es un cliente de B.I como de NB pero en el caso concreto de B.I. disponemos además de un gestor de cuenta asignado a cada cliente que es el responsable de que esa cuenta esté atendida comercial y técnicamente, siga los proyectos, visite al cliente, le cuide, le mime, en definitiva.

 

También es muy importante la relación personal de los directores de departamento con los clientes. En Ademán las grandes cuentas y los clientes históricos o muy representativos los llevamos directamente los responsables de área y como no puede ser de otra forma, son los clientes mejor informados de nuestro parque.

 

7.   ¿Qué argumentos dais para transmitir al cliente la necesidad de implantar un CRM?

 

No siempre es igual.

Se basa en tener un conocimiento previo de la empresa.

 

En toda empresa hay necesidades, objetivos no cumplidos, proyectos que requieren de un apoyo, de un empuje, de mayor control, de organización, de comunicación…si la empresa lo sabe y  asume que ha de realizar un cambio para mejorar estaremos en sintonía y es cuando decimos que esa empresa entra en la cultura CRM.

 

Pero por la experiencia pensamos que todas las empresas no necesariamente necesitan un CRM, por motivos de cultura, actividad, económicos, tradición familiar impuesta…pero siempre habrá un punto de inflexión en que la empresa madurará y necesitará deslocalizarse, habrá un relevo generacional, se abordarán nuevos proyectos en nuevos mercados, se contratará a más personal comercial, se tendrá que salir de la zona de confort y hacer marketing o ferias o misiones comerciales en nuevos territorios….en ese momento debemos estar cerca con un discurso sensato y rentable para que la empresa cliente valore comprar nuestro CRM.

 

8.¿Priorizáis la venta de ERP+CRM, o primero ERP y luego CRM, o solo CRM, o primero CRM y mas tarde ERP?

 

Por tradición, por nuestra cultura empresarial, por nuestra formación y método de trabajo, priorizamos la venta de ERP. Casi todos los clientes de CRM nos han llegado porque nos conocen debido a que somos expertos en ERP de Sage.

 

Hay casos en que hemos buscado y hemos encontrado clientes solo de CRM, pero no es lo habitual en nuestro método. Me gustaría que se nos conociera también por nuestras soluciones de CRM, estamos en ello…

 

9.   ¿Cual es vuestra experiencia en este sentido?

 

Como digo la mayoría de los clientes de CRM lo han adquirido después del ERP.

Trabajamos también por que la cultura del CRM llegue a todos los rincones de las empresas de los clientes y para que nos puedan designar como a una empresa confiable y solvente en el mundo del CRM además de en ERP u otras áreas como telecomunicaciones o asesoría.

Somos un equipo en el que todos aportamos lo que sabemos hacer para que el cliente se sienta como en su casa.

 

 

10.Para que a un cliente, una empresa pequeñita, no le parezca que CRM le queda grande, ¿que hacéis, cómo se lo presentáis?

 

El enfoque que se le da al CRM en prospectos muy pequeños (micropymes) es el de herramienta de gestión comercial de clientes que le permite crecer comercialmente y tener la base de datos de contactos centralizada, enviar email, registrar las llamadas, configurar algunos campos con datos de su negocio, que se lo hacemos todo nosotros y la formación es de 8-12 horas máximo y se pueden beneficiar de los créditos de la Fundación Tripartita para el Empleo en el trabajo, de la cual Ademán es entidad gestora.

Es decir el primer enfoque es al detectar necesidad de que tienen que mejorar sus ventas, se ofrece una licencia SageCRM entry con los menos usuarios posibles y curva de aprendizaje minima, financiado y llave en mano.

 

Aún así hay muchas objeciones económicas, de desconocimiento de la utilidad, de complicaciones añadidas que se crea el interlocutor, de más costes de mantenimiento al año, etc,etc.

 

Como recurso alternativo se ofrece la opción suscripción que normalmente se desestima por precio y la opción online, el SageCRM cloud. Las experiencias que hemos tenido con estos perfiles no han sido satisfactorias.

 

Para que un cliente admita la necesidad de tener un CRM en su negocio tienen que cumplirse varios factores: que lo necesite por convencimiento propio, que sepa que va a ser rentable a medio plazo, que lo pueda y quiera pagar  y muy importante: que su personal, el personal de su empresa apoye el proyecto.

 

Casi este último es el más importante de los factores. Un equipo de empleados en contra de una herramienta informática hace que la herramienta se hunda, por mucho que la imponga la gerencia.

 

11. ¿Estudiáis los sectores a los que acercaros? ¿Vais a un determinado sector o tipología de empresa?

 

Sí.

Nuestra técnica de prospección no sé bien cómo denominarla pero podría ser: inteligencia comercial.

 

Disponemos de indicadores comerciales que nos muestran cuándo una empresa puede estar madura para necesitar una solución de CRM que cubra sus expectativas de SFA, SUP, MKT, o  simplemente centralización de la información y comunicación.

 

Disponemos también de elementos de balizas que indican que una empresa puede ser receptiva a un CRM.

 

Por ejemplo:

 

¿Alguien dudaría que una empresa del sector químico, como por ejemplo un laboratorio farmacéutico, alguien dudaría de su necesidad urgente de un CRM para gestionar su canal de información y ventas? Es indudable: las compañías farmacéuticas, los bancos, y las aseguradoras son los pioneros en CRM mundialmente.

 

Una anécdota: A finales de los años 80 en España los laboratorios farmacéuticos entregaban a sus comerciales una especie de agendas electrónicas donde registraban las rutas y visitas que se hacían a los médicos y hospitales para informar de los medicamentos. Por el día escribían y por la noche lo transmitían por módem. Eso es CRM, un concepto que llega a formar parte de nuestra cultura empresarial casi 15 años después.

 

Pero hay otras actividades donde se podría dudar de que el CRM sea una de sus prioridades a la hora de invertir en sistemas de información, como por ejemplo una imprenta, o el comercio detallista minorista en general, o la restauración.

No quiero decir que alguno de ellos no pueda necesitar y pedirnos un CRM, sino que para estos el CRM está más alejado en el orden de prioridades que para otras empresas por su actividad.

 

En nuestras prospecciones sondeamos a empresas mayoristas, con un canal de distribución, que ofrezcan soporte o incluso tengan taller, que ya tengan un departamento de marketing interno o externo.

Además acudimos a empresas que por su madurez entiendan el CRM como una inversión y no como un gasto o capricho del director comercial y del gerente.

 

Hemos intentado inclusive entrar en gran empresa, en multinacionales, compañías con más de 200 empleados. El problema habitual en este caso es saltar del responsable comercial o financiero o informático al comité de dirección porque en el primer filtro, después de la demo hecha y cumplidas un 80% de sus expectativas sin desarrollar una línea ven a SageCRM como un producto de gama baja. Erróneamente pensado. Estas empresas de altas miras siempre quieren Rolls Royce y Maseratti  aunque les sobren las marchas y los cilindros, no se conforman con un Mercedes o un BMW que viene a ser SageCRM en el mundo CRM.

 

 

12.Con empresas solo con fuerza comercial y si no tienen fuerza comercial, ¿cómo lo vendéis, por marketing, por postventa, personalizados?

 

Tenemos para todos los casos.

 

El año pasado implantamos un CRM en una empresa catalana mayorista de accesorios hidráulicos donde la responsable de Márketing  estaba harta de que no le salieran sus comunicados por email a sus clientes en el momento y como ella quería. En el momento que les visitamos tenían el CRM de Microsoft. Solo usaban CRM como archivo de clientes para enviarles un boletín mensual y de vez en cuando una tarifa.

Ganamos a la competencia porque demostramos que podíamos hacer un email masivo en su server online y que el documento adjunto fuera como adjunto y no embebido en el cuerpo del mensaje.

He sido incapaz de hacer que lo utilicen aún para los comerciales, que tienen un perfil de comercial muy mayor en la calle recogiendo pedidos a clientes fijos. En cuanto maduren o el mercado les apriete tendremos proyecto de ampliación.

 

La última implantación, el mes pasado en un cliente de Canarias, una cadena de comercios local  que venden accesorios de vehículos en 2 islas, emplean las incidencias y notificaciones para comunicación interna entre áreas (comercial/taller/almacén) con un éxito entre los usuarios total.

Les estamos preparando ahora la integración CTI con centralita digital, y un módulo nuestro de creación de pedidos. Porque los pedidos les entran por ecommerce y por teléfono. Los pedidos por teléfono van a entrar por CRM y se volcarán al ERP.

También han empezado a comunicar tarifas a su clientela por email masivo.

No utilizan nada de marketing y el área comercial de momento tampoco, pero ya les estamos convenciendo para que introduzcan sus oportunidades y agendas comerciales.

 

Otro de nuestros clientes caso de éxito utilizan solo la fuerza de ventas y el marketing mediante nuestro departamento externo de marketing. Nuestro cliente trabaja su base de datos y convoca eventos, asiste a ferias  y les hacemos campañas de captación y fidelización de sus clientes. No utilizan nada el módulo de soporte.

 

13.  ¿Usáis vuestras propias referencias?

 

Sí.

 

En este sentido trabajamos con la base instalada, que la tenemos segmentada por varios indicadores de mercado, potencialidad, fidelidad, producto, capacidad de inversión, etc.

 

En nuestro grupo somos 4 áreas bien definidas: informática, asesoría, marketing y servicios. Hay clientes comunes a todas las áreas y clientes que no. Es cierto que nuestro cliente de un área es potencial de las demás áreas, y a estos clientes es a los que en primera instancia nos dedicamos cuando estamos en campaña.

 

Pero también trabajamos con referencias que llegan de Sage. De CRM he de decir que llegan en una proporción muy baja con respecto a las de ERP.

 

Y también  trabajamos una base de datos de prospectos y leads que llegan de nuestros contactos personales, referencias que llegan recomendadas de un cliente satisfecho, referencias que nos cede un colega o colaborador para que le atendamos nosotros, referencias locales captadas en campañas de puerta fría y referencias que han llegado registrándose en la web.

 

 

14. ¿Hacéis presentaciones individualizadas o en grupo? ¿Cómo las enfocáis? Hablar de producto, sólo de que es un CRM…

 

No tenemos buenas experiencias con las presentaciones masivas.

Hemos invertido muchos esfuerzos en grandes eventos, ferias informáticas, desayunos de trabajo, etc, y si he de ser sincero, no han funcionado bien por regla general, creando frustración. Nos ha ido mejor realizar campañas segmentadas en determinados sectores o zonas, atacando un objetivo definido.

 

Es la filosofía de pegar tiros con metralleta a ver si pasa un pato o espero a que pase un pato y entonces pego un tiro con la carabina de mira telescópica. No sé si esto ilustra la idea que tenemos.

 

Estamos más seguros en el cuerpo a cuerpo, en el terreno físico del cliente, pero con la maleta cargada de recursos. Lo importante es conseguir que nos reciban. Después ya sacamos nuestras armas de venta de intangbles.

 

Los recursos que empleamos en la captación de un cliente potencial al que atendemos personalmente, sobre el papel, puede que sean superiores al coste compartido por unidad en un evento masivo (de hecho tenemos valorado el coste medio de una preventa individual y ronda los 300 euros); pero los resultados en la personalización de soluciones son superiores en nuestro caso.

 

Es posible que sea porque lo sabemos hacer individualmente mejor que de forma colectiva. Tenemos habilidades para ganar la confianza de un cliente a los pocos minutos porque hemos trabajado durante años la empatía y hay una vocación de servicio y respeto por el proyecto del cliente. En seguida se nos ve que vamos en serio y que somos profesionales, que sabemos lo que hay que hacer y somos dentro de lo que cabe tipos normales.

Y que nos levantamos de la silla si no lo vemos claro también, intentando no hacer perder el tiempo a nadie.

 

15.Las que hagáis en grupo, ¿tenéis algún apóstol, algún cliente con el que hayáis ya quedado para que hable de qué necesitaba y los beneficios que ha obtenido con CRM?

 

El apostolado más claro que hemos tenido ha sido el participar en ferias compartiendo stands con nuestros clientes o incluso proveedores de sistemasy que el cliente nuestro nos haya recomendado sobre la marcha a sus mejores clientes. Esto es más productivo que 3 desayunos de trabajo juntos.

Nosotros somos más de evangelistas que de apóstoles.

Cuando un cliente me pregunta: ¿y cual es tu producto estrella? ¿a qué os dedicáis? Yo le contesto, “mi producto estrella eres tú”, con una sonrisa mirándole fijamente a los ojos. “Voy a hacer que mi equipo se ponga a tu servicio para sacar adelante este proyecto que es tu proyecto”.

…si consigues hacerte confiable no hace falta abrir el portátil para hacer una demo. Lógicamente esto solo sucede con clientes de base instalada.

En el caso de clientes de NB no es muy diferente. Tenemos estrategia. Primero hay una técnica que es darse a conocer. Es lenta, en la que intervienen nuestro equipo de marketing y comercial. Luego otra técnica que es conocer bien al cliente y sus posibilidades, que es algo más técnico e impersonal y luego otra técnica que es la de de empatizar, la venta por confianza detectando las necesidades del cliente y aportando soluciones que aporten un valor añadido.

Cubiertas con éxito estas 3 fases el camino está sembrado para la primera reunión personal porque –en general- un gerente lo que quiere es puntos de apoyo donde confiar, no proveedores invisibles de pequeños lujos. Y entonces se van abriendo puertas, mágicamente.

 

16.¿Con qué competencia os soléis encontrar? ¿Qué argumentos tenéis para ello?

 

Los que todos conocemos: Microsoft, Salesforce y SugarCRM.

 

Luego tenemos otro perfil de cliente con ACT! o Goldmine o OutlookPlus al que se le ha quedado pequeño y no suele tener presupuesto para un on-premise.

 

Después hay un nutrido grupo de empresas que creen que todo en Internet es gratis  y que solo quieren algo que no cueste dinero aunque no sepan donde están sus datos ni quien los tiene, que ese no es nuestro cliente, claro. Y que buscan soluciones aunque sea en servidores de Taiwan 100% free.

 

Y por último tenemos a otro grupo de posibles clientes que no saben qué es un CRM, no saben si les puede servir para algo a ellos cuando se lo explicas porque no son una gran empresa, no tienen tiempo para investigar, no se quieren equivocar y si cuesta más que su ERP te dicen directamente que no. Estos son los principales competidores: las personas que no están dispuestas a salir de su zona de confort a pesar de que saliendo es posible que puedan obtener beneficios.

 

Para todos ellos hay un argumento, gracias a los 3 modelos de negocio de SageCRM, que cubren todas las posibilidades en cuanto a prescribir un modelo con más o menos módulos y personalizaciones o sin ellas.

        

17.                    Estimación de tiempos de implantación y que servicios les ofrecéis

 

Es una pregunta con una respuesta muy amplia, pues no hay una plantilla fija para hacer la oferta de servicios. Sí hay plantilla para estimaciones de software por funcionalidad, pero en cuanto a servicios hay que analizar en preventa muy bien antes de valorar.

 

Inicialmente estamos abiertos a los 3 modelos de negocio: on-premise, suscripción y cloud, analizando necesidades, cultura y posibilidades del cliente.

 

Pero en el capítulo de servicios valoramos cada capítulo con esmero para afinar en la propuesta.

 

Los servicios que damos son globales:

Instalación de las bases de datos, de los servidores web y lógicamente de la plataforma SageCRM.

También instalamos los accesorios como servers de correo, páginas web complementarias, enlaces a dispositivos móviles, servicios de terminal, etc. 

Realizamos una consultoría pormenorizada de seguridad y funcional para la puesta en marcha.

 

Configuramos el CRM conforme a un plan funcional que sea viable,

solicitado por el cliente en el que pueden caber siempre sugerencias que hacemos a los clientes basadas en otras experiencias.

 

Esta partida de configuración suele ser la partida que más jornadas lleva y en ella incluimos la personalización de entidades secundarias (máquinas, contratos, delegaciones, etc), tabuladores, pantallas, listas. Utilizamos el API de SageCRM para formatear campos y crear nuevas funciones empleando como lenguaje ASP y javascript.

 

Se realizan las migraciones de datos de ERP y de otras bases de datos comerciales del cliente.

 

Se instalan maquetas de preproducción para testear y analizar con el cliente. También instalamos entornos de desarrollo y test.

 

Formación por perfiles: formación básica de fundamentos de CRM, formación funcional de SFA, SUP y MKT, formación de reporting, formación para el administrador del sistema en 2 niveles. En muchas ocasiones nos han pedido los gerente que expliquemos a sus empleados un modelo de negocio propio de ellos, sobre todo en las formaciones a los equipos comerciales.

 

El usuario es fundamental en el éxito de un proyecto. En tiempo de proyecto sondeamos mucho la satisfacción y objeciones de los usuarios que te pueden tirar abajo un proyecto en caso de desencadenarse un motín a bordo en despacho del gerente.

 

También realizamos desarrollo a medida. Tenemos desarrollado en .Net un enlace entre SageCRM y Sage100 que de forma bidireccional sincroniza empresas, personas, direcciones, teléfonos, emails. Importamos en CRM la ficha económica y estadística de clentes Sage100, con datos de solvencia y de cifra acumulada de ventas, importamos en CRM la cifra de ventas y objetivos de los comerciales, exportamos de CRM a ERP los presupuestos y pedidos validados en las oportunidades de venta de CRM.

 

Realizamos bajo demanda desarrollo de reporting en Crystal Reports de la base de datos de SageCRM para el área comercial y técnica. Listados de realizado sobre previsión por tramos de fechas y por comercial y zona, cuadros de actividades por usuario y periodo, etc.

 

Estamos valorando poder conectar las máquinas de café al CRM para que cuando llegue la hora del café y el usuario se acerque al área de descanso tenga el café ya listo.

 

——–

fin

 

SageCRM v7.1 – Cómo hacer que solo 1 usuario pueda modificar un campo del flujo de proceso de Incidencias

Abr
18

En algún casos nos pueden pedir que un campo del flujo de procesos sea solo visible para todos los usuarios pero solo modificable para 1 gestor de información específico.

En el caso de que el campo afectado sea un campo del flujo de procesos de Incidencias hay que programar un script COM en la propiedad OnCreate del siguiente modo:

Code:

if (Values(«user_userid») != 41)
{
ReadOnly=true;
}

En nuestro ejemplo solo el usuario con código 41 puede modificar el campo detalles de la incidencia «case_problemnote».

Comentarios y sugerencias, siempre son bienvenidos.

 

SageCRM v7.1 – Calcular fechas de seguimiento de incidencias

Abr
08

Podemos incluir una función de fecha dentro de la select de la vista de incidencias para que en tiempo real, el sistema nos calcule los días que han pasado desde que estamos gestionando una incidencia.

Función para calcular los días que ha permanecido abierto un proceso:

.. , DATEDIFF(D, Case_createdDate, GETDATE()) AS DiasAbierto, ..

Este trozo de código se puede insertar dentro de la vista de incidencias -en el apartado de selección de campos- y en la pantalla de consulta de incidencias incluimos el nuevo campo ‘DiasAbierto’.

El resultado obtenido nos mostrará en tiempo real el número de días desde que una incidencia se ha abierto.

Se aprecian comentarios y sugerencias.

 

SageCRM v7.1 – Consultar una Procedure de SQL con JavaScript (server-side)

Feb
17

En este ejemplo vamos a analizar cómo lanzar una query de SQL, perteneciente a un procedimiento almacenado de Sage CRM, sirviéndonos de una función JavaScript que se ejecuta automáticamente al acceder a un formulario.

Esta función, que solo se puede ejecutar del lado del server (server-side), nos va a servir para devolvernos los valores de los campos que necesitamos incorporar en el formulario.

El jScript se puede insertar como código en una función ‘OnChange’ o en una función ‘OnCreate’ de html:

<script language=»JavaScript»>
window.attachEvent(«onload», seed);
// cuando se entra al formulario y al modificar el campo de seleccion
function grab(){
var dato;
dato = document.getElementById(«_HIDDENquot_comisionistaTEXT»).value;
return dato;
}
function getComiAddr(){
var strSQL,myQuery,dato1,CRM;
strSQL = «USE [CRM] GO «;
strSQL += «DECLARE    @return_value int,»;
strSQL += »        @xaddr_address1 varchar(100), «;
strSQL += »        @xaddr_address2 varchar(100), «;
strSQL += »        @xaddr_address3 varchar(100), «;
strSQL += »        @xaddr_address4 varchar(100), «;
strSQL += »        @xaddr_address5 varchar(100), «;
strSQL += »        @xaddr_city varchar(100), «;
strSQL += »        @xaddr_country varchar(100), «;
strSQL += »        @xaddr_postcode varchar(100), «;
strSQL += »        @xaddr_state varchar(100) «;
strSQL += «EXEC    @return_value = [dbo].[getCOMP_ADDRESS] «;
strSQL += »     @xprod_comisionista = » + document.getElementById(«quot_comisionista»).value + «, «;
strSQL += »        @xaddr_address1 = @xaddr_address1 OUTPUT, «;
strSQL += »        @xaddr_address2 = @xaddr_address2 OUTPUT, «;
strSQL += »        @xaddr_address3 = @xaddr_address3 OUTPUT, «;
strSQL += »        @xaddr_address4 = @xaddr_address4 OUTPUT, «;
strSQL += »        @xaddr_address5 = @xaddr_address5 OUTPUT, «;
strSQL += »        @xaddr_city = @xaddr_city OUTPUT, «;
strSQL += »        @xaddr_country = @xaddr_country OUTPUT, «;
strSQL += »        @xaddr_postcode = @xaddr_postcode OUTPUT, «;
strSQL += »        @xaddr_state = @xaddr_state OUTPUT «;
strSQL += «SELECT    @xaddr_address1 as N’@xaddr_address1′, «;
strSQL += »        @xaddr_address2 as N’@xaddr_address2′, «;
strSQL += »        @xaddr_address3 as N’@xaddr_address3′, «;
strSQL += »        @xaddr_address4 as N’@xaddr_address4′, «;
strSQL += »        @xaddr_address5 as N’@xaddr_address5′, «;
strSQL += »        @xaddr_city as N’@xaddr_city’, «;
strSQL += »        @xaddr_country as N’@xaddr_country’, «;
strSQL += »        @xaddr_postcode as N’@xaddr_postcode’, «;
strSQL += »        @xaddr_state as N’@xaddr_state’ «;
strSQL += «SELECT    ‘Return Value’ = @return_value «;
strSQL += «GO»;
myQuery = CRM.CreateQueryObj(strSQL,»»);
myQuery.ExecSQL();
dato1 = myQuery.FieldValue(«@xaddr_address1»);
//alert(dato1);
return dato1;
}
function seed(){
EntryForm.quot_comis_emp.value = grab();
EntryForm.quot_comis_addr1.value = getComiAddr();
}
</script>

Y el procedimiento almacenado que crearemos en MsSqlServer:

//STORED PROCEDURE

USE CRM
GO

CREATE PROCEDURE getCOMP_ADDRESS
        @xprod_comisionista INT,
        @xaddr_address1 varchar(100) OUTPUT,
        @xaddr_address2 varchar(100) OUTPUT,
        @xaddr_address3 varchar(100) OUTPUT,
        @xaddr_address4 varchar(100) OUTPUT,
        @xaddr_address5 varchar(100) OUTPUT,
        @xaddr_city varchar(100) OUTPUT,
        @xaddr_country varchar(100) OUTPUT,
        @xaddr_postcode varchar(100) OUTPUT,
        @xaddr_state varchar(100) OUTPUT
    AS
    BEGIN
        select top 1 @xaddr_address1 = a.addr_address1
        , @xaddr_address2 = a.addr_address2
        , @xaddr_address3 = a.addr_address3
        , @xaddr_address4 = a.addr_address4
        , @xaddr_address5 = a.addr_address5
        , @xaddr_city = a.addr_city
        , @xaddr_country = a.addr_country
        , @xaddr_state = a.addr_state
        , @xaddr_postcode = a.addr_postcode
        from address a, address_link ali
        where ali.adli_companyid = @xprod_comisionista
        and a.addr_addressid = ali.adli_addressid
        and ali.adli_personid is null and a.addr_deleted is null
    END
  
Para concluir, solo recordar que estas funciones solo se pueden ejecutar del lado del server; no funcionan del lado del cliente. Para ejecutar funciones del lado del cliente que accedan desde html directamente a base de datos podemos utilizar Ajax. Pero eso lo veremos en otro artículo.

Gracias por dejar tu comentario.

 

SageCRM v7.1 – Checkboxes selectivos

Ene
10

En SageCRM, al igual que como hemos explicado para otros tipos de datos, podemos interactuar sobre el valor de un campo de tipo checkbox (Casilla) en función del valor de otro campo checkbox.

Para nuestro ejemplo vamos a trabajar con dos campos nuevos creados en la ficha de la empresa que son de tipo checkbox:

En este caso lo que buscamos es que sean excluyentes o antagónicos, es decir: si uno de ellos está activado que el otro automáticamente se desactive. Lo que buscamos con esta función es no dejar en manos del usuario un posible error al marcar ambos campos simultáneamente y que el sistema desmarque automáticamente el campo checkbox sobre el que no está el foco en caso de estar ambos marcados.

La solución es mediante un JavaScript en la propiedad OnChange de la pantalla.

Cada uno de los campos de tipo checkbox tendrá en su propiedad OnChange una llamada a la función que verifica los valores de los checkboxes y que en caso de ser ambos iguales desmarca aquél de ellos en el cual no se encuentre el foco en ese momento.

Y para el segundo campo…

El Script es el siguiente:

<script>
function handleChange1() {  
    if (document.getElementById(«_IDcomp_clientecompra»).checked === true && document.getElementById(«_IDcomp_revisarpptos»).checked === true) {
    document.getElementById(«_IDcomp_revisarpptos»).checked = false;
    }
  }

function handleChange2() {
    if (document.getElementById(«_IDcomp_clientecompra»).checked === true && document.getElementById(«_IDcomp_revisarpptos»).checked === true) {
    document.getElementById(«_IDcomp_clientecompra»).checked = false;
    }
}
</script>

El resultado lo tienes en el siguiente vídeo:

SageCRMv7.1 Checkboxes Selectivos

Con mucho gusto seguiremos atendiendo todas vuestras consultas y sugerencias.