ING Direct … Vuelva usted en seis meses

Una cosa que ya os he dicho que odio profundamente son las tareas de gestión que tengo que acometer como pequeño empresario (gajes del oficio). No tengo tiempo ni ganas de andar lidiando con temas que nada tienen que ver con la informática.

El caso es que una de esas cosas tiene que ver con los bancos en los que tenemos nuestros escasos dineros… La verdad es que no usamos muchos servicios financieros, pero una de las cosas que sí necesitamos es un TPV virtual para poder cobrar desde la web. La última vez que necesité uno me presenté en la caixa con las escrituras de la nueva empresa y a la semana ya tenía los datos del TPV virtual para poder empezar a cobrar.

El caso es que a principios del mes pasado recibí un folleto de ING direct anunciando que habían creado un nuevo tipo de cuenta para las empresas y que, entre otras cosas, ofrecían un TPV virtual en unas condiciones bastante mejores que las que tenía con la Caixa. Dado que soy cliente particular de ING desde hace un tiempo me decidí a abrir la cuenta para cambiar el TPV… Y ahí es donde el «fresh banking» se ve que no funciona para las empresas.

Tardaron como dos semanas en tenerme operativa la cuenta, desde que envié la documentación hasta que pude recibir una transferencia pasaron exactamente 15 días (y eso llamando para avisar de que no devolviesen la transferencia que acaban de hacerme). Una vez conseguida toda la documentación, tarjeta y claves adecuadas, me decido a solicitar el TPV y me tienen otra semana adicional diciendo que «Sus poderes no permiten hacer eso»… ¡ole sus holandeses huev**! Tras cuatro o cinco llamadas más (esperando un montón, ya que parece que hay pocos operadores para la nueva cuenta) consigo que me hagan caso y desbloqueen el tema de los «superpoderes»… ¿Ningún problema para solicitar el TPV?

Pues no, ahora al solicitarlo me dice:

Dale otra vez al teléfono y a twitter y tras muchas indagaciones me dicen que:

Requiere tener más de 6 meses de antiguedad como cliente (la empresa) para poder solicitar el TPV.

¡Vaya! pues va a ser complicado porque este tipo de cuenta lleva operativo desde finales de octubre (de hecho principios de noviembre en realidad).. La excusa que me ponen en ING es que podría haber tenido una cuenta ahorro negocios, que si que tiene ya más de 6 meses de antiguedad.

En primer lugar tengo que agradecer a ING su atento trato y su interés por mi problema. Sin embargo, me parece un poco arriesgado comercializar un producto anunciando prestaciones que no puedes acceder sino al cabo de seis meses… ¿Qué riesgo tenían con el TPV virtual? Si no hay aparato que prestar ni coste de instalación ni nada que pudiese afectar negativamente al banco.

En resumen, que o me espero 6 meses o no puedo acceder a lo único que me ha interesado de su cuenta… Esto no creo que sea «fresh banking», es más bien «caspa banking», en lugar de ahorrarte tiempo y darte servicios ágiles y eficientes te hacen llamar mil veces, esperar mucho más que con cualquier otro banco para las gestiones y esperar muchísimos meses más para un servicio virtual en lo que ellos debían tener ventaja dada su naturaleza.

No creo que pueda esperar los seis meses, ING tendrá un cliente menos… Y lo probable es que la cuenta personal siga el mismo camino dada la poca inteligencia de los que ofrecen y publicitan sus nuevos servicios. ¡Una pena!

El experimento del remarketing

Después de que en el anterior post me quejase amargamente de la persecución de un baner malencarado, por fin su autor (que ya se ha disculpado) ha publicado las conclusiones y motivaciones de su estudio.

Dejo aquí el enlace a su post: Este Banner me persigue, y le agradezco que se haya molestado en disculparse. Ciertamente me ha hecho ver que las cosas que se pueden hacer con las herramientas de marketing de google también pueden usarse para el mal ;-)

Eduard, estás perdonado, pero, por favor, la próxima vez que nos persigas con una campaña de este tipo, por favor, pon una imagen más agradable como esta:

(Foto sacada de aqui).

Lo que no se es, ¿cuanto te costó esta campaña de «mentalización»?

Páginas estáticas multilingues y con plantilla tiles en struts2

Si, es un título un poco largo, pero he tardado un poco en encontrar una solución a este problema y quiero compartirlo para todos aquellos que os encontréis en la misma tesitura.

Primero, un pequeño resumen de la situación:

  • Aplicación java con struts2+tiles+urlrewrite
  • internacionalización mediante i18n con archivos de properties
  • Necesidad de un número no trivial de páginas «estáticas» con textos largos poco susceptibles de entrar como property.

Los problemas:

  1. No queremos tener una entrada en el tiles.xml por cada página estática pero queremos utilizar las plantillas existentes.
  2. No queremos generar una acción nueva por cada página
  3. No queremos tener que hacer una nueva entrada urlrewrite por cada página
  4. Queremos poder generar páginas de error si no encontramos una página en un idioma determinado.
  5. Queremos poder generar el texto completo en cada idioma como una página html, no como properties.

Si todavía no os habéis hecho una idea, no os preocupeis, es algo normal. Esta situación no se da todos los días.

La solución

O mejor dicho, mi solución…

Voy a crear una única acción que se encargue de determinar el jsp a cargar dentro de la plantilla tiles y voy a modificar una plantilla existente para inyectarle esa nueva página. Además, como el título de la página estará en la plantilla, voy a encargarme de generar el texto en el idioma adecuado. Además, voy a crear un prefijo para el urlrewrite que permita que todo esto quede bonito para google…

Paso a paso:

Modificación del urlrewite.xml:

<rule>
    	<from>^/web/(.*)$</from>
    	<to>/Estaticas.action?pagina=$1.jsp</to>
    </rule>

Con esta regla le decimos que siempre que tengamos una url con la forma /web/mipagina llamaremos a la acción Estaticas y le pasaremos como parámetro mipagina.jsp

Modificacion en struts.xml:

<action name="Estaticas" 
           class="com.yoprogramo.web.action.EstaticasAction">
  <result>/estatica.jsp</result>
</action>

Con esa acción lo que hacemos es llamar a EstaticasAction.java (luego lo vemos) y redirigir a estatica.jsp que tiene este contenido (quitando las cabeceras):

<tiles:definition name="estatica.modif" extends="estatica">
  <tiles:putAttribute name="body" value="${pagina}" />
</tiles:definition>
<tiles:insertDefinition name="estatica.modif" />

Lo que estamos indicando es que se modifique la plantilla con nombre estatica, definida en el tiles.xml y que ponga como atributo body el valor que la acción nos ha devuelto en pagina, de esta manera estaremos utilizando la plantilla definida en el tiles.xml, pero pasándose un jsp distinto. Esta forma de utilizar tiles es lo que se denomina «mutable», para poder utilizarla hay que incluir en el archivo web.xml:

  <context-param>
        <param-name>org.apache.tiles.factory.TilesContainerFactory.MUTABLE</param-name>
        <param-value>true</param-value>
  </context-param>

Ahora que tenemos todo en su sitio, solo tenemos que crear una estructura donde guardar las páginas de cada idioma y poder localizarlas facilmente. Por ejemplo, yo he creado una con esta estructrura:

Arbol de páginas estáticas

Bajo «es» pondré las páginas en español, en «en» las páginas en inglés y en «multi» las páginas multilingues que utilizan el packages.properties para traducir sus claves.

Lo único que nos queda ahora es programar la acción EstaticasAction.java .. Os dejo el código del execute:

		// Eliminamos ruta de lenguaje
		int idx=pagina.lastIndexOf("/");
		String page_name = pagina;
		
		if (idx>0)
			page_name = pagina.substring(idx+1);
		
		idx = page_name.lastIndexOf(".");
		if (idx>0)
			page_name=page_name.substring(0,idx);
		
		//Parte multilingue.
		//Vamos a crear una página para cada idioma, excepto para las
		//que sean muy simples y esas estarán en el directorio /multi
		if (!pagina.contains("/multi")) {
			String lang = getText("locale.language");
			if (lang==null)
				lang="en";
			pagina = "/"+lang+"/"+pagina;
		}
		
		// Ahora comprobamos si existe la página y si no existe redirigimos
		// a una página de error del tipo multi
		String servletContext = 
                     ServletActionContext.getServletContext()
                                                 .getRealPath("/estaticas");
		String filePagina = servletContext+pagina;
		File f = new File (filePagina);
		if (f.exists())
			pagina="/estaticas"+pagina;
		else
			pagina="/estaticas/multi/noexiste.jsp";
		
		// Ahora ponemos el título, que deberá estar como un texto 
		// en package con la forma web.<nombre_pagina>.titulo
		String key = "web."+page_name+".titulo";
		titulo = getText(key);
		
		return SUCCESS;

Una vez todo puesto en su sitio la mecánica para crear páginas estáticas y usarlas en nuestra aplicación es bastante simple:

  1. Crear un jsp con el texto para cada idioma y colocarlos bajo el directorio correcto (p.je. es/mipagina.jsp y en/mipagina.jsp)
  2. Crear una entrada en el package_en.properties y package_es.properties con la clave web.mipagina.titulo indicando el título de la página en cada idioma. (Recordemos que el titulo está en el head de la página y eso suele estar en la plantilla, no en el jsp que estamos modificando).
  3. Ya podemos acceder a /web/mipagina y ver cómo queda dentro de nuestra plantilla.

Igual inicialmente parece mucho trabajo, pero una vez hecho esto podréis hacer tantas páginas estáticas como queráis sin ningún esfuerzo y ligadas a las plantillas del resto de vuestra aplicación.

Hablando con las paredes (del banco digital)

UNO-E te roba

Cuando en el año 2000 aparecío el banco uno-e, el primer banco en España completamente digital, yo me apunté y cree una cuenta en parte como experimento, en parte como apoyo a este tipo de operativa por internet que tanto me gustaba.

Este banco siempre se ha caracterizado por cosas que ahora son normales, como no cobrar comisiones por operativa ni por tarjetas de crédito. A cambio, solo se podía operar por internet o por teléfono. Sufrí la primera implementación del banco, donde todo iba muy, pero que muy lento, el sistema de seguridad dejaba mucho que desear con claves de 4 y 5 caracteres y no ha sido hasta finales de 2010 cuando han lanzado la versión movil (con operativa limitada).

Cuento todo esto para que sepáis que estoy comprometido con la entidad ya que es en ella en la que voy ahorrando mes a mes lo poco que puedo e ingresándolo en una cuenta remunerada ligada a una cuenta corriente. Según lo que operes con la cuenta corriente te dan más o menos interés cada mes en la cuenta remunerada. Entre las cosas que valoran está el hecho de (según el contrato) tener un abono de nómina mensual mayor que 600 Euros (en su publicidad dicen «domiciliando la nómina»). Y yo la tengo domiciliada.

El caso es que me llegó el extracto sobre los intereses que iba a recibir por el mes de octubre y no me incluyen el 1% correspondiente a la nómina. Después de comprobar que efectivamente en septiembre había tenído nómina, pongo una reclamación por internet (método incómodo y con un formulario feo-feo), esperando que reparen su error. Dos días después (haciendo gala de una velocidad impresionante) y a las 9 de la noche, me llaman al movil…

La señorita, tras explicarle de nuevo el problema, me indica que el ingreso de mi nómina ese mes aparece como transferencia y no como abono de nómina (el código interno) y por eso no tengo derecho al 1% de intereses en la otra cuenta. Yo, obviamente, intento hacerle ver que si el importe es el mismo, la fecha es la misma e incluso la cuenta de origen es la misma, es evidente que se trata de mi nómina, independientemente del código interno. Después de tenerme al teléfono durante media hora, consultando con su ¿supervisor? me indican que no, que es un proceso automático y que no tengo derecho. Le indico que puedo pasarles el justificante del banco de origen o incluso pedir un certificado a dicho banco indicando que se trata de una nómina (o incluso de la empresa, que por algo soy empresario)… Pero ella erre-que-erre que no querían considerar como nómina el ingreso.

Una vez quedado claro que no voy a conseguir arreglar el tema, decido poner una reclamación y es ahí donde viene lo mejor:

Yo:

Señorita, ¿podía indicarme el procedimiento para hacer una reclamación?

Ella:

Ya le tomamos nota nosotros de lo que dice, no le corresponde una reclamación.

Yo:

¿Cómo que no? Yo tengo derecho a hacer una reclamación

Ella:

No, como no se ha ingresado como nómina no le corresponde y no puede reclamar

Yo:

Señorita, yo puedo poner una reclamación tenga razón o no, estoy en mi derecho como cliente.

Ella:

Ya dejamos constancia aqui de su caso

Yo:

Señorita, tengo todo el derecho del mundo a hacer una reclamación formal y recibir una respuesta a la misma. Solo le estoy preguntando por el procedimiento

En este punto todo me parecía tan subrealista que no me lo podía creer, ¿realmente no hay forma de poder poner una reclamación? He tenido menos problemas reclamando a telefónica, y eso ya es mucho decir.

Finalmente me pasan con otra señora de atención al cliente (recordemos, las 9:30 de la noche ya) que me insiste que no es un problema suyo, que ellos no lo consideran nómina y que no tengo derecho a la renumeración ¡ni siquiera derecho a quejarme!. Finalmente me dan un numerito para que me quede constancia de que he planteado un problema.

En resumen, una entidad de la que soy cliente desde hace más de 10 años me dice que no puedo quejarme de sus servicios… Bueno, pues me quejaré y no solo eso, sino que me cambiaré de banco: bye-bye uno-e, bienvenido ing…

Para el que esté interesado, este es el enlace para el Servicio de reclamaciones del banco de España y aquí el enlace al procedimiento telemático para presentar las quejas. Aunque eso, si, el plazo de resolución es de 4 meses (solo si estáis dispuestos a esperar).

Y mientras yo perdía el tiempo hablando con las pareces del banco me perdía cómo mi hijo terminaba el Uncharted 3 que estábamos jugando a medias… grrrr…