Johdanto
Jos olet koskaan avannut myyntitilausta, projektitehtävää tai tuotantotilausta Odoossa, olet jo käyttänyt päivämääräkenttää. Määräajat, toimituspäivät, laskujen eräpäivät, sopimusten aloituspäivät - suurin osa ajankohtaisista tiedoista Odoossa tallennetaan tämän kenttätyypin avulla.
Liiketoimintakäyttäjille päivämääräkentät ovat intuitiivisia: napsautat, kalenteri ilmestyy, valitset päivämäärän. Mutta taustalla tapahtuu enemmän. Ymmärtäminen siitä, kuinka päivämääräkenttä toimii Odoo-tietomallissa, kuinka se eroaa DateTime-kentistä ja kuinka sitä luodaan tai mukautetaan, auttaa sinua rakentamaan tarkempia työnkulkuja ja välttämään aikavyöhykkeen yllätyksiä, jotka hankaloittavat monia Odoo-toteutuksia.
Tämä opas kattaa kaiken, mitä sinun tarvitsee tietää Odoon päivämääräkentästä, siitä, mitä se tallentaa ja kuinka käyttää sitä tehokkaasti liiketoimintaprosesseissasi.
Mikä on päivämääräkenttä Odoossa
Odoo ORM:ssa fields.Date -tyyppi on suunniteltu tallentamaan kalenteripäiviä ilman aikakomponenttia. Päivämäärä kuten "2026-03-06" tallennetaan täsmälleen sellaisena kuin se on, ilman tunteja, minuutteja tai sekunteja.
PostgreSQL:ssä, tietokannassa, jossa Odoo toimii, päivämääräkenttä vastaa DATE -saraketyyppiä. Tämä poikkeaa DateTime-kentästä, joka vastaa TIMESTAMP ja sisältää täydellisen aikaleiman sekunnin tarkkuudella.
Käyttöliittymässä päivämääräkenttä näkyy tekstikenttänä, jossa on kalenterin valitsin. Käyttäjät voivat joko kirjoittaa päivämäärän suoraan tai napsauttaa kalenterikuvaketta valitakseen sen. Listanäkymissä se näkyy muotoiltuna tekstinä, joka on kohdistettu käyttäjän paikalliseen asetukseen.
Tässä on esimerkki päivämääräkentän määritelmästä mukautetussa Python-moduulissa:
from odoo import fields, models
class ProjectTask(models.Model):
_inherit = 'project.task'
x_deadline_confirmed = fields.Date(
string='Vahvistettu määräaika',
help='Asiakkaan kanssa sovittu virallisesti vahvistettu määräaika.',
)
Odoo Studiossa tämä kenttä on yksinkertaisesti nimetty Päivämäärä. Kun se luodaan Studion kautta, se saa automaattisesti x_studio_ -etuliitteen. Kun se luodaan Python-koodin tai XML-RPC API:n kautta, voit valita teknisen nimen itse.
Kuinka kenttä toimii
Päivämäärä vs. DateTime: mitä oikeasti muuttuu
Tärkein asia, joka on ymmärrettävä päivämääräkentästä, on se, mitä se ei sisällä: aikaa. Ei ole tunteja, aikavyöhykkeen muunnoksia, ei mitään muuta kuin kalenteripäivämäärä itsessään.
DateTime-kenttä sen sijaan tallentaa täydellisen aikaleiman ja se tallennetaan UTC-aikavyöhykkeessä tietokantaan. Odoo muuntaa sen sitten käyttäjän paikalliseen aikavyöhykkeeseen näytettäessä. Tämä on monien hämmentävien "päivämääräni siirtyi yhdellä päivällä" -virheiden lähde, joita tiimit kohtaavat. Nämä ovat lähes aina DateTime-ongelmia, eivät päivämääräkenttäongelmia.
Kun käytät päivämääräkenttää, tallennat tarkalleen sen, mitä käyttäjät näkevät. Arvo 2026-03-15 on 2026-03-15 jokaiselle käyttäjälle, riippumatta siitä, missä päin maailmaa he sijaitsevat.
Avainkenttäattribuutit
Tässä ovat tärkeimmät ominaisuudet, joita voit määrittää Date-kentälle Odoo-kehyksessä:
- required: Tekee kentästä pakollisen sekä käyttöliittymä- että malli-tasolla.
- default: Asettaa automaattisen oletusarvon. Esimerkiksi
fields.Date.todayasettaa oletusarvoksi tämän päivän päivämäärän uusille rekistereille. - index: Luo tietokannan indeksin nopeampaa suodattamista ja hakua varten kyseisellä kentällä.
- compute: Liittää Python-menetelmän, joka laskee arvon dynaamisesti.
- store: Kun se yhdistetään
compute-ominaisuuteen, säilyttää lasketun arvon tietokannassa. - readonly: Estää käyttäjiä muokkaamasta kenttää suoraan käyttöliittymässä.
- copy: Hallitsee, siirtyykö arvo, kun rekisteriä kopioidaan. Oletusarvo on
True.
Miten se näkyy näkymissä
Lomakenäkymissä Date-kenttä renderöidään tekstikenttänä, jossa on kalenteriponnahdus. Luettelonäkymissä se näkyy muotoiltuna tekstinä. Hakunäkymissä se tukee päivämääräalueen suodattimia suoraan: "tällä viikolla", "tässä kuussa", "tässä neljänneksessä", sekä tarkkoja vertailuoperaattoreita, kuten ennen, jälkeen ja tietyllä päivämäärällä.
Näyttömuoto seuraa käyttäjän kieliasetuksia Odoossa. Amerikkalainen käyttäjä näkee MM/DD/YYYY, kun taas eurooppalainen käyttäjä näkee DD/MM/YYYY. Taustalla tallennettu arvo on aina ISO-muodossa (YYYY-MM-DD), riippumatta siitä, miten se näkyy näytöllä.
Vuorovaikutus Odoo ORM:n kanssa
Kun luetaan Date-kenttää koodissa, Odoo ORM palauttaa Pythonin datetime.date -objektin tai False, jos kenttä on tyhj . ORM:n kautta kirjoitettaessa voit siirt joko datetime.date -objektin tai merkkijonon muodossa "YYYY-MM-DD". XML-RPC-API:n kautta päivämäärät siirretään ja vastaanotetaan aina merkkijonoina.
Odoo-tietomallissa Date-kenttien käsittelyssä ei ole monimutkaisia muunnoksia. Kehys hoitaa muotoilun ja tallennuksen automaattisesti, mikä on osa sitä, miksi tämä kenttätyyppi on niin käytännöllinen jokapäiväisessä Odoo-kehityksessä.
Liiketoimintakäyttötapaukset
Date-kenttä esiintyy lähes kaikilla Odoo-implementoinnin osa-alueilla. Tässä on viisi käytännön esimerkkiä todellisista liiketoimintatyönkuluista.
CRM: Sopimusten aloitus- ja päättymispäivät
Odoo CRM:ää käyttävissä myyntitiimeissä sopimuksilla on usein määritellyt aloitus- ja päättymispäivät. Date-kenttä liidissä tai mukautetussa sopimusmallissa helpottaa kauppojen aktivointiaikojen ja päättymisaikojen seuraamista.
Yhdistettynä automatisoituihin toimiin voit laukaista sähköposti-ilmoituksia tai tilamuutoksia, kun sopimus lähestyy päättymispäiväänsä, ilman tiimin manuaalista seurantaa. Tällaisen automaation asettaminen on suoraviivaista ja se säästää paljon unohtuneita uusintoja ajan myötä.
Myynti: Pyydetyt toimituspäivät
Asiakkaat pyytävät usein tiettyä toimituspäivää tilauksia tehdessään. Monet yritykset lisäävät myyntitilauksiin "Asiakkaan pyytämä päivämäärä" -Date-kentän antaakseen operatiiviselle tiimille selkeän tavoitepäivän, jota suunnitella.
Date-kentän käyttäminen DateTime:n sijaan pitää tiedot yksinkertaisina ja välttää aikavyöhykkeiden sekaannusta varaston koordinoinnissa. Varastotiimi näkee saman päivämäärän, jonka myyntitiimi syötti, ilman muunnosongelmien riskiä.
Varasto: Erien vanhenemispäivät
Elintarvike-, lääke- ja kemianteollisuudessa tuotteen erillä on oltava vanhenemispäivät seurannassa varastotasolla. Odoon erähallinta käyttää Date-kenttiä vanhenemis- ja parasta ennen -päivien tallentamiseen stock.lot.
Nämä ohjaavat FEFO (First Expired First Out) -keräysstrategioita ja automatisoituja hälytyksiä, kun varasto lähestyy vanhenemispäivää, suojaten sekä sääntelyvaatimuksia että tuotteen laatua ilman manuaalisia tarkistuksia.
Kirjanpito: Laskujen eräpäivät
Laskujen eräpäivät Odoossa ovat päivämääräkenttiä. Ne määrittävät, milloin automaattiset maksumuistutukset lähetetään, miten erääntyneet laskut tunnistetaan ja miten vanhentuneet velat ja saatavat lasketaan.
Näiden päivämäärien oikeellisuus on yksi tärkeimmistä operatiivisista käyttötarkoituksista koko Odoo-tietomallissa. Väärä eräpäivä rikkoo hiljaa kassavirran seurantaa ja seurantaa automatisoivaa toimintoa.
HR: Työntekijöiden perehdytys, Sopimus- ja Sertifiointipäivämäärät
HR-tiimit luottavat voimakkaasti päivämääräkenttiin työntekijöiden palkkauspäivämäärissä, koeajan päättymispäivissä, sopimusten aloitus- ja päättymispäivissä sekä sertifikaattien voimassaolopäivissä. Nämä arvot syötetään automatisoituihin sähköposteihin, hälytyksiin ja palkkalaskentakäytäntöihin.
Hyvin suunniteltu HR-moduuli Odoossa on mahdotonta ilman puhtaita ja tarkkoja päivämääräkenttädataa työntekijätiedoissa. Nämä päivämäärät ovat usein laukaisijoita joillekin liiketoiminnallisesti kriittisimmistä automaatioista Odoo-asetuksessa.
Päivämääräkentän luominen tai mukauttaminen
Päivämääräkentän lisäämiseen Odoo-malliin on kolme pääasiallista tapaa, riippuen teknisestä asetuksestasi ja käyttöönotto lähestymistavastasi.
Odoo Studion käyttäminen (ilman koodia)
Odoo Studio on yksinkertaisin tapa lisätä päivämääräkenttä ilman koodin kirjoittamista. Tämä on suositeltu lähestymistapa liiketoimintakäyttäjille ja konsultteille, jotka haluavat lisätä päivämääräseurantaa Odoon vakiomuotoihin nopeasti:
- Avaa Odoo Studio päävalikosta.
- Siirry lomakkeeseen, johon haluat kentän.
- Vedä Päivämäärä kenttä sivupalkista lomakkeelle.
- Aseta etiketti, pakollinen tila ja oletusarvo tarvittaessa.
- Tallenna ja sulje Studio.
Studio luo kentän x_studio_ etuliitteellä ja lisää sen lomakekatseluun heti. Tietokannan migraatiota ei tarvita puoleltasi.
Pythonin käyttäminen mukautetussa moduulissa
Odoo-moduuleja kehittävien kehittäjien on määritettävä päivämääräkentät Python-mallifileissä. Tämä on oikea lähestymistapa kaikille mukautuksille, jotka tarvitsevat versionhallintaa ja käyttöönottoa useissa ympäristöissä:
from odoo import fields, models
class SaleOrder(models.Model):
_inherit = 'sale.order'
x_customer_requested_date = fields.Date(
string='Asiakkaan pyytämä päivämäärä',
index=True,
copy=False,
help='Asiakkaan tilaama toimituspäivämäärä tilauksen yhteydessä.',
)
Kun olet lisännyt kentän malliin, sinun on myös lisättävä se asiaankuuluvaan näkymän XML-tiedostoon, jotta se näkyy käyttöliittymässä. Odoo hoitaa tietokantapalstan luomisen, kun asennat tai päivität moduulin.
XML-RPC API:n käyttäminen
Ohjelmallista kentän luomista osana käyttöönotto-putkea tai etäkonfiguraatiopäiväkirjaa varten voit luoda päivämääräkenttiä Odoo XML-RPC API:n kautta:
field_id = models.execute_kw(
ODOO_DB, uid, ODOO_API_KEY,
'ir.model.fields', 'create',
[{
'name': 'x_customer_requested_date',
'field_description': 'Asiakkaan pyytämä päivämäärä',
'model_id': model_id,
'ttype': 'date',
'state': 'manual',
}]
)
Päivämääräkentän ttype arvo on 'date'. Päivämäärä- ja aikakentälle se olisi 'datetime'. Käyttämällä 'manual' tilana kerrotaan Odoolle, että tämä kenttä on luotu manuaalisesti, ei moduulin asennuksen kautta. Näin Dasolo hallitsee etäkentän luomista asiakkaille osana automatisoituja konfiguraatioskriptejä.
Parhaat käytännöt
1. Käytä Datea, ei DateTimeia, kun aika ei ole oleellinen
Jos ainoa asia, joka on tärkeä, on kalenteripäivämäärä (täsmäaika, sopimuspäivämäärä, syntymäpäivä, vanhenemispäivämäärä), käytä fields.Date:a. DateTimein valitseminen pelkästään päivämääräpohjaisille tiedoille lisää aikavyöhykkeen monimutkaisuutta ilman käytännön hyötyä ja voi aiheuttaa hämmentäviä yhden päivän virheitä riippuen palvelimen aikavyöhykkeen asetuksista.
2. Aseta merkityksellinen oletusarvo, kun se on järkevää
Kentille kuten "Odotettu toimituspäivämäärä" tai "Seurantapäivämäärä" oletusarvon asettaminen tänään tai tänään plus tietty määrä päiviä antaa käyttäjille järkevän lähtökohdan. Käytä default=fields.Date.today ilman sulkuja dynaamisena oletusarvona, joka arvioidaan tietueen luontivaiheessa, ei luokkadefiniitiossa.
3. Indeksoi päivämääräkentät, joita käytetään raporteissa ja hakusuodattimissa
Jos käyttäjäsi suodattavat säännöllisesti tietueita päivämääräkentän mukaan (erääntyneet laskut, tulevat uusinnat, vanhenevat sertifikaatit), lisää index=True. Suurilla tietoaineistoilla tämä parantaa dramaattisesti suodattimen ja raportin suorituskykyä. Se on pieni muutos, jolla on merkittävä vaikutus suuressa mittakaavassa ja se maksaa lähes mitään etukäteen toteutettuna.
4. Käytä copy=False päivämäärille, joita ei pitäisi siirtää
Päivämäärät kuten "Sopimuksen aloituspäivämäärä" tai "Vanhentumispäivämäärä" eivät saisi siirtyä, kun käyttäjä kopioi tietueen. Lisäämällä copy=False pakotat käyttäjän asettamaan päivämäärän erikseen uudelle tietueelle, välttäen hiljaisia virheitä, joissa vanhentunut päivämäärä pysyy kopioidussa sopimuksessa tai projektitehtävässä.
5. Lisää rajoitteita, kun kaksi päivämääräkenttää muodostavat alueen
Aina kun mallilla on "Aloituspäivämäärä" ja "Loppupäivämäärä" -pari, lisää Python-rajoite käyttäen @api.constrains varmistaaksesi, että loppupäivämäärä ei ole ennen aloituspäivämäärää. Tämä on helppo toteuttaa ja estää koko joukon tietolaatuongelmia, jotka ovat ärsyttäviä diagnosoida jälkikäteen.
Yleiset sudenkuopat
Hämmentävät Date- ja DateTime-kentät
Tämä on yleisin virhe työskennellessä aikaherkkien tietojen kanssa Odoossa. DateTime tallentaa täydellisen aikaleiman UTC:ssä ja muuntaa sen näytössä. Date tallentaa vain kalenteripäivämäärän ilman muunnosta. DateTimein käyttäminen, kun tarvitset vain päivämäärän, johtaa aikavyöhykeongelmiin: päivämäärä, joka syötetään 15. maaliskuuta UTC+2 ympäristössä, voi näkyä 14. maaliskuuta UTC-5 käyttäjälle.
Käytä aina yksinkertaisinta kenttätyyppiä, joka täyttää todelliset liiketoimintatarpeesi.
Ei oteta huomioon palvelimen aikavyöhykettä aikataulutetuissa toiminnoissa
Kun rakennat aikataulutettuja toimintoja tai raportteja, jotka suodattavat päivämääräkentän suhteessa "tänään", ole tietoinen siitä, että fields.Date.today() palauttaa palvelimen päivämäärän UTC:ssä. Useimmissa raportointitapauksissa tämä on kunnossa, mutta se voi aiheuttaa yhden päivän eroja tiimeille, jotka ovat aikavyöhykkeillä, jotka poikkeavat merkittävästi palvelimesta. Testaa päivämääräriippuvaisia automaatioita useista aikavyöhykkeistä, jos tiimisi on jakautunut globaalisti.
Puuttuvat rajoitukset päivämääräparien alueelle
On yleistä nähdä toteutuksia, joissa "Alkupäivämäärä" ja "Loppupäivämäärä" ovat erillisiä kenttiä, mutta mitään validointia ei varmista, että loppupäivämäärä on alkupäivämäärän jälkeen. Tämä päästää virheelliset tiedot järjestelmään hiljaa, rikkoen kesto-laskelmia, suodatus tuloksia ja raportteja. Lisää aina @api.constrains tarkistus, kun kaksi päivämäärää muodostaa loogisen alueen.
Unohtaminen indeksoida suodattimissa käytetyt päivämääräkentät
Päivämääräkenttiä, joita käytetään "erääntymättömien" tarkistuksissa, "tulevien määräaikojen" näkymissä tai ikääntyneiden saldo-raporteissa, kysytään tyypillisesti vertailuilla, kuten "päivämäärä ennen tänään". Ilman indeksiä jokainen tällainen kysely on täydellinen taulukon skannaus. Suurilla tietueiden määrillä, kuten laskuilla, tehtävillä tai varastosiirroilla, puuttuvat indeksit päivämääräkentistä hidastavat huomattavasti päivittäisiä toimintoja ajan myötä.
Päivämäärien tallentaminen Char-kenttinä
Jotkut tiimit tallentavat päivämäärät tekstimerkkijonoina Char-kentissä säilyttääkseen mukautetun muodon tai välttääkseen päivämäärävalitsimen. Tämä rikkoo täysin lajittelua, suodatusta, päivämääräaritmetiikkaa ja raportointia. Käytä aina oikeaa fields.Date -tyyppiä. Odoo-kehys ja tietokanta käsittelevät muotoilua ja lokalisointia automaattisesti, joten ei ole käytännöllistä syytä tallentaa päivämääriä pelkkänä tekstinä.
UKK
Mikä on ero päivämääräkentän ja DateTime-kentän välillä Odoossa?
Päivämääräkenttä tallentaa vain kalenteripäivämäärän (vuosi, kuukausi, päivä) ilman aikakomponenttia. DateTime-kenttä tallentaa täydellisen aikaleiman, joka sisältää tunnit, minuutit ja sekunnit, tallennettuna UTC:ssä ja näytetään käyttäjän paikallisessa aikavyöhykkeessä. Käytä päivämäärää, kun päivän aika ei ole merkityksellinen liiketoimintaprosessille. Käytä DateTimea, kun sinun on seurattava tarkasti, milloin jotain tapahtui.
Miten asetetaan tämän päivän päivämäärä oletukseksi päivämääräkentälle?
Pythonissa käytä default=fields.Date.today ilman sulkuja. Tämä on kutsuttava, jonka Odoo arvioi tallennuksen luontivaiheessa, joten oletusarvo on aina nykyinen päivämäärä eikä kiinteä päivämäärä, joka on määritelty luokan määrittelyssä. Odoo Studiossa valitse "Tänään" oletusarvoksi kenttäominaisuuksien paneelissa.
Voinko laskea päivämääräkentän arvoa muiden kenttäarvojen perusteella?
Kyllä. Määritä kenttä compute='_compute_my_date' -määreellä ja kirjoita menetelmä, joka on koristeltu @api.depends() -koristeella, luetellen kentät, jotka laukaisevat uudelleenlaskennan. Suorita menetelmässä päivämäärälaskelmia Pythonin datetime.date tai timedelta avulla. Lisää store=True, jos haluat, että tulos tallennetaan tietokantaan käytettäväksi hakusuodattimissa, ryhmittelyssä ja vientissä.
Kuinka suodattaa tietueita päivämäärävälin perusteella Odoo-alueella?
Käytä standardeja vertailuoperaattoreita alueella. Esimerkiksi löytääksesi tietueet, joiden päivämääräkenttä on maaliskuussa 2026:
[
('x_date_field', '>=', '2026-03-01'),
('x_date_field', '<=', '2026-03-31')
]
Päivämäärämerkkijonojen alueilla tulisi aina olla ISO-muodossa: YYYY-MM-DD.
Voinko tehdä päivämääräkentästä pakollisen vain tietyissä olosuhteissa?
Standardi Odoo ei pakota ehtoja, jotka tekevät kentistä pakollisia taustalla ilman koodia. Voit käyttää attrs -määrettä näkymä-XML:ssä visuaalisesti merkitäksesi kentän pakolliseksi muiden arvojen perusteella, mutta todellinen taustapakottaminen vaatii Python-rajoitteen käyttäen @api.constrains. Yksinkertaisissa tapauksissa Odoo Studion ehdolliset näkyvyys säännöt tarjoavat käytännöllisen korvikkeen ilman koodin kirjoittamista.
Yhteenveto
Päivämääräkenttä on yksi käytännöllisimmistä kenttätyypeistä Odoo-kehyksessä. Se on helppo ymmärtää, suoraviivainen käyttää ja tarpeeksi voimakas ohjaamaan tärkeitä liiketoimintalogiikoita, kuten muistutuksia, erääntymistarkistuksia ja aikarajoitteista raportointia.
Tärkeimmät asiat, jotka kannattaa muistaa: käytä Päivämäärää sen sijaan, että käyttäisit PäivämääräAikaa, kun tarvitset vain kalenteripäivämäärän, ymmärrä, kuinka oletusarvot ja indeksit parantavat käytettävyyttä ja suorituskykyä, ja lisää aina rajoituksia, kun kaksi päivämääräkenttää määrittelee alueen.
Siistien, hyvin suunniteltujen tietomallien rakentaminen Odoossa alkaa pienistä päätöksistä, kuten oikean kenttätyypin valitsemisesta. Näiden oikeiden valitseminen alusta alkaen on yksi vankan Odoo-implementoinnin tunnusmerkeistä, ja päivämääräkenttä on perustavanlaatuinen osa tätä palapeliä.
Dasolossa autamme yrityksiä toteuttamaan, mukauttamaan ja optimoimaan Odoo'ta kaikilla osastoilla ja liiketoimintaprosesseissa. Olipa tarpeesi suunnitella selkeä tietomalli, lisätä mukautettuja kenttiä ja työnkulkuja tai rakentaa täydellinen Odoo-moduuli alusta alkaen, tiimimme on täällä auttamassa. Ota meihin yhteyttä ja keskustellaan Odoo-projektistasi.