Johdanto
Aina kun myyjä asettaa liidille prioriteetin, asiakas valitsee maksutavan tai tuote merkitään aktiiviseksi tai arkistoidaan, taustalla on usein Selection-tyypin kenttä. Se on yksinkertainen mutta keskeinen työkalu Odoon tietomallissa — ymmärtämällä sen oikein säästät aikaa ja pidät tietosi ennustettavina.
Toisin kuin avoin tekstikenttä, Selection rajoittaa käyttäjän valinnan ennalta määritettyihin vaihtoehtoihin. Tämä pakotettu rajaus pitää tiedot yhtenäisinä, helpottaa suodattamista ja raportointia sekä estää kirjavia kirjoitusasuja, jotka ajan mittaan rikkoisivat yhteenvedot ja dashboardit.
Tässä oppaassa käydään läpi, mitä kenttä tallentaa ja miten se näkyy käyttöliittymässä sekä miten sitä voi luoda ja muokata Odoo Studiolla, Python-moduuleilla tai XML-RPC-rajapinnalla. Mukana on myös käytännön esimerkkejä liiketoimintaprosesseista ja lista tavallisimmista virheistä, joita kannattaa välttää.
Mikä on Selection-kenttä Odoossa
Odoon ORM:ssä Selection-kenttä tallentaa yksinkertaisen merkkijonon, joka on valittu kiinteästä vaihtoehtolistasta. Jokainen vaihtoehto määritellään avain–arvo -parina: avain menee tietokantaan, arvo (label) näkyy käyttöliittymässä käyttäjälle.
Käytännössä tämä tarkoittaa sitä, että kenttälista määrittelee sekä teknisen arvon että ihmisen luettavan tekstin — ero näiden välillä on olennainen, kun tarvitset myöhemmin muutoksia näkyviin teksteihin ilman tietojen rikkomista.
Esimerkiksi prioriteettikenttä voisi näyttää tältä koodissa:
Tässä esimerkissä avaimet kuten '0', '1', '2' ja '3' tallennetaan kantaan, kun taas käyttäjä näkee kuvaukset kuten Normal, Low, High ja Very High. Tämän erottelun ansiosta voit muuttaa näkyvää tekstiä ilman, että vanhat tietueet menettävät merkityksensä.
Käyttöliittymässä Selection näkyy lomake-näkymässä pudotusvalikkona ja listanäkymässä selkeänä tekstinä. Kun käytät badge-widgettiä, arvot piirtyvät värillisinä tarralappuina, mikä parantaa luettavuutta etenkin tiheissä listauksissa.
Odoo Studiolla tämä kenttä tyyppi on nimeltään Selection ja se saa automaattisesti x_studio_-etuliitteen. Kun luot kentän koodilla tai API:lla, valitset itse teknisen nimen, joten nimikäytännöillä on vaikutusta jatkokehitykseen ja versiohallintaan.
Miten kenttä toimii
Tietomallissa Selection-kenttä tallentuu PostgreSQL:ssä VARCHAR-sarakkeena ja tietokantaan tallennetaan aina vain avain, ei näyttötekstiä. Tämä on tärkeä huomata suodattimia ja palvelinpuolen toimintoja kirjoittaessa: vertailu pitää tehdä avaimella, ei ihmislukuisella arvolla.
Esimerkiksi haun muotoileminen korkeita prioriteetteja varten on muotoa [('priority','=', '2')], ei [('priority','=', 'High')]. Tästä johtuvat virheet ovat yleisiä, jos kentän määrittelyä ei ole tarkistettu.
Tärkeimmät kenttäattribuutit
Alla ovat Selection-kentän käytön kannalta olennaisimmat ominaisuudet Odoossa:
- selection: lista (key, label) -pareista, jotka määrittelevät valittavat vaihtoehdot. Tämä voi myös olla metodin nimi (merkkijono), jolloin Odoo kutsuu metodin ajonaikaisesti ja kokoaa listan dynaamisesti.
- default: oletusavaimen arvo, jota käytetään jos kenttään ei ole asetettu arvoa. Jos jätetään pois, kenttä voi olla tyhjä.
- required: pakottaa käyttäjän valitsemaan vaihtoehdon ennen tallennusta. Yhdistettynä oletukseen tämä on tyypillinen malli tilakentille.
- selection_add: käytetään moduliperinnässä lisäämään uusia vaihtoehtoja olemassa olevaan Selection-kenttään ilman, että koko lista määritellään uudelleen — oikea tapa laajentaa natiivikenttää.
- ondelete: määrittää yhdessä selection_addin kanssa, mitä tapahtuu tietueille, joilla on poistettu vaihtoehto, kun moduuli poistetaan asennuksesta.
Staattiset vs dynaamiset valintalistat
Oletuksena vaihtoehdot määritellään staattisesti kentän määrittelyssä. Voit kuitenkin antaa selection-parametrille metodin nimen, jolloin Odoo luo vaihtoehdot ajonaikaisesti — hyödyllistä, jos haluat näyttää eri vaihtoehtoja käyttäjän, yhtiön tai muun kontekstin mukaan.
Esimerkiksi voit palauttaa eri sopimustyyppejä HR-ryhmälle ja rajoitetumman listan muille käyttäjille; näin valinnat mukautuvat käyttäjän roolin mukaan.
Miten kenttä näkyy näkymissä
Lomakenäkymässä Selection on tavallinen pudotusvalikko, mutta voit muuttaa esitystapaa attribuuteilla: widget="badge" näyttää värilliset tarrat listassa ja kanbanissa, widget="radio" esittää vaihtoehdot rivinä radiopainikkeita silloin, kun vaihtoehtoja on vähän ja kaikki halutaan näyttää yhdellä kertaa.
Vuorovaikutus Odoo ORM:n kanssa
Kenttään kirjoittaminen ja siitä lukeminen ORM:ssä on suoraviivaista: asetat avaimen ja jäävä käyttäjätekstin esitystä hoitaa järjestelmä. XML-RPC:n fields_get palauttaa selection-listan [key, label] -pareina, joita voit käyttää omassa käyttöliittymässäsi tai integraatioissa.
Liiketoimintatapauksia
Selection-kenttä löytyy lähes jokaisesta Odoon modulista. Alla viisi konkreettista esimerkkiä yleisistä työprosesseista, joissa kenttä ohjaa toimintaa.
CRM: liidin prioriteetti ja pipeline-vaiheet
CRM:ssä prioriteettikenttä auttaa myyntitiimiä kohdistamaan huomion tärkeimpiin liideihin. Prioriteettijakauman seuraaminen parantaa työnsuunnittelua ja automaatioita voivat esimerkiksi luoda toimenpiteitä kun liidin tärkeys nousee. Usein priorisoinnin hienosäätö on yksi ensimmäisistä datalaadun parannuksista käyttöönoton jälkeen.
Myynti: laskutuskäytännöt ja laskutuspolitiikka
Tuotteiden invoice_policy on Selection-kenttä, joka määrittää laskutetaanko tilatut vai toimitetut määrät. Vastaavasti tilauspohjaisissa sopimuksissa laskutusmoodi voi erottaa prepaid- ja jälkilaskutuksen. Nämä valinnat vaikuttavat suoraan laskutuksen kulkuun ja talousprosessien logiikkaan.
Varasto: tuotteen ja erien laatu- ja tilat
Tuotannossa ja laadunvalvonnassa Selection-kentät seuraavat erien, sarjanumeroiden ja korjaustilausten tilaa. Esimerkiksi korjaustila voisi edetä draft→confirmed→under repair→ready→done, ja jokainen vaihe voi laukaista sähköposteja, varastosiirtoja tai kirjanpitotositteita. Kenttä toimii koko työnkulun ohjauspisteenä.
Kirjanpito: maksutapa ja päiväkirjan tyyppi
Kirjanpidossa päiväkirjan tyypillä erotellaan myynti-, osto-, käteinen- ja pankkipäiväkirjat. Tämä arvo ohjaa kirjauslogiikkaa, saatavilla olevia tilejä ja rajoituksia operaatioille — esimerkki siitä, miten Selection voi säädellä liiketoimintasääntöjä eikä pelkästään nimetä tietuetta.
HR: työsuhteen tyyppi ja sopimustila
HR käyttää Selection-kenttiä työsuhteen tyypin, sopimuksen tilan ja lomapyyntöjen seuraamiseen. Sopimuksen tila voi siirtyä new→open→expired/ cancelled ja automaatiot voivat esimerkiksi muistuttaa HR:ää ennen sopimuksen umpeutumista tai käynnistää perehdytyslistoja uudelle työntekijälle.
Selection-kentän luominen ja muokkaus
Selection-kentän lisäämiseen Odooseen on kolme päätapaa riippuen tarpeesta: nopea no-code Studio, versionhallittava Python-moduuli tai etähallittu XML-RPC.
Odoo Studio (ei koodia)
Studio on sisäänrakennettu low-code-työkalu kenttien lisäämiseen ilman Pythonia. Studio-sovelluksella saat kentän käyttöön nopeasti analyysitilanteissa ja demoissa.
- Avaa Odoo Studio päävalikosta.
- Siirry lomakkeeseen, johon kenttä halutaan lisätä.
- Raahaa sivupaneelista Selection-kenttä lomakkeeseen.
- Lisää vaihtoehdot kentän ominaisuuksiin ja anna jokaiselle omateksti.
- Voit asettaa oletusarvon ja merkitä kentän pakolliseksi.
- Tallenna ja sulje Studio.
Studio luo kullekin vaihtoehdolle automaattisen avaimen ja tallentaa kentälle x_studio_-etuliitteen. Tämä on nopein tapa lisätä Selection kenttä asiakkaan kanssa käydyn työpajan aikana.
Pythonilla omassa moduulissa
Kehittäjille suositeltava tapa on määritellä Selection-kentät Python-malleissa — tämä sopii muutoksille, jotka halutaan versionhallintaan ja useisiin ympäristöihin toimitettaviksi.
Kun määrittelet kentän moduulissa, lisäät sen myös näkymiin XML:ssä, jotta se näkyy käyttöliittymässä. Odoo luo tarvittavan tietokantasarakkeen moduulia asennettaessa tai päivittäessä.
Kun kenttä on määritelty, muista päivittää näkymä-XML, jotta käyttäjät näkevät kentän. Asennus tai päivitys huolehtii tietokantarakenteesta automaattisesti.
Laajentaminen uusilla vaihtoehdoilla tehdään selection_add-parametrilla eikä koko kentän uudelleenmäärittelyllä.
selection_addin avulla voit lisätä esimerkiksi vaihtoehdon ('custom_approval','Pending Approval') ja määritellä ondelete-käyttäytymisen, jotta poistettaessa moduuli ei jätä rikkinäistä dataa.
XML-RPC-rajapinnan käyttö
Jos tehtävät automatisoidaan tai hallinta tapahtuu etänä, voi kenttiä luoda myös XML-RPC-rajapinnan kautta osana deploy- tai konfiguraatioskriptejä.
API-kutsussa Selection määritellään ttype:'selection' ja selection-arvo annetaan Python-listan merkkijonoesityksenä. Lisäksi state:'manual' kertoo, että kenttä on luotu käsin tai API:lla.
Kun luot kentän API:lla, muista että selection tulee tekstinä ja että manuaalisesti luodun kentän state on manual. Tämä on oikea tapa automatisoida etäkonfiguraatioita ilman suoraa koodimuutosta moduuleissa.
Hyvät käytännöt
1. Käytä merkityksellisiä ja pysyviä avaimia
Avaimet tallentuvat kantaan ja niitä käytetään suodattimissa ja automaatioissa. Valitse kuvaavat, lyhyet ja pysyvät avaimet kuten 'draft', 'confirmed' tai 'cancelled'. Vältä numero-avaimia, ellei järjestys oikeasti merkitse — numerot tekevät koodista vaikeammin luettavaa myöhemmin.
2. Pidä vaihtoehtolista lyhyenä ja kattavana
Jos vaihtoehtoja tulee yli kahdeksan–kymmenen, kenttä yrittää usein hoitaa liikaa tehtävää. Mieti, olisiko parempi käyttää Many2one-suhdetta konfiguroitavaan malliin, jolloin käyttäjät voivat ylläpitää vaihtoehtoja itse ilman kehittäjän apua.
3. Aseta aina oletus pakollisille kentille
Pakolliselle Selection-kentälle kannattaa määrittää järkevä oletusarvo. Näin vältät validoimatta jäävät tietueet, joita syntyy API-kutsuin tai massatuonnin yhteydessä, kun käyttäjää ei ole valitsemassa arvoa.
4. Käytä selection_addia laajennuksiin
Laajentaessasi olemassa olevaa kenttää moduulissasi, käytä selection_addia sen sijaan että määrittelisit kentän uudelleen. Tämä on yhteensopivampaa muiden moduulien kanssa. Muista myös määritellä ondelete, jotta poistettaessa moduuli ei riko olemassa olevia tietueita.
5. Käytä badge-widgettiä näkyvyyden parantamiseen listassa
Listassa ja kanbanissa oletusesitys on pelkkä teksti. widget="badge" tekee arvoista värillisiä tarroja, mikä parantaa skannattavuutta ja nopeuttaa tilojen arviointia erityisesti statuksen kohdalla.
Yleiset sudenkuopat
Avaimen muuttaminen katkaisee olemassa olevan datan
Näytetekstiä voi muuttaa turvallisesti, mutta avainta ei tule muuttaa kun tietueita on jo olemassa. Avaimen uudelleennimeäminen jättää vanhat tietueet ilman tunnistettavaa arvoa ja rikkoo suodattimet sekä automaatiot. Tarvittaessa tee ensin tietomigraatio, joka päivittää kaikki vanhat arvot uuteen avaimeseen.
Vaihtoehdon poistaminen jättää orpoja tietueita
Poistaessasi vaihtoehtoa on varmistettava, ettei siihen viittaavia tietueita jää. Etsi ja päivitä tai arkistoi ne ennen poistoa, muuten ne näyttävät puuttuvia tai rikkinäisiä arvoja käyttöliittymässä — yleinen ongelma datan siivouksessa.
Labelin käyttäminen avaimen sijaan suodattimissa
Yleinen virhe varsinkin vähemmän teknisiltä käyttäjiltä on suodattaa näyttötekstin perusteella. Tämä palauttaa usein nollatuloksen ilman virheilmoitusta ja on vaikea löytää. Tarkista aina kentän määrittely ja käytä oikeaa avainta suodattimissa.
Selectionin käyttäminen silloin kun tarvittaisiin Many2one
Jos vaihtoehdot muuttuvat usein, käyttäjät haluavat hallita niitä itse tai vaihtoehtoihin liittyy lisätietoja (väri, järjestys, tili), Many2one on parempi ratkaisu. Selection sopii vakaaseen, kehittäjän hallinnoimaan listaan. Dynaamisempi ylläpito kannattaa toteuttaa relaatiolla.
Tyhjän arvon käsittelemättä jättäminen palvelinlogiikassa
Jos kenttä ei ole pakollinen, arvo voi olla False. Jos koodisi vertailee kenttää suoraan merkkijonoon ilman False-tarkistusta, komparointi voi epäonnistua tai aiheuttaa virheitä. Käsittele tyhjä tapa eksplisiittisesti palvelinpuolen toiminnallisuuksissa.
Yhteenveto
Selection vaikuttaa yksinkertaiselta, mutta sen ymmärtäminen syvällisesti tekee suuren eron. Avaimen ja labelin ero, selection_addin oikea käyttö sekä ajoissa tehty päätös siitä, pitäisikö käyttää Many2onea ovat eroja, jotka erottavat hyvin suunnitellun Odoo-ympäristön sellaisesta, joka tuottaa ongelmia myöhemmin.
Olipa kyseessä sopimustyypin lisääminen Studiolla, toimitusikkunan määrittely Python-moduulissa tai laatusolmun luonti API:lla, tässä oppaassa kuvatut mallit auttavat tekemään oikeat valinnat käyttötapauksesi kannalta.
Odoon tietomallissa Selection-kenttä on keskeinen työkalu tietolaadun varmistamisessa. Oikein käytettynä se pitää tietueet siisteinä, raportit luotettavina ja automaatiot ennakoitavina.
Me Dasololla autamme yrityksiä ottamaan Odoon käyttöön, muokkaamaan sitä ja optimoimaan prosesseja kaikissa toiminnoissa. Tarjoamme apua tietomallin suunnitteluun, mukautettujen kenttien lisäämiseen ja täysimittaisten moduulien rakentamiseen. Ota yhteyttä meihin ja keskustellaan Odoo-projektistasi.