Zum Inhalt springen

Das Modell account.move.line: Odoo's Journalbuchungszeilen Verstehen

Ein vollständiger Leitfaden zum Journalbuchungszeilenmodell von Odoo für Entwickler und funktionale Berater
10. März 2026 durch
Das Modell account.move.line: Odoo's Journalbuchungszeilen Verstehen
Dasolo
| Noch keine Kommentare

Einführung


In Odoo definieren Modelle, wie Daten strukturiert und in der Datenbank gespeichert werden. Jedes Stück Geschäftsdaten, mit dem Sie arbeiten, von Verkaufsaufträgen über Rechnungen bis hin zu Buchungseinträgen, lebt in einem Modell.


Das Verständnis von Odoo-Modellen ist sowohl für Entwickler als auch für funktionale Berater unerlässlich. Modelle sind das Fundament der Odoo-Datenarchitektur. Sie definieren Odoo-Felder, Beziehungen und Geschäftslogik.

Dieser Artikel konzentriert sich auf eines der wichtigsten Modelle in Odoo Accounting: account.move.line. Egal, ob Sie benutzerdefinierte Berichte erstellen, externe Systeme integrieren oder Abstimmungsabläufe konfigurieren, Sie werden mit diesem Modell arbeiten.

Was ist das Modell account.move.line


Das Modell account.move.line repräsentiert einzelne Buchungssätze in Odoo. Jede Zeile ist eine Belastung oder Gutschrift in einem Buchungssatz. Zusammen müssen die Zeilen eines Buchungssatzes ausgeglichen sein: Die Gesamtsumme der Belastungen muss den Gesamtsummen der Gutschriften entsprechen.


Dieses Modell in Odoo wird vom Buchhaltungsmodul verwendet. Es ist das Kind von account.move, das den Buchungssatz selbst darstellt (Rechnungen, Rechnungen, Bankauszüge, Buchungssätze). Jeder Buchungssatz hat eine oder mehrere Zeilen.


Das Modell ist im Modul account definiert. Andere Module erweitern es durch die Vererbung von Odoo-Modellen. Der Verkauf fügt Einzelheiten zu Rechnungszeilen hinzu. Der Einkauf fügt Einzelheiten zu Rechnungszeilen hinzu. Die analytische Buchhaltung fügt analytische Verteilungen hinzu. Jedes Modul fügt hinzu, was es benötigt, ohne die Kernstruktur zu duplizieren.

Wichtige Felder im Modell


Hier sind die wichtigsten Odoo-Felder im Modell account.move.line. Das Verständnis dieser Felder wird Ihnen helfen, effektiv mit Buchungssätzen und Buchhaltungsdaten zu arbeiten.


1. name

Typ: Char. Dieses Feld speichert das Label oder die Beschreibung der Zeile. Es ist erforderlich und wird typischerweise in den Ansichten und Berichten von Buchungssätzen angezeigt. Bei Rechnungszeilen stammt es oft vom Produktnamen oder einer benutzerdefinierten Beschreibung.


2. move_id

Typ: Many2one (account.move). Verknüpft die Zeile mit ihrem übergeordneten Buchungssatz. Jede Zeile gehört genau zu einem Buchungssatz. Dies ist die Hauptbeziehung im Modell.


3. account_id

Typ: Many2one (account.account). Das Konto, auf das diese Zeile gebucht wird. Erforderlich. Muss ein nicht-ansichtbares, nicht-geschlossenes Konto sein. Wird für die Berichterstattung und Gruppierung des Kontenplans verwendet.


4. debit

Typ: Float. Der Betrag der Belastung. Standard ist 0,0. Für jede Zeile wird entweder eine Belastung oder eine Gutschrift gesetzt, nicht beides. Belastungen erhöhen die Vermögens- und Aufwandskonten.


5. Kredit

Typ: Float. Der Kreditbetrag. Standardwert ist 0,0. Kredite erhöhen Verbindlichkeiten, Eigenkapital und Ertragskonten. Die Summe aller Lastschriften muss der Summe aller Kredite in einem Buchungssatz entsprechen.


6. Saldo

Typ: Float. Ein berechnetes Feld: Soll minus Haben. Stellt den Nettobetrag der Zeile dar. Positiv für Soll, negativ für Haben. Wird in Berichten und bei der Abstimmung verwendet.


7. partner_id

Typ: Many2one (res.partner). Der Kunde, Lieferant oder andere Partei, die mit dieser Zeile verknüpft ist. Wird zur Verfolgung von Forderungen und Verbindlichkeiten, für Altersberichte und zur Abstimmung verwendet.


8. Datum

Typ: Datum. Das effektive Datum der Zeile. Wird normalerweise vom übergeordneten Buchungssatz übernommen. Wird für den Periodenabschluss, Berichterstattung und Altersprüfung verwendet.


9. Fälligkeitsdatum

Typ: Datum. Das Fälligkeitsdatum für die Zahlung. Relevant für Forderungen und Verbindlichkeiten. Wird für Altersberichte und Zahlungsplanung verwendet.


10. currency_id

Typ: Many2one (res.currency). Die Währung der Zeile. Kann von der Unternehmenswährung bei Mehrwährungsbuchungen abweichen.


11. betrag_währung

Typ: Float. Der Betrag in der Zeilenwährung. Wird verwendet, wenn der Buchungseintrag in einer Fremdwährung erfolgt. Zusammen mit currency_id ermöglicht es die Mehrwährungsbuchhaltung.


12. menge

Typ: Float. Optionale Menge. Wird für produktbasierte Zeilen (Rechnungen, Rechnungen) verwendet. Ermöglicht mengenbasierte Berichterstattung und Berechnungen des Stückpreises.


13. produkt_id

Typ: Many2one (product.product). Das Produkt, das mit dieser Zeile verknüpft ist. Wird ausgefüllt, wenn die Zeile aus einem Verkaufsauftrag, einem Einkaufsauftrag oder einer Rechnungszeile stammt.


14. produkt_einheit_id

Typ: Many2one (uom.uom). Die Maßeinheit für die Menge. Wird zusammen mit product_id für die ordnungsgemäße Anzeige und Umrechnung der Menge verwendet.


15. preis_einheit

Typ: Float. Der Stückpreis. Wird zusammen mit der Menge verwendet, um Beträge auf Rechnungs- und Rechnungszeilen zu berechnen.


16. steuer_ids

Typ: Many2many (account.tax). Steuern, die auf diese Zeile angewendet werden. Odoo erstellt zusätzliche Zeilen für Steuerbeträge beim Buchen. Wird für Mehrwertsteuer- und andere Steuerberechnungen verwendet.


17. tax_line_id

Typ: Many2one (account.tax). Für Steuerzeilen verweist dies auf die Steuer, die die Zeile generiert hat. Unterscheidet Steuerzeilen von regulären Kontenzeilen.


18. analytic_account_id

Typ: Many2one (account.analytic.account). Das analytische Konto für Kosten- und Einnahmenverfolgung. Wird verwendet, wenn die analytische Buchhaltung aktiviert ist.


19. analytic_distribution

Typ: Json oder Text. Speichert die analytische Verteilung über mehrere analytische Konten. Ersetzt analytic_account_id in neueren Odoo-Versionen, wenn analytische Pläne verwendet werden.


20. ref

Typ: Char. Üblicherweise vom übergeordneten Buchungsvorgang abgeleitet. Externe Referenz oder Memo. Wird in Berichten angezeigt und für die Abstimmung verwendet.


21. narration

Typ: Text. Üblicherweise vom übergeordneten Buchungsvorgang abgeleitet. Interne Notiz oder Memo. Standardmäßig nicht auf kundenorientierten Dokumenten gedruckt.


22. journal_id

Typ: Many2one (account.journal). Das Journal des übergeordneten Buchungsvorgangs. Wird zum Filtern und Berichten nach Journal verwendet.


23. company_id

Typ: Many2one (res.company). Das Unternehmen. In Multi-Company-Setups gehört jede Zeile zu einem Unternehmen. Beeinflusst die Sichtbarkeit und Konsolidierung von Datensätzen.


24. reconciled

Typ: Boolean. Gibt an, ob die Zeile vollständig abgeglichen wurde. Wird verwendet, um nicht abgeglichene Elemente in Abgleichansichten zu filtern.


25. full_reconcile_id

Typ: Many2one (account.full.reconcile). Verknüpft alle Zeilen, die zusammen abgeglichen wurden. Ermöglicht die Nachverfolgung von Abgleichgruppen.


26. payment_id

Typ: Many2one (account.payment). Für Zahlungszeilen, Verknüpfung mit dem Zahlungsdatensatz. Wird verwendet, wenn Rechnungen mit Zahlungen abgeglichen werden.


27. statement_id

Typ: Many2one (account.bank.statement). Für Bankauszugszeilen, Verknüpfung mit dem Auszug. Wird im Bankabgleich verwendet.


28. statement_line_id

Typ: Many2one (account.bank.statement.line). Verknüpft mit der spezifischen Bankauszugszeile. Wird verwendet, wenn Buchungen mit Banktransaktionen abgeglichen werden.


29. display_type

Typ: Auswahl. Kann 'line_section' oder 'line_note' für Abschnittsüberschriften und Notizen im Journalbeitrag sein. Diese Zeilen haben keine Soll- oder Habenbuchungen und dienen nur der Anzeige.


30. create_date

Typ: Datum/Uhrzeit. Speichert, wann der Datensatz erstellt wurde. Wird automatisch von Odoo verwaltet. Nützlich für die Prüfung.


31. write_date

Typ: Datum/Uhrzeit. Speichert, wann der Datensatz zuletzt geändert wurde. Wird automatisch verwaltet. Hilft, Änderungen im Laufe der Zeit nachzuvollziehen.

Wie dieses Modell in Geschäftsabläufen verwendet wird


1. Kundenabrechnung

Wenn Sie eine Rechnung bestätigen, erstellt Odoo account.move.line-Datensätze. Einnahmenzeilen gehen auf Einnahmenkonten. Forderungszeilen gehen auf das Kundenforderungen-Konto. Steuerzeilen werden für jede Steuer erstellt. Die partner_id verknüpft sich mit dem Kunden für die Altersstruktur und Abstimmung.


2. Lieferantenrechnungen

Rechnungen erstellen Zeilen für Ausgaben, Vorsteuer und Verbindlichkeiten. Jede Zeile hat eine account_id, Soll oder Haben und partner_id. Die Struktur spiegelt die Kundenrechnungen wider, jedoch mit unterschiedlichen Kontotypen.


3. Bankabstimmung

Bankauszugzeilen werden über statement_line_id mit Bewegungszeilen abgeglichen. Wenn Sie abstimmen, verknüpft Odoo die Zeilen über full_reconcile_id. Das Feld reconciled wird auf Wahr gesetzt.


4. Manuelle Buchungssätze

Benutzer erstellen Buchungssätze mit mehreren Zeilen. Jede Zeile hat ein Konto, eine Soll- oder Habenbuchung und einen optionalen Partner. Odoo stellt sicher, dass Soll und Haben vor der Buchung gleich sind.



5. Analytische und Kostenberichterstattung

Wenn die analytische Buchhaltung aktiviert ist, tragen die Zeilen analytic_account_id oder analytic_distribution. Berichte gruppieren nach analytischem Konto, um Kosten und Einnahmen nach Projekt, Abteilung oder einer anderen Dimension anzuzeigen.

Wie Entwickler dieses Modell erweitern


Entwickler erweitern account.move.line mit mehreren Mustern. Die Vererbung von Modellen in Odoo ist der Hauptmechanismus.


Modellvererbung

Verwenden Sie _inherit = 'account.move.line', um das Modell zu erweitern. Fügen Sie neue Odoo-Felder hinzu, überschreiben Sie Methoden oder fügen Sie Einschränkungen hinzu. Das vererbte Modell in Odoo hält Ihre Änderungen in einem separaten Modul für einfache Upgrades.


Felder hinzufügen

Definieren Sie neue Odoo-Felder in Ihrem vererbten Modell. Verwenden Sie den richtigen Feldtyp: Char, Many2one, Boolean, Integer, Text, Auswahl. Berücksichtigen Sie unternehmensabhängige Felder für mehrere Unternehmen. Seien Sie vorsichtig mit berechneten Feldern und deren Abhängigkeiten.


Python-Erweiterungen

Überschreiben Sie create, write oder unlink, um Logik hinzuzufügen. Verwenden Sie super(), um die Originalmethode aufzurufen. Vermeiden Sie es, die Invarianz von Soll gleich Haben zu brechen. Das API-Modell in Odoo stellt diese Methoden für externe Integrationen zur Verfügung.


Odoo Studio

Odoo Studio ermöglicht es Ihnen, Felder zu account.move.line ohne Code hinzuzufügen. Gut für schnelle Anpassungen wie zusätzliche Labels oder Tags. Für komplexe Logik oder Abstimmungsregeln sind benutzerdefinierte Module wartungsfreundlicher.

Best Practices


  • Erstellen oder ändern Sie niemals Buchungszeilen direkt, ohne durch die Buchung zu gehen. Verwenden Sie die API der Buchung (z. B. line_ids), damit Odoo die Konsistenz aufrechterhalten und alle Prüfungen durchführen kann.
  • Beim Erstellen von Berichten filtern Sie nach move_id.state = 'posted', um Entwürfe und stornierte Einträge auszuschließen.
  • Verwenden Sie account_id mit dem richtigen Kontotyp (Forderungen, Verbindlichkeiten usw.) für ein korrektes Alterungs- und Abstimmungsverhalten.
  • Beim Integrieren über die API erstellen Sie zuerst die Buchung und fügen dann die Zeilen hinzu. Stellen Sie sicher, dass die Sollbeträge den Habenbeträgen vor dem Buchen entsprechen.
  • Für benutzerdefinierte Felder verwenden Sie das x_-Präfix oder ein Modulpräfix, um Konflikte mit zukünftigen Odoo-Versionen zu vermeiden.

Häufige Fehler


  • Festlegen sowohl von Soll- als auch von Habenbeträgen in derselben Zeile. Jede Zeile sollte entweder Soll oder Haben haben, nicht beides.
  • Erstellen von unausgeglichenen Buchungen. Die Summe der Sollbeträge muss der Summe der Habenbeträge entsprechen. Odoo validiert dies beim Buchen.
  • Ändern von gebuchten Zeilen, ohne den richtigen Rückbuchungs- oder Anpassungsworkflow zu verwenden. Gebuchte Einträge sollten über neue Buchungen angepasst werden, nicht durch direkte Bearbeitungen.
  • Vergessen, partner_id bei Forderungs- und Verbindlichkeitszeilen festzulegen. Dies unterbricht Alterungsberichte und Abstimmungen.
  • Überschreiben von Kernmethoden, ohne super() aufzurufen. Dies kann Abstimmungen, Sperren oder andere Module beeinträchtigen.

Fazit


Das Modell account.move.line ist zentral für die Odoo Buchhaltung. Es speichert jede Soll- und Habenbuchung in Journalbuchungen, Rechnungen und Rechnungen. Das Verständnis seiner Felder und wie Module es erweitern, wird Ihnen helfen, Odoo effektiv zu konfigurieren, anzupassen und zu integrieren.

Egal, ob Sie ein funktionaler Berater sind, der Buchhaltungsabläufe abbildet, oder ein Entwickler, der benutzerdefinierte Berichte und Integrationen erstellt, ein solides Verständnis von account.move.line wird Zeit sparen und Fehler verhindern.

Brauchen Sie Hilfe bei Ihrer Odoo-Implementierung?


Dasolo hilft Unternehmen bei der Implementierung, Anpassung und Optimierung von Odoo. Wir sind auf API-Integrationen und Odoo-Entwicklung spezialisiert. Unser Team hat umfassende Erfahrung mit der Odoo-Datenarchitektur und Modellen wie account.move.line.


Wenn Sie Hilfe bei Ihrer Odoo-Implementierung, benutzerdefinierten Modulen oder Integrationen benötigen, sind wir hier, um zu helfen. Buchen Sie eine Demo um Ihr Projekt zu besprechen.

Das Modell account.move.line: Odoo's Journalbuchungszeilen Verstehen
Dasolo 10. März 2026
Diesen Beitrag teilen
Anmelden , um einen Kommentar zu hinterlassen