Hola a todos,
Estoy haciendo pruebas con el módulo de Verifactu de OCA en un entorno real de un cliente, pues está interesado en ver cómo se comporta, revisar mensajes de respuesta de la AEAT y tener preparado a su equipo de Administración para el 1 de enero de 2026, cuando el sistema sea obligatorio.
El cliente, lógicamente, no quiere tener Verifactu activo todo el tiempo, porque mientras está activado, incluso en modo pruebas:
-No se pueden pasar facturas a borrador.
-No se pueden eliminar facturas.
-Y eso, en el día a día, les complica bastante la operativa contable
De momento, por lo que he hablando con el cliente, está haciendo (más o menos) la siguiente secuencia de operaciones, de manera frecuente:
- Activa Verifactu en la configuración de la compañía ->se crea un encadenamiento inicial (verifactu.chaining).
- Crea y valida algunas facturas de prueba, que se envían a la AEAT en modo pruebas.
- Desactiva Verifactu para poder volver a trabajar con normalidad.
- Las facturas de prueba que creó, las pasa a borrador y las elimina.
- Más adelante, reactiva Veri*factu para hacer nuevas pruebas, generando un nuevo encadenamiento.
El problema viene porque, cuando se desactiva Verifactu y luego se borran las facturas de prueba, quedan registros huérfanos en las tablas de Verifactu (verifactu_invoice_entry y sus líneas de respuesta). Si, como resultado de las pruebas que hizo el cliente hubo registros que quedaron en estado de error, cuando el cron intenta enviar documentos pendientes se encuentra con esas entradas que apuntan a facturas que ya no existen (account.move eliminadas).
Como el cron da por hecho que todas las facturas de la cadena existen y tienen fecha de registro, lanza un error del tipo:
TypeError: '<' not supported between instances of 'bool' and 'datetime.datetime'
Es decir: intenta comparar una fecha con un False, porque la factura ya no está.
Con esta operativa de pruebas que está realizando el cliente, las consecuencias directas son (no sé si habrá más):
-En verifactu_invoice_entry hay varias líneas con document_id que ya no existen en account_move.
-El cron sigue intentando procesarlas porque están en estado 'not_sent' o 'incorrect'.
-Al no encontrar el documento, el cron se rompe.
Entiendo perfectamente que esto no va a ocurrir cuando se ponga en marcha el sistema en real, porque el módulo ya impide borrar o editar facturas una vez están confirmadas, lo que es correcto, por supuesto.
Pero hasta 2026, muchos clientes estarán en esta situación “mixta”, activando y desactivando Verifactu para hacer pruebas puntuales.
Por eso me gustaría preguntar:
1. ¿Cuál sería la operativa recomendada para realizar pruebas sin romper los encadenamientos ni llenar la base de datos de restos?
2. O lo más prudente es, directamente, hacer todas las pruebas en una base de test completamente separada, o en una compañía ficticia?
Muchísimas gracias por adelantado por vuestras opiniones
Ignacio