Siirry sisältöön

purchase.order-malli: Odoo Purchase Order -arkkitehtuurin selitys

Täydellinen opas Odoon ostotilausmalliin — suunnattu kehittäjille ja sovellusasiantuntijoille
11. maaliskuuta 2026 kirjoittanut
purchase.order-malli: Odoo Purchase Order -arkkitehtuurin selitys
Dasolo
| Ei vielä kommentteja

Johdanto


Odoossa tieto järjestetään malleihin, jotka kertovat, miten tiedot tallennetaan ja millaisia suhteita niillä on. Jokainen liiketoimintatapahtuma — tilauksesta laskuun ja varastotapahtumiin — elää oman mallinsa rakenteessa.


Mallien ymmärtäminen on olennaista sekä kehittäjille että liiketoiminnan asiantuntijoille. Mallit muodostavat Odoon tietomallin rungon: niiden avulla määritellään kentät, relaatiot ja liiketoimintasäännöt, joita järjestelmä noudattaa.


Tämä artikkeli keskittyy yhteen tärkeimmistä malleista: purchase.orderiin. Olipa taustasi integraatioissa, räätälöinneissä tai hankintaprosessien määrittelyssä, siihen törmäät todennäköisesti työssäsi.

Mikä on purchase.order -malli


Purchase.order edustaa Odoossa tarjouspyyntöjä (RFQ) ja varsinaisia ostoja. Se on paikka, johon hankintatapahtuman tiedot kerätään ennen kuin niistä syntyy vastaanottoja tai toimittajalaskuja.


Purchase‑mallia käyttää hankintomoduuli. Ostaja luo RFQ:n purchase.order‑tietueeksi; kun toimittaja vahvistaa tai ostaja hyväksyy, tila muutetaan tilasta draft tilaan purchase. Sama malli pitää sisällään sekä luonnokset että vahvistetut tilaukset, ja state‑kenttä seuraa elinkaarta.


Muita moduuleja laajentavat tätä mallia periyttämällä sen. Varasto lisää vastaanotto‑ ja lähetyslogiikkaa, Kirjanpito liittää laskutiedot ja Valmistus voi luoda tilauksia osien hankintaan. Jokainen moduuli täydentää ydintä ilman, että perusrakenne kopioidaan.

Mallin keskeiset kentät


Seuraavaksi käydään läpi purchase.orderin olennaisimmat kentät. Näiden tunteminen helpottaa tilauksilla työskentelyä ja integraatioiden suunnittelua.


1. name

Tyyppi: Char. Tallentaa tilausviitteen, esimerkiksi PO00042. Usein automaattinen ja näkyy listoissa sekä tulosteissa. Se on tilauksen tunniste, jolla käyttäjät hakevat ja viittaavat tilaukseen.


2. state

Tyyppi: Selection. Seuraa tilauksen vaihetta: draft (RFQ), sent (lähetetty toimittajalle), to approve (hyväksyttävänä), purchase (vahvistettu), done (kokonaan vastaanotettu ja laskutettu), cancel (peruutettu). Kentän arvo määrittää saatavilla olevat toiminnot.


3. partner_id

Tyyppi: Many2one (res.partner). Toimittaja. Pakollinen. Tämä on tilauksen pääasiallinen yhteyshenkilö tai yritys ja se ohjaa mm. hinnoittelua, verokäsittelyä ja raportointia.


4. partner_ref

Tyyppi: Char. Toimittajan oma viite tai heidän hankintanumero. Näkyy dokumenteissa ja auttaa yhdistämään vastaanottoja ja laskuja toimittajan antamaan viitteeseen.


5. date_order

Tyyppi: Datetime. Tilauksen päivämäärä — luonnoksilla luontiaika, vahvistetuilla vahvistusaika. Käytetään raportoinnissa, lajittelussa ja oletuspäivänä rivien odotettaville toimituksille.


6. date_approve

Tyyppi: Datetime. Hyväksymis‑ tai vahvistuspäivämäärä, asetetaan kun tila siirtyy purchase‑tilaan. Lukuoikeudellinen kenttä, hyödyllinen auditoinnissa ja seurannassa.


7. order_line

Tyyppi: One2many (purchase.order.line). Tilausrivit. Jokaisella rivillä on tuote, määrä, hinta ja verot. Tämä on tilauksen varsinainen sisältö, josta laskut ja vastaanotot muodostuvat.


8. amount_untaxed

Tyyppi: Float. Välisumma ennen veroja. Lasketaan tilausriveistä ja näytetään yhteenvetosivuilla sekä raporteissa.


9. amount_tax

Tyyppi: Float. Verojen yhteenlaskettu määrä. Lasketaan rivikohtaisesti verokonfiguraation perusteella ja näytetään tilauksella sekä laskulla.


10. amount_total

Tyyppi: Float. Kokonaismäärä veroineen. Keskeinen arvo laskutusta ja talousraportointia varten.


11. currency_id

Tyyppi: Many2one (res.currency). Käytetty valuutta, tyypillisesti periytyy yrityksestä tai toimittajasta. Kaikki rahakentät noudattavat tätä valuuttaa.


12. origin

Tyyppi: Char. Lähdedokumentin nimi — esimerkiksi myyntitilauksen nimi dropshipping‑tapauksessa tai valmistusmääräyksen tunniste. Auttaa jäljitettävyydessä.


13. dest_address_id

Tyyppi: Many2one (res.partner). Toimitusosoite. Jos ei aseteta, käytetään yrityksen osoitetta. Dropshippingissä tämän avulla tavarat ohjataan asiakkaalle suoraan toimittajalta.


14. priority

Tyyppi: Selection. Tilausprioriteetti: Normaali tai Kiireellinen. Käytetään korostukseen ja lajitteluun; kiireelliset tilaukset voivat ohittaa normaaleja käsittelylinjoja.


15. invoice_status

Tyyppi: Selection. Seuraa laskutusta: no (ei laskutettu), to invoice (laskutettavana), invoiced (täysin laskutettu). Vaikuttaa mm. Luo lasku ‑toiminnon näkyvyyteen.


16. invoice_count

Tyyppi: Integer. Liittyvien toimittajalaskujen lukumäärä. Laskettu kenttä, käytetään näyttämiseen ja helpottaa laskujen aukaisua suoraan tilauksesta.


17. invoice_ids

Tyyppi: One2many (account.move). Liittyvät laskut. Yhdistää hankinnat kirjanpitoon ja tukee kolmiokäsittelyä sekä maksujen seurantaa.


18. picking_ids

Tyyppi: One2many (stock.picking). Liittyvät vastaanotot ja lähetykset. Käytössä, kun Varasto‑moduuli on asennettuna.48>


19. picking_count

Tyyppi: Integer. Liittyvien lähetysten määrä. Laskettu kenttä, josta avataan vastaanottolistat.


20. create_date

Tyyppi: Datetime. Tallentaa tietueen luontiajankohdan. Hallinnoitu automaattisesti, hyödyllinen raportoinnissa ja auditoinneissa.


21. write_date

Tyyppi: Datetime. Tallentaa viimeisimmän muokkauksen ajan. Automaattinen; kertoo, milloin tietoja on viimeksi päivitetty.


22. notes

Tyyppi: Text. Sopimusehdot tai sisäiset muistiinpanot. Voidaan näyttää tilausdokumenteissa ja käyttää toimittajalle annettaviin erikoisohjeisiin.


23. company_id

Tyyppi: Many2one (res.company). Moniyrityskäytössä kertoo, minkä yrityksen alla tilaus on tehty. Vaikuttaa näkyvyyteen ja käyttöoikeuksiin.


24. user_id

Tyyppi: Many2one (res.users). Ostajavastuuhenkilö. Käytetään hyväksymisprosesseissa ja tehtävien kohdistamisessa.


25. fiscal_position_id

Tyyppi: Many2one (account.fiscal.position). Verosijoittelu, käytetään kun toimittaja kuuluu toiseen verojärjestelmään tai maahan.


26. payment_term_id

Tyyppi: Many2one (account.payment.term). Maksuehdot, esimerkiksi 30 pv netto tai ennakkomaksu. Siirtyy laskulle oletukseksi.


27. display_name

Tyyppi: Char. Laskettu näyttönimi, joka yhdistää viitteen ja toimittajatiedon. Näkyy many2one‑valinnoissa ja haussa; yleensä vain luettava.


28. active

Tyyppi: Boolean. Arkistointilippu. Kun False, tietue piilotetaan oletusnäkymistä säilyttäen historian — ostot eivät yleensä poistu fyysisesti tietokannasta.

Miten tätä mallia käytetään liiketoimintaprosesseissa


1. RFQ → Ostotilaus

Ostaja laatii tarjouspyynnön (draft), lisää rivit ja lähettää sen toimittajalle. Kun toimittaja hyväksyy tai ostaja vahvistaa, tilaus siirtyy vahvistetuksi (purchase). Tämän jälkeen voidaan luoda vastaanotot ja toimittajalaskut.


2. Toimittajan vastaanotto

Kun tavara saapuu, vastaanotto luodaan tilauksesta. Vastaanottoihin linkitetyt picking‑tietueet päivittävät varastomääriä ja ostohinnat voivat vaikuttaa tuotteen kustannukseen.


3. Toimittajalasku

Vahvistetusta tilauksesta luodaan lasku, jossa rivit noudetaan tilausriveiltä. Maksuehdot ja verosijoittelu periytyvät tilauksesta ja invoice_status pitää kirjaa laskutuksen etenemisestä.


4. Dropshipping

Kun myyntitilaus laukaisee ostotilauksen, origin‑kenttään tallentuu myyntitilauksen tunniste ja dest_address_id osoitetaan asiakkaalle, jolloin toimittaja lähettää suoraan asiakkaalle. Purchase.order toimii myynnin ja hankinnan siltana.



5. Valmistus ja MRP

Valmistusmääräys voi luoda ostoja tarvittavien raaka‑aineiden hankintaan. Origin linkittää valmistusmääräykseen, ja purchase.order on keskeinen osa procure‑to‑pay‑virtaa.

Miten kehittäjät laajentavat mallia


Kehittäjät laajentavat purchase.orderia eri tavoilla käyttäen Odoon periytystä ja laajennusmalleja.


Malliperintä

Käytä _inherit = 'purchase.order' -ratkaisua lisätäksesi kenttiä, ylikirjoittaaksesi metodeja tai lisätäksesi rajoitteita. Muutokset kannattaa pitää omassa moduulissaan, jotta päivitykset ja ylläpito sujuvat paremmin.


Kenttien lisääminen

Lisää uusia kenttiä perityssä mallissa käyttämällä oikeaa kenttätyyppiä: Char, Many2one, Boolean, Integer, Text, Selection. Suunnittele moniyritystuki ja yrityskohtaiset kentät ennakkoon.


Python‑laajennukset

Ylikirjoita metodeja kuten button_confirm, create tai write lisätäksesi liiketoimintalogiikkaa. Kutsu alkuperäistä toteutusta super():lla ja huomioi lasketut kentät sekä niiden riippuvuudet.


Odoo Studio

Odoo Studio tarjoaa helpon tavan lisätä kenttiä ilman koodausta — kätevää nopeisiin muutoksiin. Monimutkaisempi logiikka ja pitkäaikaiskestävä ylläpito kannattaa kuitenkin rakentaa omassa moduulissa. Purchase.order on myös suoraan käytettävissä XML‑RPC/JSON‑RPC ‑rajapintojen kautta integraatioita varten.

Parhaat käytännöt


  • Hyödynnä aina tilakenttää oikein. Älä ohita tilojen logiikkaa tai muuta vaiheita suoraan tietueeseen kirjoittamalla.
  • Tallenna partner_ref, kun toimittaja antaa oman viitteensä — se helpottaa vastaanottojen ja laskujen yhdistämistä.
  • Käytä origin‑kenttää lähdedokumentin jäljittämiseen, erityisesti dropshippingissä ja valmistuksessa.
  • API‑integraatioissa hyödynnä XML‑RPC tai JSON‑RPC — purchase.order on täysin saatavilla. Huolehdi ulkoisten tunnisteiden ja ID‑kartoituksen oikeellisuudesta.
  • Räätälöidyissä kentissä käytä x_‑ tai moduulin omaa etuliitettä konfliktien välttämiseksi tulevissa Odoo‑versioissa.

Yleisimmät virheet


  • Muokkaa vahvistettuja tilauksia vain asianmukaisesti. Vahvistetut tilaukset rajoittavat muokattavia kenttiä, joten luo tarvittaessa uusi tilaus tai seuraa oikeaa työvirtaa.
  • Älä sekoita partner_id:tä ja dest_address_id:tä. Partner_id tarkoittaa toimittajaa; dest_address_id on toimitusosoite, joka voi olla asiakas dropshippingissä.
  • Kun ylikirjoitat button_confirm‑metodin, muista kutsua super(). Muuten muut moduulit tai tulevat päivitykset voivat rikkoutua.
  • Älä lisää pakollisia kenttiä ilman olemassaolevia arvoja tai oletuksia — vanhat tietueet voivat epäonnistua validoinnissa päivityksen yhteydessä.
  • Muista asettaa currency_id oikein monivaluuttatilanteissa. Väärä valuutta johtaa virheellisiin kustannuksiin ja laskutukseen.

Yhteenveto


Purchase.order on Odoon Hankinta‑moduulin ydin: se sisältää RFQ:t ja vahvistetut ostot. Mallin kenttien ja laajennusten ymmärtäminen auttaa sinua konfiguroimaan, räätälöimään ja integroimaan Odoota tehokkaasti.


Olitpa prosessikartoituksen tekijä tai moduulikehittäjä, purchase.orderin hallinta säästää aikaa ja vähentää virheitä toteutuksissa.

Tarvitsetteko apua Odoo‑käyttöönotossa?


Dasolo auttaa yrityksiä Odoon käyttöönotossa, räätälöinneissä ja optimoinnissa. Erikoisalaamme ovat API‑integraatiot ja Odoo‑kehitys — tiimillämme on syvä ymmärrys Odoon tietorakenteista kuten purchase.order.


Tarvitsette apua Odoo‑projektiin, räätälöinteihin tai integraatioihin? Autamme mielellämme. Varaa demoa keskustellaksesi projektistasi.

purchase.order-malli: Odoo Purchase Order -arkkitehtuurin selitys
Dasolo 11. maaliskuuta 2026
Jaa tämä kirjoitus
Kirjaudu sisään jättääksesi kommentin