Johdanto
Odoossa mallit määrittelevät, miten liiketoimintatiedot tallennetaan tietokantaan. Kaikki varaston ja toimitusten tiedot — tilauksista siirtoihin ja käsittelyyn — elävät malleissa, jotka määräävät tietorakenteet ja suhteet.
Mallien ymmärtäminen on tärkeää sekä kehittäjille että toiminnallisille konsultteille. Ne muodostavat Odoon tietomallin perustan: kentät, suhteet ja liiketoimintasäännöt syntyvät malleista.
Tässä artikkelissa keskitytään Inventory-sovelluksen keskeiseen malliin: stock.picking. Olitpa rakentamassa varastomoduuleja, integroimassa järjestelmiä tai määrittämässä prosesseja, tulet työskentelemään tämän mallin kanssa.
Mikä on stock.picking-malli
stock.picking edustaa Odoossa tavaransiirtoja. Se on varastotoimintojen keskitetty seuranta‑piste: jokainen picking-rivi kuvaa yhtä tavaransiirtoa sijainnista toiseen.
Mallia käytetään koko Inventory-moduulissa: vastaanotot, lähetykset ja sisäiset siirrot luovat stock.picking‑merkintöjä. Kun vahvistat myyntitilauksen toimituksen, vastaanotat ostotilauksen tuotteet tai siirrät varastoa, käsittelet tai muokkaat stock.picking‑tietuetta.
Mallin määrittely löytyy stock-moduulista, ja muut moduulit laajentavat sitä perintämallilla. Myynti lisää toimitukseen liittyviä kenttiä, osto vastaanottoihin liittyvät työnkulut ja valmistus liittää omat siirtonsa — kukin moduuli täydentää ydintä ilman rakenteen kopiointia.
stock.picking perii myös mail.thread- ja mail.activity.mixin -ominaisuudet. Tämä mahdollistaa muutosten seurannan, keskusteluketjut (chatter) ja aktiviteettien ajastamisen suoraan siirroille.
Mallin tärkeimmät kentät
Seuraavassa on listattu tärkeimmät kentät, joita kannattaa tuntea työskennellessäsi siirtojen ja varastotoimintojen kanssa. Niiden merkityksen ymmärtäminen helpottaa konfigurointia ja integraatioita.
1. name
Tyyppi: Char. Tallentaa siirron tunnisteen, usein automaattisesti sekvenssistä (esim. WH/OUT/00001). Näkyy siirron otsikossa ja toimii ensisijaisena tunnisteena.
2. origin
Tyyppi: Char. Lähdedokumentin viite. Toimituksessa se voi olla myyntitilauksen tunnus, vastaanotossa ostotilauksen tunnus. Auttaa jäljittämään siirron alkuperän.
3. state
Tyyppi: Selection. Siirron tila. Arvot kuten Draft, Waiting Another Operation, Waiting, Ready, Done, Cancelled. Tila määrittää käytettävissä olevat toiminnot ja perustuu liittyviin stock.move‑riveihin.
4. picking_type_id
Tyyppi: Many2one (stock.picking.type). Määrittää toimintatyypin: vastaanotto, lähetys tai sisäinen siirto. Pakollinen. Jokaisella tyypillä on oletuslähde- ja kohdesijainnit.
5. move_ids
Tyyppi: One2many (stock.move). Varastosiirrot eli rivit, joissa kerrotaan siirrettävä tuote ja määrä. Näillä rivillä toimii varauksen ja saatavuuden logiikka.
6. move_line_ids
Tyyppi: One2many (stock.move.line). Tarkennetut toiminnot. Erä- tai sarjanumeroseurannassa nämä rivit pitävät kirjaa yksittäisistä eristä ja sijainneista — tärkeitä pakkaamisessa ja validoinnissa.
7. location_id
Tyyppi: Many2one (stock.location). Lähtösijainti — mistä tuotteet otetaan. Pakollinen. Toimituksissa yleensä varastopaikka, vastaanotoissa tavarantoimittajan sijainti.
8. location_dest_id
Tyyppi: Many2one (stock.location). Kohdesijainti — mihin tuotteet siirretään. Pakollinen. Toimituksissa asiakas, vastaanotoissa varasto.
9. partner_id
Tyyppi: Many2one (res.partner). Yhteyshenkilö: asiakas toimituksissa tai toimittaja vastaanotoissa. Käytetään osoitetiedoissa ja kuljetusintegraatioissa.
10. scheduled_date
Tyyppi: Datetime. Ajankohta, jolloin siirto on ajastettu käsiteltäväksi. Vaikuttaa suunnitteluun ja priorisointiin; asettamalla sen määritellään odotettu käsittelyaika kaikille siirroille.
11. date_deadline
Tyyppi: Datetime. Määräaika. Usein peräisin myynti- tai ostotilauksesta. Auttaa havaitsemaan myöhästyneet toimitukset ja lupauspäivien seurannassa.
12. date_done
Tyyppi: Datetime. Milloin siirto validoitiin tai peruutettiin. Kenttä on vain luku - Odoo asettaa sen automaattisesti, kun picking on valmis.
13. priority
Tyyppi: Selection. Prioriteettitaso. Ennen kaikkea korkeamman prioriteetin siirroille varataan tuotteita ensin — käytännössä tärkeä kiireellisissä tilauksissa.
14. move_type
Tyyppi: Selection. Toimituskäytäntö: heti (osittaiset toimitukset sallittu) tai kun kaikki valmiina (kaikki tai ei mitään). Vaikuttaa milloin siirto voidaan käsitellä.
15. user_id
Tyyppi: Many2one (res.users). Vastuu‑käyttäjä. Käytetään työnjakoon ja kuormituksen seurantaan; oletusarvo on luontihetken käyttäjä.
16. company_id
Tyyppi: Many2one (res.company). Yritys. Periytyy picking‑tyypistä ja määrittää, minkä yrityksen alle siirto kuuluu moniyritysympäristössä.
17. group_id
Tyyppi: Many2one (procurement.group). Procurement‑ryhmä. Kytkee yhteen saman tilauksen tuottamat siirrot ja helpottaa ryhmittelyä.
18. backorder_id
Tyyppi: Many2one (stock.picking). Kun siirto validoidaan osittain, jäljelle jäävälle työlle luodaan backorder; tämä kenttä linkittää siihen alkuperäiseen pickingiin.
19. backorder_ids
Tyyppi: One2many (stock.picking). Tämän siirron avulla luodut backorderit. Hyödyllinen, kun osa toimituksesta jää käsittelemättä ja jatkotoimet ajastetaan myöhemmäksi.
20. return_id
Tyyppi: Many2one (stock.picking). Jos kyseessä on palautus, tämä kenttä viittaa alkuperäiseen siirtoon ja helpottaa palautusprosessin hallintaa.
21. note
Tyyppi: Html. Sisäiset muistiinpanot. Varastokäyttäjät näkevät ohjeet tai erityisvaatimukset käsittelyä varten.
22. signature
Tyyppi: Image. Toimituksen vahvistukseen tallennettu allekirjoitus. Todiste toimituksesta, tallennetaan liitteenä.
23. is_signed
Tyyppi: Boolean. Johdettu kenttä signature‑arvosta; kertoo, onko toimitus allekirjoitettu.
24. owner_id
Tyyppi: Many2one (res.partner). Omistaja, joka voidaan asettaa validoinnissa. Käytetään konsignaatioissa tai kun tuotteet kuuluvat kolmannelle osapuolelle.
25. package_level_ids
Tyyppi: One2many (stock.package_level). Pakkaustasot Put In Pack -toiminnossa. Ryhmittelee move‑rivit paketeiksi lähetystä varten.
26. create_date
Tyyppi: Datetime. Kuvaa, milloin tietue luotiin. Odoon hallinnoima metadata, peritty perusmallista.
27. write_date
Tyyppi: Datetime. Viimeisin muokkausaika. Automaattisesti ylläpidetty.
28. active
Tyyppi: Boolean. Pehmeän poiston lippu. Kun arvo on False, tietue arkistoidaan eikä näy normaalissa listauksessa.
Miten tätä mallia käytetään liiketoimintaprosesseissa
1. Myynti ja toimitukset
Kun myyntitilaus vahvistetaan, Odoo luo toimitustilauksen (stock.picking). Picking linkittyy myyntitilaukseen origin‑kentällä. Varastohenkilöstö kerää ja pakkaa tuotteet, ja tilausten tila etenee draftista readyksi ja lopulta done‑tilaan.
2. Ostot ja vastaanotot
Ostotilauksen vahvistus luo saapuvan vastaanoton. Picking vastaanottaa tuotteet toimittajan sijainnista varastoon, partner_id on toimittaja, ja validointi päivittää varastosaldot.
3. Sisäiset siirrot
Varastojen tai sijaintien välinen siirto luo sisäisiä pickingejä, joiden picking_type_id on yleensä 'internal'. Lähde- ja kohdesijainnit ovat molemmat sisäisiä varastopaikkoja.
4. Palautukset ja backorderit
Palautustilanteessa luodaan palautus‑picking, joka linkittyy alkuperäiseen pickingiin return_id‑kentällä. Kun toimitus validoidaan osittain, backorder_ids pitää kirjaa jäljelle jäävästä työstä.
5. Valmistus ja tuotanto
Valmistusorderit luovat pickingejä raaka‑aineiden kulutukseen ja valmiiden tuotteiden vastaanottoon. mrp‑moduuli laajentaa stock.picking‑mallia näihin tuotantovirtoihin.
Miten kehittäjät laajentavat tätä mallia
Kehittäjät laajentavat stock.picking‑mallia useilla tavoilla; Odoon malli‑perintä on yleisin tapa muokata olemassa olevaa toiminnallisuutta ilman ydinmuutoksia.
Malliperintä
Käytä _inherit = 'stock.picking' laajentaaksesi mallia. Voit lisätä kenttiä, ylikirjoittaa metodeja tai lisätä rajoitteita. Perintä pitää muutokset omassa moduulissasi, mikä helpottaa päivityksiä.
Kenttien lisääminen
Määrittele uudet kentät perityssä mallissa ja valitse oikea kenttätyyppi: Char, Many2one, Boolean, Integer, Text, Selection. Moniyritysympäristössä harkitse yritysriippuvaisia kenttiä.
Python‑laajennukset
Ylikirjoita funktioita kuten button_validate, action_assign tai _create_backorder lisälogiikan liittämiseksi. Kutsu super()‑metodia, jotta alkuperäinen toiminnallisuus säilyy. Ole tarkka tilasiirtojen ja move‑luonnin kanssa.
Odoo Studio
Odoo Studio mahdollistaa kenttien lisäämisen ilman koodia — hyvä nopeisiin muutoksiin kuten lisämärkinnät tai kenttätekstit. Monimutkaisemmissa logiikoissa ja integraatioissa kannattaa kuitenkin rakentaa oma moduuli.
Parhaat käytännöt
- Aina määritä picking_type_id, kun luot pickingejä käsin. Se ohjaa oletussijainteja ja käyttökäyttäytymistä.
- Käytä origin‑kenttää jäljitettävyyteen. Se helpottaa raportointia ja vikojen etsimistä.
- API‑integraatioissa stock.picking on täysin käytettävissä Odoon API:n kautta. Luo move‑rivejä move_ids‑suhteen kautta; vältä pickingin luomista ilman moveja.
- Hyödynnä scheduled_date‑kenttää suunnittelussa. Se vaikuttaa reservointiin ja priorisointiin.
- Ota käyttöön x_‑ tai moduulikohtainen etuliite uusille kentille yhteensopivuuden varmistamiseksi tulevien Odoo‑versioiden kanssa.
Yleisimmät virheet
- Luominen pickingeistä ilman picking_type_id:tä. Tämä voi johtaa virheellisiin oletussijainteihin ja väärään käyttäytymiseen.
- move_ids‑kenttien muokkaaminen vahvistuksen jälkeen ilman ymmärrystä tilakoneesta. Tilasiirrot voivat olla monimutkaisia ja johtaa epätoivottuihin tiloihin.
- partner_id:n unohtaminen toimituksissa. Kuljetusintegraatiot ja asiakirjat tarvitsevat vastaanottajan tiedot.
- button_validate‑funktion ylikirjoittaminen ilman super()‑kutsua. Tämä voi rikkoa backorder‑luonnin ja muiden moduulien odotukset.
- Olettaminen, että move_ids ja move_line_ids ovat aina synkassa. Move line‑rivit syntyvät varauksen tai yksityiskohtaisten toimintojen yhteydessä, eivät aina automaattisesti.
Yhteenveto
stock.picking on Odoon varaston ydin: siinä tallennetaan siirrot, lähetykset ja vastaanotot. Kun tunnet mallin kentät ja laajennustavat, voit konfiguroida, räätälöidä ja integroida Odoon luotettavasti.
Olitpa toiminnallinen konsultti, joka kartoittaa varastoprosesseja, tai kehittäjä rakentamassa mukautuksia, vankka ymmärrys stock.pickingistä säästää aikaa ja vähentää virheitä.
Valmis tehostamaan Odoo-varastoasi?
Dasolo auttaa yrityksiä Odoo‑implementaatioissa, räätälöinneissä ja optimoinnissa. Erikoisosaamistamme ovat API‑integraatiot ja Odoo‑kehitys — tiimillämme on syvällinen kokemus Odoon tietomalleista kuten stock.picking.
Jos tarvitset apua Odoo‑implementaatiossa, varastomoduulien räätälöinnissä tai integraatioissa, autamme mielellämme. Varaa demo keskustellaksemme projektistasi.