Aller au contenu principal
Portugal SAF-T (PT) File Checks

Mise en place de Portugal SAF-T (PT) File Checks dans Odoo, racontée par un cas

Pour mettre en route Portugal SAF-T (PT) File Checks, vous devez comprendre trois choses : le formulaire de configuration ATCUD que l'on crée depuis Invoicing, les champs qui rattachent chaque enregistrement à une société et à un schéma, et les états de chaque liste, comme Draft, Generated, Validated, Validation Failed et Submitted pour la génération de fichiers. Nous le parcourons ici avec une entreprise fictive, du premier jour à la fin de la première semaine.

FlexigoTech · Responsable : Víctor Gómez · Mis à jour le 4 novembre 2026

L'essentiel

Versions
Odoo 17, 18, 19 et 20
Vérifié
dans le code du module, version 20.0 · dans les sources citées à la fin
Lecture
5 min

Distribuições Ribeira, le fil du cas

Exemple Cas illustratif : l'entreprise et ses chiffres sont inventés pour expliquer le flux.

Distribuições Ribeira est une entreprise fictive qui facture au Portugal depuis Odoo 18 et qui gère une deuxième société dans la même base de données. Marta, sa responsable administrative, doit préparer Portugal SAF-T (PT) File Checks. Le cas ne comporte pas de chiffres : ce qui compte, ce sont les écrans qu'elle ouvre, les champs qu'elle regarde et les états qu'elle rencontre.

Le module est publié sur Odoo Apps pour 17.0, 18.0, 19.0 et 20.0, Marta choisit donc la fiche de sa version. Il coûte 9 € par version d'Odoo, paiement unique HT, sur les quatre versions, et comme il inclut un service local FlexigoTech Cloud, il faut ajouter l'abonnement de 29 €/mois ou 290 €/an HT (Pro : 58 €/mois ou 580 €/an).

Premier jour : le formulaire de configuration ATCUD

En créant une nouvelle configuration ATCUD depuis Invoicing, Marta découvre un formulaire divisé en sections : informations société, ATCUD, e-mail et notifications, et envoi. Seule l'URL de l'endpoint est renseignée ; le reste est vide.

Nouveau formulaire de configuration ATCUD dans Facturation avec les sections informations société, ATCUD, e-mail et notifications et envoi
Configuration ATCUD tout juste créée, encore sans données : seule l'URL de l'endpoint est remplie et le bas de l'écran est coupé.

Marta parcourt le formulaire section par section, de haut en bas, y compris la partie qui ne tient pas à l'écran. Que l'URL de l'endpoint soit déjà saisie ne lui apprend rien sur le reste : elle ne considère donc pas la configuration comme terminée tant qu'elle ne l'a pas vérifiée en entier.

Les champs que Marta examine de près

Avant de générer quoi que ce soit, Marta passe en revue les champs du module qui la concernent. Voici ceux qu'elle identifie :

  • company_id : présent dans plusieurs modèles du module comme relation vers res.company. Avec deux sociétés dans la même base, Marta vérifie à quelle société appartient chaque enregistrement.
  • schema_url, libellé SAF-T Schema URL : d'après la description du champ, c'est l'URL d'où l'on récupère le schéma XSD du SAF-T portugais.
  • export_file_csv : une pièce jointe (ir.attachment) décrite comme Exported CSV format.
  • transaction_count, libellé Transaction Count : le nombre de transactions incluses dans le SAF-T.
  • name, libellé Request ID.
  • submission_id : relation vers saft.submission, décrite comme Related SAF-T submission if applicable.

Marta n'attribue à ces champs aucune fonction au-delà de ce qu'indiquent leur nom ou leur description. Si vous voulez savoir comment ils s'articulent en interne, c'est expliqué dans comment le module fonctionne en interne.

Les états possibles de chaque enregistrement

Le deuxième jour, Marta apprend les valeurs d'état définies par le module. Il existe quatre jeux distincts, qu'il vaut mieux ne pas confondre :

  • Champ state avec Draft, Exported et Submitted.
  • Champ status avec Draft, Processing, Approved et Denied.
  • Champ state avec Draft, Generated, Validated, Validation Failed et Submitted. Ce sont ceux affichés dans la liste Generate SAF-T Files.
  • Champ state avec Draft, Validated, Submitted, Accepted, Rejected, ATCUD Unreachable et Error.

Dans cette liste, Marta note les valeurs qu'elle veut surveiller chaque jour : Validation Failed, Denied, Rejected, ATCUD Unreachable et Error. Elle ne présume la cause d'aucune ; quand l'une apparaît, elle cherche le texte exact du message dans le guide des messages d'erreur du module.

La première semaine : ce qu'elle vérifie chaque matin

Une fois la configuration faite, pendant la première semaine, Marta ouvre chaque matin les mêmes écrans dans le même ordre. Voici le parcours :

Parcours des listes Annual SAF-T Statistics, SAF-T Error Logs et Generate SAF-T Files dans Facturation
Les statistiques annuelles SAF-T avec société, année, documents, valeur et état ; les journaux d'erreurs avec date, type, gravité, message et la case résolu non cochée ; et la génération de fichiers avec des périodes en Draft, Generated, Validated, Validation Failed et Submitted, avec taille et transactions à zéro.
  • Dans Invoicing › Annual SAF-T Statistics, elle regarde les colonnes Company, Year, Total Documents, Total Value et State, et vérifie que chaque ligne correspond à la société attendue.
  • Dans SAF-T Error Logs, elle lit la date, le type d'erreur, la gravité et le message de chaque enregistrement, et repère ceux dont la case résolu n'est toujours pas cochée.
  • Dans Generate SAF-T Files, elle contrôle l'état de chaque période, du début à la fin, avec la taille du fichier et les transactions.

Dans sa base, avec deux sociétés, la colonne Company est la première que Marta regarde. La même liste dispose d'un bouton New et d'une barre de recherche :

Liste des statistiques annuelles SAF-T avec lignes par société, année, total des documents, valeur totale et état, avec bouton New et barre de recherche
La même liste de statistiques annuelles, avec cinq lignes à l'état Borrador ou Exportado.

Ce que l'on retient du cas Ribeira

  • Le nouveau formulaire ATCUD arrive presque vide, avec seulement l'URL de l'endpoint : parcourez-le section par section, y compris la partie hors écran, avant de le considérer comme complet.
  • company_id figure dans plusieurs modèles. Si vous avez plus d'une société, vérifiez la société de chaque enregistrement avant toute autre chose.
  • Il existe quatre jeux d'états différents. Apprenez dans quelle liste apparaît chacun et lesquels vous voulez surveiller.
  • Les trois listes du parcours (statistiques annuelles, journaux d'erreurs et génération de fichiers) constituent la routine de Marta pendant sa première semaine.

Comment FlexigoTech vous aide

FlexigoTech déploie Odoo 17, 18, 19 et 20 et développe des connecteurs et intégrations sur mesure : nous pouvons donc préparer avec vous la configuration ATCUD et les sociétés. Si vous achetez le module sur sa page flexigotech.com, l'abonnement inclut le module pour les nouvelles versions d'Odoo ; sur l'Odoo App Store, en revanche, chaque version s'y achète séparément (fiche sur Odoo Apps). Sans abonnement, ou avec le service suspendu, ce que fournit l'abonnement s'arrête, et vos données restent dans votre Odoo. Si vous hésitez encore, consultez d'abord ce qu'il couvre et ce qu'il faut avant de l'installer.

À lire aussi

Comment fonctionne Portugal SAF-T (PT) File Checks dans Odoo, vu de l'intérieurLes menus que Portugal SAF-T (PT) File Checks ajoute à Facturation, les modèles derrière, les états de ses listes et la partie qui utilise un service externe.Erreurs de Portugal SAF-T (PT) File Checks : quand chaque message apparaît et que faireChaque message d'erreur de Portugal SAF-T (PT) File Checks mot pour mot : quand il apparaît, ce qu'il signifie et que faire dans Odoo, jusqu'à l'envoi ATCUD.Portugal SAF-T (PT) File Checks : ce qu'il couvre, les prérequis et les versions d'OdooCe que couvre Portugal SAF-T (PT) File Checks selon son README, ce qu'il vous faut avant de l'installer (NIF, ATCUD, e-mail) et les versions d'Odoo.
Vérifié dans le code du module (version 20.0) et dans les sources citées

Sources