Jos olet joskus miettinyt, kuka ja milloin muokkasi tietoa Odoossa, kenttien seuranta antaa tähän selkeän vastauksen.
Odoo tallentaa valittujen kenttien muutokset suoraan tietueen keskusteluketjuun (chatteriin). Näin tiimit näkevät reaaliaikaisesti, miten liiketoiminnan tiedot ovat muuttuneet, ilman erillistä auditointijärjestelmää.
Olitpa tekemässä muutoksia Odoo Studiolla tai kehittämässä omaa moduulia Pythonilla, kenttien seurannan ymmärtäminen on keskeistä Odoon tietomallin kanssa työskentelyssä. Tämä opas kokoaa käytännön tiedot yhdestä paikasta.
Mikä on Odoon seurantaominaisuus kentillä
Seuranta ei ole erillinen kenttätyyppi vaan kenttäominaisuus: voit laittaa seurannan päälle olemassa oleville kenttätyypeille, kuten Char-, Many2one-, Selection-, Integer- tai Date-kentille. Kun kentälle on aktivoitu seuranta, Odoo kirjaa arvon muutokset chatteriin näyttäen vanhan ja uuden arvon, muutoksen ajan ja käyttäjän.
Käyttäjälle tämä näkyy keskustelussa automaattisena lokimerkintänä. Esimerkiksi CRM-innostuksessa saatat nähdä merkittynä: "Vaihe muuttui: Uusi → Kvalifioitu", heti kun myyjä siirtää liidin eteenpäin.
Seurantaominaisuus on saatavilla useimmissa Odoon kenttätyypeissä ja sen voi kytkeä päälle joko Odoo Studiolla tai suoraan Python-koodissa osana räätälöityä kehitystyötä.
Mitä tietoja tallennetaan
Jokainen seurattu muutos tallentuu mail.message-tietueena, joka linkittyy muokattuun dokumenttiin. Viesti sisältää seuraavat tiedot:
- Muutetun kentän otsikon tai nimen
- Arvon ennen muutosta
- Arvon muutoksen jälkeen
- Muutosajankohdan
- Sen käyttäjän, joka muutoksen teki
Tämä historiatieto on katsottavissa kaikille, joilla on lukuoikeus tietueeseen. Se ei vaadi muuta konfiguraatiota kuin itse seurannan aktivoimisen kentälle.
Miten seuranta toimii käytännössä
Seurannan toimimiseksi malli on oltava perinyt mail.thread-mixinin. Tämä mixin tarjoaa chatterin ja viestien kirjaustoiminnon. Monet Odoon vakiorakenteet, kuten sale.order, crm.lead, account.move ja stock.picking, perivät jo tämän mixinin.
Kun käyttäjä tallentaa tietueen, jossa seurattuja kenttiä on muutettu, Odoo vertaa vanhoja ja uusia arvoja ja kirjoittaa automaattisesti lokiviestin chatteriin — käyttäjältä ei vaadita mitään ylimääräistä.
Tekninen toimintalogiikka Odoon ORM:ssä
Teknisesti Odoon ORM sieppaa write()-operaatiot mallitasolla. Kun write() muuttaa seurattua kenttää, framework tallentaa aiemman arvon, suorittaa muutoksen ja luo kuvaavan mail.message-merkinnän.
Pythonissa seuranta kytketään lisäämällä kenttädefinitioon tracking=True osana fields-määrittelyä.
Esimerkkikoodissa se voi näyttää tältä: state = fields.Selection(
[('draft', 'Draft'), ('confirmed', 'Confirmed')],
tracking=True
)
Voit myös käyttää prioriteettinumeroa (1–10) vaikuttamaan siihen, miten useamman kentän muutokset ryhmitellään ja järjestetään lokiviestissä; pienempi numero näkyy ensin.
Esimerkki priorisoinnista: partner_id = fields.Many2one('res.partner', tracking=1)
priority = fields.Selection(tracking=10)
Vuorovaikutus muiden tietueiden kanssa
Seuratut muutokset tallentuvat suoraan siihen tietueeseen, jossa kenttä sijaitsee — niitä ei levitetä automaattisesti liittyville malleille. Jos tarvitset seurantaa myös muissa malleissa, ota seuranta päälle erikseen kussakin mallissa.
Tämä on suunniteltua: auditointiloki pidetään lähellä sitä objektia, jota muutos koskee, jolloin historian läpikäynti on helppoa ilman monimutkaista navigointia eri liittyvien tietueiden välillä.
Liiketoiminnan käyttötapaukset
Seuraavat viisi käytännön esimerkkiä näyttävät, missä kenttien seurannasta on arkea parantavaa hyötyä.
1. CRM ja myyntiputken seuranta
Myyntipäälliköt haluavat selkeästi nähdä, milloin liidi on siirtynyt vaiheesta toiseen ja kuka siirron teki. Seuraamalla stage_id-kenttää CRM:ssä saat täydellisen aikajanan vaihemuutoksista.
Näin tunnistat, missä kaupat jumiutuvat, teet pipeline-arviointeja datasidonnaisesti ja annat konkreettista valmennusta myyjille faktojen pohjalta.
2. Ostot ja laskujen hyväksyntäprosessit
Kirjanpidossa ja hankinnoissa vaatimuksena on usein tietää, kuka hyväksyi tilauksen tai laskun ja milloin. Seuraamalla state-kenttää ostoissa ja myyjälaskuissa saat hyväksyntähistorian suoraan chatteriin ilman erillistä auditointijärjestelmää.
Tämä on erityisen tärkeää yrityksissä, joilla on tiukat taloushallinnon vaatimukset tai sisäinen tarkastus.
3. Varaston- ja logistiikan hallinta
Kun määrät tai säilytyspaikat muuttuvat odottamattomasti, seuranta varsiirtomerkinnöissä tai tuotetiedoissa auttaa varastopäällikköä nopeasti jäljittämään muutoksen lähteen.
Sen sijaan, että ryhdyttäisiin selvittämään lokitiedostoja tai kysymään ihmisiltä, vastaus löytyy usein suoraan kyseisen tietueen keskustelusta.
4. Asiakastietojen laadun valvonta
Jos tiimisi päivittää asiakastietoja usein, seuraa keskeisiä kenttiä kuten email, phone tai pricelist_id kumppanimallissa. Näin kontaktitiedot pysyvät dokumentoituna CRM:ssä ja asiakaspalvelu löytää muutokset helposti.
5. HR ja työntekijätiedot
Seuraamalla esimerkiksi tehtävänimikettä, osastoa tai palkkaluokkaa työntekijätiedoissa varmistat muutosten läpinäkyvyyden. Tämä helpottaa HR:n vaatimustenmukaisuuden todentamista ja sisäisiä tarkastuksia.
Kentän luominen tai muokkaaminen
Kentän seurannan aktivointiin on kaksi yleistä tapaa: tehdä se nopeasti Odoo Studiolla ilman koodia tai lisätä attribuutti Python-koodissa osaksi moduulia.
Odoo Studion käyttö
Odoo Studiolla voit kätevästi ottaa seurannan päälle olemassa oleville kentille ilman ohjelmointia. Avaa Studio halutulla mallilla, napsauta kenttää ja laita päälle Track Changes -kytkin kenttäasetuksissa.
Kun seuranta on aktivoitu, kaikki tulevat muutokset näkyvät chatterissa. Tämä sopii admin-käyttäjille ja liiketoiminnan omistajille, jotka haluavat tehdä muutoksia ilman kehittäjän apua.
Myös uusien kenttien luonnin yhteydessä Studio tarjoaa saman mahdollisuuden: voit valita seurannan jo kenttää luodessa.
Pythonin käyttö räätälöidyssä moduulissa
Kehittäjät lisäävät tracking-attribuutin suoraan kenttämäärittelyyn malliluokassa. Tämä on tavallinen tapa osana Odoo-kehitystä.
Mallin tulee lisäksi periä mail.thread, jotta seurannalla on vaikutusta. Alla minimalistinen esimerkki:
from odoo import models, fields
class ProjectTask(models.Model):
_name = 'project.task'
_inherit = ['project.task', 'mail.thread']
x_client_priority = fields.Selection(
[('low', 'Low'), ('medium', 'Medium'), ('high', 'High')],
string='Client Priority',
tracking=True
)
Tämä malli on tyypillinen tapa laajentaa olemassa olevaa mallia kehitysprojektissa. Kenttä toimii normaalina Odoo-tietokenttänä, mutta sen jokainen muutos tallentuu automaattisesti.
Tärkeä huomio uusista malleista
Kun luot täysin uusia malleja, muista sisällyttää _inherit = ['mail.thread', 'mail.activity.mixin'] mallin määrittelyyn. Ilman tätä mixiniä tracking-ominaisuus ei ota vaikutusta ja muutoksia ei kirjata chatteriin.
Tämä unohtuu usein aloittelevilta kehittäjiltä — mixin ei ole valinnainen, jos haluat seurannan toimivan.
Parhaat käytännöt
Seurannan helppous tekee siitä käyttökelpoisen, mutta samalla myös helpon käyttää väärin. Seuraavat suositukset auttavat hyödyntämään ominaisuutta oikein.
Seuraa vain olennaisia kenttiä
Älä aktivoi seurantaa kaikissa kentissä. Liiallinen seuranta täyttää chatterin turhalla tiedolla ja vaikeuttaa tärkeiden muutosten löytämistä. Keskity tila- ja vastuukenttiin, avaintietoihin sekä rahamääräisiin arvoihin.
Käytä prioriteetteja selkeyttämään lokimerkintöjä
Kun samalta mallilta muutetaan useita seurattuja kenttiä samassa tallennuksessa, prioriteetit 1–10 auttavat ryhmittelyssä ja parantavat luettavuutta chatterissa.
Yhdistä käyttöoikeuksiin
Seuranta toimii parhaiten, kun samaan aikaan on mietitty roolit ja pääsyoikeudet. Auditointiloki on arvoton, jos kuka tahansa voi vapaasti muokata tietueita ja siten peittää jälkiään. Suojaa mallit ennen kuin luotat chatteriin auditina.
Dokumentoi seurattavat kentät
Pidä kirjaa siitä, mitä kenttiä seurataan — erityisesti monikehittäjäympäristöissä. Tämä vähentää epäselvyyksiä koodikatselmuksissa ja estää päällekkäisiä muutoksia moduulipäivitysten yhteydessä.
Testaa ennen tuotantoon vientiä
Tarkista seurannan toiminta testiympäristössä ennen tuotantoon siirtoa. Jotkin kenttätyypit, etenkin laskettavat tai related-kentät, voivat käyttäytyä eri tavalla kuin tavalliset tallennetut kentät.
Yleisimmät sudenkuopat
Seuraavat sudenkuopat toistuvat usein, kun käyttäjät ottavat kenttien seurannan käyttöön Odoossa.
Unohtaminen periä mail.thread
Yleisin virhe on jättää mail.thread pois mallin perimisestä. Tällöin tracking jää huomaamatta: ei virheilmoitusta, ei lokimerkintöjä. Tarkista aina perintäketju, jos seuranta ei toimi.
Seuranta laskettaville, mutta ei tallennetuille kentille
Laskettavat kentät voidaan seurata vain, jos ne on määritelty tallennettaviksi (store=True). Tallentamattomalla laskettavalla kentällä ei ole kantaa tietokannassa, joten muutoksen vertaamista ei voida tehdä ja seuranta ei kirjaa mitään.
Liian monen kentän seuraaminen
Seurannan maksimointi voi tuntua hyvältä ideaalia ajatellen, mutta käytännössä se tekee chatterista epäselvän. Ole valikoiva ja seuraa kenttiä, joilla on todellista toimintaarvoa.
Odotus seurannasta suoran SQL-päivityksen yhteydessä
Seuranta aktivoituu Odoon ORM:n kautta write()-kutsujen myötä. Suorat SQL-päivitykset, ORM:n ohittavat massatuonnit tai jotkin matalan tason API-kutsut eivät laukaise seurantalokeja. Varmista, että integraatiot käyttävät ORM-kerrosta, jos haluat kirjauksen syntyvän.
Konfliktit Studion ja Pythonin välillä
Jos kenttä on luotu Studiolla ja myös muokattu Python-koodissa, ristiriitaiset määrittelyt voivat aiheuttaa yllätyksiä päivitysten yhteydessä. Huolehdi, että Studio- ja koodimuutokset pysyvät synkronissa.
Usein kysytyt kysymykset
Voinko seurata mitä tahansa kenttää Odoossa?
Seuranta toimii vain malleissa, jotka perivät mail.thread-mixinin. Useimmat vakio-Odoo-mallit sisältävät tämän, mutta täysin uudet räätälöidyt mallit täytyy määritellä siihen nimenomaisesti.
Vaikuttaako seuranta suorituskykyyn?
Yleensä vaikutus on vähäinen: jokainen seurattu muutos luo yhden mail.message-tietueen, mikä lisää pienen overheadin write()-operaatioon. Korkeassa transaktiovolyymissä kannattaa harkita, kuinka monta kenttää todella tarvitsee seurata.
Voinko poistaa seurannan yllä olevan historian menettämättä?
Kyllä. Seurannan poistaminen estää uusien muutosten kirjaamisen, mutta olemassa oleva chatter-historia säilyy eikä katoa.
Toimiiko seuranta Many2many-kentissä?
Kyllä, Many2many-seuranta on tuettu. Chatter näyttää, mitkä tietueet lisättiin tai poistettiin suhteesta; esitystapa eroaa yksinkertaisempien arvojen ennen/jälkeen-näytöstä.
Voinko käyttää seurantaa ilman Odoo Studiota?
Ehdottomasti. tracking-parametri on tavallinen Python-attribuutti Odoon kentissä, ja sen voi ottaa käyttöön missä tahansa räätälöidyssä moduulissa. Studio tarjoaa vain visuaalisen tavan tehdä sama ilman koodia.
Yhteenveto
Seuranta on pieni mutta arvokas lisä Odooon: oikein käytettynä se tuo luotettavan auditointiketjun, vähentää kiistoja siitä, kuka muokkasi mitä, ja auttaa hallitsemaan tiedon laatua organisaatiossa.
Olipa valintasi Studio tai räätälöity Python-moduuli, lopputulos on sama: näkyvyys siihen, miten liiketoimintatiedot muuttuvat ajan myötä.
Tärkeintä on tietää, mihin seurannan laittaa. Keskity kenttiin, jotka ohjaavat päätöksiä, hyväksyntöjä ja vastuurakennetta — näin saat eniten hyötyä pienellä vaivalla.
Me Dasololla autamme yrityksiä ottamaan Odoon ominaisuudet käyttöön, mukauttamaan tietomalleja ja optimoimaan työnkulkuja. Tarjoamme tukea kenttien seurannan suunnitteluun ja räätälöityjen moduulien rakentamiseen tarpeenne mukaan.
Ota yhteyttä, niin käydään läpi Odoo-projektinne tarpeet. Ota yhteyttä ja räätälöidään yhdessä paras ratkaisu projektillenne.