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.

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 versres.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 commeExported CSV format.transaction_count, libelléTransaction Count: le nombre de transactions incluses dans le SAF-T.name, libelléRequest ID.submission_id: relation verssaft.submission, décrite commeRelated 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
stateavecDraft,ExportedetSubmitted. - Champ
statusavecDraft,Processing,ApprovedetDenied. - Champ
stateavecDraft,Generated,Validated,Validation FailedetSubmitted. Ce sont ceux affichés dans la listeGenerate SAF-T Files. - Champ
stateavecDraft,Validated,Submitted,Accepted,Rejected,ATCUD UnreachableetError.
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 :

Draft, Generated, Validated, Validation Failed et Submitted, avec taille et transactions à zéro.- Dans
Invoicing › Annual SAF-T Statistics, elle regarde les colonnesCompany,Year,Total Documents,Total ValueetState, 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 :

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_idfigure 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
Vérifié dans le code du module (version 20.0) et dans les sources citées
Sources
- Code du module : flexigo_portugal_saf_t_accounting_atcud_submission_tool 20.0 (6935c20f): models/saft_annual_statistics.py
- Code du module : flexigo_portugal_saf_t_accounting_atcud_submission_tool 20.0 (6935c20f): models/saft_config.py
- Code du module : flexigo_portugal_saf_t_accounting_atcud_submission_tool 20.0 (6935c20f): models/saft_dsar_request.py
- Code du module : flexigo_portugal_saf_t_accounting_atcud_submission_tool 20.0 (6935c20f): models/saft_error_log.py
- Code du module : flexigo_portugal_saf_t_accounting_atcud_submission_tool 20.0 (6935c20f): models/saft_exporter.py
- Code du module : flexigo_portugal_saf_t_accounting_atcud_submission_tool 20.0 (6935c20f): models/saft_submission.py
- apps.odoo.com/apps/modules/20.0/flexigo_portugal_saf_t_accounting_atcud_submission_tool
- apps.odoo.com/apps/modules/17.0/flexigo_portugal_saf_t_accounting_atcud_submission_tool
- apps.odoo.com/apps/modules/18.0/flexigo_portugal_saf_t_accounting_atcud_submission_tool
- apps.odoo.com/apps/modules/19.0/flexigo_portugal_saf_t_accounting_atcud_submission_tool
- flexigotech.com/en/services.html
- flexigotech.com/precios.html
