Automatización de la gestión financiera (II): esquema de la solución

Imagen cortesía de KROMKRATHOG en FreeDigitalPhotos.net

En el artículo anterior vimos qué componentes de solución habíamos escogido para montar nuestro sistema de gestión financiera; en este artículo vamos a ver, a vista de pájaro, el esquema de la solución, el proceso que nos va a permitir llevar los movimientos de los distintos bancos con los que trabajemos hacia un repositorio único que, después, explotaremos con herramientas de introspección de datos.

Doy por hecho que desde las entidades con las que trabajes se pueden descargar extractos de movimientos bancarios y que estás familiarizado con el formato de esos extractos y con el significado de cada atributo de datos. En este caso particular voy a trabajar con 2 entidades bancarias; una me permite descargar los movimientos en formato xls (Excel), y la otra en formato csv.

El proceso que vamos a desarrollar se apoya en la herramienta Pentaho data integrationKettle– que, como vimos, es la herramienta de tratamiento de datos y carga de los mismos en el repositorio (base de datos).

Disección del proceso

En el esquema de la solución diferenciamos 3 bloques que se ejecutan de forma secuencial:

  1. Normalización de extractos
  2. Categorización de movimientos
  3. Carga de movimientos

Normalización de extractos

Los 2 bancos con los que opero no sólo proveen de extractos en formatos distintos (xls y csv), sino que su estructura no tiene ni los mismos campos, ni la misma disposición, ni el mismo nombre ni el mismo formato.

El objetivo de este bloque del proceso es normalizar ambos extractos, es decir, convertirlos a un formato común (nuestro propio formato).

Así, si trabajásemos con 3, 4 o más bancos, la idea es que todos los movimientos se representen de la misma forma, independientemente del banco del que proceden para, así, poder seguir con el resto de bloques del proceso trabajando con un único formato.

Categorización de movimientos

Cuando analizas tus entradas y salidas lo habitual es que lo hagas según ciertos grupos, categorías o clasificaciones para poder responder a preguntas como:

  • ¿qué hemos gastado en alimentación y bebidas?
  • de lo gastado en alimentación y bebidas, ¿cuánto hemos gastado en el supermercado?
  • ¿qué hemos ingresado en concepto de nóminas? ¿y en concepto de reembolsos por descuentos?

El objetivo de este bloque del proceso es darle una clasificación a todos esos movimientos para que luego puedas analizarlos convenientemente, es decir, meter cada calcetín en su correspondiente cajón de la cómoda 😉.

Seguramente el banco ya te está enviando los movimientos clasificados, pero no todos los bancos usan una misma forma de clasificar, ni clasifican en distintos niveles de detalle, ni esa forma de clasificar tiene que ser la que a ti te vaya bien.

Lo primero que debes tener claro es ¿cómo quiero yo categorizar mis movimientos bancarios? Coge papel y lápiz, piensa en ello y define tu estructura. En mi caso he optado por una clasificación en categorías y subcategorías (2 niveles); por ejemplo:

Categoria Subcategoría
Alimentación y bebida Supermercado
Alimentación y bebida Comida preparada
Alimentación y bebida Comedor escolar
Hogar Hipoteca
Hogar Electricidad
Hogar Agua
Hogar Seguro
etc…

La categorización será un proceso de 2 pasadas:

  1. Movimientos clasificados por el banco CON traslación directa a nuestro sistema de categorización: en función de la categorización que hace el banco, recategorizamos según el criterio que hayamos definido, para lo que uso una redirección de categorías. Ejemplo: el banco categoriza un movimiento como "Dentista, médico" y nosotros los transformamos en "Salud" (como categoría principal) y "Servicios sanitarios" (como subcategoría).
  2. Movimientos clasificados por el banco SIN traslación directa a nuestro sistema de categorización: deberemos determinar la naturaleza del movimiento analizando la descripción del movimiento, para lo que utilizo un diccionario de categorización. Ejemplo: los pagos del gimnasio el banco los clasifica como "Salud y droguería"; para mí ese movimiento debe irse a ("Deporte", "Gimnasio"). Los pagos de la peluquería también me los clasifica en "Salud y droguería", pero yo los clasifico como ("Cuidado personal", "Peluquería"). Así pues no puedo usar el método basado en redirección de categorías. Analizando la descripción del movimiento, si hallo la palabra "MUSCLESALA" ya sé que eso va a ("Deporte", "Gimnasio"), y si encuentro "CIAN", ya sé que va a ("Cuidado personal", "Peluquería").

Carga de movimientos

Ahora que lo tienes todo en un formato único y correctamente clasificado, ya podemos cargar toda esa información a nuestra base de datos de movimientos bancarios.

Próximos pasos

Espero haya quedado claro el el esquema de la solución.

En futuros artículos os explicaré, con detalle, (y os haré llegar los archivos para su descarga) los bloques de proceso implementados, los problemas que se han tenido que afontar y cómo se han solucionado, y seguro se resolverán algunas dudas que quizás ahora os asalten; de esta forma también vosotros podréis montaros una gestión financiera casera a coste 0.

Os recomiendo que estéis preparados y vayáis pensando en instalaros Pentaho data integration (disponible para Linux, macOS y Windows) y os familiariceis un poco con él (por cierto, se requiere el acceso ‘runtime’ de Java instalado peviamente si no lo tenéis ya).

La serie completa de “Automatización de la gestión financiera”

  1. Problema y solución
  2. Esquema de la solución (este artículo)
  3. Normalización de extractos bancarios

Hay más en preparación.