Se rendre au contenu

Le modèle account.move.line : Comprendre les lignes de journal d'Odoo

Un guide complet sur le modèle de ligne d'écriture de journal d'Odoo pour les développeurs et les consultants fonctionnels.
10 mars 2026 par
Le modèle account.move.line : Comprendre les lignes 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 dans la comptabilité Odoo : account.move.line. Que vous construisiez des rapports personnalisés, intégriez des systèmes externes ou configuriez des flux de travail de réconciliation, vous travaillerez avec ce modèle.

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


Le modèle account.move.line représente des lignes individuelles d'écriture de journal dans Odoo. Chaque ligne est un débit ou un crédit dans une écriture de journal. Ensemble, les lignes d'une écriture de journal doivent équilibrer : le total des débits doit être égal au total des crédits.


Ce modèle dans Odoo est utilisé par le module Comptabilité. C'est l'enfant de account.move, qui représente l'écriture de journal elle-même (factures, factures fournisseurs, relevés bancaires, écritures de journal). Chaque écriture de journal a 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. Le module Vente ajoute des détails sur les lignes de factures. Le module Achat ajoute des détails sur les lignes de factures fournisseurs. Le module Comptabilité analytique ajoute une distribution analytique. 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.line. Comprendre ceux-ci vous aidera à travailler efficacement avec les écritures de journal et les données comptables.


1. nom

Type : Char. Ce champ stocke l'étiquette ou la description de la ligne. Il est requis et généralement affiché dans les vues et rapports d'écritures de journal. Pour les lignes de factures, il provient souvent du nom du produit ou d'une description personnalisée.


2. move_id

Type : Many2one (account.move). Lien entre la ligne et son écriture de journal parente. Chaque ligne appartient exactement à un mouvement. C'est la principale relation dans le modèle.


3. account_id

Type : Many2one (account.account). Le compte auquel cette ligne est affectée. Requis. Doit être un compte non-vue, non-clos. Utilisé pour les rapports et le regroupement du plan comptable.


4. débit

Type : Float. Le montant du débit. Par défaut, il est de 0,0. Pour chaque ligne, soit le débit soit le crédit est défini, pas les deux. Les débits augmentent les comptes d'actifs et de dépenses.


5. crédit

Type : Flottant. Le montant du crédit. Par défaut, il est de 0,0. Les crédits augmentent les comptes de passif, d'équité et de revenus. La somme de tous les débits doit être égale à la somme de tous les crédits dans un mouvement.


6. solde

Type : Flottant. Un champ calculé : débit moins crédit. Représente l'effet net de la ligne. Positif pour les débits, négatif pour les crédits. Utilisé dans les rapports et la réconciliation.


7. partenaire_id

Type : Many2one (res.partner). Le client, le fournisseur ou une autre partie liée à cette ligne. Utilisé pour le suivi des créances et des dettes, les rapports d'ancienneté et la réconciliation.


8. date

Type : Date. La date effective de la ligne. Généralement héritée du mouvement parent. Utilisé pour la clôture de période, les rapports et l'ancienneté.


9. date_maturité

Type : Date. La date d'échéance pour le paiement. Pertinent pour les créances et les dettes. Utilisé pour les rapports d'ancienneté et la planification des paiements.


10. currency_id

Type : Many2one (res.currency). La devise de la ligne. Peut différer de la devise de l'entreprise pour les écritures multi-devises.


11. montant_devise

Type : Flottant. Le montant dans la devise de la ligne. Utilisé lorsque l'écriture comptable est en devise étrangère. Avec currency_id, permet la comptabilité multi-devises.


12. quantité

Type : Flottant. Quantité optionnelle. Utilisé pour les lignes basées sur des produits (factures, factures fournisseurs). Permet des rapports basés sur la quantité et des calculs de prix unitaire.


13. product_id

Type : Many2one (product.product). Le produit lié à cette ligne. Rempli lorsque la ligne provient d'un bon de commande, d'une commande d'achat ou d'une ligne de facture.


14. product_uom_id

Type : Many2one (uom.uom). L'unité de mesure pour la quantité. Utilisé avec product_id pour un affichage et une conversion appropriés des quantités.


15. price_unit

Type : Flottant. Le prix unitaire. Utilisé avec la quantité pour calculer les montants sur les lignes de facture et de facture fournisseur.


16. tax_ids

Type : Many2many (account.tax). Taxes appliquées à cette ligne. Odoo crée des lignes supplémentaires pour les montants de taxe lors de la publication. Utilisé pour les calculs de TVA et d'autres taxes.


17. tax_line_id

Type : Many2one (account.tax). Pour les lignes de taxe, cela fait référence à la taxe qui a généré la ligne. Distingue les lignes de taxe des lignes de compte régulières.


18. analytic_account_id

Type : Many2one (account.analytic.account). Le compte analytique pour le suivi des coûts et des revenus. Utilisé lorsque la comptabilité analytique est activée.


19. analytic_distribution

Type : Json ou Texte. Stocke la distribution analytique à travers plusieurs comptes analytiques. Remplace analytic_account_id dans les versions plus récentes d'Odoo lors de l'utilisation de plans analytiques.


20. ref

Type : Char. Généralement lié au mouvement parent. Référence externe ou mémo. Affiché dans les rapports et utilisé pour le rapprochement.


21. narration

Type : Texte. Généralement lié au mouvement parent. Note interne ou mémo. Non imprimé sur les documents destinés aux clients par défaut.


22. journal_id

Type : Many2one (account.journal). Le journal du mouvement parent. Utilisé pour le filtrage et le reporting par journal.


23. company_id

Type: Many2one (res.company). La société. Dans les configurations multi-sociétés, chaque ligne appartient à une société. Affecte la visibilité des enregistrements et la consolidation.


24. reconciled

Type: Boolean. Indique si la ligne a été entièrement rapprochée. Utilisé pour filtrer les éléments non rapprochés dans les vues de rapprochement.


25. full_reconcile_id

Type: Many2one (account.full.reconcile). Lie toutes les lignes qui ont été rapprochées ensemble. Permet de tracer les groupes de rapprochement.


26. payment_id

Type: Many2one (account.payment). Pour les lignes de paiement, lie au dossier de paiement. Utilisé lors du rapprochement des factures avec les paiements.


27. statement_id

Type: Many2one (account.bank.statement). Pour les lignes de relevé bancaire, lie au relevé. Utilisé dans le rapprochement bancaire.


28. statement_line_id

Type: Many2one (account.bank.statement.line). Lie à la ligne spécifique du relevé bancaire. Utilisé lors de la correspondance des mouvements avec les transactions bancaires.


29. type_affichage

Type : Sélection. Peut être 'ligne_section' ou 'ligne_note' pour les en-têtes de section et les notes dans l'entrée de journal. Ces lignes n'ont pas de débit ou de crédit et sont uniquement destinées à l'affichage.


30. date_creation

Type : Date/heure. Stocke la date à laquelle l'enregistrement a été créé. Géré automatiquement par Odoo. Utile pour l'audit.


31. date_modification

Type : Date/heure. Stocke la date à laquelle l'enregistrement a été modifié pour la dernière fois. Géré automatiquement. Aide à suivre les changements au fil du temps.

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


1. Facturation Client

Lorsque vous confirmez une facture, Odoo crée des enregistrements account.move.line. Les lignes de revenus vont aux comptes de revenus. Les lignes de créances vont au compte client. Des lignes de taxe sont créées pour chaque taxe. Le partner_id est lié au client pour le vieillissement et la réconciliation.


2. Factures Fournisseurs

Les factures créent des lignes pour les dépenses, la TVA déductible et les comptes à payer. Chaque ligne a un account_id, un débit ou un crédit, et un partner_id. La structure reflète celle des factures clients mais avec des types de comptes différents.


3. Rapprochement Bancaire

Les lignes de relevé bancaire sont associées aux lignes de mouvement via statement_line_id. Lorsque vous effectuez un rapprochement, Odoo lie les lignes par full_reconcile_id. Le champ réconcilié est défini sur True.


4. Écritures de journal manuelles

Les utilisateurs créent des écritures de journal avec plusieurs lignes. Chaque ligne a un compte, un débit ou un crédit, et un partenaire optionnel. Odoo impose que les débits soient égaux aux crédits avant la publication.



5. Reporting analytique et de coûts

Lorsque la comptabilité analytique est activée, les lignes portent un analytic_account_id ou une analytic_distribution. Les rapports regroupent par compte analytique pour montrer les coûts et les revenus par projet, département ou autre dimension.

Comment les développeurs étendent ce modèle


Les développeurs étendent account.move.line 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.line' 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 une multi-entreprise. Soyez prudent avec les champs calculés et leurs dépendances.


Extensions Python

Remplacez create, write ou unlink pour ajouter de la logique. Utilisez super() pour appeler l'original. Évitez de briser l'invariant de l'égalité débit-crédit. Le modèle API dans Odoo expose ces méthodes pour des intégrations externes.


Odoo Studio

Odoo Studio vous permet d'ajouter des champs à account.move.line sans code. Idéal pour des personnalisations rapides comme des étiquettes ou des tags supplémentaires. Pour une logique complexe ou des règles de rapprochement, les modules personnalisés sont plus maintenables.

Meilleures pratiques


  • Ne créez jamais ou ne modifiez directement des lignes de mouvement sans passer par le mouvement. Utilisez l'API du mouvement (par exemple, line_ids) afin qu'Odoo puisse maintenir la cohérence et exécuter toutes les vérifications.
  • Lors de la création de rapports, filtrez par move_id.state = 'posted' pour exclure les brouillons et les entrées annulées.
  • Utilisez account_id avec le bon type de compte (créances, dettes, etc.) pour un comportement approprié en matière de vieillissement et de rapprochement.
  • Lors de l'intégration via l'API, créez d'abord le mouvement, puis ajoutez les lignes. Assurez-vous que les débits égalent les crédits avant de publier.
  • Pour les champs personnalisés, utilisez le préfixe x_ ou un préfixe de module pour éviter les conflits avec les futures versions d'Odoo.

Erreurs courantes


  • Définir à la fois le débit et le crédit sur la même ligne. Chaque ligne doit avoir soit un débit, soit un crédit, pas les deux.
  • Créer des mouvements déséquilibrés. La somme des débits doit être égale à la somme des crédits. Odoo valide cela lors de la publication.
  • Modifier des lignes publiées sans utiliser le bon flux de travail de renversement ou d'ajustement. Les entrées publiées doivent être ajustées via de nouveaux mouvements, pas par des modifications directes.
  • Oublier de définir partner_id sur les lignes de créances et de dettes. Cela casse les rapports de vieillissement et le rapprochement.
  • Surcharger des méthodes de base sans appeler super(). Cela peut casser le rapprochement, le verrouillage ou d'autres modules.

Conclusion


Le modèle account.move.line est central dans la comptabilité Odoo. Il stocke chaque débit et crédit dans les écritures de journal, les factures et les factures. 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 flux de travail comptables ou un développeur créant des rapports et des intégrations personnalisés, une bonne compréhension de account.move.line vous fera gagner du temps et évitera des erreurs.

Besoin d'aide avec votre implémentation 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.line.


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

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