Siirry sisältöön

Odoo stock.move -malli: Kuinka varaston siirrot toimivat

Täydellinen opas: Odoon varaston liiketapahtumien ydinkonsepti kehittäjille ja toiminnallisille konsultseille
10. maaliskuuta 2026 kirjoittanut
Odoo stock.move -malli: Kuinka varaston siirrot toimivat
Dasolo
| Ei vielä kommentteja

Johdanto


Odoossa tieto on järjestetty malleihin: ne määrittävät, miten yrityksen tiedot tallennetaan ja liittyvät toisiinsa. Myynnit, laskut ja varastosiirrot — kaikki tallennetaan malleihin, jotka toimivat järjestelmän tietorakenteen selkärankana.


Mallien tuntemus on olennaista sekä kehittäjille että prosessiasiantuntijoille. Mallit kertovat, mitä kenttiä on, miten tietueet linkittyvät ja missä kohtaa liiketoimintasäännöt hyppäävät peliin — siksi ne ovat Odoon arkkitehtuurin kulmakivi.


Tässä tekstissä keskitytään yhteen Odoon keskeisistä malleista: stock.move. Jos rakennat varaston omaa logiikkaa, yhdistät ulkoisia järjestelmiä tai määrittelet inventaariprosesseja, tulet törmäämään tähän malliin usein.

Mikä on stock.move-malli


Stock.move edustaa yhtä yksittäistä tavaransiirtoa järjestelmässä: se kuvaa tuotteen siirtymisen paikasta A paikkaan B. Joka kerta kun hyllyltä otetaan tavaraa, varastoa siirretään tai lähetys lähetetään asiakkaalle, järjestelmään syntyy stock.move-tietue.


Inventaario-moduuli (Inventory/Stock) luo ja käsittelee stock.move-tietueita. Myynti, ostot, valmistus ja verkkokauppa tuottavat siirtoja aina kun varastotoimenpiteitä tarvitaan — esimerkiksi toimituksen vahvistus tai tavaran vastaanotto päivittää näitä tietueita.


Mallin ydin sijaitsee stock-moduulissa, mutta muut moduulit laajentavat sitä perintämallien avulla. Myynti lisää viittauksen myyntiriville, ostot liittävät ostorivin ja valmistus yhdistää siirrot valmistustilaukseen — kukin lisäys täydentää ydintä ilman sen kopiointia.

Tärkeimmät kentät mallissa


Seuraavaksi käyn läpi stock.move-mallin tärkeimmät kentät. Näiden ymmärtäminen auttaa sinua hallitsemaan varastosiirtoja oikein ja välttämään yleisiä sudenkuoppia.


1. name

Tyyppi: Char. Tämä kenttä pitää yllä siirron kuvausta tai nimeä, joka näkyy listoissa ja näkymissä. Usein nimi muodostuu tuotteen nimestä ja määrästä, ja se toimii käyttäjän ensimmäisenä tunnisteena siirrolle.


2. product_id

Tyyppi: Many2one (product.product). Siirrettävä tuote. Pakollinen kenttä — jokainen siirto viittaa tuotteeseen, ja tämä tieto on tärkeä määrien seurannassa sekä varastonsäännöissä.


3. product_uom

Tyyppi: Many2one (uom.uom). Tämän siirron mittayksikkö. Usein sama kuin tuotteen oletusyksikkö ja järjestelmä varmentaa, että määrät ovat tässä yksikössä.


4. product_uom_qty

Tyyppi: Float. Siirron pyydetty määrä siinä mittayksikössä. Tämä on suunniteltu/vaadittu määrä — toteutunut määrä kirjataan erilliseen kenttään, kun siirto käsitellään.


5. quantity

Tyyppi: Float. Näytettävä tai laskettu määrä, jota käytetään käyttöliittymässä. Saattaa olla sama kuin product_uom_qty tai toiseen yksikköön konvertoitu arvo käyttäjäystävällisyyttä varten.


6. location_id

Tyyppi: Many2one (stock.location). Lähdepaikka eli mistä tavara otetaan. Pakollinen. Lähtöpaikka voi olla varasto, toimittaja tai tuotantopaikka riippuen operaatio-tyypistä.


7. location_dest_id

Tyyppi: Many2one (stock.location). Kohdepaikka eli minne tavara siirtyy. Pakollinen. Vastaanoton kohde voi olla varasto, asiakas tai hävitysalue tilanteesta riippuen.


8. picking_id

Tyyppi: Many2one (stock.picking). Siirto ryhmitellään picking-dokumenttiin — esimerkiksi toimitus, vastaanotto tai sisäinen siirto. Picking tekee siirroista helpommin hallittavia käyttäjälle.


9. picking_type_id

Tyyppi: Many2one (stock.picking.type). Operaation tyyppi: lähteekö tavara asiakkaalle, saapuuko se toimittajalta vai siirretäänkö sisäisesti. Tämä ohjaa työnkulkua ja oletuspaikkoja.


10. state

Tyyppi: Selection. Siirron tila: draft, waiting, confirmed, assigned, done, cancelled. Esimerkiksi assigned tarkoittaa, että varaukset on tehty ja done että siirto on suoritettu loppuun.


11. date

Tyyppi: Datetime. Suunniteltu ajankohta siirrolle. Käytetään ajoituksessa ja priorisoinnissa, kun varastotoimia suunnitellaan.


12. date_deadline

Tyyppi: Datetime. Viimeinen sallittu ajankohta siirrolle — usein luvattu toimituspäivä asiakkaalle. Auttaa määrittämään kiireellisyyden.


13. origin

Tyyppi: Char. Viittaus alkuperäiseen dokumenttiin, kuten myynti- tai ostotilaukseen tai valmistusnumeroon. Helpottaa jäljitettävyyttä ja raportointia.


14. move_dest_id

Tyyppi: Many2one (stock.move). Linkki seuraavaan siirtoon ketjussa. Kun yhden siirron tulos ruokkii toista (esim. valmistuksen lähtö tavaran toimitukseen), tämä kenttä yhdistää ne.


15. move_orig_ids

Tyyppi: One2many (stock.move). Alkuperäiset siirrot, jotka syöttävät tätä siirtoa. Tämä on move_dest_id:n käänteinen suhde ja auttaa kokonaisketjun seuraamisessa.


16. move_line_ids

Tyyppi: One2many (stock.move.line). Tarkennetut siirtorivit, joissa voi olla erä- tai sarjanumerot sekä paikkakohtaiset tiedot. Kun varaus tehdään tai siirto käsitellään, näistä syntyy rivejä.


17. partner_id

Tyyppi: Many2one (res.partner). Liittyvä yhteistyökumppani: asiakas toimituksissa, toimittaja vastaanotoissa. Käytetään myös osoite- ja raportointitiedoissa.


18. company_id

Tyyppi: Many2one (res.company). Moniyritysmäärityksissä kertoo, mille yritykselle siirto kuuluu. Vaikuttaa näkyvyyteen ja yritysten välisiin sääntöihin.


19. quantity_done

Tyyppi: Float. Todellinen käsitelty määrä. Kun varastotyöntekijä merkitsee tavarat poimituksi tai vastaanotetuksi, tämä kenttä päivittyy. Siirto katsotaan tehdyksi kun quantity_done vastaa product_uom_qty:tä.


20. reserved_availability

Tyyppi: Float. Kuinka paljon määrää on varattu tälle siirrolle. Varaus tehdään assigned-tilassa ja tämä kenttä kertoo käytettävissä olevan varauksen.


21. create_date

Tyyppi: Datetime. Tallentaa tietueen luontiajankohdan. Odoon hallinnoima automaattinen kenttä, hyödyllinen auditointeihin ja raportteihin.


22. write_date

Tyyppi: Datetime. Tallentaa viimeisimmän muokkauksen ajan. Automaattisesti ylläpidetty, auttaa seuraamaan muutoksia.


23. sequence

Tyyppi: Integer. Näyttöjärjestys pickingin sisällä. Pienemmät arvot näkyvät ennen suurempia, joten tätä käytetään siirtojen järjestämiseen käyttöliittymässä.


24. priority

Tyyppi: Selection. Kiireellisyystaso, esimerkiksi normaali tai kiireellinen. Vaikuttaa ajoitukseen ja resurssien kohdentamiseen varasto-operaatioissa.


25. description_picking

Tyyppi: Char. Vapaa tekstikenttä poimintaohjeille tai huomautuksille, joka näkyy picking-dokumenteissa esimerkiksi käsittelyohjeiden kertomista varten.


26. reference

Tyyppi: Char. Sisäinen viite tai koodi — hyödyllinen integraatioissa tai kun halutaan säilyttää ulkoisia tunnisteita.


27. group_id

Tyyppi: Many2one (procurement.group). Hankintaryhmä, joka yhdistää samasta hankinnasta syntyneet siirrot, kuten yhden myyntitilauksen rivit. Käytetään suunnittelussa ja ketjutuksessa.


28. procure_method

Tyyppi: Selection. Määrittää tehdäänkö varastosta vai käynnistetäänkö tuotanto/osto (make to stock vs make to order). Vaikuttaa siihen, miten tarve hoidetaan.


29. sale_line_id

Tyyppi: Many2one (sale.order.line). Myyntimoduulin lisäämä kenttä, joka yhdistää siirron sitä luoneeseen myyntiriviin — tärkeä jäljitettävyydelle.


30. purchase_line_id

Tyyppi: Many2one (purchase.order.line). Ostomoduulin kenttä, joka linkkaa siirron ostoriville, kun tavara vastaanotetaan toimittajalta.


31. production_id

Tyyppi: Many2one (mrp.production). Valmistusmoduulin kenttä, joka liittää raaka-aine- ja tuotossiirrot tiettyyn valmistustilaukseen.


32. active

Tyyppi: Boolean. Pehmeä poistoflagi — kun False, tietue arkistoidaan eikä näy oletusnäkymissä. Tietueita ei yleensä poisteta fyysisesti tietokannasta.

Miten mallia käytetään liiketoimintaprosesseissa


1. Asiakastoimitus

Myyntitilauksen vahvistus luo siirrot jokaiselle riville: lähde on varasto ja kohde asiakkaan osoite. Nämä siirrot ryhmitellään pickingiksi (toimitus). Kun varasto poimii ja lähettää tilauksen, quantity_done päivittyy ja siirron tila muuttuu doneksi.


2. Toimittajan vastaanotto

Ostotilauksen vahvistus luo saapuvat siirrot: lähteenä on toimittajan paikka ja kohteena varasto. Siirrot muodostavat vastaanoton; kun tavara saapuu, käyttäjä vahvistaa ja kirjattu määrä päivittyy toteutuneeksi.


3. Sisäiset siirrot

Varastojen ja paikkojen välinen siirto luo stock.move-tietueen: lähde on se varasto josta tavara lähtee ja kohde se varasto jonne se saapuu. Tällaisia käytetään täydennyksiin, varaston tasapainotukseen ja monivarastoympäristöissä.


4. Valmistus

Valmistustilaukset luovat sekä raaka-aineiden sisäänmenot että valmiiden tuotteiden ulosmenot. production_id-linkki yhdistää siirrot valmistukseen ja move_dest_id-ketjutus yhdistää valmistuksen tuotokset seuraaviin toimituksiin.


5. Palautukset ja hävitys

Asiakaspalautukset syntyvät käänteisinä siirtoina ja hävitys luo siirrot roskalokaatioon. Sama stock.move-malli hallinnoi kaikkia näitä tilanteita; picking_type_id määrittelee millainen op­er­a­tio on käynnissä.

Miten kehittäjät laajentavat tätä mallia


Kehittäjät laajentavat stock.move-mallia useilla tavoilla, joista yleisin on Odoon model inheritance -mekanismi.


Malliperintä

Käytä _inherit = 'stock.move' -ratkaisua lisätäksesi kenttiä, ylikirjoittaaksesi metodeja tai lisätäksesi rajoitteita. Perintä pitää muutoksesi erillisessä moduulissa, mikä helpottaa päivityksiä ja ylläpitoa.


Kenttien lisääminen

Lisää uusia kenttiä perityssä mallissa oikealla tyypillä: Char, Many2one, Boolean, Integer, Text tai Selection. Moniyrityksisissä ympäristöissä kannattaa harkita yritysriippuvaisia kenttiä. Varastosovelluksissa yleisiä lisäyksiä ovat vaikkapa oma seurantakoodi tai kuljetusyrityksen viitteet.


Python-laajennukset

Ylikirjoita metodeja kuten _action_done, _action_assign tai _action_cancel lisätäksesi liikelogikkaa. Käytä super()-kutsuja alkuperäisen toiminnan säilyttämiseen ja ole varovainen varastotapahtumien ja ketjutuksen kanssa.


Odoo Studio

Odoo Studio on nopea tapa lisätä kenttiä ilman koodausta — sopii pikamuutoksiin. Monimutkaisempia työnkulku- tai integraatiomuutoksia kannattaa kuitenkin tehdä moduuleina, jotta ne pysyvät hallittavina ja versiopäivitettävissä.

Parhaat käytännöt


  • Aseta aina location_id ja location_dest_id oikein. Väärät paikat johtavat helposti virheellisiin varastomääriin ja varausongelmiin.
  • Käytä picking_id:tä siirtojen ryhmittelyyn. Älä luo siirtoja irrallaan, jos ne kuuluvat tiettyyn siirtoon tai prosessiin.
  • Kun rakennat integraatioita, käytä XML-RPC- tai JSON-RPC-rajapintaa. stock.move on saatavilla API:n kautta — huolehdi, että ulkoiset ID:t ja vastaavuudet kartoitetaan tarkasti.
  • Nimeä mukautetut kentät x_-etuliitteellä tai moduulikohtaisella prefiksillä, jotta vältät konfliktit tulevien Odoo-päivitysten kanssa.
  • Hyödynnä move_dest_id:tä ja move_orig_ids:ia jäljitettävyyteen. Kun luot ketjutettuja siirtoja ohjelmallisesti, varmista että linkit ovat oikein asetettuja.
  • Huomioi quantity_done ja product_uom_qty erot — osatoimitukset ovat mahdollisia, joten validoinnissa täytyy käsitellä erot oikein.

Yleisimmät virheet


  • Luo siirtoja väärillä sijaintyypeillä. Lähteen ja kohteen on oltava loogisesti yhteensopivia (esimerkiksi kumpikaan ei saa olla asiakkaan sijainti kun kyse on sisäisestä siirrosta).
  • Muuta product_uom_qty:tä sen jälkeen kun move_line:t on luotu voi rikkoa inventaarilaskentaa. Jos määrää täytyy muuttaa, harkitse siirron perumista ja uudelleenluontia.
  • Unohda origin-kenttä vaikeuttaa jäljittävyyttä. Ilman alkuperäistä viitettä on työläämpää löytää mistä siirto on peräisin.
  • Ylikirjoita _action_done ilman super()-kutsua voi estää varasto-operaatioiden päivittymisen oikein ja rikkoa muita moduuleja.
  • Luo siirtoja suoraan ohittaen picking-työnkulun — tämä voi rikkoa varaukset ja tehtävien hallinnan, joten käytä oikeita metodeja aina kun mahdollista.
  • Jätä move_dest_id huomioimatta siirtoja pilkottaessa tai yhdistettäessä — ketjut voivat jäädä orvoiksi ja jäljitettävyys katkeaa.

Yhteenveto


Stock.move on varaston keskeinen tietomalli: se tallettaa tavaran liikkeet paikasta toiseen. Mallin kenttien ja laajennustapojen ymmärtäminen auttaa sinua konfiguroimaan, räätälöimään ja yhdistämään Odoota oikein.


Olitpa sitten prosessikonsultti joka suunnittelee varaston työnkulkuja tai kehittäjä joka rakentaa räätälöityjä moduuleja, hyvä ymmärrys stock.move:sta säästää aikaa ja vähentää virheitä.

Tarvitsetko apua Odoo-toteutuksessasi?


Dasolo auttaa yrityksiä Odoo-toteutuksissa, räätälöinnissä ja optimoinnissa. Erikoisalaamme ovat API-integraatiot ja Odoo-kehitys — tiimillämme on vankka kokemus Odoon tietomalleista kuten stock.move.


Tarvitsetko apua Odoo-toteutukseesi, mukautettuihin moduuleihin tai integraatioihin? Ota yhteyttä — autamme mielellämme. Varaa demo keskustellaksesi projektistasi.

Odoo stock.move -malli: Kuinka varaston siirrot toimivat
Dasolo 10. maaliskuuta 2026
Jaa tämä kirjoitus
Kirjaudu sisään jättääksesi kommentin