Introduktion
I Odoo bestämmer modeller hur information organiseras i databasen. All affärsdata — från order till faktura och konteringsposter — sparas i modeller och styr vad systemet kan visa, beräkna och validera.
Att förstå modellerna är grundläggande både för utvecklare och för funktionella konsulter. Modellerna formar datamodellen i Odoo: fälttyper, relationer mellan poster och var affärslogiken hör hemma.
Den här texten koncentrerar sig på en central modell i Odoo Accounting: account.move.line. Oavsett om du bygger anpassade rapporter, kopplar externa system eller sätter upp avstämningsrutiner kommer du ofta att jobba mot just denna modell.
Vad är modellen account.move.line
account.move.line beskriver en enskild konteringsrad — en debet- eller kreditpost i en verifikation. Varje rad visar en effekt på ett konto och tillsammans ska raderna i en verifikation balansera så att summan debet = summa kredit.
Modellen används av redovisningsmodulen och är ett barn till account.move, som representerar själva verifikationen (fakturor, leverantörsfakturor, banknoteringar eller manuella verifikationer). En move innehåller alltid en eller flera move.lines.
Själva definitionen ligger i account-modulen, men många andra moduler kompletterar den via arv. Säljmodulen lägger till fakturarelaterade fält, inköp lägger till leverantörsdetaljer och analytik-moduler lägger på fördelningslogik — varje modul kompletterar kärnan utan att duplicera strukturen.
Viktiga fält i modellen
Nedan följer de fält som oftast förekommer och som är viktigast att känna till när du hanterar verifikationer och bokföringsdata i Odoo.
1. name
Typ: Char. Radens beskrivning eller etikett. Visas i verifikationsvyer och rapporter. På fakturarader kommer det ofta från produktnamn eller en fritekstbeskrivning.
2. move_id
Typ: Many2one (account.move). Kopplar raden till sin överordnade verifikation. Varje rad hör till exakt en move — det är modellens huvudrelation.
3. account_id
Typ: Many2one (account.account). Kontot som raden bokförs på. Obligatoriskt. Ska vara ett bokföringskonto (inte ett vykonto eller stängt konto). Används i rapporter och aggregeringar.
4. debit
Typ: Float. Debetbelopp. Standard är 0.0. För en rad sätts normalt antingen debit eller credit, inte båda. Debet ökar tillgångs- och kostnadskonton.
5. credit
Typ: Float. Kreditbelopp. Standard är 0.0. Kredit ökar skulder, eget kapital och intäkter. I en move måste totala debet matcha totala kredit.
6. balance
Typ: Float (beräknat). Debit minus kredit — radens nettopåverkan. Positiv för debet, negativ för kredit. Används i vyer och avstämningar.
7. partner_id
Typ: Many2one (res.partner). Kund, leverantör eller annan motpart. Viktigt för kund-/leverantörsreskontra, förfallolistor och avstämningar.
8. date
Typ: Date. Raden gäller från detta datum — ofta är detverifikationens datum. Påverkar periodisering, rapportering och bokslutstidpunkter.
9. date_maturity
Typ: Date. Förfallodatum för betalning. Används för kund- och leverantörsreskontra samt betalningsplaner och åldersanalyser.
10. currency_id
Typ: Many2one (res.currency). Valutan för posten. Vid flervalutahantering kan denna skilja sig från bolagets basvaluta.
11. amount_currency
Typ: Float. Beloppet i den angivna valutan. Kombinerat med currency_id möjliggör detta flervalutabokföring och omräkning.
12. quantity
Typ: Float. Valfri mängd. Används främst för produktrelaterade rader (fakturor, leverantörsfakturor) för att beräkna enhetspris och rapporter per enhet.
13. product_id
Typ: Many2one (product.product). Produkten kopplad till raden — fylls i när raden kommer från order eller faktura.
14. product_uom_id
Typ: Many2one (uom.uom). Enhetsmåttet för kvantiteten. Behövs för att visa och konvertera antal korrekt.
15. price_unit
Typ: Float. Enhetspris som används tillsammans med kvantiteten för att räkna fram belopp på fakturarader.
16. tax_ids
Typ: Many2many (account.tax). Skatter som appliceras på raden. När verifikationen bokförs kan Odoo skapa separata skattegraderade rader för moms och andra skatter.
17. tax_line_id
Typ: Many2one (account.tax). För rader som representerar skatt; refererar till den skatt som genererat raden och särskiljer skattekonton från vanliga konteringsrader.
18. analytic_account_id
Typ: Many2one (account.analytic.account). Analytiskt konto för kostnads- och intäktsfördelning — används när analytisk bokföring är aktiverad.
19. analytic_distribution
Typ: Json/Text. Fördelningsdefinitioner över flera analytiska konton; i nyare Odoo-versioner kan detta ersätta enkel analytic_account_id när komplexa planer behövs.
20. ref
Typ: Char. Referens eller extern hänvisning, ofta hämtad från verifikationen. Visas i rapporter och hjälper vid matchning vid avstämning.
21. narration
Typ: Text. Intern anteckning på verifikationen. Syns internt och skrivs normalt inte ut på kunddokument.
22. journal_id
Typ: Many2one (account.journal). Verifikationens journal — viktigt för filtrering, nummerserier och rapporter per journal.
23. company_id
Typ: Many2one (res.company). Bolaget. I koncerner med flera bolag tillhör varje rad ett specifikt bolag och påverkar synlighet och koncernredovisning.
24. reconciled
Typ: Boolean. Visar om raden är helt avstämningsbar. Används för att filtrera öppna fordringar och skulder i avstämningsvyer.
25. full_reconcile_id
Typ: Many2one (account.full.reconcile). Kopplar ihop alla rader som blivit avstämda tillsammans — gör det möjligt att spåra hela avstämningsgruppen.
26. payment_id
Typ: Many2one (account.payment). För betalningsrader; länkar till betalningsposten som matchar fakturan vid avstämning.
27. statement_id
Typ: Many2one (account.bank.statement). För banktransaktionsrader; länkar raden till en specifik banknotering vid kontoutdragavstämning.
28. statement_line_id
Typ: Many2one (account.bank.statement.line). Länkar till en specifik rad i bankutdraget — central vid bankavstämning och automatisk matchning.
29. display_type
Typ: Selection. Används för presentation (t.ex. sektioner eller notiser i verifikationen). Dessa rader har normalt ingen debet eller kredit och är endast visuella.
30. create_date
Typ: Datetime. Tidpunkt då posten skapades. Hanteras automatiskt och är värdefull för revision och historik.
31. write_date
Typ: Datetime. Senaste ändringstidpunkt. Hjälper till att spåra förändringar över tid och felsökning.
Hur modellen används i affärsprocesser
1. Kundfakturering
När en kundfaktura bekräftas skapar Odoo move.lines: intäktsrader till intäktskonton, fordringsrader till kundfordringskontot och separata skatetransaktioner. partner_id kopplar raden till kunden för åldersanalyser och betalningshantering.
2. Leverantörsfakturor
Leverantörsfakturor skapar rader för kostnader, ingående moms och leverantörsskulder. Strukturen liknar kundfakturor men kontotyperna speglar kostnadssidan och skulder.
3. Bankavstämning
Bankutdragsrader matchas mot move.lines via statement_line_id. Vid avstämning länkar Odoo raderna och sätter reconciled-flaggan, ofta med ett full_reconcile-id för att spåra hela matchningen.
4. Manuella verifikationer
Användare kan skapa manuella verifikationer med flera rader; varje rad har konto, debet/kredit och valfri partner. Odoo kräver att verifikationen är balanserad innan den kan bokföras.
5. Analytisk och kostnadsrapportering
När analytisk bokföring används bär raderna analytiska referenser eller fördelningar. Rapporter kan grupperas per analytiskt konto för att visa kostnader och intäkter per projekt, avdelning eller annan dimension.
Hur utvecklare bygger ut modellen
Utvecklare bygger på account.move.line med olika tekniker, där Odoos modellärv är den vanligaste metoden.
Modellarv
Använd _inherit = 'account.move.line' för att utöka modellen. Du kan lägga till fält, skriva över metoder och införa valideringar. Genom att paketera ändringar i en separat modul blir uppgraderingar smidigare.
Lägga till fält
Definiera nya fält i din ärvda modell med lämplig typ (Char, Many2one, Boolean etc.). Tänk på företagsberoende fält i multiselskapsmiljöer och var försiktig med beräknade fält — ange alltid korrekta beroenden.
Python‑förlängningar
Skriv över create, write eller unlink för att lägga på logik, men kalla alltid super() så kärnflöden inte bryts. Var särskilt försiktig så du inte bryter balansen mellan debet och kredit eller ödelägger avstämningslogik.
Odoo Studio
Odoo Studio är ett snabbt sätt att lägga till fält utan kod — bra för enkla tillägg som etiketter eller taggar. För komplexa regler och avstämningar rekommenderas en modulbaserad lösning för bättre underhåll och testbarhet.
Bästa praxis
- Skapa eller ändra aldrig move.lines direkt utan att gå via dess parent move. Använd move-API:et (t.ex. line_ids) så att Odoo kan köra alla nödvändiga kontroller och uppdatera balanser korrekt.
- Vid rapportering — filtrera på move_id.state = 'posted' för att utesluta utkast och annullerade verifikationer.
- Använd account_id med rätt kontotyp (fordran, skuld etc.) för att säkerställa korrekt beteende i ålderslistor och avstämningsverktyg.
- Vid integration via API: skapa först verifikationen (move), lägg sedan till raderna och säkerställ att debet och kredit balanserar innan du bokför.
- För egna fält: använd x_‑prefix eller ett modulnamn som prefix för att undvika namnkonflikter vid framtida Odoo‑uppgraderingar.
Vanliga misstag
- Att sätta både debit och credit på samma rad. En rad ska normalt ha antingen debit eller credit — inte båda.
- Att skapa obalanserade verifikationer. Summan av debet måste alltid matcha summan av kredit — Odoo validerar detta vid bokföring.
- Att ändra redan bokförda rader direkt i stället för att använda reverseringar eller korrigeringsverifikationer. Bokförda poster justeras genom nya verifikationer, inte genom direkta ändringar.
- Att glömma partner_id på fordrings- eller skuldrader. Det bryter rapporter för åldersanalys och försvårar avstämning.
- Att åsidosätta kärnmetoder utan att kalla super(). Det kan skada avstämningar, låsning och samverkan med andra moduler.
Sammanfattning
account.move.line är navet i Odoo Accounting — den fångar varje debet och kredit i verifikationer, fakturor och leverantörsfakturor. Kännedom om modellens fält och hur den kan utökas gör det enklare att konfigurera, anpassa och integrera systemet.
Oavsett om du kartlägger processer som funktionell konsult eller bygger integrationer och rapporter som utvecklare, sparar tiden du lägger på att förstå account.move.line både arbete och misstag i längden.
Behöver du hjälp med din Odoo-implementering?
Dasolo hjälper företag med implementation, anpassning och optimering av Odoo. Vi specialiserar oss på API‑integrationer och utveckling, med djup kunskap om Odoos datamodell och centrala modeller som account.move.line.
Behöver du hjälp med anpassningar, integrationer eller din Odoo‑installation — hör av dig så kan vi diskutera lösningar och nästa steg. Boka en demo för att prata om ditt projekt.