Siirry sisältöön

product.product-malli: Odoo Product Variantin Rakenne Selitetty

Täydellinen opas Odoon tuotteen variaatioiden malliin kehittäjille ja funktionaalisille konsultteille
10. maaliskuuta 2026 kirjoittanut
product.product-malli: Odoo Product Variantin Rakenne Selitetty
Dasolo
| Ei vielä kommentteja

Johdanto


Odoossa jokainen liiketoimintatieto — myyntitilauksesta varastotapahtumaan ja tuotteisiin — tallennetaan mallien kautta tietokantaan. Malli määrää, miten tieto jäsennellään, linkittyy muihin tietoihin ja säilyy historiassa.


Sekä toiminnalliset konsultit että kehittäjät hyötyvät siitä, että mallit ovat hallussa. Mallit muodostavat Odoon tietomallin selkärangan: ne määrittelevät kentät, suhteet ja liiketoimintalogiikan, joihin koko järjestelmä nojautuu.


Tässä artikkelissa keskitytään yhteen tärkeään malliin: product.product. Se on usein se kohta, jossa konfigurointi, integraatiot ja räätälöidyt moduulit kohtaavat tuotteiden tiedot käytännössä.

Mikä on product.product -malli


product.product kuvaa Odoossa konkreettisia tuotevariaatioita — niitä yksittäisiä yksiköitä, joita myydään, ostetaan ja siirretään varastossa. Se on se tietue, joka päätyy tilausriveille, ostotilauksiin ja varastoliikkeisiin.


Mallin ero product.templateen on oleellinen: template pitää yhteiset, perhettä kuvaavat ominaisuudet, kun taas product.product edustaa kutakin variaatiota erikseen. Yksinkertaisessa tuotteessa on yksi variantti per template; monivaihtoehtoisessa tuotteessa (esim. paitamalli, eri koot ja värit) kukin yhdistelmä on oma product.product‑rivi.


Mallin perusmäärittely löytyy product‑moduulista. Myynti, hankinta, varastonhallinta ja verkkokauppa viittaavat usein suoraan product.productiin — kun lisäät tilausrivejä tai vastaanotat tavaraa, käytät näitä varianttitietueita.


product.product hyödyntää delegaatioperintää product.template‑mallista: moni kenttä määritellään templatelta ja variantti perii ne, mutta samalla variantille voi antaa omia arvoja. Tämä pitää jaetun tiedon keskitetysti ja mahdollistaa poikkeukset yksittäisille variaatioille.

Mallin keskeiset kentät


Seuraavassa ovat tärkeimmät kentät, joita käytät tyypillisesti työskennellessäsi tuotevaraioiden kanssa. Niiden merkitys vaikuttaa suoraan varaston, myynnin ja integraatioiden toimintaan.


1. name

Tyyppi: Char. Variantin nimi, joka näkyy listoissa ja dokumenteissa. Yksinkertaisessa tuotteessa nimi vastaa templaten nimeä; variaatiossa nimi usein sisältää attribuuttien kuvauksen, jotta käyttäjä tunnistaa yhdistelmän nopeasti.


2. product_tmpl_id

Tyyppi: Many2one (product.template). Yhdistää variantin sen vanhempaan templateen — jokaisella product.productilla on täsmälleen yksi parent‑template. Käytä tätä suhdetta, kun laajennat logiikkaa tai haet templaten tietoja variantille.


3. default_code

Tyyppi: Char. Sisäinen viite tai SKU, jota käytetään tuotteiden tunnistukseen, viivakoodihakuihin ja integraatioissa. Variantilla voi olla oma yksilöllinen koodi.


4. barcode

Tyyppi: Char. Tuotteen viivakoodi (EAN, UPC jne.) skannausta varten. Kun asetettu, sen tulee olla yksilöllinen tuotteiden välillä, jotta POS ja varasto löytävät oikean tuotteen nopeasti.


5. create_date

Tyyppi: Datetime. Tallentaa, milloin tietue luotiin. Odoon hoitama automaattinen kenttä, hyödyllinen raportoinnissa ja auditoinneissa.


6. write_date

Tyyppi: Datetime. Tallentaa viimeisimmän muutoksen ajan. Automaattinen; auttaa seuraamaan, milloin tuotetietoja on päivitetty viimeksi.


7. active

Tyyppi: Boolean. Pehmeän arkistoinnin lippu: False piilottaa tuotteen oletusnäkymistä, mutta ei poista tietohistoriaa. Käytännöllinen tapa vanhentaa tuotteita ilman tietojen menettämistä.


8. type

Tyyppi: Selection. Määrittää tuotetyypin: Consumable, Service tai Storable. Tämä vaikuttaa varaston seurannan ja eri prosessien soveltuvuuteen — esimerkiksi palveluilla ei ole varastoseurantaa.


9. categ_id

Tyyppi: Many2one (product.category). Tuoteryhmä, jota käytetään raportoinnissa, hinnan määräytymisessä ja katalogointisäännöissä. Kategoriat voivat muodostaa hierarkioita selkeyttämään tuoteluokitusta.


10. list_price

Tyyppi: Float. Oletusmyyntihinta, joka näkyy tarjouksilla ja toimii lähtöhintana tilausriveillä. Hinnat voidaan kuitenkin ylittää asiakkaan hinnaston mukaan.


11. standard_price

Tyyppi: Float. Tuotteen kustannushinta, jota käytetään varaston arvostuksessa ja katelaskennassa. Päivittyy yleensä ostojen tai manuaalisten muutosten kautta.


12. uom_id

Tyyppi: Many2one (uom.uom). Myynnin ja varaston mittayksikkö — kertoo, miten määritellään määrät (kpl, kg, l jne.).


13. uom_po_id

Tyyppi: Many2one (uom.uom). Hankinnan mittayksikkö, joka voi poiketa myyntiyksiköstä (esim. ostetaan laatikoissa, myydään kappaleina). Odoo hoitaa yksikkökonversiot automaattisesti.


14. description_sale

Tyyppi: Html. Myyntikuvaus, joka näytetään tarjouksissa ja laskuissa; voi sisältää muotoilua ja yksityiskohtaisia tuotetietoja asiakkaille.


15. description_purchase

Tyyppi: Html. Hankintakuvaus, joka näkyy ostotilauksissa ja toimittajalaskuissa; auttaa kommunikoimaan vaatimukset toimittajille.


16. sale_ok

Tyyppi: Boolean. Sallii tuotteen myynnin. Kun False, tuote ei ole valittavissa myyntissä tai verkkokaupassa — hyödyllinen sisäisille tai vain hankittaville tuotteille.


17. purchase_ok

Tyyppi: Boolean. Sallii tuotteen ostamisen. Kun False, tuotetta ei voi valita ostoissa — sopii valmistettaville tai vain myytäville yksiköille.


18. image_1920

Tyyppi: Binary. Korkean resoluution tuotekuva; Odoo tallentaa useita kokoja (image_512, image_256 jne.) käytettäväksi lomakkeissa, verkkokaupassa ja raporteissa.


19. weight

Tyyppi: Float. Tuotteen paino, jota käytetään toimituskustannusten laskennassa ja logistiikassa. Yksikkö riippuu yrityksen asetuksista.


20. volume

Tyyppi: Float. Tuotteen tilavuus; tärkeä laskennassa, jos lähetyksissä tai varastoinnissa huomioidaan tilavuuspohjaiset rajoitteet.


21. company_id

Tyyppi: Many2one (res.company). Multi‑company‑ympäristössä tämä kertoo, mikä yhtiö omistaa tuotteen; vaikuttaa näkyvyyteen ja varastosaldoihin.


22. currency_id

Tyyppi: Many2one (res.currency). Valuutta, jolla list_price ja standard_price ovat ilmoitettu; yleensä yrityksen oma valuutta, mutta hinnastot voivat tehdä muunnoksia muihin valuuttoihin.


23. qty_available

Tyyppi: Float. Käytettävissä oleva määrä varastossa, laskettuna quanteista. Read‑only; tärkeä varastotilanteen tarkistuksiin ja saatavuusnäyttöihin. Koskee lähinnä storable‑tuotteita.


24. virtual_available

Tyyppi: Float. Ennustettu määrä (varasto + tulossa - lähtevä). Auttaa päättämään hankinnoista ja täydennyksistä. Myös laskettu kenttä.


25. product_template_attribute_value_ids

Tyyppi: Many2many. Yhdistää variantin niihin attribuuttien arvoihin, jotka määrittelevät sen (esim. Väri=Sininen, Koko=M). Käytetään konfiguraatiossa ja suodattamisessa.


26. sequence

Tyyppi: Integer. Näyttöjärjestys: pienemmät arvot nousevat listauksissa ja konfiguraattoreissa ensin, joten voit ohjata, mitkä tuotteet näkyvät etusijalla.


27. display_name

Tyyppi: Char. Lasketaan yhdistämällä nimi ja attribuutit käyttäjäystävälliseksi esitykseksi. Näkyy many2one‑valinnoissa ja hakutuloksissa; yleensä vain luettavaksi.


28. responsible_id

Tyyppi: Many2one (res.users). Tuotteesta vastuussa oleva henkilö; hyödyllinen uudelleentilaussäännöissä ja sisäisessä työnjaossa, mutta ei pakollinen.

Miten mallia käytetään liiketoimintaprosesseissa


1. Myynti ja tarjoukset

Myyjä valitsee katalogista product.product‑variantin luodessaan tarjousta. Riville periytyvät list_price, description_sale ja uom_id; hinnastot voivat kuitenkin muuttaa lopullisen hinnan. Vain sale_ok=True -tuotteet näkyvät myyntivalikossa.


2. Hankinnat ja toimittajat

Osto‑tilaukset ja toimittajalaskut viittaavat product.product‑tietueisiin. Ostohinnat päivittävät usein standard_price‑kenttää, ja uom_po_id ohjaa, miten tuotteita tilataan (esim. tilataan laatikoissa mutta käsitellään kappaleina).


3. Varasto ja logistiikka

Varastoliikkeet, noudot ja quants ovat aina tuotteeseen sidottuja. qty_available ja virtual_available ohjaavat saatavuustarkistuksia. Vain storable‑tuotteita seurataan varastossa; viivakoodi auttaa nopeassa tunnistuksessa skannauksella.


4. Verkkokauppa ja sivusto

Verkkokaupassa näytetään product.product‑variantteja — eri koko‑ ja värivaihtoehdot annetaan valintoina. Kuvat, kuvaukset ja hinnat haetaan mallista, ja sale_ok‑asetus vaikuttaa, näkyykö tuote kaupassa.


5. Valmistus ja MRP

Tuotantolomakkeet ja materiaalivaatimukset viittaavat product.productiin sekä raaka‑aineissa että valmiissa tuotteissa. Tuotetyyppi vaikuttaa, tarvitseeko sitä varastoida vai kuluttaa, ja varastotasot ohjaavat tuotannon suunnittelua.

Miten kehittäjät laajentavat mallia


Kehittäjät laajentavat product.productia eri tavoilla, mutta yleisin ja suositeltava tapa on Odoon perintämekanismien käyttö.


Malliperintä

Käytä _inherit = 'product.product' laajentaaksesi mallia: lisää kenttiä, ylikirjoita metodeja tai lisää rajoitteita. Muutokset kannattaa tehdä omassa moduulissa, jotta päivitykset ja ylläpito sujuvat helpommin. Valitse product.product, kun ominaisuus on yksittäisvariantille; käytä product.templatea, jos ominaisuus koskee koko tuotefamiliaa.


Kenttien lisääminen

Lisää uusia kenttiä perimääsi malliin oikeilla tyypeillä (Char, Many2one, Boolean, Integer, Text, Selection). Päätä aina, kuuluuko kenttä templaten puolelle vai variantille: SKU‑tyyppiset tiedot kuuluvat yleensä product.productiin.


Python‑laajennukset

Ylikirjoita create, write tai unlink lisälogiikkaa varten ja kutsu aina super() alkuperäisen toiminnan säilyttämiseksi. Huomioi lasketut kentät ja niiden riippuvuudet, sillä product.product sisältää monia laskettuja arvoja eri moduuleista.


Odoo Studio

Odoo Studio mahdollistaa kenttien lisäämisen ilman koodia ja sopii nopeisiin muutoksiin. Monimutkaisissa tarpeissa ja yritystason ylläpidettävyydessä räätälöidyt moduulit antavat paremman kontrollin. Odoon API (XML‑RPC/JSON‑RPC) paljastaa mallin integraatioita varten.

Parhaat käytännöt


  • Pidä default_code ja barcode yhtenäisinä ja yksilöllisinä, jos käytät niitä integraatiokenttinä.
  • Aseta tuotetyyppi oikein: kulutustavarat, varastoitavat tai palvelut vaikuttavat automaattisesti prosessien soveltuvuuteen.
  • Integraatioissa käytä product.productia tilausriveihin ja transaktioihin; catalog‑tason operaatioihin sopii product.template paremmin.
  • Lisättyihin kenttiin kannattaa käyttää x_‑etuliitettä tai moduulin omaa etuliitettä konfliktien välttämiseksi tulevissa Odoo‑päivityksissä.
  • Kun kenttä koskee kaikkia variaatioita (esim. brändi tai yleinen kategoria), lisää se templateen. Varianttikohtaisille tiedoille (esim. variaation oma viivakoodi) käytä product.productia.

Yleisimmät virheet


  • Jos tarvitset varianttikohtaista logiikkaa, periydy product.productista; templaten perintä sopii yhteiseen toimintaan.
  • Älä luo variantteja käsin ilman konfiguraattoria, jos tuote on konfiguroitava — käytä tuotteen konfigurointitoimintoja, jotta attribuutit ja yhteydet syntyvät oikein.
  • Varmista, että sale_ok ja purchase_ok on asetettu oikein; muuten tuotteet voivat jäädä pois näkymistä myynnissä tai ostoissa.
  • Muista aina kutsua super() ylikirjoittaessasi ydintoimintoja — muuten riskinä on muiden moduulien rikkoutuminen ja päivitysongelmat.
  • Käytä oikeaa mallia domaineissa: jos suodatat kategorioiden mukaan, tee se template‑tasolla eikä varianttitason haulla, ellei tarkoitus ole nimenomaisesti hakea variantteja.

Yhteenveto


product.product on keskeinen osa Odoon tuotetietorakennetta: se edustaa myytäviä ja ostettavia yksiköitä. Ymmärtämällä kentät ja yhteydet product.templateen voit konfiguroida, laajentaa ja integroida järjestelmää tehokkaasti.


Olitpa konsultti, joka jäsentää tuoteluetteloita, tai kehittäjä, joka rakentaa moduuleja, hyvä ymmärrys product.productista säästää aikaa ja vähentää virheitä.

Tarvitsetko apua Odoo‑käyttöönotossasi?


Dasolo auttaa yrityksiä Odoo‑implementaatioissa, räätälöinneissä ja optimoinneissa. Erityisosaamistamme ovat API‑integraatiot ja Odoo‑kehitys sekä syvällinen kokemus Odoon tietomalleista, kuten product.productista.


Tarvitsetko apua Odoo‑käyttöönotossasi, räätälöidyissä moduuleissa tai integraatioissa? Autamme mielellämme. Varaa esittely keskustellaksesi projektistasi.

product.product-malli: Odoo Product Variantin Rakenne Selitetty
Dasolo 10. maaliskuuta 2026
Jaa tämä kirjoitus
Kirjaudu sisään jättääksesi kommentin