Siirry sisältöön

Odoon Datetime-kenttä: Täydellinen Opas

Kaikki, mitä sinun tarvitsee tietää Odoon tietomallin Datetime-kentästä, aikaleimojen tallentamisesta aikavyöhykkeiden käsittelyyn ja liiketoimintakäyttötapauksiin
6. maaliskuuta 2026 kirjoittanut
Odoon Datetime-kenttä: Täydellinen Opas
Dasolo
| Ei vielä kommentteja

Johdanto


Päivämäärät ja aikaleimat ovat sisäänrakennettu lähes jokaiseen liiketoimintaprosessiin. Milloin tämä tilaus tehtiin? Milloin toimitus on aikataulutettu? Milloin työntekijä kirjautui sisään? Odoossa Datetime-kenttä on standarditapa tallentaa ja säilyttää tämän tyyppistä tietoa.


Toisin kuin Päivämäärä-kenttä, joka tallentaa vain kalenteripäivämäärän, Datetime-kenttä tallentaa sekä päivämäärän että tarkan ajan. Tämä ero on tärkeämpi kuin miltä se saattaa vaikuttaa, erityisesti ympäristöissä, joissa käyttäjiä on useissa aikavyöhykkeissä tai kun tapahtumia seurataan tunnin ja minuutin tarkkuudella.


Tämä opas kattaa kaiken, mitä sinun tarvitsee tietää Datetime-kentästä Odoossa: mitä se tallentaa, kuinka se käyttäytyy tietomallissa, kuinka luoda ja konfiguroida se Odoo Studiolla tai Pythonilla, sekä käytännön esimerkkejä todellisista liiketoimintatyönkuluista.

Mikä on Datetime-kenttä Odoossa


Odoon ORM:ssä fields.Datetime tallentaa yhdistetyn päivämäärä- ja aikarajan arvon sekunnin tarkkuudella. Tietokannan tasolla se vastaa TIMESTAMP -saraketta PostgreSQL:ssä. Odoo tallentaa aina Datetime-arvot sisäisesti UTC-aikavyöhykkeessä ja muuntaa ne aktiivisen käyttäjän paikalliseen aikavyöhykkeeseen näyttäessään ne käyttöliittymässä.


Käyttäjän näkökulmasta Datetime-kenttä näkyy yhdistettynä päivämäärä- ja aikavalitsimena lomakkeissa. Se näyttää kalenterin ja aikasyötteen vierekkäin. Luettelo- ja raporttinäkymissä arvo muotoillaan aktiivisen käyttäjän kielen ja aikavyöhykkeen asetusten mukaan.


Tässä on, miltä Datetime-kenttä näyttää Python-mallin määrittelyssä:

from odoo import fields, models

class SaleOrder(models.Model):
    _inherit = 'sale.order'

    x_confirmed_on = fields.Datetime(
        string='Vahvistettu',
        default=fields.Datetime.now,
        readonly=True,
        copy=False,
    )

Parametri string asettaa käyttöliittymässä näkyvän tunnisteen. Parametri default täyttää kentän automaattisesti nykyisellä aikaleimalla, kun uusi tietue luodaan. Parametri readonly estää manuaalisen muokkaamisen, mikä on yleistä tarkastusajankohtien kohdalla.


Odoo Studiossa tätä kenttätyyppiä kutsutaan Päivämäärä & Aika -kentäksi. Kun se luodaan Studion kautta, se saa automaattisesti x_studio_-etuliitteen. Kun se luodaan koodin tai XML-RPC API:n kautta, määrittelet teknisen nimen itse.

Kuinka kenttä toimii


Kun määrittelet Datetime-kentän Odoossa, kehys luo vastaavan tietokantasarakkeen automaattisesti moduulin asennuksen tai päivityksen aikana. SQL-migraatioita ei tarvitse kirjoittaa käsin.


Yksi asia, joka yllättää monet kehittäjät ja liiketoimintakäyttäjät, on se, miten Odoo käsittelee aikavyöhykkeitä. Tietokanta tallentaa arvon aina UTC-muodossa. Kun käyttäjä Pariisissa asettaa kokouksen ajaksi klo 15:00, Odoo tallentaa tietokantaan klo 13:00 UTC. New Yorkissa samaa tietuetta lukevat käyttäjät näkevät käyttöliittymässään klo 9:00. Odoo ORM käsittelee tämän muunnoksen läpinäkyvästi jokaisen käyttäjän profiilissa määritetyn aikavyöhykkeen mukaan.


Keskeiset kenttäattribuutit

Tässä ovat tärkeimmät ominaisuudet Datetime-kentälle Odoo-kehyksessä:

  • default: Usein asetettu fields.Datetime.now:ksi, jotta se täytetään automaattisesti nykyisellä UTC-aikaleimalla, kun tietue luodaan.
  • required: Tekee kentästä pakollisen lomakkeissa ja mallitasolla.
  • readonly: Estää manuaalisen muokkaamisen käyttöliittymässä. Yleistä automaattisesti luoduissa aikaleimoissa.
  • compute: Linkittää Python-menetelmän, joka laskee kentän arvon dynaamisesti muista kentistä tai liiketoimintalogiikasta.
  • store: Kun yhdistetään compute:n kanssa, tallentaa lasketun arvon tietokantaan käytettäväksi hauissa ja raporteissa.
  • copy: Hallitsee, kopioidaanko arvo, kun kopioidaan tietue. Oletusarvo on True. Aseta False:ksi aikaleimoille, joita ei pitäisi siirtää kopioihin.
  • index: Luo tietokannan indeksin. Hyödyllinen kentillä, joita käytetään usein suodattimissa, kuten aikataulutetuissa päivämäärissä suurilla tauluilla.

Miten se näkyy näkymissä

Lomakenäkymissä Datetime-kenttä renderöidään yhdistettynä päivämäärä- ja aikavalitsimena. Käyttäjät napsauttavat avataksesi kalenterin ja asettaaksevat ajan suoraan samaan syöttöön. Luettelonäkymissä arvo näkyy muotoiltuna merkkijonona käyttäjän kieliasetusten mukaan. Hakunäkymissä Datetime-kentät tukevat päivämääräalueen suodattimia, kuten ennen, jälkeen ja tietyn ajanjakson välillä.


Voit myös yhdistää Datetime-kentän date_range -widgetin kanssa näyttämään aluevalinnan suoraan lomakkeessa, mikä on hyödyllistä aikarajojen ja aikarajoitettujen tehtävien aikatauluttamisessa.


Datetime vs Date: Oikean kentän valitseminen

Yksi yleinen kysymys Odoo-kehityksessä on, milloin käyttää fields.Datetime verrattuna fields.Date:hen. Sääntö on yksinkertainen: käytä fields.Date:a, kun päivän aika ei ole merkityksellinen, ja fields.Datetime:a, kun tarvitset tarkkuutta tunnin tai minuutin tasolla.

Käytä Date:a: laskujen eräpäivät, syntymäpäivät, tuotteiden viimeiset käyttöpäivät, sopimusten uusimispäivät.


Käytä Datetime:a: tilausvahvistusten aikaleimat, kokousten aloitusajat, työntekijöiden läsnäolotiedot, aikataulutetut varastotoiminnot.

Datetime-kentän käyttö tarpeettomasti lisää aikavyöhykkeen monimutkaisuutta ilman todellista hyötyä. Kun olet epävarma, kysy itseltäsi, onko päivän aika todella tärkeä liiketoimintaprosessissa, jota mallinnat.

Liiketoimintakäyttötapaukset


Datetime-kenttä esiintyy lähes kaikissa Odoon moduuleissa. Tässä on viisi käytännön esimerkkiä todellisista liiketoimintatyönkuluista.


CRM: Liidien aktiviteettiseuranta

CRM-moduulissa useat natiiviset Datetime-kentät seuraavat, milloin keskeiset tapahtumat tapahtuivat. date_open -kenttä tallentaa, milloin liidi asetettiin käynnissä olevaksi. date_deadline -kenttä aikatauluttaa seurantakäynnin. Myyntipäälliköt käyttävät näitä kenttiä mittaamaan vastausaikoja, tunnistamaan vanhentuneita mahdollisuuksia ja raportoimaan tiimin aktiviteetista. Mukautetut Datetime-kentät voivat laajentaa tätä edelleen, esimerkiksi kirjaamalla, milloin tarjous lähetettiin tai milloin tietty puhelu tapahtui.


Myynti: Tilausvahvistuksen aikaleimat

Kenttä date_order sale.order:ssa on Datetime-kenttä. Se tallentaa tarkan hetken, jolloin myynti vahvistettiin. Tämä on arvokasta päivittäisen tai tuntikohtaisen myyntitoiminnan raportoinnissa, tilausten käsittelyaikojen laskemisessa ja vahvistuksen jälkeen tehtyjen muutosten tarkastamisessa. Myyntitilausten suodattaminen tämän kentän mukaan on yksi yleisimmistä raportointitoimista missä tahansa Odoo-myyntiasetuksessa.


Varasto: Aikataulutetut siirtoajat

Kenttä scheduled_date stock.picking:ssa on Datetime-kenttä, jota varastotiimit käyttävät suunnitellessaan, milloin vastaanotto tai lähetys tulisi tapahtua. Odoossa automaattiset toiminnot voivat laukaista työnkulkuja sen mukaan, miten tämä päivämäärä vertautuu nykyiseen aikaan. Esimerkiksi automaattinen sähköposti voidaan lähettää, kun toimitus on ollut myöhässä tietyn tunnin ajan, mahdollistaen proaktiivisen viestinnän asiakkaiden kanssa ennen kuin he ottavat yhteyttä.


Valmistus: Tuotannon aloitus- ja lopetusajat

Valmistustilaukset käyttävät Datetime-kenttiä tallentaakseen, milloin tuotanto alkoi ja milloin se saatiin päätökseen. Nämä tiedot syötetään suoraan kapasiteettisuunnitteluun, tehokkuusraportointiin ja suorituskyvyn analysointiin. Yrityksille, jotka pyörittävät useita vuoroja, tarkan ajan tallentaminen on olennaista todellisen ja suunnitellun tuotantotuoton ymmärtämiseksi sekä pullonkaulojen tunnistamiseksi päivän tai operaattorin mukaan.


HR: Läsnäolo- ja lomahallinta

HR Läsnäolo -moduuli käyttää Datetime-kenttiä työntekijöiden sisään- ja uloskirjautumisaikojen tallentamiseen. Lomahakemukset perustuvat Datetime-kenttiin määrittämään poissaolon tarkka alku ja loppu. Palkkalaskelmat ja ylityösäännöt riippuvat usein näiden arvojen tarkkuudesta minuutin tarkkuudella. Mikä tahansa poikkeama tai puuttuva aikaleima läsnäolotiedoissa voi vaikuttaa suoraan korvauslaskelmiin, mikä tekee tarkkuudesta todellisen liiketoimintavaatimuksen eikä vain teknisen mieltymyksen.

Datetime-kentän luominen tai mukauttaminen


Datetime-kentän lisäämiseen Odoo-malliin on kolme pääasiallista tapaa, riippuen teknisestä asetuksestasi ja siitä, haluatko käyttää koodittomia tai kehittäjämenetelmiä.


Odoo Studio (ilman koodia)

Odoo Studio on sisäänrakennettu mukautustyökalu, joka antaa sinun lisätä kenttiä ilman koodin kirjoittamista. Lisätäksesi Datetime-kentän Studion kautta:

  1. Avaa Odoo Studio päävalikosta.
  2. Siirry lomakkeeseen, johon haluat lisätä kentän.
  3. Vedä Päivämäärä & Aika -kenttä sivupalkista lomakkeelle.
  4. Aseta etiketti, pakollinen tila ja valinnaisesti oletusarvo kenttäominaisuuksien paneelissa.
  5. Tallenna ja sulje Studio.

Studio luo automaattisesti kentän x_studio_-etuliitteellä ja lisää sen lomake-näkymään. Sinun ei tarvitse tehdä tietokannan migraatiota. Odoo hoitaa kaiken tämän automaattisesti, kun tallennat. Tämä on suositeltu lähestymistapa liiketoimintakäyttäjille, jotka tarvitsevat aikaleiman olemassa olevaan lomakkeeseen ilman kehittäjän osallistumista.


Pythonin käyttäminen mukautetussa moduulissa

Kehittäjille, jotka rakentavat Odoo-moduuleja, Datetime-kentät määritellään Python-mallifileissä. Tämä on suositeltu lähestymistapa kaikille mukautuksille, jotka tarvitsevat versionhallintaa ja käyttöönottoa useissa ympäristöissä:


from odoo import fields, models

class ResPartner(models.Model):
    _inherit = 'res.partner'

    x_last_contact_date = fields.Datetime(
        string='Viimeinen yhteyspäivämäärä',
        default=fields.Datetime.now,
        copy=False,
    )

Kun kenttä on määritelty mallissa, lisää se asiaankuuluvaan näkymän XML-tiedostoon, jotta se näkyy käyttöliittymässä. Odoo luo TIMESTAMP-sarakkeen automaattisesti, kun asennat tai päivität moduulin. Manuaalista SQL:ta ei tarvita.


XML-RPC API:n käyttäminen

Jos hallitset Odoo-mukautuksia ohjelmallisesti, esimerkiksi osana käyttöönotto-putkea tai etäkonfiguraatioskriptiä, voit luoda Datetime-kenttiä XML-RPC API:n kautta:


field_id = models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'ir.model.fields', 'create',
    [{
        'name': 'x_last_contact_date',
        'field_description': 'Viimeinen yhteyspäivämäärä',
        'model_id': model_id,
        'ttype': 'datetime',
        'state': 'manual',
    }]
)

Arvo ttype: datetime kertoo Odoole, että Datetime-kenttä luodaan. Arvo state: manual osoittaa, että tämä kenttä on luotu moduulin asennuksen ulkopuolella, mikä on oikea asetus kentille, jotka on luotu Studion tai API:n kautta. Näin Dasolo hallitsee etäkenttien luomista asiakkaille osana automatisoituja konfiguraatioskriptejä.

Parhaat käytännöt


1. Käytä fields.Datetime.now -funktioviitteenä, ei kutsuna

Oletusarvoa asetettaessa kirjoita default=fields.Datetime.now ilman sulkuja. Jos lisäät sulut, Python arvioi funktion kerran, kun luokka ladataan, ja jokainen Odoo-prosessin elinaikana luotu tietue jakaa saman jäädytetyn aikaleiman. Ilman sulkuja Odoo kutsuu funktiota tietueen luontiaikana, antaen jokaiselle tietueelle oman tarkan aikaleiman.


2. Aseta copy=False tapahtuma-aikaleimoille

Jos kenttä tallentaa, milloin jotain tapahtui, kuten vahvistuspäivämäärä tai valmistumisaikaleima, aseta copy=False. Kun käyttäjät monistavat tietueen, näiden aikaleimojen ei pitäisi siirtyä alkuperäisestä. Monistettu myyntitilaus ei saisi näyttää sen vahvistuspäivämäärää, josta se on kopioitu. Ilman tätä asetusta historiallisista tiedoista tulee hiljaisesti epäluotettavia.


3. Siirrä aina UTC API:n kautta kirjoittaessasi

Kun luot tai päivität tietueita XML-RPC API:n kautta, siirrä aina Datetime-arvot UTC:ssä käyttäen YYYY-MM-DD HH:MM:SS merkkijonomuotoa. API ei suorita aikavyöhykkeen muunnosta kirjoittaessa. Mikä tahansa merkkijono, jonka siirrät, tallennetaan suoraan tietokantaan ikään kuin se olisi UTC, joten paikallisen ajan siirtäminen luo hiljaisesti siirtymävirheen, jota on vaikea diagnosoida myöhemmin.


4. Käytä readonly-automaattisesti luoduissa aikaleimoissa

Kenttien, jotka tallentavat, milloin jotain tapahtui, tulisi yleensä olla asetettu readonly-tilaan käyttöliittymässä. Tämä estää käyttäjiä säätämästä manuaalisesti aikaleimoja, jotka pitäisi heijastaa todellisia järjestelmätilanteita. Jos on olemassa pätevä syy sallia muokkaaminen, hallitse pääsyä Odoon kenttäkohtaisilla turvallisuusasetuksilla sen sijaan, että jättäisit kentän avoimesti muokattavaksi.


5. Valitse Date Datetimein sijaan, kun aikaa ei tarvita

Jos kenttä tarvitsee vain seurata kalenteripäivämäärää, kuten toimitusrajaa, uusimispäivämäärää tai laskun eräpäivää, käytä fields.Date. Datetime lisää aikavyöhykkeen käsittelyyn liittyvää monimutkaisuutta, joka ei palvele mitään tarkoitusta, kun aikakomponentti on aina merkityksetön. Kenttätyypin pitäminen niin yksinkertaisena kuin käyttötapa vaatii, tekee tietomallista helpommin ymmärrettävän ja ylläpidettävän.

Yleiset sudenkuopat


Aikavyöhykkeen hämmennys raakoja arvoja lukiessa

Tämä on yleisin hämmennyksen lähde Datetime-kenttien kanssa. Kun luet arvon suoraan tietokannasta tai API:n kautta, näet UTC-arvon, ei käyttäjän paikallista aikaa. Monet kehittäjät rakentavat raportteja tai integraatioita raakojen API-tulosten perusteella ja päätyvät aikaleimoihin, jotka ovat yhden tai useamman tunnin väärässä. Sovella aina aikavyöhykkeen muunnosta asiakaspäässä, kun esität API-tuloksia loppukäyttäjille, ja tee tästä selkeä vaihe kaikissa rakentamissasi integraatioissa.


Paikallisten aikojen kirjoittaminen API:n kautta

Jos lähetät Datetime-arvon, joka on jo paikallisessa aikavyöhykkeessä Odoo API:lle, tietokanta tallentaa sen ikään kuin se olisi UTC. Kokous, joka on asetettu kello 15:00 Pariisin aikaa, kirjoitettuna 2026-01-01 15:00:00 API:lle, näkyy käyttäjälle Pariisissa kello 16:00 tai 17:00, riippuen kesä- tai talviajasta. Tämä on yksi niistä virheistä, jotka ilmenevät vain tuotannossa, kun todelliset käyttäjät todellisissa aikavyöhykkeissä alkavat käyttää järjestelmää.


default=fields.Datetime.now() käyttö sulkujen kanssa

Sulkujen lisääminen oletusarvoon on hienovarainen mutta vakava virhe. fields.Datetime.now() arvioidaan kerran, kun Python-luokka ladataan. Jokainen Odoo-työntekijäprosessin eliniän aikana luotu tietue jakaa saman jäädytetyn aikaleiman. Tietueet näyttävät aluksi oikeilta, mutta rikkovat kaiken analyysin, joka perustuu luontiaikoihin. Tämä on hiljainen virhe, joka voi kestää pitkään havaita, koska aikaleimat näyttävät olevan olemassa, ne ovat vain kaikki identtisiä.


copy=False unohtaminen tapahtuma-aikaleimoissa

Ilman copy=False -asetusta kopioitu tietue kantaa kaikki Datetime-arvot alkuperäisestä. Tilauksen vahvistuspäivämäärä, liidin luontiaika tai tuotannon aloitusaikaleima lähdetietueesta näkyvät muuttumattomina uudessa. Tämä saastuttaa hiljaa historiallisia raportteja ja tekee tarkastuskäytävistä epäluotettavia. Se on pieni konfigurointiyksityiskohta, jolla on suhteettoman suuri vaikutus tietojen laatuun.


Datetime-käyttö, kun Date riittää

Datetime-valitseminen kentälle, kuten laskun eräpäivälle tai tuotteen vanhenemispäivälle, lisää tarpeetonta monimutkaisuutta. Käyttäjät näkevät aikakomponentin, jota he eivät tarvitse, aikavyöhykelaskennat suoritetaan jokaisessa näytössä ilman mitään hyötyä, ja käyttöliittymästä tulee hieman hankalampi ilman syytä. Oikea kenttätyyppi on yksinkertaisin, joka mallintaa liiketoimintavaatimuksen oikein.

Yhteenveto


Datetime-kenttä on yksi hyödyllisimmistä kenttätyypeistä Odoossa, kun tarkkuus on tärkeää. Seuraamalla, milloin liidi avattiin, tallentamalla tuotannon aloitusaikoja ja työntekijöiden läsnäoloa, se esiintyy lähes jokaisessa järjestelmän moduulissa.


Keskeinen asia, joka on hyvä sisäistää, on UTC-tallennusmalli. Kaikki tietokantaan tallennettu on UTC:ssä. Käyttöliittymä käsittelee aikavyöhykkeen näyttämisen käyttäjille automaattisesti, mutta kaikki ulkoiset lukemiset tai kirjoitukset API:n kautta on otettava huomioon tämä nimenomaisesti. Suurin osa aikavyöhykkeeseen liittyvistä virheistä Odoo-integraatioissa johtuu tästä yhdestä väärinkäsityksestä.


Sen lisäksi oikean oletussyntaksin käyttäminen, copy=False asettaminen tarvittaessa ja päivämäärän valitseminen aikaleiman sijaan, kun aika ei ole oleellista, pitää tietomallisi siistinä ja raporttisi luotettavina.

Dasolossa autamme yrityksiä toteuttamaan, mukauttamaan ja optimoimaan Odoota kaikilla osastoilla. Olitpa sitten tarvitsemasi apua vankan tietomallin suunnittelussa, mukautettujen kenttien lisäämisessä työnkulkuihisi tai koko Odoo-moduulin rakentamisessa alusta alkaen, tiimimme on valmis auttamaan. Ota meihin yhteyttä ja keskustellaan Odoo-projektistasi.

Odoon Datetime-kenttä: Täydellinen Opas
Dasolo 6. maaliskuuta 2026
Jaa tämä kirjoitus
Kirjaudu sisään jättääksesi kommentin