Saltar al contenido principal
Portugal SAF-T (PT) File Checks

Puesta en marcha de Portugal SAF-T (PT) File Checks en Odoo, contada con un caso

Para poner en marcha Portugal SAF-T (PT) File Checks tienes que entender tres cosas: el formulario de configuración ATCUD que se crea desde Invoicing, los campos que atan cada registro a una empresa y a un esquema, y los estados de cada lista, como Draft, Generated, Validated, Validation Failed y Submitted en la generación de ficheros. Aquí lo recorremos con una empresa inventada, desde el primer día hasta la primera semana de uso.

FlexigoTech · Responsable: Víctor Gómez · Actualizado el 4 de noviembre de 2026

Lo esencial

Versiones
Odoo 17, 18, 19 y 20
Comprobado
en el código del módulo, versión 20.0 · en las fuentes enlazadas al final
Lectura
5 min

Distribuciones Ribeira, el hilo del caso

Ejemplo Caso ilustrativo: la empresa y sus datos son inventados para explicar el flujo.

Distribuciones Ribeira es una empresa inventada que factura en Portugal desde Odoo 18 y que lleva una segunda sociedad en la misma base de datos. Marta, su responsable de administración, tiene que dejar listo Portugal SAF-T (PT) File Checks. El caso no lleva cifras: lo que interesa es qué pantallas abre, qué campos mira y qué estados va encontrando.

El módulo está publicado en Odoo Apps para 17.0, 18.0, 19.0 y 20.0, así que Marta elige la ficha de su versión. Cuesta 9 € por versión de Odoo, pago único y sin IVA, en las cuatro versiones, y como trae servicio local de FlexigoTech Cloud se suma la suscripción de 29 €/mes o 290 €/año sin IVA (Pro: 58 €/mes o 580 €/año).

Primer día: el formulario de configuración ATCUD

Al crear una configuración ATCUD nueva desde Invoicing, Marta se encuentra un formulario dividido en secciones: información de empresa, ATCUD, correo y notificaciones, y subida. Solo aparece rellena la URL del endpoint; el resto está vacío.

Formulario nuevo de configuración ATCUD en Invoicing con secciones de información de empresa, ATCUD, correo y notificaciones y subida
Configuración ATCUD recién creada, todavía sin datos: solo trae la URL del endpoint y la parte inferior de la pantalla queda cortada.

Lo que hace Marta es recorrer el formulario sección por sección, de arriba abajo, incluida la parte que no cabe en pantalla. Que la URL del endpoint ya aparezca escrita no le dice nada del resto, así que no da la configuración por completa hasta haberla revisado entera.

Los campos que Marta mira con lupa

Antes de generar nada, Marta repasa los campos del módulo que le afectan. Estos son los que identifica:

  • company_id: aparece en varios modelos del módulo como relación con res.company. Con dos sociedades en la misma base de datos, Marta comprueba qué empresa lleva cada registro.
  • schema_url, con la etiqueta SAF-T Schema URL: según la descripción del campo, es la URL de la que se obtiene el esquema XSD del SAF-T portugués.
  • export_file_csv: un adjunto (ir.attachment) descrito como Exported CSV format.
  • transaction_count, con la etiqueta Transaction Count: el número de transacciones incluidas en el SAF-T.
  • name, con la etiqueta Request ID.
  • submission_id: relación con saft.submission, descrita como Related SAF-T submission if applicable.

Marta no le da a estos campos más función que la que dice su nombre o su descripción. Si necesitas saber cómo se encadenan por dentro, está explicado en cómo funciona el módulo por dentro.

Los estados que puede tener cada registro

El segundo día, Marta aprende los valores de estado que define el módulo. Son cuatro juegos distintos, y conviene no mezclarlos:

  • Campo state con Draft, Exported y Submitted.
  • Campo status con Draft, Processing, Approved y Denied.
  • Campo state con Draft, Generated, Validated, Validation Failed y Submitted. Son los que se ven en la lista Generate SAF-T Files.
  • Campo state con Draft, Validated, Submitted, Accepted, Rejected, ATCUD Unreachable y Error.

De esta lista, Marta apunta los valores que quiere tener controlados cada día: Validation Failed, Denied, Rejected, ATCUD Unreachable y Error. No da por hecho el motivo de ninguno; cuando aparece uno, busca el texto exacto del aviso en la guía de mensajes de error del módulo.

La primera semana: qué revisa cada mañana

Con la configuración hecha, la primera semana Marta abre cada mañana las mismas pantallas en el mismo orden. El recorrido es este:

Recorrido por las listas Annual SAF-T Statistics, SAF-T Error Logs y Generate SAF-T Files en Invoicing
Las estadísticas anuales SAF-T con empresa, año, documentos, valor y estado; los registros de errores con fecha, tipo, severidad, mensaje y la casilla de resuelto sin marcar; y la generación de ficheros con períodos en Draft, Generated, Validated, Validation Failed y Submitted, con tamaño y transacciones a cero.
  • En Invoicing › Annual SAF-T Statistics mira las columnas Company, Year, Total Documents, Total Value y State, y comprueba que cada fila corresponde a la sociedad que espera.
  • En SAF-T Error Logs lee la fecha, el tipo de error, la severidad y el mensaje de cada registro, y se fija en cuáles siguen con la casilla de resuelto sin marcar.
  • En Generate SAF-T Files revisa el estado de cada período, de inicio a fin, junto al tamaño de archivo y las transacciones.

En su base de datos, con dos sociedades, la columna Company es la primera que Marta mira. La misma lista tiene botón New y buscador:

Lista de estadísticas anuales SAF-T con filas por empresa, año, total de documentos, valor total y estado, con botón New y buscador
La misma lista de estadísticas anuales, con cinco filas en estado Borrador o Exportado.

Qué se aprende del caso de Ribeira

  • El formulario ATCUD nuevo aparece casi vacío, solo con la URL del endpoint: revísalo sección por sección, incluida la parte que no cabe en pantalla, antes de darlo por completo.
  • company_id está en varios modelos. Si tienes más de una sociedad, revisa la empresa de cada registro antes de mirar nada más.
  • Hay cuatro juegos de estados distintos. Aprende en qué lista ves cada uno y cuáles quieres vigilar.
  • Las tres listas del recorrido (estadísticas anuales, registros de errores y generación de ficheros) son la rutina de Marta en su primera semana.

Cómo te ayuda FlexigoTech

FlexigoTech implanta Odoo 17, 18, 19 y 20 y desarrolla conectores e integraciones a medida, así que podemos preparar contigo la configuración ATCUD y las sociedades. Si compras el módulo en su página de flexigotech.com, con la suscripción va incluido el módulo para las versiones nuevas de Odoo; en el Odoo App Store, en cambio, cada versión se compra allí (ficha en Odoo Apps). Sin suscripción, o con el servicio suspendido, se para lo que da la suscripción, y los datos se quedan en tu Odoo. Si todavía dudas de si te encaja, revisa antes qué cubre y qué hace falta antes de instalarlo.

Sigue leyendo

Cómo funciona Portugal SAF-T (PT) File Checks en Odoo por dentroQué menús añade Portugal SAF-T (PT) File Checks en Facturación, qué modelos tiene detrás, qué estados ves en sus listas y qué parte usa un servicio externo.Errores de Portugal SAF-T (PT) File Checks: cuándo sale cada mensaje y qué hacerCada mensaje de error de Portugal SAF-T (PT) File Checks con su texto literal: cuándo sale, qué significa y qué hacer en Odoo, de la generación al envío ATCUD.Portugal SAF-T (PT) File Checks: qué cubre, qué necesitas antes y en qué versión de OdooQué cubre Portugal SAF-T (PT) File Checks según su README, qué necesitas antes de instalarlo (NIF, ATCUD, correo) y en qué versiones de Odoo está.
Comprobado en el código del módulo (versión 20.0) y en las fuentes enlazadas

Fuentes