De Therefore a A3 sin teclear

Casos 14/08/2026

Cinco empresas del mismo grupo recibían las facturas de sus proveedores por email y las tecleaban a mano, una a una, en el programa de contabilidad. Monté un puente entre su gestor documental y su contabilidad: la factura llega al correo y a partir de ahí nadie la toca hasta que hay que revisarla. Te cuento cómo funciona por dentro, qué decidí mal por el camino y qué hace falta para que algo así funcione en tu empresa.

Categoría:

Casos

Tecnologías:

PHP, SQL Server, Therefore, Microsoft 365 (Graph), A3, OAuth2, Windows

Resumen del proyecto

El problema: teclear lo que ya estaba escrito

Cinco sociedades del mismo grupo, cada una con su contabilidad, dedicadas al depósito de contenedores. Y un goteo constante de facturas de proveedores entrando por correo todos los días.

El circuito era el de siempre: abrir el email, guardar el PDF, abrir el programa de contabilidad, teclear el proveedor, el importe, el IVA, la fecha, archivar. Multiplicado por cinco empresas y por cada factura del mes. Nadie se quejaba, porque llevaban años así y era «lo normal». Pero si te paras a mirarlo, alguien estaba copiando a mano datos que ya venían escritos en un papel, para meterlos en un ordenador que tenía ese papel a un metro.

A eso se sumaban los contratos: carpetas llenas de PDFs cuyos vencimientos había que vigilar de memoria. Que es una forma elegante de decir que un día se te pasa uno.

La solución: un puente entre lo que archiva y lo que contabiliza

Ya tenían las dos piezas buenas: un gestor documental (Therefore, del ecosistema Canon) donde archivaban todo, y un programa contable (A3) donde llevaban las cinco empresas. Lo que no había era nada en medio. Eso es lo que construí.

La factura llega por email y a partir de ahí no la toca nadie:

Recepción de email (conector Outlook)
    -> Archivo automático en Therefore
    -> Detección de PDFs multipágina (se separan solos)
    -> Validación del proveedor (remitente contra datos maestros)
    -> Extracción OCR (NIF, importes, fechas)
    -> Normalización (divisas, decimales, fechas)
    -> Generación de asientos (Debe/Haber)
    -> Registro de IVA (según régimen fiscal)
    -> Validación (el total debe cuadrar con las líneas)
    -> Exportación a A3 (fichero .DAT)
    -> Archivado final

La cola real en Therefore: facturas pendientes de aprobación entrando solas desde el email (datos difuminados)
La cola real en Therefore: facturas pendientes de aprobación entrando solas desde el email (datos difuminados)

Una factura no es una factura

Aquí está la parte que casi nunca se cuenta cuando alguien vende «lectura automática de facturas». Leer el PDF es la parte fácil. Lo difícil es que no todas las facturas se contabilizan igual.

El sistema distingue cinco tipos y cada uno lleva sus propias reglas:

  • Compra estándar, con IVA al 21 o al 10.
  • Con retención de IRPF, que cambia el asiento entero.
  • Intracomunitaria, con su inversión del sujeto pasivo.
  • Exenta de IVA.
  • En moneda extranjera, con conversión de divisa al cambio de la fecha del documento.
Y todo eso, por cinco sociedades a la vez, cada una con su plan contable y sus cuentas. Un solo flujo, cinco contabilidades separadas al final del camino.

Cuando alguien me pregunta por qué esto no es «instalar un programa que lea facturas», la respuesta es esta lista. La lectura la hace cualquiera. Saber qué hacer con lo leído es el trabajo.

No solo facturas

El mismo puente se acabó llevando dos circuitos más, de esos que siempre quedan huérfanos porque no son de nadie:

  • Contratos: el sistema saca los campos del propio PDF, manda el contrato firmado por email y avisa antes de que venza. Se acabó vigilar fechas de memoria.
  • Proveedores: los datos maestros se sincronizan desde los ficheros que el cliente ya mantenía. No le pedí que cambiara su forma de trabajar para que mi programa estuviera cómodo.

Cómo funciona por dentro

Un planificador va lanzando tareas independientes a intervalos cortos: sincronizar maestros, separar multipágina, validar, normalizar, contabilizar, exportar.

La decisión importante fue esa, que cada tarea vaya por libre. Si una etapa se atasca, las demás siguen trabajando. Un pipeline en el que todo depende de que el paso anterior termine bien es un pipeline que se para entero el día que un proveedor manda un PDF raro.

TareaCadaQué hace
Sincronización de maestros2 minProveedores y cuentas de gasto al día
Separación multipágina30 sUn PDF con tres facturas → tres documentos
Validación y normalización20-30 sProveedor, divisa, decimales, fechas
Contabilización30 sAsientos Debe/Haber + registro de IVA
Exportación30 sFichero .DAT validado, listo para A3
El planificador en marcha: cada tarea del pipeline a su ritmo: normalizar, contabilizar, exportar a A3, indexar contratos
El planificador en marcha: cada tarea del pipeline a su ritmo: normalizar, contabilizar, exportar a A3, indexar contratos

Nada pasa sin cuadrar

Antes de exportar nada, cada factura tiene que pasar tres controles: que el total coincida con la suma de sus líneas, que el IVA sea uno de los tipos admitidos y que la codificación sea la que el programa contable espera recibir.

Lo que no cuadra no se exporta. Se queda señalado, esperando a que lo mire una persona.

Esa es, para mí, la única forma honesta de automatizar contabilidad: el sistema hace solo lo que es seguro y pregunta lo dudoso. Un automatismo que se inventa un número para no parar es mucho peor que un proceso manual, porque el error entra en los libros con aspecto de dato bueno.

El detalle raro: dónde guarda el gestor documental los PDFs

Una de esas cosas que no aparecen en ningún manual y que descubres a base de mirar. El gestor documental no guarda los PDFs sueltos en una carpeta: los mete en unos ficheros propios que en realidad son ZIP con otro nombre.

Y para saber en qué subcarpeta está cada uno hay que hacer una cuenta: se coge el número del documento, se convierte a base 36 y la subcarpeta son sus dos últimos dígitos. Es decir, que para leer un PDF hay que reimplementar la aritmética interna del programa de otro.

Lo cuento porque es un buen ejemplo de dónde se va de verdad el tiempo en una integración. No en la parte que suena difícil, sino en averiguar cómo piensa el sistema con el que te toca hablar.

Por qué corre en Windows y no en Docker

La aplicación se ejecuta en Windows, en la misma máquina que el gestor documental, porque necesita ver directamente las carpetas donde este deja sus ficheros. Un contenedor no llega ahí.

Podría haberlo forzado. Habría quedado más moderno en esta ficha. Pero habría añadido una capa de complicación a cambio de nada, y el que se la come cuando algo falla un martes por la mañana es el cliente. La herramienta correcta no siempre es la más nueva.

Lo que sí hice fue empaquetar todo el entorno (servidor web, PHP y utilidades) en un instalador que deja la máquina lista en ocho pasos guiados, y comprueba al final que llega a la base de datos y a las carpetas. Si un día hay que montarlo otra vez, se monta en una tarde y no es una aventura arqueológica.

Lo que no está

Por honestidad, que una ficha sin huecos confesados es un folleto:

  • Corre sobre una versión de PHP que ya es antigua, la que admitía el entorno de la máquina del cliente. Funciona y está aislada, pero es deuda y la tengo apuntada.
  • Los tipos de factura están cubiertos, pero un caso fiscal nuevo sigue necesitando que yo toque código. No es configurable desde una pantalla.
  • La lectura depende de que el proveedor mande PDFs razonables. Con los que llegan escaneados torcidos, el sistema hace lo correcto: no se lo inventa, lo manda a revisión.

El resultado

Las facturas dejaron de teclearse. El contable del grupo pasó de copiar datos a revisar excepciones, que es a lo que debería dedicarse un contable. Los contratos avisan solos antes de vencer. Y cinco sociedades que hacían cinco veces el mismo trabajo comparten hoy un único circuito.

Nada de esto es inteligencia artificial ni nada espectacular. Es fontanería: conectar dos programas que ya estaban comprados y que llevaban años dándose la espalda.

¿En tu empresa se sigue tecleando lo que ya viene escrito, o vigilando vencimientos de memoria? Escribí una guía sobre cómo elegir un software de gestión documental, y si quieres que miremos tu caso, cuéntamelo aquí.

Preguntas frecuentes

¿Se puede conectar el gestor documental con el programa de contabilidad?

Sí, y suele ser de los proyectos más rentables que hay, porque las dos piezas caras ya están compradas y lo que falta es el trozo de en medio. El gestor documental archiva la factura que llega por email, un proceso lee los datos, decide el asiento y genera el fichero que el programa contable importa. En este caso el puente une Therefore con A3, pero el planteamiento vale para cualquier pareja de programas que permita leer sus datos y aceptar una importación.

¿Qué pasa si el sistema lee mal una factura?

No se contabiliza. Antes de exportar nada, cada factura pasa tres controles: que el total cuadre con la suma de sus líneas, que el IVA sea uno de los tipos admitidos y que la codificación sea la que espera el programa contable. Lo que no cuadra se queda marcado para que lo mire una persona. Es la única forma honesta de automatizar contabilidad: hacer solo lo seguro y preguntar lo dudoso, porque un dato inventado entra en los libros con aspecto de dato bueno.

¿Sirve si tengo varias sociedades con contabilidades separadas?

Es justo el caso para el que se montó. Aquí son cinco sociedades del mismo grupo, cada una con su plan contable y sus cuentas, compartiendo un único circuito de entrada. La factura no sabe de qué empresa es hasta que el sistema mira el proveedor y el destinatario, y a partir de ahí aplica las reglas de esa sociedad. Cinco contabilidades al final, un solo flujo por delante.

¿Qué hace falta para montar algo así en mi empresa?

Tres cosas, y ninguna es comprar más software. Un gestor documental que deje leer sus datos, un programa de contabilidad que admita importar apuntes, y sobre todo tener claras las reglas: qué tipos de factura recibes y cómo se contabiliza cada uno. Esa tercera es la que de verdad cuesta y la que decide si el proyecto sale bien, porque automatizar un criterio que nadie ha escrito nunca es lo que convierte estos proyectos en un pozo.