Jokaisella yrityksellä on omat tarpeensa — usein järjestelmä ei tiedä etukäteen, mitä tietoja sinun täytyy kerätä. Tällöin Odoon mukautetut kentät antavat vapauden ottaa juuri ne tiedot mukaan järjestelmään ilman kikkailua.
Sen sijaan, että pakottaisit prosessisi vakiomalliin, Odoo antaa lisätä kenttiä lähes mihin tahansa tietueeseen — asiakasrekisteriin, tarjouspapereihin, tuotetietoihin tai laskuihin. Sinä päätät, mitä tallennetaan, ja tieto elää järjestelmässä muiden kenttien rinnalla.
Tämä opas käy läpi olennaisen: mitä mukautetut kentät tarkoittavat käytännössä, miten ne tallennetaan taustalla, miten ne saa luotua joko ilman koodausta tai koodilla sekä miten kenttiä kannattaa käyttää niin, että Odoosta jää ylläpidettävä ja selkeä järjestelmä.
Mikä on mukautettu kenttä Odoossa
Mukautettu kenttä on lisätty sarake olemassa olevaan Odoo-malliin, joka tallentaa yhden tietokentän tietueeseen samalla tavalla kuin järjestelmän omat kentät tekevät.
Odoossa mukautetut kentät tunnistaa nimen alkukirjaimista x_. Studiolla luodut kentät näkyvät esimerkiksi muotoa x_studio_priority_level, ja ohjelmallisesti lisätyissä kentissä käytetään usein yrityskohtaisia etuliitteitä kuten x_acme_cost_center.
Käyttöliittymässä mukautettu kenttä käyttäytyy täysin kuin mikä tahansa muu kenttä: se voi näkyä lomakkeissa, listanäkymissä, suodattimissa, ryhmittelyissä ja raporteissa — teknisistä yksityiskohdista tietämätön käyttäjä ei huomaa eroa.
Saatavilla olevat kenttätyypit
Odoo tukee useita yleisiä kenttätyyppejä, jotka kattavat suurimman osan tiedontarpeista:
- Teksti (Char): Lyhyt teksti, kuten tunniste tai koodi
- Pitkä teksti: Usean rivin vapaateksti muistiinpanoille tai kuvauksille
- Kokonaisluku: Kokonaislukuarvot, esim. lukumäärät tai pisteet
- Desimaali (Float): Desimaaliluvut mittauksille tai prosenteille
- Rahamäärä: Valuuttatietoinen summa, linkittyy valuuttakenttään
- Boolean: Totuusarvo (valintaruutu)
- Päivämäärä / Päivämäärä & aika: Kalenteripäivä tai aikaleima
- Valinta: Kiinteä alasvetovalikko vaihtoehdoille
- Many2one: Yhteys yksittäiseen toisen mallin tietueeseen
- One2many: Lista toisen mallin liittyvistä tietueista
- Many2many: Useita linkkejä toiseen malliin
- Binary: Tiedoston liite
- HTML: Rich text -sisältö
Oikean kenttätyypin valinta alusta asti säästää myöheltä vaivalta. Kun mahdolliset arvot tunnetaan etukäteen, valintakenttä pitää datan yhtenäisenä verrattuna vapaatekstiin.
Miten kenttä toimii
Odoo perustuu ORM-kerrokseen (Object-Relational Mapping), jossa käyttöliittymän jokainen lomake ja taulu vastaa Python-mallia ja tietokantataulua. Kun lisäät mukautetun kentän, Odoo rekisteröi sen ORM:ään ja luo sille vastaavan sarakkeen PostgreSQL-tietokantaan automaattisesti.
Tämä rakenne tekee Odoosta joustavan: et muokkaa lähdekoodia, vaan laajennat mallia metadata-tasolla, joka tallentuu ir.model.fields-tauluun. Odoo lukee tämän tiedon käynnistyksen yhteydessä ja muodostaa kentät dynaamisesti.
Koodissa määritellyt kentät vs. tietokantaan tallennetut kentät
Perinteisessä Odoo-kehityksessä kentät määritellään Python-luokissa Odoo-kehyksen kenttämäärittelyillä. Näin kenttä esimerkiksi lisätään malliin suoraan kehitystyön kautta.
from odoo import models, fields
class SaleOrder(models.Model):
_inherit = 'sale.order'
cost_center = fields.Char(string='Cost Center')
Käyttöliittymän tai API:n kautta luodut mukautetut kentät tallennetaan ir.model.fields-tauluun tilalla state = 'manual' ja ladataan ajon aikana. Molemmat tavat luovat oikean tietokantasarakkeen ja toimivat käyttäjän näkökulmasta samalla tavalla.
Suhteelliset kentät ja kaksisuuntaisuus
Kun lisäät Many2one-kentän, joka osoittaa toiseen malliin, Odoo odottaa vastapuolelle vastaavaa One2many-kenttää. Tämä ei ole pelkkä tapa, vaan se kertoo ORM:lle, miten tietueiden välistä yhteyttä navigoidaan.
Esimerkiksi jos lisäät x_project_id (Many2one -> project.project) tarjouslomakkeeseen, on hyvä lisätä myös x_sale_order_ids (One2many -> sale.order) projektimalliin, jotta projektin näkymä näyttää siihen liittyvät tilaukset.
Laskettavat mukautetut kentät
Laskettavat kentät (computed fields) saavat arvonsa automaattisesti muiden kenttien perusteella. Tekniseen räätälöintiin tarvitaan Python-metodi ja compute-parametri, ja tällaiset kentät ovat yleensä vain luku -tilassa, päivittyen riippuvuuksiensa muuttuessa.
Laskettavat kentät tarjoavat paljon mahdollisuuksia, mutta niiden luominen vaatii kehittäjäosaamista; niitä ei yleensä voi luoda pelkällä Studio-työkalulla ilman kehittäjätilaa ja Python-tuntemusta.
Liiketoiminnan käyttötapaukset
Mukautetut kentät ovat läsnä lähes kaikissa Odoo-projekteissamme. Seuraavassa viisi arkipäivän esimerkkiä siitä, miten yritykset hyödyntävät kenttiä.
1. CRM: Liidien tarkempi luokittelu
Perusliidit sisältävät yhteystiedot ja vaiheiden seurannan, mutta myyntitiimit haluavat usein lisätietoja. Valintakenttä kuten "Toimiala" tai Many2one-yhteys sisäiseen "Markkinasegmentti"-malliin auttaa myyjiä profiloinnissa ja mahdollistaa segmenttikohtaiset raportit.
2. Myynti: Sisäisten projektikohtien seuranta
Yritykset, jotka laskuttavat projektikohtaisesti, liittävät tarjouksiin usein sisäisen projektikoodin tai budjettiviitteen. Yksinkertainen Char-kenttä "Projektikoodi" sale.order-mallissa riittää, ja tieto näkyy myös tulosteissa sekä raporteissa suodatuksen ja ryhmittelyn tukena.
3. Varasto: Tuotteiden teollisuuspohjaiset attribuutit
Standardien tuotetietojen lisäksi valmistajat saattavat tarvita omia teknisiä kenttiä, kuten "Takuu (kk)" (Integer), "Sertifikaatti" (Selection) tai "Valmistusmaa" (Many2one -> res.country). Nämä integroituvat tuotelomakkeeseen ja ovat käytettävissä varastoraporteissa.
4. Kirjanpito: Budjetointi ja kustannuspaikat
Taloustiimit haluavat merkitä laskuja tai kirjanpitomerkintöjä kustannuspaikalla. Many2one-kenttä account.move-mallissa kohti omia "Kustannuspaikka"-tietueita mahdollistaa tarkan kustannusallokoinnin ilman, että tarvitsee muuttaa Odoon analytiikkaa.
5. HR: Onboardingin erityistiedot
HR kerää usein työntekijäkohtaista tietoa, joka ei sovi oletuskenttiin: paikallisia sopimustyyppejä, sisäisiä taitoluokkia tai kalustoon liittyviä viitteitä. Mukautetut kentät hr.employee-mallissa pitävät tiedot haettavana ja raportoituvana suoraan Odoossa.
Kentän luominen tai muokkaaminen
Mukautetun kentän luomiseen on kaksi yleistä tapaa. Valinta riippuu teknisestä resurssista ja kentän monimutkaisuudesta.
Vaihtoehto 1: Odoo Studio (ei koodia)
Odoo Studion kautta kentän lisääminen on nopein vaihtoehto liiketoiminnan käyttäjille. Studiolla voit lisätä kentän muutamassa klikkauksessa:
- Avaa haluttu sovellus ja tietue (esim. tarjouslomake)
- Klikkaa muokkauspainiketta siirtyäksesi Studio-tilaan
- Raahaa haluamasi kenttätyyppi vasemmasta paneelista lomakkeeseen
- Aseta kentän näkyvä nimi, tekninen nimi ja muut asetukset
- Tallenna ja poistu Studiosta
Studio tallentaa kentän ir.model.fields-tauluun x_studio_-etuliitteellä ja lisää sen näkymään ilman palvelinymmärrystä tai uudelleenkäynnistystä. Tämä on suositeltava tapa yksinkertaisiin kenttiin ilman erityistä logiikkaa.
Vaihtoehto 2: Tekninen muokkaus API:n kautta
Keskitetyissä räätälöinneissä kenttiä luodaan ohjelmallisesti XML-RPC-rajapinnan tai Python-moduulin avulla. Tämä on oikea tapa, kun tarvitset laskettavia kenttiä, monimutkaisia suodattimia tai versionhallittavaa lähdekoodia.
API:n kautta esimerkiksi valintakentän luonti tarjousmalliin voi näyttää seuraavalta:
# Find the model ID for sale.order
model = models.execute_kw(
db, uid, api_key,
'ir.model', 'search_read',
[['model', '=', 'sale.order']],
{'fields': ['id', 'name']}
)[0]
# Create the custom field
field_id = models.execute_kw(
db, uid, api_key,
'ir.model.fields', 'create',
[{
'name': 'x_project_type',
'field_description': 'Project Type',
'model_id': model['id'],
'ttype': 'selection',
'selection': [('internal', 'Internal'), ('client', 'Client'), ('rd', 'R&D')],
'state': 'manual',
}]
)
Tämä on vakiotyöskentelytapa kehittäjille, kun kenttiä halutaan lisätä ilman suoria lähdekoodimuutoksia — käytännöllistä kaukonfiguraatioissa ja automatisoiduissa käyttöönotossa.
Täydellinen Python-moduulipohjainen ratkaisu määrittelee kentät malliluokassa ja lataa ne Odoo-moduulimekanismin kautta. Tämä on ylläpidettävin vaihtoehto, kun kenttien pitää säilyä päivityksissä ja näkyä versionhallinnassa.
Kentän lisääminen näkymään
Kentän luominen ei automaattisesti tee sitä näkyväksi lomakkeessa tai listassa. Studiolla se tehdään samaan aikaan kentän lisäyksen yhteydessä; teknisessä ratkaisussa muokkaat näkymän XML:ää tai luot periytetyn näkymän, joka sijoittaa kentän oikeaan kohtaan.
Parhaat käytännöt
Mukautetut kentät ovat helppoja luoda, mutta huonosti suunniteltu rakenne aiheuttaa myöhemmin korjaustarpeita. Seuraavat käytännöt auttavat pitämään järjestelmän siistinä.
Käytä valintakenttiä vapaatekstin sijaan aina kun mahdollista
Jos arvot ovat tiedossa etukäteen, valintakenttä estää kirjoitusvariaatiot ja pitää raportit ja suodattimet luotettavina verrattuna vapaaseen tekstiin.
Nimeä kentät selkeästi ja yhdenmukaisesti
Tekninen nimi (x_project_type) kertoo mitä kenttä sisältää — ei missä se on lomakkeessa. Epämääräiset nimet kuten x_field_1 ovat mahdottomia ylläpitää myöhemmin; käytä selkeitä etu- ja sukunimikäytäntöjä ja dokumentoi tarkoitus.
Älä ylikuormita natyiveja malleja
Jos tarjoukseen lisätään kymmeniä kenttiä, kannattaa harkita oman mallin luomista ja linkittää se Many2one-yhteydellä. Jos kentät muodostavat itseisarvon, ne kuuluvat erilliseen entiteettiin, eivät lomakkeen satunnaisiksi kentiksi.
Testaa aina staging‑ympäristössä ennen tuotantoon viemistä
Kenttien lisääminen tuotantoon suoraan on riski. Testikopio paljastaa virheelliset mallivalinnat tai näkymäkonfliktit ennen kuin käyttäjät kohtaavat virheilmoituksia.
Dokumentoi mukautetut kentät
Pidä kirjaa jokaisesta lisätystä kentästä: malli, tekninen nimi, käyttötarkoitus ja kuka pyysi. Ilman dokumentaatiota järjestelmään kertyy käyttämättömiä kenttiä, joita on hankala arvioida jälkikäteen.
Käytä oikeaa työkalua laskentalogikalle
Jos kentän arvo määräytyy muiden kenttien perusteella, tee siitä laskettava kenttä eikä vaadi käyttäjää täyttämään arvoa manuaalisesti. Se vähentää virheitä ja pitää datan yhdenmukaisena. Laskettavat kentät ovat osa Odoon Python-kenttien perustoiminnallisuutta.
Yleiset sudenkuopat
Vaikka tiimi olisi kokenut, seuraavat virheet toistuvat usein mukautuskohteissa.
One2manyn unohtaminen Many2onea luodessa
Usein lisätään Many2one ilman vastakkaista One2many-kenttää, jolloin navigointi ja näkymä suhteesta katoavat. Luo molemmat kentät yhtä aikaa, jotta liittyvät tietueet näkyvät kummassakin suunnassa.
Kentän poistaminen, jossa on dataa
Kentän poistaminen poistaa samalla kaikki sen sisältämät tiedot pysyvästi. Jos olemassaoleva data saattaa olla tarpeen myöhemmin, piilota tai arkistoi kenttä sen sijaan, että poistat sen välittömästi.
Kenttien luominen suoraan tuotannossa
Suorat muutokset tuotantokantaan ilman staging-testiä voivat rikkoa näkymiä ja aiheuttaa käyttäjävirheitä. Varmista aina ensin testauksen kautta, että muutos on turvallinen.
Nimikonfliktit järjestelmän kenttien kanssa
Jos luot kentän, jonka nimi myöhemmin kollidoi jonkin asennetun moduulin kanssa, järjestelmä hylkää sen tai aiheuttaa sekaannuksia. Käytä yrityskohtaista etuliitettä (x_acme_) minimoidaksesi konfliktit.
Kentän lisääminen näkymään ilman UX‑huomiota
Pelkkä mahdollisuus lisätä kenttä ei tarkoita, että se tulisi näkyä oletuksena. Liian täyteen pakatut lomakkeet hidastavat työntekoa — harkitse välilehtiä tai ehdollista näkyvyyttä kentille, jotka ovat merkityksellisiä vain tietyissä tilanteissa.
Studiokenttien ja teknisten kenttien sekoittaminen ilman linjaa
Kun projektiin syntyy sekalaisia Studio‑ ja koodimuutoksia ilman yhtenäistä linjaa, kentät voivat mennä päällekkäisiksi tai nimet ristiriitaisiksi. Päätä alusta alkaen strategia: Studio no-code‑kentille ja koodi monimutkaisille logiikoille, tai käytä koodia kaikessa, jotta ylläpito pysyy selkeänä.
Yhteenveto
Mukautetut kentät ovat yksi helpoimmista ja tehokkaimmista tavoista sovittaa Odoo yrityksesi todellisiin prosesseihin. Ne toimivat ilman lähdekoodin muokkausta, integroituvat luonnollisesti alustaan ja antavat käyttäjille täsmällisesti tarvitun tiedonkeruun.
Tärkeintä on suunnittelu: valitse oikea kenttätyyppi, nimeä selkeästi, noudata relaatiokäytäntöjä ja dokumentoi muutokset. Hyvin suunniteltu kenttäarkkitehtuuri tekee järjestelmästäsi helpommin ylläpidettävän ja skaalautuvan liiketoiminnan kasvaessa.
Olitpa sitten käyttämässä Odoo Studiota nopeisiin no-code‑ratkaisuihin tai kirjoittamassa Python‑moduuleja laajempaan räätälöintiin, periaate on sama: sovi kenttä datalle, pidä malli siistinä ja testaa aina ennen tuotantoon vientiä.
Dasololla autamme yrityksiä ottamaan Odoon käyttöön, räätälöimään ja optimoimaan sen vastaamaan arjen työnkulkua. Tarvitsetpa sitten muutamaa lisäkenttää tai kokonaisen moduulin, tiimimme tukee oikean ratkaisun löytämisessä.
Ota yhteyttä, niin käymme läpi nykyisen Odoo‑asetuksesi ja ehdotamme selkeimmän etenemistavan.