Introduksjon
I Odoo definerer modeller hvordan data er strukturert og lagret i databasen. Hver bit av forretningsdata du arbeider med, fra salgsordrer til fakturaer til journaloppføringer, lever i en modell.
Å forstå Odoo-modeller er avgjørende for både utviklere og funksjonelle konsulenter. Modeller er grunnlaget for Odoo-databasearkitekturen. De definerer Odoo-felt, relasjoner og forretningslogikk.
Denne artikkelen fokuserer på en av de viktigste modellene i Odoo Accounting: account.move.line. Enten du bygger tilpassede rapporter, integrerer eksterne systemer eller konfigurerer avstemmingsarbeidsflyter, vil du jobbe med denne modellen.
Hva er account.move.line-modellen
Modellen account.move.line representerer individuelle journalpostlinjer i Odoo. Hver linje er en debet eller kredit i en journalpost. Sammen må linjene i en journalpost balansere: totale debiter må være lik totale krediter.
Denne modellen i Odoo brukes av regnskapsmodulen. Den er barnet til account.move, som representerer selve journalposten (fakturaer, regninger, bankutskrifter, journalposter). Hver journalpost har en eller flere linjer.
Modellen er definert i regnskapsmodulen. Andre moduler utvider den gjennom Odoo-modellarv. Salg legger til fakturalinjedetaljer. Innkjøp legger til regningslinjedetaljer. Regnskap analytisk legger til analytisk distribusjon. Hver modul legger til det den trenger uten å duplisere kjerne-strukturen.
Nøkkelfelt i modellen
Her er de viktigste Odoo-feltene i modellen account.move.line. Å forstå disse vil hjelpe deg å jobbe effektivt med journalposter og regnskapsdata.
1. navn
Type: Char. Dette feltet lagrer etiketten eller beskrivelsen av linjen. Det er påkrevd og vises vanligvis i visninger og rapporter for journalposter. For fakturalinjer kommer det ofte fra produktnavnet eller en tilpasset beskrivelse.
2. move_id
Type: Many2one (account.move). Knytter linjen til sin overordnede journalpost. Hver linje tilhører nøyaktig én move. Dette er hovedforholdet i modellen.
3. account_id
Type: Many2one (account.account). Kontoen denne linjen postes til. Påkrevd. Må være en ikke-visningskonto, ikke-closed konto. Brukes for rapportering og gruppering av kontoplan.
4. debet
Type: Float. Debetbeløpet. Standard er 0,0. For hver linje settes enten debet eller kredit, ikke begge. Debiter øker eiendels- og kostnadskonti.
5. kreditt
Type: Float. Beløpet for kreditt. Standard er 0.0. Kreditter øker forpliktelser, egenkapital og inntektskontoer. Summen av alle debiteringer må være lik summen av alle kreditter i en transaksjon.
6. balanse
Type: Float. Et beregnet felt: debet minus kreditt. Representerer nettoeffekten av linjen. Positiv for debiteringer, negativ for kreditter. Brukes i rapporter og avstemming.
7. partner_id
Type: Many2one (res.partner). Kunden, leverandøren eller annen part knyttet til denne linjen. Brukes for sporing av fordringer og gjeld, aldringsrapporter og avstemming.
8. dato
Type: Date. Den effektive datoen for linjen. Vanligvis arvet fra den overordnede transaksjonen. Brukes for periodeavslutning, rapportering og aldring.
9. forfallsdato
Type: Date. Forfallsdatoen for betaling. Relevant for fordringer og gjeld. Brukes for aldringsrapporter og betalingsplanlegging.
10. valuta_id
Type: Many2one (res.currency). Valutaen for linjen. Kan avvike fra selskapets valuta for transaksjoner med flere valutaer.
11. beløp_valuta
Type: Float. Beløpet i linjens valuta. Brukes når journaloppføringen er i en utenlandsk valuta. Sammen med currency_id muliggjør det fler-valuta regnskap.
12. kvantitet
Type: Float. Valgfri kvantitet. Brukes for produktbaserte linjer (fakturaer, regninger). Muliggjør kvantitetsbasert rapportering og beregning av enhetspriser.
13. produkt_id
Type: Many2one (product.product). Produktet knyttet til denne linjen. Fylles ut når linjen kommer fra en salgsordre, innkjøpsordre eller fakturalinje.
14. produkt_uom_id
Type: Many2one (uom.uom). Måleenheten for kvantiteten. Brukes sammen med produkt_id for riktig visning og konvertering av kvantitet.
15. pris_enhet
Type: Float. Enhetsprisen. Brukes sammen med kvantitet for å beregne beløp på faktura- og regningslinjer.
16. skatte_ids
Type: Many2many (account.tax). Skatter som gjelder for denne linjen. Odoo oppretter ekstra linjer for skattebeløp ved posting. Brukes for MVA 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 kontoen for kostnads- og inntektsoppfølging. Brukes når analytisk regnskap er aktivert.
19. analytic_distribution
Type: Json eller Text. Lagrer analytisk distribusjon på tvers av flere analytiske kontoer. Erstatter analytic_account_id i nyere Odoo-versjoner når man bruker analytiske planer.
20. ref
Type: Char. Vanligvis relatert fra den overordnede bevegelsen. Ekstern referanse eller notat. Vist på rapporter og brukt for avstemming.
21. narration
Type: Text. Vanligvis relatert fra den overordnede bevegelsen. Intern merknad eller notat. Skrives ikke ut på dokumenter som er rettet mot kunder som standard.
22. journal_id
Type: Many2one (account.journal). Journalen til den overordnede bevegelsen. Brukes for filtrering og rapportering etter journal.
23. company_id
Type: Many2one (res.company). Selskapet. I fler-selskap oppsett, tilhører hver linje ett selskap. Påvirker synlighet av poster og konsolidering.
24. reconciled
Type: Boolean. Indikerer om linjen er fullt avstemt. Brukes til å filtrere uavstemte elementer i avstemmingsvisninger.
25. full_reconcile_id
Type: Many2one (account.full.reconcile). Knytter alle linjer som ble avstemt sammen. Muliggjør sporing av avstemmingsgrupper.
26. payment_id
Type: Many2one (account.payment). For betalingslinjer, lenker til betalingsposten. Brukes når man avstemmer fakturaer med betalinger.
27. statement_id
Type: Many2one (account.bank.statement). For bankuttakslinjer, lenker til uttaket. Brukes i bankavstemming.
28. statement_line_id
Type: Many2one (account.bank.statement.line). Knytter til den spesifikke bankuttakslinjen. Brukes når man matcher bevegelser med banktransaksjoner.
29. display_type
Type: Utvalg. Kan være 'line_section' eller 'line_note' for seksjonsoverskrifter og notater i journaloppføringen. Disse linjene har ingen debet eller kredit og er kun for visning.
30. create_date
Type: Dato og tid. Lagrer når posten ble opprettet. Administreres automatisk av Odoo. Nyttig for revisjon.
31. write_date
Type: Dato og tid. Lagrer når posten sist ble endret. Administreres automatisk. Hjelper med å spore endringer over tid.
Hvordan denne modellen brukes i forretningsarbeidsflyter
1. Kunde Fakturering
Når du bekrefter en faktura, oppretter Odoo account.move.line-poster. Inntektslinjer går til inntektskontoer. Kundefordringslinjer går til kundens kundefordringskonto. Skattemessige linjer opprettes for hver skatt. partner_id kobler til kunden for aldring og avstemming.
2. Leverandørregninger
Regninger oppretter linjer for utgifter, inngående MVA og forpliktelser. Hver linje har en account_id, debet eller kredit, og partner_id. Strukturen speiler kunde fakturaer, men med forskjellige kontotyper.
3. Bankavstemming
Bankuttakslinjer matches med move-linjer via statement_line_id. Når du avstemmer, kobler Odoo linjene gjennom full_reconcile_id. Feltet for avstemt settes til True.
4. Manuelle journaloppføringer
Brukere oppretter journaloppføringer med flere linjer. Hver linje har en konto, debet eller kredit, og valgfri partner. Odoo håndhever at debet er lik kredit før posting.
5. Analytisk og kostnadsrapportering
Når analytisk regnskap er aktivert, bærer linjene analytic_account_id eller analytic_distribution. Rapporter grupperer etter analytisk konto for å vise kostnader og inntekter etter prosjekt, avdeling eller annen dimensjon.
Hvordan utviklere utvider denne modellen
Utviklere utvider account.move.line ved å bruke flere mønstre. Odoo-modellarv er hovedmekanismen.
Modellarv
Bruk _inherit = 'account.move.line' for å utvide modellen. Legg til nye Odoo-felt, overstyr metoder, eller legg til begrensninger. Den arvede modellen i Odoo holder endringene dine i en egen modul for enkle oppgraderinger.
Legge til felt
Definer nye Odoo-felt i den arvede modellen. Bruk riktig felttype: Char, Many2one, Boolean, Integer, Text, Selection. Vurder selskapsavhengige felt for flere selskaper. Vær forsiktig med beregnede felt og deres avhengigheter.
Python-utvidelser
Overstyr create, write, eller unlink for å legge til logikk. Bruk super() for å kalle den originale. Unngå å bryte debet-lik-kredit invariant. API-modellen i Odoo eksponerer disse metodene for eksterne integrasjoner.
Odoo Studio
Odoo Studio lar deg legge til felt til account.move.line uten kode. Bra for raske tilpasninger som ekstra etiketter eller merkelapper. For kompleks logikk eller avstemmingsregler er tilpassede moduler mer vedlikeholdbare.
Beste praksis
- Aldri opprett eller endre bevegelseslinjer direkte uten å gå gjennom bevegelsen. Bruk bevegelsens API (f.eks. line_ids) slik at Odoo kan opprettholde konsistens og kjøre alle sjekker.
- Når du bygger rapporter, filtrer etter move_id.state = 'posted' for å ekskludere utkast og kansellerte oppføringer.
- Bruk account_id med riktig kontotype (tilgodehavende, skyldig, osv.) for riktig aldring og avstemmingsatferd.
- Når du integrerer via API, opprett bevegelsen først, og legg deretter til linjer. Sørg for at debet er lik kreditt før du poster.
- For tilpassede felt, bruk
x_prefikset eller et modulprefiks for å unngå konflikter med fremtidige Odoo-versjoner.
Vanlige feil
- Setter både debet og kreditt på samme linje. Hver linje bør ha enten debet eller kreditt, ikke begge.
- Oppretter ubalanserte bevegelser. Summen av debet må være lik summen av kreditt. Odoo validerer dette ved posting.
- Modifiserer posterte linjer uten å bruke riktig reverserings- eller justeringsarbeidsflyt. Posterte oppføringer bør justeres via nye bevegelser, ikke direkte redigeringer.
- Glemmer å sette partner_id på tilgodehavende og skyldige linjer. Dette bryter aldringsrapporter og avstemming.
- Overstyrer kjerne metoder uten å kalle super(). Dette kan bryte avstemming, låsing eller andre moduler.
Konklusjon
account.move.line-modellen er sentral i Odoo Accounting. Den lagrer hver debet og kreditt i journaloppføringer, fakturaer og regninger. Å forstå feltene dens og hvordan moduler utvider den vil hjelpe deg med å konfigurere, tilpasse og integrere Odoo effektivt.
Enten du er en funksjonell konsulent som kartlegger regnskapsarbeidsflyter eller en utvikler som bygger tilpassede rapporter og integrasjoner, vil en solid forståelse av account.move.line spare tid og forhindre feil.
Trenger du hjelp med din Odoo-implementering?
Dasolo hjelper selskaper med å implementere, tilpasse og optimalisere Odoo. Vi spesialiserer oss på API-integrasjoner og Odoo-utvikling. Vårt team har dyp erfaring med Odoo-datastrukturen og modeller som account.move.line.
Hvis du trenger hjelp med din Odoo-implementering, tilpassede moduler eller integrasjoner, er vi her for å hjelpe. Bestill en demo for å diskutere prosjektet ditt.