Johdanto
Boolean-kenttä on yksi yksinkertaisimmista kenttätyypeistä Odoossa, ja myös yksi käytetyimmistä. Aina kun rastitat valintaruudun myyntitilauksessa, merkitset asiakasta aktiiviseksi tai liputat tuotteen suosikiksi, olet vuorovaikutuksessa Boolean-kentän kanssa.
Huolimatta yksinkertaisuudestaan, Boolean-kentällä on muutamia käyttäytymisiä, jotka on syytä ymmärtää kunnolla. Tietäminen, milloin käyttää sitä, milloin ei käyttää sitä ja kuinka konfiguroida se hyvin, auttaa sinua rakentamaan siistimpiä Odoo-ympäristöjä ja välttämään joitakin yleisiä virheitä, joita jopa kokeneet tiimit tekevät.
Tämä opas kattaa Boolean-kentän kaikista näkökulmista: mitä se tallentaa, kuinka se käyttäytyy Odoo-tietomallissa ja käyttäjäliittymässä, kuinka luoda tai mukauttaa sitä Odoo Studiolla tai Pythonilla, todelliset liiketoimintakäyttötapaukset ja käytännön vinkit tämän kenttätyypin hyödyntämiseen.
Mikä on Boolean-kenttä Odoossa
Odoo ORM:ssa Boolean-kenttä tallentaa yhden kahdesta arvosta: True tai False. Se vastaa suoraan BOOLEAN -saraketta PostgreSQL:ssä. Tässä ei ole epäselvyyksiä: kenttä on joko rastitettu tai rastittamaton, käytössä tai käytöstä poistettu, kyllä tai ei.
Käyttäjän näkökulmasta Boolean-kenttä näkyy valintaruuduksi lomakekatseluissa. Luettelonäkymissä se näyttää yleensä valintamerkki-ikonilta, kun arvo on True, ja ei mitään, kun se on False. Joissakin kokoonpanoissa se näkyy kytkinvaihtoehtona perinteisen valintaruudun sijaan, riippuen käytetystä widgetistä.
Tässä on esimerkki Boolean-kentän määritelmästä Python Odoo -moduulissa:
from odoo import fields, models
class SaleOrder(models.Model):
_inherit = 'sale.order'
needs_manual_review = fields.Boolean(
string='Needs Manual Review',
default=False,
)
Parametri string asettaa käyttöliittymässä näkyvän otsikon. Parametri default hallitsee alkuarvoa, kun uusia tietueita luodaan. Ilman oletusarvoa Odoo käsittelee kenttää automaattisesti False:na, mutta on hyvä käytäntö ilmoittaa se selvästi.
Odoo Studiossa tätä samaa kenttätyyppiä kutsutaan yksinkertaisesti Valintaruuduksi. Studiosta luoduille kentille annetaan automaattisesti x_studio_-etuliite. Kun kenttä luodaan Pythonin tai XML-RPC API:n kautta, määrität teknisen nimen itse.
Kuinka kenttä toimii
Kun lisäät Boolean-kentän Odoo-malliin, kehys luo vastaavan sarakkeen PostgreSQL-tietokantaan automaattisesti moduulin asennuksen tai päivityksen aikana. Manuaalista SQL-migraatiota ei tarvita.
Yksi tärkeä asia ymmärtää: Odoossa Boolean-kenttä ei koskaan pidä None tai NULL. ORM palauttaa aina joko True tai False. Vaikka tietokannan sarakkeella ei olisi arvoa, Odoo palauttaa False lukiessasi kenttää. Tämä eroaa muista kenttätyypeistä, kuten Many2one tai Char, joissa tyhjät arvot palautuvat False tai None ja sinun on tarkistettava molemmat.
Keskeiset kenttäattribuutit
Tässä ovat tärkeimmät ominaisuudet, joita voit määrittää Boolean-kentälle Odoo-kehyksessä:
- default: Asettaa arvon, kun uusi tietue luodaan. Melkein aina asetettu
False:ksi, mutta voi ollaTrueopt-out-skenaarioissa. - compute: Liittää Python-menetelmän, joka laskee arvon dynaamisesti. Hyödyllinen johdettujen lippujen osalta, jotka perustuvat muiden kenttien tilaan.
- store: Kun käytetään yhdessä
compute:n kanssa, määrittää, tallennetaanko arvo tietokantaan. Kunstore=True, lasketut Boolean-kentät voidaan käyttää hakusuodattimissa ja raporteissa. - readonly: Estää käyttäjiä muuttamasta kentän arvoa manuaalisesti käyttöliittymässä. Yleistä lasketuissa lipuissa, jotka tulisi asettaa vain järjestelmän toimesta.
- copy: Hallitsee, siirtyykö kentän arvo tallennettaessa tietue kopioksi. Oletusarvo on
True. Lipuissa kuten "on hyväksytty", haluat yleensäcopy=False, jotta kopioidut tietueet alkavat puhtaina. - groups: Rajoittaa näkyvyyttä ja muokkausoikeuksia tiettyihin käyttäjäryhmiin.
Miten se näkyy näkymissä
Lomakenäkymissä Boolean-kenttä renderöidään standardina HTML-valintaruuduksi. Luettelonäkymissä Odoo näyttää tarkistuskuvakkeen True arvolle ja ei mitään False arvolle oletuksena. Tämä tekee luettelonäkymistä helppoja skannata visuaalisesti.
Voit muuttaa, miten Boolean-kenttä renderöidään käyttämällä näkymäwidgettejä. toggle widget näyttää sen kytkimenä sen sijaan, että se olisi valintaruutu, mikä toimii hyvin asetuksille tai mieltymyksille. Lukuoikeudellisessa esityksessä boolean_favorite widget renderöi arvon tähtikuvakkeena, jonka voit nähdä tuotteen ja yhteystietojen lomakkeilla standardissa Odoo:ssa.
Boolean-kenttien käyttäminen domain-suodattimissa
Boolean-kentät ovat erittäin käteviä käytettäväksi Odoo-domaineissa, jotka ovat suodatinilmaisuja, joita käytetään hakunäkymissä, automatisoiduissa toimissa ja käyttöoikeussäännöissä. Suodatin tarkistamattomille tietueille näyttää tältä:
[('needs_manual_review', '=', True)]
Koska mahdollisia arvoja on vain kaksi, voit myös käyttää yksinkertaisempaa muotoa ilman operaattoria:
[('needs_manual_review', '=', False)]
Tämä suoraviivainen suodatuskäyttäytyminen on yksi syy siihen, miksi Boolean-kentät integroituvat niin hyvin Odoo:n automatisoituihin toimintoihin, aikataulutettuihin toimintoihin ja palvelin toimintoihin. Ne ovat helppoja tarkistaa ja niihin voi reagoida ilman monimutkaisia ehtoja.
Vuorovaikutus Odoo ORM:n kanssa
Boolean-kenttien lukeminen ja kirjoittaminen Odoo-kehityksessä on suoraa kuin mikä. Pääset käsiksi arvon tietueobjektiin, vertaat sitä True tai False -arvoon ja määrität sen suoraan. ORM hoitaa kaiken muun. Muunnoksia ei ole, ei sarjamuunnosongelmia, eikä yllätyksiä arvojen siirtämisessä XML-RPC API:n kautta, sillä True ja False vastaavat puhtaasti niiden XML-RPC boolean-vastineita.
Liiketoimintakäyttötapaukset
Boolean-kenttiä esiintyy kaikilla osastoilla tyypillisessä Odoo-implementaatiossa. Tässä on viisi käytännön esimerkkiä todellisista liiketoimintatyönkuluista.
CRM: Seuranta, onko liidi vahvistettu
Myyntitiimien on usein tarpeen merkitä, mitkä liidit on tarkastettu senioriedustajan toimesta ja vahvistettu mahdollisiksi mahdollisuuksiksi. CRM-liidimallissa oleva Boolean-kenttä nimeltä is_qualified antaa tiimeille helpon tavan suodattaa putkeaan. Vahvistamattomat liidit voidaan käsitellä nuorempien työntekijöiden toimesta, kun taas vahvistetut saavat ensisijaisen huomion. Tämä yksinkertainen valintaruutu korvasi tarpeen omalle vaiheelle tai tilakentälle vain tätä tarkoitusta varten.
Myynti: Tilauksien merkitseminen, jotka tarvitsevat manuaalista tarkastusta
Joissakin yrityksissä tietyt myyntitilaukset vaativat lisähyväksynnän ennen vahvistamista, esimerkiksi tilaukset, jotka ylittävät tietyn summan tai ovat uusilta asiakkailta. Myyntitilauksessa oleva Boolean-kenttä needs_manual_review, yhdistettynä automatisoituun toimintaan, joka asettaa sen True -arvoon liiketoimintasääntöjen perusteella, antaa rahoitus- tai operatiiviselle tiimille selkeän jonon, josta työskennellä. He voivat suodattaa tilausten luetteloa tämän kentän mukaan ja käsitellä hyväksyntöjä ilman, että heidän tarvitsee kaivaa koko tilausten luetteloa.
Varasto: Tuotteiden merkitseminen pois katalogista
Kun tuotetta ei enää myydä, mutta sen on silti pysyttävä järjestelmässä historiallisia tietoja varten, sen arkistointi ei aina ole oikea vaihtoehto. Tuotemallissa oleva Boolean-kenttä is_discontinued antaa hankinta- ja myyntitiimeille mahdollisuuden nähdä yhdellä silmäyksellä, että tuotetta ei tulisi tilata uudelleen tai tarjota asiakkaille. Voit käyttää tätä kenttää hintalistasuodattimissa, ostotilausvalidointisäännöissä ja verkkosivuston kauppanäkyvyysasetuksissa.
Kirjanpito: Laskujen tunnistaminen, jotka vaativat huomiota
Rahoitustiimien on joskus tarpeen merkitä laskut, jotka ovat kiistanalaisia, sisältävät hinnoittelueroja tai odottavat hyvityslaskua. Sen sijaan, että luotettaisiin vapaatekstiin keskustelussa, Boolean-kenttä under_dispute antaa tiimille rakenteellisen tavan suodattaa ja raportoida näistä laskuista. Automaattisia muistutuksia voidaan myös estää laskuille, joilla tämä lippu on asetettu True -arvoon, estäen tarpeettoman maksupaineen asiakasta kohtaan, kun ongelmaa ratkaistaan.
HR: Sertifikaattien ja koulutuksen suorittamisen seuranta
HR-osastot tarvitsevat usein vahvistuksen siitä, että työntekijät ovat suorittaneet pakollisen koulutuksen tai heillä on vaadittu sertifikaatti. Boolean-kenttä työntekijätietueessa, kuten safety_training_completed, tarjoaa yksinkertaisen ja auditoitavan tavan seurata tätä. Esimiehet voivat suodattaa tiimilistansa nähdäksesi, kuka tarvitsee vielä suorittaa koulutuksen, ja tiedot voivat syöttää vaatimustenmukaisuusraportteihin ilman monimutkaisen omistetun moduulin rakentamista.
Boolean-kentän luominen tai mukauttaminen
Boolean-kentän lisäämiseen Odoo-malliin on kolme pääasiallista lähestymistapaa, riippuen teknisestä asetuksestasi ja tarvittavan mukauttamisen tasosta.
Käyttäen Odoo Studioa (ilman koodia)
Odoo Studio on sisäänrakennettu matalan koodin työkalu Odoon mukauttamiseen ilman Pythonin tai XML:n kirjoittamista. Boolean-kentän lisääminen Studion kautta:
- Avaa Odoo Studio päävalikosta (vaatii Studio-sovelluksen).
- Siirry lomakkeeseen, johon haluat lisätä kentän.
- Vedä Valintaruutu -kenttä sivupalkista lomakkeen asetteluun.
- Aseta etiketti, oletusarvo ja kaikki vaaditut tai vain luku -rajoitukset kenttäominaisuuksien paneelissa.
- Tallenna ja sulje Studio.
Studio hoitaa kaiken automaattisesti: kenttä luodaan tietokantaan x_studio_-etuliitteellä ja lisätään näkymään. Uudelleenkäynnistystä tai päivitystä ei vaadita.
Käyttäen Pythonia mukautetussa moduulissa
Odoo-moduuleja rakentaville kehittäjille Boolean-kentät määritellään suoraan Python-mallifileissä. Tämä on suositeltu lähestymistapa kaikille mukautuksille, jotka tarvitsevat versionhallintaa, testausta ja käyttöönottoa useissa ympäristöissä:
from odoo import fields, models
class ResPartner(models.Model):
_inherit = 'res.partner'
x_is_key_account = fields.Boolean(
string='Key Account',
default=False,
copy=False,
)
Kun olet määrittänyt kentän, lisää se asiaankuuluvaan näkymän XML-tiedostoon, jotta se näkyy käyttöliittymässä. Odoo luo tietokantapalvelimen, kun moduuli asennetaan tai päivitetään.
Lasketuissa Boolean-kentissä kaava näyttää tältä:
from odoo import api, fields, models
class SaleOrder(models.Model):
_inherit = 'sale.order'
is_high_value = fields.Boolean(
string='High Value Order',
compute='_compute_is_high_value',
store=True,
)
@api.depends('amount_total')
def _compute_is_high_value(self):
for order in self:
order.is_high_value = order.amount_total >= 10000
Kun käytetään store=True, lasketut arvot tallennetaan tietokantaan, jolloin ne ovat käytettävissä hakusuodattimissa ja luettelonäkymän ryhmittelyssä ilman, että niitä lasketaan uudelleen jokaisella sivun latauksella.
XML-RPC API:n käyttäminen
Jos hallitset Odoo-mukautuksia ohjelmallisesti, esimerkiksi osana käyttöönotto-putkea tai etäkonfigurointiskriptiä, Boolean-kenttiä voidaan luoda XML-RPC API:n kautta ir.model.fields -mallissa:
field_id = models.execute_kw(
ODOO_DB, uid, ODOO_API_KEY,
'ir.model.fields', 'create',
[{
'name': 'x_needs_manual_review',
'field_description': 'Needs Manual Review',
'model_id': model_id,
'ttype': 'boolean',
'state': 'manual',
}]
)
Arvo state: manual kertoo Odoolle, että tämä kenttä on luotu moduulin ulkopuolella, mikä on oikea asetus kentille, jotka on luotu Studion tai API:n kautta. Näin Dasolo käsittelee etäkenttien luomista asiakkaille osana automatisoituja konfigurointityönkulkuja.
Parhaat käytännöt
1. Määritä aina oletusarvo
Vaikka Odoo palauttaa False Boolean-kentille, joilla ei ole oletusarvoa, on parasta käytäntöä ilmoittaa default=False selvästi kenttäsi määrittelyssä. Se viestii aikomuksesta selkeästi kaikille, jotka lukevat mallikoodia, ja estää epäselvyyksiä, kun kenttää käytetään automatisoiduissa toiminnoissa tai suodattimissa.
2. Käytä kuvaavia nimiä, jotka luetaan kysymyksinä
Boolean-kenttien nimet toimivat parhaiten, kun ne luetaan luonnollisesti kyllä/ei-kysymyksenä. Nimet kuten is_verified, needs_approval, has_warranty tai is_key_account ovat heti ymmärrettäviä. Vältä epämääräisiä nimiä kuten flag, status tai check, jotka eivät kerro mitään siitä, mitä kenttä oikeasti edustaa.
3. Aseta copy=False hyväksyntä- ja tilalippuille
Jos Boolean-kenttäsi edustaa tilaa, joka ei saisi siirtyä, kun tietue kopioidaan, esimerkiksi "on hyväksytty" tai "on lähetetty", lisää aina copy=False. Muuten tietueen kopioiminen kopioi lipun arvon, mikä voi johtaa siihen, että tietueet näyttävät olevan hyväksyttyjä tai lähetettyjä, vaikka ne eivät ole käyneet läpi oikeaa prosessia.
4. Käytä laskettuja Boolean-kenttiä johdettuihin tiloihin
Vältä palvelintoimintoja tai Python-koodia, joka päivittää manuaalisesti Boolean-kenttää muiden kenttämuutosten seurauksena. Sen sijaan määrittele se laskettuna kenttänä @api.depends() -komennolla. Tämä pitää logiikkasi yhdessä paikassa, toimii automaattisesti jokaisella tallennuksella ja on paljon helpompi ylläpitää ja virheenkorjata kuin hajautetut kirjoitusoperaatiot useissa paikoissa koodipohjassa.
5. Lisää Boolean-kenttiä hakunäkymiin, kun niitä käytetään suodattamiseen
Jos käyttäjät tarvitsevat säännöllisesti suodattaa tietueita Boolean-kentän perusteella, lisää se nimenomaisesti hakunäkymään. Studiolla, ota käyttöön hakuvaihtoehto kenttäominaisuuksien paneelissa. Koodissa lisää se <search> -näkymän XML:ään. Tämä antaa käyttäjille puhtaan suodatinpainikkeen hakupalkkiin sen sijaan, että heidän olisi pakko käyttää edistyneitä suodattimia joka kerta.
Yleiset ansat
Booleanin käyttäminen tilassa, jossa on enemmän kuin kaksi vaihtoehtoa
Tämä on yleisin virhe, jonka tiimit tekevät Boolean-kenttien kanssa. Jos tietue voi olla yhdessä kolmesta tai useammasta tilasta, kuten "odottaa", "hyväksytty" ja "hylätty", Boolean-kenttä on väärä työkalu. Päädyt lisäämään toisen Booleanin, sitten kolmannen, ja logiikasta tulee mahdotonta hallita. Käytä sen sijaan valintakenttää tai asianmukaista tilatyönkulkua. Boolean-kentät ovat todella binaarisia tilanteita varten.
Unohtaminen asettaa copy=False hyväksyntälippuille
Kun käyttäjät kopioivat tietueita Odoossa, kaikki kenttäarvot kopioidaan oletusarvoisesti. Tila, joka on merkitty "hyväksytyksi" tai "arvioiduksi", saa nämä liput asetettua True kopiossa heti. Jos kopioidun tietueen pitäisi alkaa puhtaalta pöydältä, lisää copy=False jokaiseen lippuun, joka edustaa suoritettua toimintoa tai saavutettua tilaa.
Kentän lisääminen hakunäkymään
Boolean-kenttä, jota käyttäjien on suodatettava, mutta joka ei ole hakunäkymässä, pakottaa heidät avaamaan edistyneen suodatinvalintaikkunan joka kerta. Tämä hidastaa päivittäisiä työnkulkuja merkittävästi. Jos lisäät Boolean-kentän, jota ihmiset käyttävät tietueiden löytämiseen, ota ylimääräinen askel ja lisää se hakunäkymään samanaikaisesti.
Boolean-kentän käyttäminen aktiivisen kentän sijasta
Odoossa on useimmissa malleissa sisäänrakennettu active-kenttä, joka hallitsee, näkyvätkö tietueet standardinäkymissä. Jos Boolean-kenttäsi on tarkoitettu tietueiden piilottamiseen tai arkistointiin, käytä alkuperäistä active-kenttää ja sen kytkentämekanismia sen sijaan, että rakentaisit mukautetun näkyvyysratkaisun. Tämä pitää tietomallisi linjassa Odoon standardikäyttäytymisen kanssa ja toimii hyvin käyttöliittymässä jo rakennettujen arkistointi- ja purku-toimintojen kanssa.
Laskennalliset Boolean-kentät ilman store=True suodattimissa
Jos luot laskennallisen Boolean-kentän ja yrität käyttää sitä hakusuodattimissa tai listanäkymän ryhmittelyssä ilman store=True, Odoo nostaa virheen tai ohittaa suodattimen hiljaa. Ei-tallennetut laskennalliset kentät ovat olemassa vain muistissa eivätkä niitä voida käyttää SQL-kyselyissä. Jos laskennallista Boolean-kenttää tarvitaan suodatettavaksi tai raportoitavaksi, lisää aina store=True kenttä määrittelyyn.
Yhteenveto
Boolean-kenttä on sellainen kenttä, jota lakkaat huomaamasta juuri siksi, että se toimii niin hyvin. Se on kaikkialla Odoossa, active-lipusta, joka hallitsee tietueiden näkyvyyttä, is_published-kenttään, joka ohjaa verkkosivustoasi, kymmeniin mukautettuihin lippuihin, joita yritykset lisäävät omiin työnkulkuihinsa joka päivä.
Ymmärtäminen siitä, miten se käyttäytyy Odoon tietomallissa, miten se konfiguroidaan oikein oikeilla oletusarvoilla ja attribuuteilla, ja milloin sitä käytetään verrattuna muihin kenttätyyppeihin, kuten Valintaan, auttaa sinua rakentamaan toteutuksia, jotka ovat puhtaita, ennakoitavia ja helppoja ylläpitää.
Hyvin toteutettu Boolean-kenttä on loppukäyttäjälle näkymätön. Se vain toimii. Väärin käytetty Boolean-kenttä aiheuttaa hämmennystä, korruptoituneita tiloja ja kasvavan määrän kiertoteitä. Ero johtuu sääntöjen tuntemisesta ja niiden johdonmukaisesta soveltamisesta.
Dasolossa autamme yrityksiä toteuttamaan, mukauttamaan ja optimoimaan Odoota kaikilla osastoilla. Olitpa sitten tarvitsemasi apua puhtaan tietomallin suunnittelussa, mukautettujen kenttien lisäämisessä työnkulkuihisi tai koko Odoo-moduulin rakentamisessa alusta alkaen, tiimimme on täällä tukemassa sinua. Ota meihin yhteyttä ja keskustellaan Odoo-projektistasi.