Overslaan naar inhoud

Het account.move.line-model: Odoo's journaalpostregels uitgelegd

Een allesomvattende handleiding voor het journaalregelsmodel van Odoo, speciaal voor ontwikkelaars en functionele consultants
10 maart 2026 in
Het account.move.line-model: Odoo's journaalpostregels uitgelegd
Dasolo
| Nog geen reacties

Introductie


In Odoo bepalen modellen hoe gegevens worden opgeslagen en georganiseerd in de database. Alle zakelijke informatie — van offerte tot factuur en boekingspost — leeft in een model en volgt daar vaste attributen en relaties.


Kennis van Odoo-modellen is onmisbaar voor zowel functionele consultants als ontwikkelaars. Modellen vormen de ruggengraat van de data-architectuur: ze definiëren velden, koppelingen tussen records en de bedrijfslogica die erop draait.

Dit artikel zoomt in op een kernmodel binnen de boekhouding van Odoo: account.move.line. Of je nu rapporten bouwt, koppelt met externe systemen of betaal- en afstemmingsprocessen configureert, je komt dit model vaak tegen.

Wat is het account.move.line-model


Het account.move.line-model staat voor afzonderlijke regelregels in een boekingsstuk. Elke regel is óf een debetpost óf een creditpost; samen moeten de regels van een boeking in evenwicht zijn zodat debet en credit gelijk lopen.


Binnen Odoo hoort dit model bij de Accounting-app en is het kindrecord van account.move — het boekingsstuk zelf (zoals facturen, leveranciersnota's, bankafschriften en journaalboekingen). Eén boeking bevat steeds één of meer regels.


De basisdefinitie zit in de account-module; andere modules breiden het model uit via Odoo-inheritance. Verkoop voegt factuurdetails toe, Inkoop voegt bestelregelinfo toe en Analytic voegt kostenallocaties toe. Zo blijft de kernstructuur intact terwijl extra functionaliteit modulair wordt toegevoegd.

Belangrijke velden in het model


Hieronder vind je de velden die je het vaakst nodig hebt bij het werken met boekingsregels. Wie deze begrijpt, kan vlotter rapporteren, afstemmen en integreren.


1. name

Type: Char. Beschrijft de regel — denk aan het label of de omschrijving die in weergaven en op rapporten verschijnt. Bij factuurregels komt dit vaak van de productnaam of een handmatige omschrijving.


2. move_id

Type: Many2one (account.move). Verwijst naar het bovenliggende boekingsstuk. Elke regel behoort standaard tot precies één move en dat is de belangrijkste relatie binnen het model.


3. account_id

Type: Many2one (account.account). Het grootboekrekening waarop de regel geboekt wordt. Verplicht veld; moet een normale (geen view of gesloten) rekening zijn en bepaalt hoe de balans- en resultatenrapporten gegroepeerd worden.


4. debit

Type: Float. Het debetbedrag; standaard 0.0. Per regel staat ofwel debit ofwel credit. Debet verhoogt doorgaans activa en kostenrekeningen.


5. credit

Type: Float. Het creditbedrag; standaard 0.0. Credit verhoogt passiva, eigen vermogen en opbrengsten. Binnen een book move moeten alle debetsommen gelijk zijn aan alle creditsommen.


6. balance

Type: Float. Berekend veld: debit minus credit. Geeft het netto-effect van de regel weer — positief voor debet, negatief voor credit — en wordt veel gebruikt in rapportages en bij afstemming.


7. partner_id

Type: Many2one (res.partner). De klant, leverancier of andere tegenpartij gekoppeld aan de regel. Belangrijk voor vorderingen/te betalen posten, aging-overzichten en reconciliatie.


8. date

Type: Date. De boekingsdatum van de regel, meestal overgenomen van het parent-move. Gebruikt bij periodeafsluitingen, rapportering en aging.


9. date_maturity

Type: Date. De vervaldatum voor betaling. Relevant voor debiteuren en crediteuren en belangrijk bij betalingsplanning en aging-analyses.


10. currency_id

Type: Many2one (res.currency). De valuta van de regel. Kan verschillen van de bedrijfsvaluta bij multivaluta-boekingen.


11. amount_currency

Type: Float. Bedrag uitgedrukt in de regelvaluta. In combinatie met currency_id maakt dit multilvaluta-administratie mogelijk.


12. quantity

Type: Float. Optionele hoeveelheid, nuttig voor productgebonden regels (facturen, leveranciersnota's). Handig voor rapporten op basis van aantallen en voor prijsberekeningen per eenheid.


13. product_id

Type: Many2one (product.product). Het product gekoppeld aan de regel, ingevuld bij regels die voortkomen uit verkoop- of inkooporders of factuurregels.


14. product_uom_id

Type: Many2one (uom.uom). De eenheid waarin de quantity is uitgedrukt. Belangrijk voor correcte weergave en conversies bij producten.


15. price_unit

Type: Float. De prijs per eenheid. Wordt samen met quantity gebruikt om het regelbedrag te berekenen op facturen en rekeningen.


16. tax_ids

Type: Many2many (account.tax). De belastingen die op de regel van toepassing zijn. Bij het posten maakt Odoo vaak extra regels aan voor de belastingbedragen.


17. tax_line_id

Type: Many2one (account.tax). Bij belastingregels verwijst dit naar de belasting die de regel heeft gegenereerd, zodat tax-lines onderscheiden kunnen worden van normale boekingsregels.


18. analytic_account_id

Type: Many2one (account.analytic.account). De analytische rekening voor kosten- en opbrengstallocatie. Wordt gebruikt zodra analytic accounting is ingeschakeld.


19. analytic_distribution

Type: Json of Text. Slaat verdelingen over meerdere analytische rekeningen op. In nieuwere Odoo-versies vervangt dit soms de enkelvoudige analytic_account_id bij gebruik van analytische plannen.


20. ref

Type: Char. Externe referentie of memo; vaak gerelateerd van de parent move. Handig voor rapporten en bij het zoeken naar specifieke transacties.


21. narration

Type: Text. Interne toelichting of notitie, meestal overgenomen van het parent move. Standaard niet zichtbaar op klantdocumenten.


22. journal_id

Type: Many2one (account.journal). Het journaal waartoe het parent move behoort. Wordt gebruikt voor filteren en rapportage per journaal.


23. company_id

Type: Many2one (res.company). De onderneming waartoe de regel hoort. In multi-company-omgevingen bepaalt dit zichtbaarheid en consolidatieregels.


24. reconciled

Type: Boolean. Geeft aan of de regel volledig is afgestemd. Handig om ongereconcilieerde posten te filteren in afstemmingsschermen.


25. full_reconcile_id

Type: Many2one (account.full.reconcile). Verbindt alle regels die samen zijn afgestemd, zodat je een groep aan elkaar gekoppelde regels kunt terugvolgen.


26. payment_id

Type: Many2one (account.payment). Voor betaalregels: link naar de betalingsregel. Wordt gebruikt bij het afstemmen van facturen met betalingen.


27. statement_id

Type: Many2one (account.bank.statement). Voor bankafschriftregels: link naar het afschrift. Belangrijk bij bankreconciliatie.


28. statement_line_id

Type: Many2one (account.bank.statement.line). Verwijst naar de specifieke bankafschriftregel waarmee de boekingsregel gematcht kan worden.


29. display_type

Type: Selection. Kan waarden bevatten zoals 'line_section' of 'line_note' voor sectiekoppen en opmerkingen in een boeking; deze regels hebben geen debet of credit en zijn puur visueel.


30. create_date

Type: Datetime. Tijdstip waarop het record werd aangemaakt; wordt automatisch door Odoo beheerd en is nuttig voor auditdoeleinden.


31. write_date

Type: Datetime. Laatste wijzigingsmoment; ook automatisch bijgehouden en helpt veranderingen in de tijd te volgen.

Hoe dit model in bedrijfsprocessen wordt gebruikt


1. Klantfacturatie

Bij het valideren van een verkoopfactuur genereert Odoo meerdere account.move.line-regels: opbrengstregels op inkomstenrekeningen, vorderingen op debiteurenrekeningen en aparte regels voor BTW. De partner is gekoppeld voor aging en reconciliatie.


2. Leveranciersfacturen

Leveranciersnota's creëren regels voor kosten, aftrekbare BTW en crediteuren. Structuur lijkt op die van klantfacturen, maar met andere rekeningtypen en omgekeerde debet/credit-posities.


3. Bankreconciliatie

Bankafschriftregels worden gekoppeld aan move-regels via statement_line_id. Bij afstemming verbindt Odoo regels vaak via full_reconcile_id en zet het reconciled-veld op True.


4. Handmatige journaalboekingen

Gebruikers kunnen zelf journaalposten aanmaken met meerdere regels. Elke regel heeft een rekening en debet of credit; Odoo controleert dat debet en credit in balans zijn voordat een boeking kan worden gepost.



5. Analytische en kostengerelateerde rapportage

Als analytische boekhouding actief is, bevatten regels analytic_account_id of analytic_distribution, zodat je rapporten kunt opdelen per project, afdeling of andere dimensie voor betere kostentoewijzing.

Hoe ontwikkelaars dit model uitbreiden


Ontwikkelaars breiden account.move.line uit met verschillende technieken, waarbij Odoo-modelinheritance het meest gangbaar is.


Modelinherintance

Door _inherit = 'account.move.line' te gebruiken breid je het bestaande model uit. Je kunt nieuwe velden toevoegen, methodes overschrijven of extra validaties inbouwen. Zo blijven wijzigingen modulair en upgrademakkelijk.


Velden toevoegen

Definieer extra Odoo-velden in je geërfde model: Char, Many2one, Boolean, Integer, Text, Selection, enz. Houd rekening met bedrijfsspecifieke velden in multi-company omgevingen en wees voorzichtig met computed-velden en hun dependencies.


Python-extensies

Overschrijf create, write of unlink om custom-logica toe te voegen, maar roep altijd super() aan om de standaardflow te bewaren. Pas op dat je de balansregel (debet = credit) of reconciliatie-processen niet breekt.


Odoo Studio

Odoo Studio is handig om zonder code extra velden toe te voegen aan account.move.line — snel voor labels of tags. Voor complexe regels of afstemmingslogica blijven maatwerkmodules echter betrouwbaarder op lange termijn.

Aanbevolen werkwijzen


  • Maak of wijzig nooit losse move lines rechtstreeks zonder via het parent move te werken. Gebruik de API van de move (bijv. line_ids) zodat Odoo consistentiechecks uitvoert en alle hooks afloopt.
  • Bij rapporten: filter op move_id.state = 'posted' om concepten en geannuleerde boekingen uit je cijfers te houden.
  • Gebruik het juiste account_id-type (debiteuren, crediteuren, opbrengst, kost) zodat aging en reconciliatie correct functioneren.
  • Bij integraties via API: maak eerst de move aan en voeg daarna de regels toe. Controleer vooraf dat debet en credit in balans zijn voor je post.
  • Voor custom-velden: geef ze een x_ of moduleprefix om conflicten met toekomstige Odoo-releases te vermijden.

Veelvoorkomende fouten


  • Beide debit en credit op één regel zetten. Elke regel moet óf een debit óf een credit bevatten, nooit beide.
  • Ongebalanceerde boekingen aanmaken. Debetsommen moeten gelijk zijn aan creditsommen; Odoo valideren dit bij het posten.
  • Geposte regels rechtstreeks aanpassen in plaats van correct te corrigeren via stornering of tegenboekingen. Geraposteerde stukken pas je aan met nieuwe boekingen.
  • Partner_id vergeten zetten op debiteuren-/crediteurenregels. Dit breekt aging-overzichten en maakt reconciliatie moeilijker.
  • Kernmethodes overschrijven zonder super() te roepen. Dat kan reconciliatie, locking of andere modules laten falen.

Conclusie


Het account.move.line-model is het hart van Odoo Accounting: alle debet- en creditregels van journaalposten, facturen en nota's worden er bewaard. Wie de velden en uitbreidingsmogelijkheden begrijpt, kan Odoo beter configureren, aanpassen en koppelen.

Of je nu processen in kaart brengt als consultant of integraties bouwt als ontwikkelaar: een degelijke kennis van account.move.line bespaart tijd en voorkomt financiële fouten.

Hulp nodig bij je Odoo-implementatie?


Dasolo begeleidt bedrijven bij implementatie, maatwerk en optimalisatie van Odoo. We hebben veel ervaring met API-koppelingen en met de Odoo-datalaag, waaronder modellen zoals account.move.line.


Heb je hulp nodig bij je Odoo-implementatie, maatwerkmodules of integraties? Wij staan voor je klaar. Plan een demo om je project te bespreken.

Het account.move.line-model: Odoo's journaalpostregels uitgelegd
Dasolo 10 maart 2026
Deel deze post
Aanmelden om een reactie achter te laten