Introduktion
I Odoo definerer modeller, hvordan data er struktureret og gemt i databasen. Hver enkelt del af forretningsdata, du arbejder med, fra salgsordrer til fakturaer til journalindgange, findes i en model.
At forstå Odoo-modeller er essentielt for både udviklere og funktionelle konsulenter. Modellerne er fundamentet for Odoo's dataarkitektur. De definerer Odoo-felter, relationer og forretningslogik.
Denne artikel fokuserer på en af de vigtigste modeller i Odoo Accounting: account.move.line. Uanset om du bygger tilpassede rapporter, integrerer eksterne systemer eller konfigurerer afstemningsarbejdsgange, vil du arbejde med denne model.
Hvad er account.move.line modellen
Modellen account.move.line repræsenterer individuelle journalpostlinjer i Odoo. Hver linje er en debet eller kredit i en journalpost. Sammen skal linjerne i en journalpost balancere: samlede debiteringer skal være lig med samlede krediteringer.
Denne model i Odoo bruges af regnskabsmodulet. Det er barnet af account.move, som repræsenterer selve journalposten (fakturaer, regninger, bankudtog, journalposter). Hver journalpost har en eller flere linjer.
Modellen er defineret i account-modulet. Andre moduler udvider det gennem Odoo-modelarv. Salg tilføjer fakturalinjedetaljer. Indkøb tilføjer regningslinjedetaljer. Kontoanalytisk tilføjer analytisk fordeling. Hvert modul tilføjer hvad det har brug for uden at duplikere den grundlæggende struktur.
Nøglefelter i modellen
Her er de vigtigste Odoo-felter i account.move.line-modellen. At forstå disse vil hjælpe dig med at arbejde effektivt med journalposter og regnskabsdata.
1. navn
Type: Char. Dette felt gemmer etiketten eller beskrivelsen af linjen. Det er påkrævet og vises typisk i visninger og rapporter for journalposter. For fakturalinjer kommer det ofte fra produktnavnet eller en brugerdefineret beskrivelse.
2. move_id
Type: Many2one (account.move). Knytter linjen til dens overordnede journalpost. Hver linje tilhører præcist én bevægelse. Dette er det primære forhold i modellen.
3. account_id
Type: Many2one (account.account). Den konto, som denne linje er postet til. Påkrævet. Skal være en ikke-visningskonto, ikke-lukket konto. Bruges til rapportering og gruppering af kontoplaner.
4. debit
Type: Float. Debetbeløbet. Standard er 0,0. For hver linje er enten debet eller kredit angivet, ikke begge. Debiteringer øger aktiver og udgiftskonti.
5. kredit
Type: Float. Kreditbeløbet. Standard er 0.0. Kreditter øger forpligtelser, egenkapital og indtægtskonti. Summen af alle debiteringer skal være lig med summen af alle kreditter i en bevægelse.
6. balance
Type: Float. Et beregnet felt: debet minus kredit. Repræsenterer den nettoeffekt, som linjen har. Positiv for debiteringer, negativ for kreditter. Bruges i rapporter og afstemning.
7. partner_id
Type: Many2one (res.partner). Kunden, leverandøren eller en anden part knyttet til denne linje. Bruges til opfølgning på tilgodehavender og gæld, aldringsrapporter og afstemning.
8. dato
Type: Date. Den effektive dato for linjen. Normalt arvet fra den overordnede bevægelse. Bruges til periodeafslutning, rapportering og aldring.
9. forfaldsdato
Type: Date. Forfaldsdatoen for betaling. Relevant for tilgodehavender og gæld. Bruges til aldringsrapporter og betalingsplanlægning.
10. valuta_id
Type: Many2one (res.currency). Valutaen for linjen. Kan være forskellig fra virksomhedens valuta for poster med flere valutaer.
11. amount_currency
Type: Float. Beløbet i linjens valuta. Bruges når journalposten er i en fremmed valuta. Sammen med currency_id muliggør det fler-valuta regnskab.
12. quantity
Type: Float. Valgfri mængde. Bruges til produktbaserede linjer (fakturaer, regninger). Muliggør mængdebaseret rapportering og beregning af enhedspriser.
13. product_id
Type: Many2one (product.product). Produktet knyttet til denne linje. Udfyldes når linjen kommer fra en salgsordre, indkøbsordre eller fakturalinje.
14. product_uom_id
Type: Many2one (uom.uom). Måleenheden for mængden. Bruges sammen med product_id for korrekt visning og konvertering af mængder.
15. price_unit
Type: Float. Enhedsprisen. Bruges sammen med mængden til at beregne beløb på faktura- og regningslinjer.
16. tax_ids
Type: Many2many (account.tax). Skatter anvendt på denne linje. Odoo opretter yderligere linjer for skattebeløb ved bogføring. Bruges til moms og andre skatteberegninger.
17. tax_line_id
Type: Many2one (account.tax). For tax lines, this references the tax that generated the line. Distinguishes tax lines from regular account lines.
18. analytic_account_id
Type: Many2one (account.analytic.account). Den analytiske konto til omkostnings- og indtægtsopfølgning. Bruges når analytisk regnskab er aktiveret.
19. analytic_distribution
Type: Json eller Text. Gemmer analytisk fordeling på tværs af flere analytiske konti. Erstatter analytic_account_id i nyere Odoo-versioner, når der anvendes analytiske planer.
20. ref
Type: Char. Normalt relateret til den overordnede bevægelse. Ekstern reference eller memo. Vist på rapporter og brugt til afstemningsmatch.
21. narration
Type: Text. Normalt relateret til den overordnede bevægelse. Intern note eller memo. Ikke trykt på kundevendte dokumenter som standard.
22. journal_id
Type: Many2one (account.journal). Journalen for den overordnede bevægelse. Bruges til filtrering og rapportering efter journal.
23. company_id
Type: Many2one (res.company). Virksomheden. I multi-virksomhedsopsætninger tilhører hver linje én virksomhed. Påvirker synlighed af poster og konsolidering.
24. reconciled
Type: Boolean. Angiver, om linjen er blevet fuldt afstemt. Bruges til at filtrere uafstemte poster i afstemningsvisninger.
25. full_reconcile_id
Type: Many2one (account.full.reconcile). Knytter alle linjer, der er blevet afstemt sammen. Muliggør sporing af afstemningsgrupper.
26. payment_id
Type: Many2one (account.payment). For betalingslinjer, knytter til betalingsposten. Bruges ved afstemning af fakturaer med betalinger.
27. statement_id
Type: Many2one (account.bank.statement). For bankudskriftlinjer, knytter til udskriften. Bruges i bankafstemning.
28. statement_line_id
Type: Many2one (account.bank.statement.line). Knytter til den specifikke bankudskriftlinje. Bruges ved matchning af bevægelser til banktransaktioner.
29. display_type
Type: Valg. Kan være 'line_section' eller 'line_note' for sektion overskrifter og noter i journalindgangen. Disse linjer har ingen debet eller kredit og er kun til visning.
30. create_date
Type: Dato og tid. Gemmer hvornår posten blev oprettet. Administreres automatisk af Odoo. Nyttig til revision.
31. write_date
Type: Dato og tid. Gemmer hvornår posten sidst blev ændret. Administreres automatisk. Hjælper med at spore ændringer over tid.
Hvordan denne model bruges i forretningsarbejdsgange
1. Kunde Fakturering
Når du bekræfter en faktura, opretter Odoo account.move.line poster. Indtægtslinjer går til indtægtskonti. Tilgodehavende linjer går til kundens tilgodehavende konto. Skatlinjer oprettes for hver skat. partner_id linker til kunden for aldring og afstemning.
2. Leverandørregninger
Regninger opretter linjer for udgifter, indgående moms og forpligtelser. Hver linje har en account_id, debet eller kredit, og partner_id. Strukturen spejler kunde fakturaer, men med forskellige kontotyper.
3. Bankafstemning
Bankudtalelseslinjer matches til move linjer via statement_line_id. Når du afstemmer, linker Odoo linjerne gennem full_reconcile_id. Det afstemte felt sættes til True.
4. Manuel Journalindlæg
Brugere opretter journalindlæg med flere linjer. Hver linje har en konto, debet eller kredit, og en valgfri partner. Odoo håndhæver, at debet svarer til kredit, før indlægget offentliggøres.
5. Analytisk og omkostningsrapportering
Når analytisk regnskab er aktiveret, bærer linjer analytic_account_id eller analytic_distribution. Rapporterne grupperer efter analytisk konto for at vise omkostninger og indtægter pr. projekt, afdeling eller anden dimension.
Hvordan udviklere udvider denne model
Udviklere udvider account.move.line ved hjælp af flere mønstre. Odoo modelarv er den primære mekanisme.
Modelarv
Brug _inherit = 'account.move.line' for at udvide modellen. Tilføj nye Odoo-felter, overskriv metoder eller tilføj begrænsninger. Den arvede model i Odoo holder dine ændringer i et separat modul for nemme opgraderinger.
Tilføjelse af felter
Definer nye Odoo-felter i din arvede model. Brug den rigtige felttype: Char, Many2one, Boolean, Integer, Text, Selection. Overvej virksomhedafhængige felter til flere virksomheder. Vær forsigtig med beregnede felter og deres afhængigheder.
Python-udvidelser
Overskriv create, write eller unlink for at tilføje logik. Brug super() til at kalde den oprindelige. Undgå at bryde debet-lige-kredit invariant. API-modellen i Odoo eksponerer disse metoder til eksterne integrationer.
Odoo Studio
Odoo Studio lader dig tilføje felter til account.move.line uden kode. Godt til hurtige tilpasninger som ekstra etiketter eller tags. For kompleks logik eller afstemningsregler er tilpassede moduler mere vedligeholdelige.
Bedste praksis
- Opret eller ændr aldrig bevægelinjer direkte uden at gå gennem bevægelsen. Brug bevægelsens API (f.eks. line_ids), så Odoo kan opretholde konsistens og udføre alle kontroller.
- Når du bygger rapporter, filtrer efter move_id.state = 'posted' for at udelukke udkast og annullerede poster.
- Brug account_id med den rigtige kontotype (tilgodehavende, skyldig osv.) for korrekt aldring og afstemningsadfærd.
- Når du integrerer via API, opret bevægelsen først, og tilføj derefter linjer. Sørg for, at debiteringer er lig med krediteringer, før du poster.
- For brugerdefinerede felter, brug
x_præfikset eller et modulpræfiks for at undgå konflikter med fremtidige Odoo-versioner.
Almindelige fejl
- Indstilling af både debet og kredit på samme linje. Hver linje skal have enten debet eller kredit, ikke begge.
- Oprettelse af ubalancerede bevægelser. Summen af debiteringer skal være lig med summen af krediteringer. Odoo validerer dette ved postering.
- Ændring af postede linjer uden at bruge den rette omvendelses- eller justeringsworkflow. Postede poster bør justeres via nye bevægelser, ikke direkte redigeringer.
- At glemme at indstille partner_id på tilgodehavende og skyldige linjer. Dette bryder aldringsrapporter og afstemning.
- Overskrivning af kerne metoder uden at kalde super(). Dette kan bryde afstemning, låsning eller andre moduler.
Konklusion
account.move.line modellen er central for Odoo Accounting. Den gemmer hver debet og kredit i journalposter, fakturaer og regninger. At forstå dens felter og hvordan moduler udvider den vil hjælpe dig med at konfigurere, tilpasse og integrere Odoo effektivt.
Uanset om du er en funktionel konsulent, der kortlægger regnskabsarbejdsgange, eller en udvikler, der bygger brugerdefinerede rapporter og integrationer, vil et solidt kendskab til account.move.line spare tid og forhindre fejl.
Har du brug for hjælp med din Odoo-implementering?
Dasolo hjælper virksomheder med at implementere, tilpasse og optimere Odoo. Vi specialiserer os i API-integrationer og Odoo-udvikling. Vores team har dyb erfaring med Odoo-databasearkitekturen og modeller som account.move.line.
Hvis du har brug for hjælp til din Odoo-implementering, brugerdefinerede moduler eller integrationer, er vi her for at hjælpe. Book en demo for at diskutere dit projekt.