Se rendre au contenu

Le modèle account.move : Comprendre les factures et les écritures de journal d'Odoo

Un guide complet du modèle comptable central d'Odoo pour les développeurs et les consultants fonctionnels.
10 mars 2026 par
Le modèle account.move : Comprendre les factures et les écritures de journal d'Odoo
Dasolo
| Aucun commentaire pour l'instant

Introduction


Dans Odoo, les modèles définissent comment les données sont structurées et stockées dans la base de données. Chaque élément de données commerciales avec lequel vous travaillez, des commandes de vente aux factures en passant par les écritures de journal, vit dans un modèle.


Comprendre les modèles Odoo est essentiel tant pour les développeurs que pour les consultants fonctionnels. Les modèles sont la base de l'architecture des données Odoo. Ils définissent les champs Odoo, les relations et la logique commerciale.

Cet article se concentre sur l'un des modèles les plus importants de la comptabilité Odoo : account.move. Que vous construisiez des rapports personnalisés, intégriez des systèmes externes ou configuriez des flux de travail de facturation, vous travaillerez avec ce modèle.

Qu'est-ce que le modèle account.move


Le modèle account.move représente les écritures de journal dans Odoo. Dans Odoo 13 et versions ultérieures, il a unifié ce qui était auparavant des modèles séparés : les factures clients, les factures fournisseurs, les notes de crédit et les écritures de journal manuelles. Aujourd'hui, ils vivent tous dans account.move.


Ce modèle dans Odoo est utilisé par le module Comptabilité. Il est le parent de account.move.line, qui contient les lignes de débit et de crédit individuelles. Chaque facture, facture ou écriture de journal est un enregistrement account.move avec une ou plusieurs lignes.


Le modèle est défini dans le module account. D'autres modules l'étendent par le biais de l'héritage de modèle Odoo. La vente ajoute la création de factures à partir des commandes. L'achat ajoute la création de factures. Chaque module ajoute ce dont il a besoin sans dupliquer la structure de base.

Champs clés dans le modèle


Voici les champs Odoo les plus importants dans le modèle account.move. Comprendre ceux-ci vous aidera à travailler efficacement avec les factures, les factures et les écritures de journal.


1. nom

Type : Char. Ce champ stocke le numéro ou le nom de l'écriture de journal. Il est généralement généré automatiquement à partir de la séquence de journal. Affiché dans les vues en liste et sur les documents imprimés.


2. move_type

Type : Sélection. Détermine le type de mouvement : entrée (écriture de journal manuelle), out_invoice (facture client), out_refund (note de crédit client), in_invoice (facture fournisseur), in_refund (note de crédit fournisseur). Ce champ détermine quelles vues et quels flux de travail s'appliquent.


3. état

Type : Sélection. L'état du flux de travail : brouillon, publié ou annulé. Les mouvements en brouillon peuvent être modifiés. Les mouvements publiés sont verrouillés et affectent le grand livre général. Annuler inverse l'effet.


4. date

Type : Date. La date du document. Utilisé pour les rapports, le vieillissement et la clôture de période. Pour les factures, c'est souvent la date de la facture.


5. journal_id

Type : Many2one (account.journal). Le journal auquel ce mouvement appartient. Les journaux de vente, d'achat, bancaires et divers ont chacun le leur. Le journal détermine la séquence et les comptes par défaut.


6. company_id

Type : Many2one (res.company). Dans les configurations multi-entreprises, cela indique à quelle entreprise le mouvement appartient. Affecte la visibilité des enregistrements et la consolidation.


7. partner_id

Type : Many2one (res.partner). Le client ou le fournisseur. Requis pour les factures et les factures. Utilisé pour les rapports d'ancienneté, le rapprochement des paiements et les en-têtes de documents.


8. currency_id

Type : Many2one (res.currency). La devise du mouvement. Les montants sont stockés dans cette devise. Les mouvements multi-devises utilisent la devise de l'entreprise pour les rapports.


9. amount_total

Type : Monétaire. Le montant total du mouvement. Pour les factures, il s'agit du montant dû. Calculé à partir des lignes.


10. amount_residual

Type : Monétaire. Le montant impayé. Pour les factures payées, cela est zéro. Utilisé pour les flux de travail d'ancienneté et de paiement.


11. état_de_paiement

Type : Sélection. Statut de paiement : non_payé, en_paiement, payé, partiel, inversé ou facturation_historique. Gère les rappels de paiement et les rapports.


12. lignes_ids

Type : One2many (account.move.line). Les lignes d'écriture du journal. Chaque ligne a un compte, un débit et un crédit. La somme des débits doit être égale à la somme des crédits.


13. lignes_facture_ids

Type : One2many (account.move.line). Pour les factures et les notes, ce sont les lignes de produit ou de service. Chaque ligne génère une ou plusieurs lignes d'écriture de journal lors de la publication.


14. date_facture

Type : Date. La date de la facture. Utilisée pour la facturation et les périodes fiscales. Peut différer de la date de mouvement dans certaines configurations.


15. date_limite_facture

Type : Date. La date d'échéance de paiement. Calculée à partir des conditions de paiement ou définie manuellement. Utilisée pour le vieillissement et les relances.


16. ref

Type : Char. Référence externe ou numéro de facture fournisseur. Utile pour faire correspondre les paiements et concilier avec des documents externes.


17. origine_facture

Type : Char. Le document source. Pour les factures provenant des commandes de vente, cela stocke le numéro de la commande. Permet la traçabilité de la commande à la facture.


18. date_creation

Type : Datetime. Stocke la date et l'heure de la création de l'enregistrement. Géré automatiquement par Odoo.


19. date_modification

Type : Datetime. Stocke la date et l'heure de la dernière modification. Également géré automatiquement.


20. narration

Type : Texte. Notes internes ou mémo. Affiché sur les écritures de journal imprimées. Non montré aux clients sur les factures.


21. id_position_fiscale

Type : Many2one (account.fiscal.position). La position fiscale pour les règles fiscales. Détermine quelles taxes s'appliquent en fonction du partenaire et du pays.


22. id_condition_paiement_facture

Type : Many2one (account.payment.term). Conditions de paiement (par exemple, Net 30). Utilisé pour calculer la date d'échéance de la facture et diviser les paiements.


23. invoice_user_id

Type: Many2one (res.users). Le vendeur ou l'utilisateur responsable de la facture. Utilisé pour les commissions et les rapports.


24. reversed_entry_id

Type: Many2one (account.move). Pour les écritures inversées, cela renvoie au mouvement d'inversion. Permet de suivre les corrections.


25. to_check

Type: Boolean. Indicateur pour les mouvements qui nécessitent une révision. Utilisé dans la réconciliation bancaire et les flux de travail d'exception.


26. active

Type: Boolean. Indicateur de suppression douce. Lorsque False, l'enregistrement est archivé. Les mouvements annulés sont généralement définis sur active=False.


27. sequence_number

Type: Integer. Le numéro de séquence du journal. Utilisé pour le classement et l'affichage. Géré par le mixin de séquence.


28. amount_untaxed

Type: Monetary. Le sous-total avant impôt. Pour les factures, il s'agit de la somme des montants des lignes avant impôt.


29. montant_taxe

Type : Monétaire. Le montant total de la taxe. Calculé à partir des lignes de facture et de la configuration fiscale.


30. source_email_facture

Type : Char. Pour les factures fournisseurs créées à partir d'un email, cela stocke l'adresse email source. Utilisé pour l'ingestion automatisée des factures.

Comment ce modèle est utilisé dans les flux de travail commerciaux


1. Facturation Client

Lorsqu'une commande de vente est livrée, Odoo crée un account.move avec move_type out_invoice. Les invoice_line_ids proviennent des lignes de commande. La publication du mouvement crée les lignes d'écriture de journal et met à jour les créances.


2. Factures Fournisseurs

Les commandes d'achat peuvent générer des factures, ou les factures sont saisies manuellement. Chaque facture est un account.move avec move_type in_invoice. Le partner_id est le fournisseur. La publication met à jour les dettes.


3. Rapprochement de Paiement

Les paiements sont associés aux factures en utilisant les champs amount_residual et payment_state. Le processus de rapprochement lie les mouvements de paiement aux mouvements de facture et efface le résiduel.


4. Écritures de Journal Manuelles

Les comptables créent des mouvements avec move_type entry pour des ajustements, des provisions ou des corrections. Ils ajoutent manuellement des line_ids avec des comptes, des débits et des crédits. Le mouvement doit être équilibré avant la publication.


5. Notes de crédit et remboursements

Les notes de crédit sont des mouvements avec le type de mouvement out_refund ou in_refund. Elles inversent l'effet de la facture ou de la note de frais originale. L'identifiant de l'entrée inversée renvoie à l'original pour l'audit.

Comment les développeurs étendent ce modèle


Les développeurs étendent account.move en utilisant plusieurs modèles. L'héritage de modèle Odoo est le principal mécanisme.


Héritage de modèle

Utilisez _inherit = 'account.move' pour étendre le modèle. Ajoutez de nouveaux champs Odoo, remplacez des méthodes ou ajoutez des contraintes. Le modèle hérité dans Odoo conserve vos modifications dans un module séparé pour des mises à jour faciles.


Ajout de champs

Définissez de nouveaux champs Odoo dans votre modèle hérité. Utilisez le bon type de champ : Char, Many2one, Boolean, Integer, Text, Selection. Considérez les champs dépendants de l'entreprise pour plusieurs entreprises. Pour les champs spécifiques à la facture, utilisez un domaine sur move_type.


Extensions Python

Remplacez create, write, _post, ou button_draft pour ajouter de la logique. Utilisez super() pour appeler l'original. Faites attention aux champs calculés et à leurs dépendances. Le modèle API dans les décorateurs Odoo (@api.model, @api.depends) contrôle quand les méthodes s'exécutent.


Odoo Studio

Odoo Studio vous permet d'ajouter des champs sans code. Idéal pour des personnalisations rapides comme des champs de référence supplémentaires. Pour une logique complexe, une validation ou des actions automatisées, les modules personnalisés sont plus faciles à maintenir.


Remarque : account.move est un modèle régulier, pas un modèle abstrait Odoo ou un modèle transitoire Odoo. Les modèles abstraits sont utilisés comme modèles et ne créent pas de tables de base de données. Les modèles transitoires sont temporaires et utilisés pour des assistants. account.move stocke des données comptables permanentes.

Meilleures pratiques


  • Filtrez toujours par move_type lors de la création de rapports ou d'intégrations. Différents types ont différents champs requis et comportements.
  • Utilisez le bon journal pour chaque type de mouvement. Mélanger les journaux peut casser les séquences et le reporting.
  • Lors de la création de mouvements via l'API, assurez-vous que les line_ids sont équilibrés (débits = crédits) avant de publier. Les mouvements déséquilibrés échoueront la validation.
  • Pour la création de factures à partir de systèmes externes, mappez vos types de documents au move_type correctement. out_invoice pour les ventes, in_invoice pour les achats.
  • Utilisez le préfixe x_ pour les champs personnalisés afin d'éviter les conflits avec les futures versions d'Odoo.

Erreurs courantes


  • Publication de mouvements sans lignes équilibrées. Odoo rejettera la publication. Vérifiez toujours que les totaux des débits et des crédits correspondent.
  • Modification directe des mouvements publiés. Les mouvements publiés sont verrouillés. Utilisez une annulation et créez un nouveau mouvement à la place.
  • Oublier de définir partner_id sur les mouvements clients ou fournisseurs. De nombreux rapports et flux de travail en dépendent.
  • Utilisation du mauvais move_type. Un out_refund n'est pas la même chose qu'une out_invoice négative. Utilisez le bon type pour les remboursements et les notes de crédit.
  • Surcharge des méthodes de base sans appeler super(). Cela peut casser d'autres modules ou des mises à jour futures.

Conclusion


Le modèle account.move est central pour la comptabilité Odoo. Il représente les factures, les factures et les écritures de journal dans une structure unifiée. Comprendre ses champs et comment les modules l'étendent vous aidera à configurer, personnaliser et intégrer Odoo efficacement.


Que vous soyez un consultant fonctionnel cartographiant des processus métier ou un développeur construisant des modules personnalisés, une bonne compréhension de account.move vous fera gagner du temps et évitera des erreurs.

Besoin d'aide pour votre mise en œuvre d'Odoo ?


Dasolo aide les entreprises à mettre en œuvre, personnaliser et optimiser Odoo. Nous sommes spécialisés dans les intégrations API et le développement Odoo. Notre équipe a une grande expérience de l'architecture des données Odoo et des modèles comme account.move.

Si vous avez besoin d'aide pour votre mise en œuvre d'Odoo, des modules personnalisés ou des intégrations, nous sommes là pour vous aider. Réservez une démo pour discuter de votre projet.

Le modèle account.move : Comprendre les factures et les écritures de journal d'Odoo
Dasolo 10 mars 2026
Partager cet article
Se connecter pour laisser un commentaire.