Este es un proyecto ejecutado en colaboración con ¡ea! la Asociación Andaluza de Consumidores y Usuarios .

Antecedentes

Gas Natural Andalucía S.A está obligada a devolver tanto las cuotas de alta (hasta el 19 de julio de 2.004) como las cuotas de canon IRC (hasta el 5 de agosto de 2.005), ya que las clausulas correspondientes a estos conceptos fueron declarados nulos por sentencia judicial.

El juzgado ha ordenado a la empresa que informe acerca de los usuarios a los que cobró indebidamente para proceder a la devolución de las cuotas cobradas indebidamente.

La documentación aportada

La forma de "informar" de la empresa (al juzgado) ha sido la siguiente:

  • Envío de diversos archivos de texto ordenados en diversas columnas tales como NIF, número de póliza, números de factura, etc. Pos supuesto, toda esta información no está contenida en un sólo archivo, sino en varios, y ha sido necesario combinarlos para obtener un archivo final coherente que contenga ciertos datos de interés.
  • Envío de 104.351 archivos de póliza en formato PDF ilegibles de manera automática, dado que proceden de un escaneo de documentación en papel y que en la gran mayoría de los casos está escrito a mano.
  • Envío de 40.003 archivos PDF correspondientes a las facturas de alta (estos sí que son legibles por un sistema automatizado).
  • Envío de 66.531 archivos PDF correspondientes a las facturas primeras que incorporan el concepto de Canon IRC (también legibles)
  • Envío de 67.198 archivos PDF correspondientes a las facturas últimas que incorporan el concepto de Canon de IRC (también legibles).

 

El procesamiento de la información

Sin entretenernos en más detalles, vemos que la documentación es a todas luces incompleta y errónea por los siguientes motivos:

Existe muchos menos archivos de facturas que afectados, por lo que no disponemos de toda la información relativa a cada afectado para poder realizar los cálculos.

Los archivos PDF (de facturas, que no de pólizas) aunque son legibles, incorporan del orden de 100 errores de forma (que ha sido necesario ir corrigiendo a lo largo de la ejecución del proyecto) algunos errores destacados son:

  • Los mismos conceptos aparecen bajo epígrafes distintos
  • Existen varios modelos de archivos PDF, cada uno de los modelos estructurado de manera diferente (no lo iban a poner fácil, evidentemente).
  • Las fechas de lectura de gas están invertidas en buena parte de los archivos (la lectura actual intercambiada por la anterior y a la inversa).
  • Algunas facturas primeras y últimas de IRC están intercambiadas.
  • Algunos archivos aparecen en otros idiomas (catalán, por ejemplo, cuando se refieren a usuarios de Andalucía........sin comentarios)
  • Aparecen infinidad de NIFs erróneos (numeración absurda, etc.)

Objetivo del proyecto

 Pues es sencillo de comprender: Se trata de crear una base de datos coherente que podamos consultar para obtener las cantidades exactas a devolver para cada reclamante basándonos en el caos de información suministrada.

Desarrollo del proyecto

Como se puede comprender, el proceso no ha sido nada sencillo y ha requerido de varios meses de trabajo (un 80% del tiempo dedicado a detectar y corregir los errores de las fuentes).

A tal objeto, se han creado una serie de programas escritos en Java capaces de leer la documentación, tanto de texto como de los PDF y que son capaces de generar la base de datos final.

Dado que hay algunos cientos de miles de archivos PDF sobre los que realizar un "parsing" (análisis sintáctico) para extraer la documentación relevante convenía utilizar un hardware potente. A tal efecto, se empleó un ordenador MacBook Pro de Apple equipado con 10 GB de RAM, un disco de estado sólido de 256 GB y un procesador Intel i7 de cuatro núcleos..........y no es por gusto, dado que solía ocurrir que cuando el sistema iba procesando el archivo 125.314 (es un ejemplo), se encontraba con un nuevo error y ¡vuelta a empezar!.

Una vez creadas las tablas que sintetizan la información de las pólizas, facturas de alta, facturas primera de IRC y facturas última de IRC "sólo" queda llevar a cabo los procedimientos de cálculo para obtener las cantidades exactas a devolver a cada reclamante. 

En el caso del concepto de alta, es relativamente sencillo (una vez soslayado el problema de que este concepto se nombra de formas diversas en los PDF); mas ardua resultó la tarea de calcular el canon de IRC.

En principio, esta es una cantidad que se cobra de manera bimensual (aproximadamente) y su importe anda entre tres y cuatro euros dependiendo del año. Por supuesto, si Gas Natural hubiese aportado las facturas de todos los reclamantes, el proceso sería sencillo: Sumarlos todos. 

Desgraciadamente, sólo suministra la primera y la última de las facturas por lo que es necesario "interpolar" los valores intermedios. ¿Cómo realizamos la interpolación?; pues no es sencillo:

Se toma el valor de canon IRC de la primera factura y se divide entre los días transcurridos entre la lectura anterior y la lectura actual de gas; esto nos da el canon diario. Ahora, en teoría, sólo tenemos que multiplicar el número de días transcurridos entre la lectura anterior de la primera factura de IRC y la lectura actual de la última factura de IRC por el canon diario obtenido anteriormente. 

Por supuesto, hemos de tener en cuenta que el IPC ha ido variando a lo largo de los años, por lo que hemos de ponderar el canon diario para cada año según el IPC correspondiente.

Los problemas aparecen cuando no existe, por ejemplo, la primera factura de IRC ¿qué hacemos?: Pues tomar como fecha de inicio del cálculo la fecha de la factura de alta y calcular el canon diario a partir de la última factura de IRC aplicando un proceso inverso de IPC para estimar el valor que tendría el canon diario en el momento del alta del reclamante.......sencillo ¿no?.

Bueno, pues en total existen ocho posibilidades diferentes pero no voy a aburrir explicando cómo se trata cada una de ellas, aunque sí que quiero hacer mención a un problema curioso que se presentó:

Normalmente, los periodos de lectura son bimensuales (aproximadamente), con lo que el canon irc diario calculado es una cantidad relativamente constante para un año determinado, pero hay muchos casos en los que el periodo entre lecturas es de pocos días y, sin embargo, el canon cobrado es el habitual de entre tres y cuatro euros. Al dividir, nos sale un canon diario muy alto con respecto a la media y al multiplicarlo por el número de días que el reclamante ha sido abonado de Gas Natural, nos salen cantidades desorbitantes. ¿Cómo solucionarlo?:

Como siempre, las matemáticas están a nuestro servicio para resolvernos la vida: Realizamos una gráfica de frecuencias relativas del valor del canon diario para todos los reclamantes y obtenemos lo que vemos en la siguiente gráfica:

En esta página no se aprecia demasiado bien, pero si "pincháis" con el botón derecho la imagen y la abrís en una nueva pestaña o ventana del navegador, la veréis a su tamaño natural.

Lo que podemos apreciar es que los valores del canon se agrupan alrededor de dos picos. Curioso ¿verdad?.

Bien, lo que hacemos entonces es analizar, para cada reclamante, el canon diario obtenido y si resulta mayor de un determinado valor (en este caso, 0,15€) significa que se sale de margen. Decidimos entonces modificar su valor por el que tendría de modo más probable, esto es, lo ajustamos a 0,06 € que es el máximo absoluto de la gráfica (el valor más probable, evidentemente), con lo que los cálculos ya son otra cosa.

Por cierto, que la cantidad total a devolver asciende a la friolera de  ¡10.089.705 €!

 Y ya vamos llegando al final........

Herramientas utilizadas

Además del hardware al que nos hemos referido anteriormente, se ha utilizado:

  • Eclipse como IDE de desarrollo en Java.
  • MySQL como motor de base de datos (tampoco hay que exagerar usando Oracle).
  • Matlab como herramienta de cálculo matemático. 

La ley de protección de datos

Todas las fuentes de información se han tratado de manera confidencial, ya que contienen datos sensibles de los reclamantes,  y no se han transmitido desde el ordenador de desarrollo por ningún medio electrónico (cifrado o no). Para más seguridad, permanecen tanto las fuentes como la documentación elaborada en un disco rígido extraíble.

 

 Y eso es todo.........