Inleiding
In Odoo definiëren modellen hoe gegevens zijn gestructureerd en opgeslagen in de database. Elk stuk bedrijfsgegevens waarmee u werkt, van verkooporders tot facturen tot journaalposten, bevindt zich in een model.
Het begrijpen van Odoo-modellen is essentieel voor zowel ontwikkelaars als functionele consultants. Modellen zijn de basis van de Odoo-gegevensarchitectuur. Ze definiëren Odoo-velden, relaties en bedrijfslogica.
Dit artikel richt zich op een van de belangrijkste modellen in Odoo Accounting: account.move.line. Of u nu aangepaste rapporten bouwt, externe systemen integreert of reconciliatie-workflows configureert, u zult met dit model werken.
Wat is het account.move.line Model
Het account.move.line model vertegenwoordigt individuele journaalboekingsregels in Odoo. Elke regel is een debet of credit in een journaalboeking. Samen moeten de regels van een journaalboeking in balans zijn: de totale debet moet gelijk zijn aan de totale credit.
Dit model in Odoo wordt gebruikt door de Accounting-module. Het is het kind van account.move, dat de journaalboeking zelf vertegenwoordigt (facturen, rekeningen, bankafschriften, journaalboekingen). Elke journaalboeking heeft één of meer regels.
Het model is gedefinieerd in de accountmodule. Andere modules breiden het uit via Odoo-modelovererving. Verkoop voegt factuurregelgegevens toe. Aankoop voegt rekeningregelgegevens toe. Account analytisch voegt analytische verdeling toe. Elke module voegt toe wat het nodig heeft zonder de kernstructuur te dupliceren.
Belangrijke Velden in het Model
Hier zijn de belangrijkste Odoo-velden in het account.move.line model. Het begrijpen hiervan zal je helpen om effectief te werken met journaalboekingen en boekhoudgegevens.
1. naam
Type: Char. Dit veld slaat het label of de beschrijving van de regel op. Het is verplicht en wordt doorgaans weergegeven in journaalboekingsoverzichten en rapporten. Voor factuurregels komt het vaak van de productnaam of een aangepaste beschrijving.
2. move_id
Type: Many2one (account.move). Verbindt de regel met zijn bovenliggende journaalboeking. Elke regel behoort tot precies één move. Dit is de belangrijkste relatie in het model.
3. account_id
Type: Many2one (account.account). Het account waarop deze regel wordt geboekt. Verplicht. Moet een niet-weergave, niet-gesloten account zijn. Gebruikt voor rapportage en groepering van de rekeningen.
4. debet
Type: Float. Het debetbedrag. Standaard is 0,0. Voor elke regel wordt ofwel debet of credit ingesteld, niet beide. Debets verhogen activa- en kostenrekeningen.
5. krediet
Type: Float. Het kredietbedrag. Standaard is 0.0. Kredieten verhogen de verplichtingen, het eigen vermogen en de opbrengsten. De som van alle debetbedragen moet gelijk zijn aan de som van alle kredietbedragen in een boeking.
6. saldo
Type: Float. Een berekend veld: debet min krediet. Vertegenwoordigt het netto-effect van de regel. Positief voor debet, negatief voor krediet. Gebruikt in rapporten en reconciliatie.
7. partner_id
Type: Many2one (res.partner). De klant, leverancier of andere partij die aan deze regel is gekoppeld. Gebruikt voor het volgen van vorderingen en schulden, ouderdomsrapporten en reconciliatie.
8. datum
Type: Datum. De effectieve datum van de regel. Gewoonlijk overgenomen van de bovenliggende boeking. Gebruikt voor periode-afsluiting, rapportage en ouderdom.
9. vervaldatum
Type: Datum. De vervaldatum voor betaling. Relevant voor vorderingen en schulden. Gebruikt voor ouderdomsrapporten en betalingsplanning.
10. valuta_id
Type: Many2one (res.currency). De valuta van de regel. Kan verschillen van de bedrijfsvaluta voor multi-valuta boekingen.
11. bedrag_valuta
Type: Float. Het bedrag in de lijnvaluta. Wordt gebruikt wanneer de journaalpost in een vreemde valuta is. Samen met currency_id maakt het multi-valuta boekhouding mogelijk.
12. hoeveelheid
Type: Float. Optionele hoeveelheid. Wordt gebruikt voor productgebaseerde lijnen (facturen, rekeningen). Maakt rapportage op basis van hoeveelheid en berekeningen van eenheidsprijzen mogelijk.
13. product_id
Type: Many2one (product.product). Het product dat aan deze lijn is gekoppeld. Wordt ingevuld wanneer de lijn afkomstig is van een verkooporder, inkooporder of factuurlijn.
14. product_uom_id
Type: Many2one (uom.uom). De eenheid van maat voor de hoeveelheid. Wordt gebruikt met product_id voor een correcte weergave en conversie van hoeveelheden.
15. prijs_per_eenheid
Type: Float. De eenheidsprijs. Wordt gebruikt met hoeveelheid om bedragen op factuur- en rekeninglijnen te berekenen.
16. belasting_ids
Type: Many2many (account.tax). Belastingen die op deze lijn van toepassing zijn. Odoo creëert extra lijnen voor belastingbedragen bij het boeken. Wordt gebruikt voor BTW- en andere belastingberekeningen.
17. tax_line_id
Type: Many2one (account.tax). Voor belastingregels verwijst dit naar de belasting die de regel heeft gegenereerd. Onderscheidt belastingregels van reguliere boekhoudregels.
18. analytic_account_id
Type: Many2one (account.analytic.account). De analytische rekening voor kosten- en opbrengstenregistratie. Wordt gebruikt wanneer analytische boekhouding is ingeschakeld.
19. analytic_distribution
Type: Json of Tekst. Slaat analytische verdeling op over meerdere analytische rekeningen. Vervangt analytic_account_id in nieuwere Odoo-versies bij gebruik van analytische plannen.
20. ref
Type: Char. Gewoonlijk gerelateerd aan de ouderbeweging. Externe referentie of memo. Weergegeven op rapporten en gebruikt voor reconciliatie matching.
21. narration
Type: Tekst. Gewoonlijk gerelateerd aan de ouderbeweging. Interne notitie of memo. Standaard niet afgedrukt op klantgerichte documenten.
22. journal_id
Type: Many2one (account.journal). Het journaal van de ouderbeweging. Gebruikt voor filtering en rapportage per journaal.
23. company_id
Type: Many2one (res.company). Het bedrijf. In multi-company setups behoort elke regel tot één bedrijf. Beïnvloedt de zichtbaarheid van records en consolidatie.
24. reconciled
Type: Boolean. Geeft aan of de regel volledig is verzoend. Wordt gebruikt om onverzoende items te filteren in verzoeningsweergaven.
25. full_reconcile_id
Type: Many2one (account.full.reconcile). Verbindt alle regels die samen zijn verzoend. Maakt het mogelijk om verzoeningsgroepen te traceren.
26. payment_id
Type: Many2one (account.payment). Voor betalingsregels, linkt naar het betalingsrecord. Wordt gebruikt bij het verzoenen van facturen met betalingen.
27. statement_id
Type: Many2one (account.bank.statement). Voor bankafschriftregels, linkt naar het afschrift. Wordt gebruikt in bankverzoening.
28. statement_line_id
Type: Many2one (account.bank.statement.line). Linkt naar de specifieke bankafschriftregel. Wordt gebruikt bij het matchen van boekingen met banktransacties.
29. display_type
Type: Selectie. Kan 'line_section' of 'line_note' zijn voor sectiekoppen en notities in de journaalpost. Deze regels hebben geen debet of credit en zijn alleen voor weergave.
30. create_date
Type: Datumtijd. Slaat op wanneer het record is aangemaakt. Automatisch beheerd door Odoo. Nuttig voor auditing.
31. write_date
Type: Datumtijd. Slaat op wanneer het record voor het laatst is gewijzigd. Automatisch beheerd. Helpt veranderingen in de tijd bij te houden.
Hoe Dit Model Wordt Gebruikt in Bedrijfsworkflows
1. Klantfacturatie
Wanneer je een factuur bevestigt, creëert Odoo account.move.line records. Inkomstenregels gaan naar inkomensrekeningen. Te ontvangen regels gaan naar de klant te ontvangen rekening. Belastingregels worden aangemaakt voor elke belasting. De partner_id linkt naar de klant voor veroudering en reconciliatie.
2. Leveranciersfacturen
Facturen creëren regels voor uitgaven, invoer-BTW en te betalen bedragen. Elke regel heeft een account_id, debet of credit, en partner_id. De structuur weerspiegelt klantfacturen, maar met verschillende rekeningtypes.
3. Bankreconciliatie
Bankafschriftregels worden gekoppeld aan move-regels via statement_line_id. Wanneer je reconciliëert, koppelt Odoo de regels via full_reconcile_id. Het reconciliatieveld is ingesteld op Waar.
4. Handmatige Journaalboekingen
Gebruikers creëren journaalboekingen met meerdere regels. Elke regel heeft een rekening, debet of credit, en een optionele partner. Odoo handhaaft dat debet gelijk is aan credit voordat het wordt geboekt.
5. Analytische en Kostenrapportage
Wanneer analytische boekhouding is ingeschakeld, bevatten regels analytic_account_id of analytic_distribution. Rapporten groeperen op analytisch account om kosten en opbrengsten per project, afdeling of andere dimensie te tonen.
Hoe Ontwikkelaars Dit Model Uitbreiden
Ontwikkelaars breiden account.move.line uit met verschillende patronen. Odoo modelovererving is het belangrijkste mechanisme.
Modelovererving
Gebruik _inherit = 'account.move.line' om het model uit te breiden. Voeg nieuwe Odoo-velden toe, overschrijf methoden of voeg beperkingen toe. Het geërfde model in Odoo houdt je wijzigingen in een aparte module voor gemakkelijke upgrades.
Velden Toevoegen
Definieer nieuwe Odoo-velden in je geërfde model. Gebruik het juiste veldtype: Char, Many2one, Boolean, Integer, Text, Selectie. Overweeg bedrijfsspecifieke velden voor meerdere bedrijven. Wees voorzichtig met berekende velden en hun afhankelijkheden.
Python Uitbreidingen
Overschrijf create, write, of unlink om logica toe te voegen. Gebruik super() om de originele aanroep te doen. Vermijd het breken van de debet-gelijk-aan-credit invariant. Het API-model in Odoo stelt deze methoden bloot voor externe integraties.
Odoo Studio
Odoo Studio laat je velden toevoegen aan account.move.line zonder code. Goed voor snelle aanpassingen zoals extra labels of tags. Voor complexe logica of reconciliatieregels zijn aangepaste modules beter onderhoudbaar.
Beste Praktijken
- Maak nooit rechtstreeks move lines aan of wijzig ze zonder door de move te gaan. Gebruik de API van de move (bijv. line_ids) zodat Odoo consistentie kan behouden en alle controles kan uitvoeren.
- Bij het opbouwen van rapporten, filter op move_id.state = 'posted' om concepten en geannuleerde invoer uit te sluiten.
- Gebruik account_id met het juiste type rekening (ontvankelijk, betaalbaar, enz.) voor een correcte veroudering en reconciliatiegedrag.
- Bij integratie via API, maak eerst de move aan, voeg dan de lijnen toe. Zorg ervoor dat debet gelijk is aan krediet voordat je post.
- Voor aangepaste velden, gebruik de
x_prefix of een moduleprefix om conflicten met toekomstige Odoo-versies te vermijden.
Veelvoorkomende Fouten
- Beide debet en krediet instellen op dezelfde lijn. Elke lijn moet ofwel debet of krediet hebben, niet beide.
- Ongebalanceerde moves creëren. De som van debet moet gelijk zijn aan de som van krediet. Odoo valideert dit bij het posten.
- Geplaatste lijnen wijzigen zonder de juiste omkeer- of aanpassingsworkflow te gebruiken. Geplaatste invoer moet worden aangepast via nieuwe moves, niet door directe bewerkingen.
- Vergeten partner_id in te stellen op ontvangbare en betaalbare lijnen. Dit verstoort verouderingsrapporten en reconciliatie.
- Kernmethoden overschrijven zonder super() aan te roepen. Dit kan reconciliatie, vergrendeling of andere modules verstoren.
Conclusie
Het account.move.line model is centraal in Odoo Accounting. Het slaat elke debet en krediet op in journaalposten, facturen en rekeningen. Het begrijpen van de velden en hoe modules het uitbreiden zal je helpen Odoo effectief te configureren, aan te passen en te integreren.
Of je nu een functionele consultant bent die boekhoudworkflows in kaart brengt of een ontwikkelaar die aangepaste rapporten en integraties bouwt, een goed begrip van account.move.line zal tijd besparen en fouten voorkomen.
Hulp Nodig Bij Uw Odoo Implementatie?
Dasolo helpt bedrijven bij het implementeren, aanpassen en optimaliseren van Odoo. We zijn gespecialiseerd in API-integraties en Odoo-ontwikkeling. Ons team heeft diepgaande ervaring met de Odoo-gegevensarchitectuur en modellen zoals account.move.line.
Als je hulp nodig hebt bij je Odoo-implementatie, aangepaste modules of integraties, zijn we hier om te helpen. Boek een demo om je project te bespreken.