Johdanto
Odoossa mallit määräävät, miten liiketoimintatiedot tallennetaan ja jäsennellään tietokantaan. Kaikki myyntitilaukset, laskut ja kirjanpitomerkinnät elävät mallien sisällä — mallit ovat se rakenne, jonka päälle koko sovellus rakentuu.
Mallien ymmärtäminen on olennaista sekä kehittäjille että toiminnallisille asiantuntijoille. Mallit kuvaavat kentät, suhteet ja niihin liittyvän liiketoimintalogiikan, eli ne muodostavat Odoon datan arkkitehtuurin ytimen.
Tässä artikkelissa keskitytään yhteen kirjanpidon keskeisistä malleista: account.move. Kun rakennat raportteja, yhdistät ulkoisia järjestelmiä tai määrittelet laskutuksen työnkulkuja, tulet lähes tulkoon koskettamaan tätä mallia.
Mikä on account.move -malli
account.move edustaa Odoossa kirjanpitomerkintöjä. Uudemmissa Odoo-versioissa se yhdistää aiemmin erillisinä olleet mallityypit — myyntilaskut, ostolaskut, hyvitykset ja manuaaliset päiväkirjamerkinnät ovat kaikki saman mallin alle.
Tätä mallia käyttää kirjanpitomoduuli, ja se toimii pääasiallisena entiteettinä, jonka rivit (account.move.line) pitävät kirjaa yksittäisistä debet- ja kredit-määristä. Jokainen lasku, tiliote tai kirjaus on yksi account.move -tietue, jolla on vähintään yksi rivitieto.
Mallin perusmäärittely löytyy account-moduulista, mutta muut moduulit laajentavat sitä Odoon perintämekanismeilla. Esimerkiksi myyntimoduuli lisää laskun luonnin myyntitilauksista ja hankintamoduuli ostolaskujen luomisen — ydintä ei kopioida, vaan laajennetaan.
Merkittävät kentät mallissa
Seuraavaksi käymme läpi tärkeimmät kentät account.move -mallissa. Niiden tunteminen helpottaa laskujen, ostojen ja kirjanpitomerkintöjen käsittelyä arjessa.
1. name
Tyyppi: Char. Kenttä pitää kirjaa kirjanpitomerkinnän nimestä tai numerosta, yleensä generoitu journalin sekvenssistä. Näkyy listauksissa ja tulosteissa.
2. move_type
Tyyppi: Selection. Määrittää merkinnän luonteen: entry (kirjallinen täsmäytys), out_invoice (asiakaslasku), out_refund (asiakashyvitys), in_invoice (ostolasku) tai in_refund (ostohyvitus). Tämä arvo ohjaa näkymiä ja työnkulkuja.
3. state
Tyyppi: Selection. Työnkulun tila: draft, posted tai cancel. Muokattavissa olevat merkinnät ovat luonnoksina, kirjatut merkinnät lukitaan ja vaikuttavat pääkirjaan, perutut merkit poistavat vaikutuksen.
4. date
Tyyppi: Date. Asiakirjan päivämäärä, jota käytetään raportoinnissa, eräpäivälaskennassa ja kausien sulkemisessa. Laskuissa tämä vastaa usein laskun päivää.
5. journal_id
Tyyppi: Many2one (account.journal). Viittaa siihen päiväkirjaan, johon merkintä kuuluu: myynti, ostot, pankki tai muu. Journal vaikuttaa sekvenssiin ja oletustileihin.
6. company_id
Tyyppi: Many2one (res.company). Moniyritys-ympäristössä kertoo, mille yhtiölle merkintä kuuluu. Vaikuttaa näkyvyyteen ja konsernitason käsittelyihin.
7. partner_id
Tyyppi: Many2one (res.partner). Asiakas tai toimittaja. Pakollinen laskuille ja ostolaskuille, ja sitä käytetään eräraporteissa, maksujen kohdistuksessa ja otsikoissa.
8. currency_id
Tyyppi: Many2one (res.currency). Merkinnän valuutta. Summat ovat tässä valuutassa; monivaluuttatilanteessa yrityksen päävaluutta tarvitaan raportointiin ja muunnoksiin.
9. amount_total
Tyyppi: Monetary. Merkinnän kokonaismäärä. Laskuissa vastaa maksettavaa summaa ja lasketaan rivien perusteella.
10. amount_residual
Tyyppi: Monetary. Maksamaton osuus. Maksetuissa laskuissa arvo on nolla. Käytetään ikääntymisessä ja maksujen hallinnassa.
11. payment_state
Tyyppi: Selection. Maksutila: not_paid, in_payment, paid, partial, reversed tai invoicing_legacy. Tämän perusteella hoidetaan muistutukset ja maksuraportit.
12. line_ids
Tyyppi: One2many (account.move.line). Kirjanpitorivit. Jokaisella rivillä on tili, debet ja kredit; rivien summien tulee tasapainottaa toisensa.
13. invoice_line_ids
Tyyppi: One2many (account.move.line). Laskun tuote- tai palvelorivit. Kun lasku kirjataan, nämä generoi yhden tai useamman kirjanpitorivin.
14. invoice_date
Tyyppi: Date. Laskun päiväys, jota käytetään verokausiin ja laskutukseen. Joissain määrityksissä voi poiketa varsinainen move-päivästä.
15. invoice_date_due
Tyyppi: Date. Maksun eräpäivä, joka lasketaan maksuehdoista tai asetetaan käsin. Käytetään ikääntymisraporteissa ja perinnässä.
16. ref
Tyyppi: Char. Ulkoinen viite esimerkiksi toimittajan laskunumero. Auttaa maksujen kohdistuksessa ja yhteen sovittamisessa ulkoisten dokumenttien kanssa.
17. invoice_origin
Tyyppi: Char. Lähdedokumentti, kuten myyntitilauksen numero. Mahdollistaa jäljitettävyyden tilauksesta laskuun.
18. create_date
Tyyppi: Datetime. Tietueen luontiaika, hallinnoitu automaattisesti Odoossa.
19. write_date
Tyyppi: Datetime. Viimeisin muokkausaika, myös automaattisesti ylläpidetty.
20. narration
Tyyppi: Text. Sisäiset muistiinpanot tai selitykset, jotka näkyvät päiväkirjamerkinnöissä mutta eivät yleensä asiakkaalle tulostettavassa laskussa.
21. fiscal_position_id
Tyyppi: Many2one (account.fiscal.position). Verokohteluvalinta, joka määrittää sovellettavat verosäännöt asiakkaan ja maan perusteella.
22. invoice_payment_term_id
Tyyppi: Many2one (account.payment.term). Maksuehdot (esim. 14 pv, netto 30). Käytetään eräpäivän laskentaan ja maksujakoon.
23. invoice_user_id
Tyyppi: Many2one (res.users). Laskusta vastuussa oleva myyjä tai käyttäjä, hyödyllinen komissioissa ja raporteissa.
24. reversed_entry_id
Tyyppi: Many2one (account.move). Linkki peruutettuun merkintään, joka säilyttää audit trailin korjauksissa.
25. to_check
Tyyppi: Boolean. Merkkilippu tarkastusta vaativille merkinnöille; hyödyllinen pankkitilien yhteen sovituksessa ja poikkeustilanteissa.
26. active
Tyyppi: Boolean. Pehmeäpoiston lippu; kun False, tieto arkistoidaan. Perutetut merkinnät usein asetetaan aktiivisuudeltaan pois.
27. sequence_number
Tyyppi: Integer. Journalin sekvenssin numero, jota käytetään järjestykseen ja näkymiin. Hallitaan sekvenssimixin kautta.
28. amount_untaxed
Tyyppi: Monetary. Välisumma ennen veroja; laskuissa rivien summien summa ennen veroja.
29. amount_tax
Tyyppi: Monetary. Kokonaisveron määrä, laskettuna rivikohtaisesti verosääntöjen mukaan.
30. invoice_source_email
Tyyppi: Char. Kun ostolasku luodaan sähköpostista, tässä säilytetään lähdeosoite. Hyödyllinen automaattisessa laskujen tuonnissa.
Miten tätä mallia käytetään liiketoimintaprosesseissa
1. Asiakaslaskutus
Kun myynti toimitetaan, Odoo generoi account.move -tietueen tyypillä out_invoice. Laskurivit tulevat myyntitilauksen riveiltä; kirjaaminen synnyttää kirjanpitorivit ja päivittää saatavat.
2. Ostolaskut
Hankintatilaukset voivat luoda ostolaskuja tai ne syötetään manuaalisesti. Ostolasku on account.move tyypillä in_invoice ja partnerina on toimittaja. Kirjaaminen päivittää maksutilit.
3. Maksujen kohdistus
Maksut kohdistetaan laskuihin amount_residual- ja payment_state-kenttien perusteella. Yhteen sovitus linkittää maksumerkinnät laskumerkintöihin ja nollaa residual-arvon, kun kaikki on maksatuttu.
4. Manuaaliset päiväkirjamerkinnät
Kirjanpitäjät luovat entry-tyypin merkintöjä oikaisuja, jaksotuksia tai korjauksia varten. He lisäävät rivit manuaalisesti tilien debet- ja kredit-kenttiin; ennen kirjaamista merkinnän tulee tasapainottaa.
5. Hyvitykset ja palautukset
Hyvitykset ovat out_refund- tai in_refund-tyyppisiä merkintöjä, jotka kumoavat alkuperäisen laskun tai ostolaskun vaikutuksen. reversed_entry_id linkittää takaisin alkuperäiseen merkintään auditoinnin vuoksi.
Miten kehittäjät laajentavat mallia
Kehittäjät laajentavat account.move -mallia muutamilla vakiokäytännöillä, joista Odoon perintä (model inheritance) on yleisin.
Malliperintä
Käytä _inherit = 'account.move' lisätäksesi kenttiä, ylikirjoittaaksesi metodeja tai lisätäksesi rajoitteita. Näin muutokset pysyvät erillisessä moduulissa, mikä helpottaa päivityksiä ja ylläpitoa.
Kenttien lisääminen
Lisää uusia kenttiä perityssä mallissa käyttäen oikeaa tyyppiä: Char, Many2one, Boolean, Integer, Text tai Selection. Moniyritysympäristössä mieti company-riippuvuutta, ja jos kenttä koskee vain laskuja, rajoita sen käyttö move_type-domaaneilla.
Python-laajennukset
Ylikirjoita create-, write-, _post- tai button_draft-metodeja lisälogiikkaa varten ja kutsu super() varmistaaksesi perustoiminnallisuuden. Huomioi laskettujen kenttien riippuvuudet ja käytä Odoon API-dekoraattoreita (@api.model, @api.depends) oikean ajoituksen varmistamiseksi.
Odoo Studio
Odoo Studion avulla voi lisätä kenttiä ilman koodausta — kätevää nopeisiin muutoksiin, kuten lisäviitteisiin. Monimutkaisempaan validointiin tai automatisointiin suositellaan kuitenkin omaa moduulia, joka pysyy ylläpidettävänä.
Huom: account.move on pysyvä tietokantamalli, ei abstrakti tai väliaikainen malli. Abstraktit mallit eivät luo tauluja, ja väliaikaiset mallit ovat tarkoitettu apuikkunoille; account.move säilyttää varsinainen kirjanpidollinen data.
Parhaat käytännöt
- Raportteja tai integraatioita rakentaessa suodata aina move_type:n mukaan — eri tyypit vaativat erilaisia pakollisia kenttiä ja käyttäytymismalleja.
- Käytä kuhunkin merkintään oikeaa päiväkirjaa. Väärä journal voi rikkoa numerosekvenssejä ja johtaa virheelliseen raportointiin.
- Kun luot merkintöjä API:n kautta, varmista että line_ids tasapainottuvat (debet = kredit) ennen kirjaamista. Tasapainottamattomat merkinnät hylätään.
- Ulkoisista järjestelmistä tulevia asiakirjoja kartoittaessa mappaa dokumenttityypit oikein move_type-arvoihin: out_invoice myynnille, in_invoice ostolle jne.
- Käytä x_ -etuliitettä omille kentille välttääksesi ristiriitoja tulevien Odoo-päivitysten kanssa.
Yleisimmät virheet
- Yksi yleisimmistä virheistä on yrittää kirjata merkintä, jonka rivit eivät tasapainotu — Odoo estää tällaiset postaukset. Tarkista aina debet- ja kredit-summat.
- Älä muokkaa suoraan jo kirjattuja merkintöjä. Postatut merkinnät ovat lukittuja; tee tarvittaessa peruutus ja uusi korjausmerkintä.
- Monetun unohtaminen asettaa partner_id-arvon asiakas- tai toimittajamäärityksissä voi rikkoa raportteja ja prosesseja — varmista että partner-tieto on paikoillaan.
- Väärän move_type:n käyttö on yleistä: hyvitys ei ole sama kuin negatiivinen lasku. Käytä oikeaa tyyppiä hyvityksiin ja palautuksiin.
- Ylikirjoita ydintoimintoja vain, jos kutsut super()-metodia. Muuten voit rikkoa muiden moduulien oletuksia ja vaikeuttaa päivityksiä.
Yhteenveto
account.move on kirjanpidon selkäranka Odoossa — se yhdistää laskut, ostot ja päiväkirjamerkinnät yhtenäiseksi malliksi. Mallin kenttien ja laajennusmahdollisuuksien tuntemus auttaa konfiguroinnissa, räätälöinnissä ja integraatioissa.
Olitpa toiminnallinen konsultti prosessien kartoittamisessa tai kehittäjä rakennustöissä, vahva ymmärrys account.move -mallista säästää aikaa ja estää virheitä.
Tarvitsetko apua Odoo-projektissasi?
Dasolo auttaa yrityksiä ottamaan Odoon käyttöön, räätälöimään ja optimoimaan järjestelmän. Erikoisosaamistamme ovat API-integraatiot ja Odoo-kehitys; tiimillämme on syvällinen kokemus Odoon datamallista ja keskeisistä malleista kuten account.move.
Jos tarvitset apua Odoo-implementaatiossa, räätälöidyissä moduuleissa tai integraatioissa, autamme mielellämme. Varaa demo keskustellaksesi projektistasi.