Hoppa till innehåll

Stock.move Modellen: Förstå Odoos Lagerförflyttningsarkitektur

En komplett guide till Odoos centrala lagerförflyttningsmodell för utvecklare och funktionella konsulter
10 mars 2026 av
Stock.move Modellen: Förstå Odoos Lagerförflyttningsarkitektur
Dasolo
| Inga kommentarer ännu

Introduktion


I Odoo definierar modeller hur data struktureras och lagras i databasen. Varje del av affärsdata du arbetar med, från försäljningsorder till fakturor till lagerförflyttningar, finns i en modell.


Att förstå Odoo-modeller är avgörande för både utvecklare och funktionella konsulter. Modeller är grunden för Odoos dataarkitektur. De definierar fält, relationer och affärslogik.


Denna artikel fokuserar på en av de viktigaste modellerna i Odoo: stock.move. Oavsett om du bygger anpassade lagermoduler, integrerar externa system eller konfigurerar lagerarbetsflöden, kommer du att arbeta med denna modell.

Vad är stock.move-modellen


Modellen stock.move representerar en enskild lagerförflyttning i Odoo. Den definierar överföringen av en produkt från en plats till en annan. Varje gång varor lämnar en hylla, flyttas mellan lager eller levereras till en kund, skapas en stock.move-post.


Denna modell i Odoo används av modulen Lager (Stock). Försäljning, Inköp, Tillverkning och e-handel skapar alla stock.move-poster när de utlöser lageroperationer. När du bekräftar en leveransorder, tar emot varor från en leverantör eller slutför en tillverkningsorder, skapar eller uppdaterar du stock.move-poster.


Modellen definieras i lager-modulen. Andra moduler utökar den genom Odoo-modellärvande. Försäljning lägger till sale_line_id. Inköp lägger till purchase_line_id. Tillverkning lägger till production_id. Varje modul lägger till vad den behöver utan att duplicera den grundläggande strukturen.

Nyckelfält i modellen


Här är de viktigaste Odoo-fälten i modellen stock.move. Att förstå dessa kommer att hjälpa dig att arbeta effektivt med lagerförflyttningar.


1. name

Typ: Char. Detta fält lagrar namnet eller beskrivningen av förflyttningen. Det byggs vanligtvis från produktens namn och mängd. Visas i många Odoo-vyer och är den primära identifieraren för förflyttningen i listor.


2. product_id

Typ: Many2one (product.product). Produkten som flyttas. Detta är ett obligatoriskt fält. Varje lagerförflyttning måste referera till en produkt. Odoo använder detta för att spåra mängder och tillämpa lagerregler.


3. product_uom

Typ: Many2one (uom.uom). Måttenheten för mängden. Obligatorisk. Matchar vanligtvis produktens standard UoM. Odoo validerar att mängderna uttrycks i denna enhet.


4. product_uom_qty

Typ: Float. Mängden som ska flyttas i produktens måttenhet. Detta är den efterfrågade mängden. När förflyttningen är klar är quantity_done den faktiska mängden som har bearbetats.


5. kvantitet

Typ: Float. Ett beräknat eller visningsfält som visar kvantiteten. Används ofta i vyer för användarvänlig visning. Kan vara samma som product_uom_qty eller ett konverterat värde.


6. location_id

Typ: Many2one (stock.location). Källplatsen. Där produkten kommer ifrån. Obligatorisk. För utgående flyttningar är detta lagerplatsen. För inkommande flyttningar kan det vara en leverantör eller produktionsplats.


7. location_dest_id

Typ: Many2one (stock.location). Destinationsplatsen. Där produkten går. Obligatorisk. För inkommande flyttningar är detta lagerplatsen. För utgående flyttningar kan det vara en kund eller skrotplats.


8. picking_id

Typ: Many2one (stock.picking). Överförings- eller plockdokumentet som grupperar denna flytt. En leveransorder, mottagning eller intern överföring. Flyttningar grupperas efter plock för användaroperationer.


9. picking_type_id

Typ: Many2one (stock.picking.type). Operationstypen. Definierar om detta är en utgående leverans, inkommande mottagning eller intern överföring. Styr arbetsflödet och standardplatser.


10. status

Typ: Val. Den aktuella statusen för flytten. Värden: utkast, väntande, bekräftad, tilldelad, klar, avbruten. Utkast är ännu inte bekräftad. Tilldelad betyder att lagret är reserverat. Klar betyder att flytten är slutförd.


11. datum

Typ: Datum och tid. Det schemalagda datumet för flytten. Används för planering och schemaläggning. Odoo använder detta för att prioritera överföringar och planera operationer.


12. datum_deadline

Typ: Datum och tid. Deadline för flytten. För kundleveranser är detta ofta det lovade leveransdatumet. Används i brådskapsberäkningar.


13. ursprung

Typ: Char. Referens till det ursprungliga dokumentet. Till exempel ett SO-nummer, PO-nummer eller MO-nummer. Hjälper till att spåra flytten tillbaka till dess källa.


14. move_dest_id

Typ: Many2one (stock.move). Den destination som flytten går till i en kedja. När en flytt matar en annan (t.ex. tillverkningsutgång matar en leverans), länkar detta dem. Används för flyttkedjor och propagation.


15. move_orig_ids

Typ: One2many (stock.move). De ursprungliga flyttarna. Inversen av move_dest_id. Lista över flyttar som matar in i denna. Används för spårbarhet.


16. move_line_ids

Typ: One2many (stock.move.line). Flyttlinjerna. Detaljerad uppdelning av flytten med parti-, serienummer eller platsdetaljer. När du reserverar eller bearbetar lager skapas flyttlinjer.


17. partner_id

Typ: Many2one (res.partner). Den partner som är kopplad till rörelsen. För kundleveranser, kunden. För leveranser från leverantör, leverantören. Används för adress och rapportering.


18. company_id

Typ: Many2one (res.company). I flerföretagsinställningar anger detta vilken Odoo-företag rörelsen tillhör. Påverkar synlighet av poster och regler mellan företag.


19. quantity_done

Typ: Float. Den mängd som har bearbetats eller gjorts. När användaren plockar eller tar emot, uppdateras detta. Rörelsen är klar när quantity_done är lika med product_uom_qty.


20. reserved_availability

Typ: Float. Den mängd som har reserverats för denna rörelse. Lager reserveras när rörelsen tilldelas. Detta fält visar hur mycket som är tillgängligt.


21. create_date

Typ: Datetime. Lagrar datum och tid när posten skapades. Hanteras automatiskt av Odoo. Användbart för rapportering och granskning.


22. write_date

Typ: Datetime. Lagrar datum och tid för den senaste ändringen. Också automatiskt hanterad. Hjälper till att spåra när data senast uppdaterades.


23. sekvens

Typ: Heltal. Visningsordning inom en plockning. Används för att sortera rörelser i användargränssnittet. Lägre nummer visas först.


24. prioritet

Typ: Val. Brådskande nivå. Ofta 0 för normal, 1 för brådskande. Används i schemaläggning och planering. Brådskande rörelser kan prioriteras i operationer.


25. beskrivning_plockning

Typ: Char. En beskrivning eller anteckning för rörelsen. Visas på plockdokument. Användbart för särskilda instruktioner eller hanteringsanteckningar.


26. referens

Typ: Char. Intern referens eller kod. Kan användas för extern systemkartläggning eller anpassad spårning.


27. grupp_id

Typ: Many2one (procurement.group). Inköpsgruppen. Grupperar relaterade rörelser från samma inköp (t.ex. en enskild försäljningsorder). Används för planering och kedjning.


28. inköpsmetod

Typ: Val. Tillverka för lager eller tillverka på beställning. Bestämmer om lager tas från befintlig inventering eller utlöses för produktion/inköp.


29. sale_line_id

Typ: Many2one (sale.order.line). Lagt till av Försäljningsmodulen. Kopplar rörelsen till den försäljningsorderlinje som utlöste den. Används för spårbarhet och rapportering.


30. purchase_line_id

Typ: Many2one (purchase.order.line). Lagt till av Inköpsmodulen. Kopplar rörelsen till inköpsorderlinjen. Används vid mottagning av varor från leverantörer.


31. production_id

Typ: Many2one (mrp.production). Lagt till av Tillverkning. Kopplar rörelsen till tillverkningsordern. Används för förbrukning av råmaterial och utmatning av färdiga produkter.


32. active

Typ: Boolean. Mjuk raderingsflagga. När den är False, arkiveras posten och döljs från standardvyer. Poster raderas inte fysiskt.

Hur denna modell används i affärsarbetsflöden


1. Kundleverans

När en försäljningsorder bekräftas skapar Odoo stock.move-poster för varje produktlinje. Varje rörelse har location_id som lagerplats och location_dest_id som kundens plats. Rörelserna grupperas i en plockning (leveransorder). När lagret plockar och skickar, uppdateras quantity_done och rörelsens tillstånd blir klart.


2. Leverantörsmottagning

När en inköpsorder bekräftas skapar Odoo stock.move-poster för inkommande varor. location_id är leverantörens plats, location_dest_id är lagerplatsen. Rörelserna grupperas i en mottagning. När varorna anländer, validerar användaren och quantity_done sätts.


3. Intern överföring

Överföringar mellan lager eller platser skapar stock.move-poster. location_id är källlagret, location_dest_id är destinationen. Används för påfyllning, lagerbalansering eller flerlageroperationer.


4. Tillverkning

Tillverkningsorder skapar två typer av rörelser: inkommande råmaterial (från lager till produktion) och utgående färdiga produkter (från produktion till lager). fältet production_id kopplar dessa rörelser till tillverkningsordern. Rörelsekedjor via move_dest_id kopplar produktionsutgång till nedströmsleveranser.


5. Returer och Skrot

Kundreturer skapar omvända rörelser. Skrotningsoperationer skapar rörelser till en skrotplats. Den samma stock.move-modellen hanterar alla dessa flöden. picking_type_id bestämmer operationstyp och arbetsflöde.

Hur utvecklare utökar denna modell


Utvecklare utökar stock.move med flera mönster. Odoo-modellarv är den huvudsakliga mekanismen.


Modellarv

Använd _inherit = 'stock.move' för att utöka modellen. Lägg till nya fält, åsidosätt metoder eller lägg till begränsningar. Den ärvda modellen i Odoo håller dina ändringar i en separat modul för enkla uppgraderingar.


Lägga till fält

Definiera nya Odoo-fält i din ärvda modell. Använd rätt fälttyp: Char, Many2one, Boolean, Integer, Text, Selection. Tänk på företagsberoende fält för flera företag. För lageröverföringar inkluderar vanliga utvidgningar anpassade spårningsnummer, transportörreferenser eller batchattribut.


Python-utvidgningar

Överskriv _action_done, _action_assign eller _action_cancel för att lägga till logik. Använd super() för att anropa den ursprungliga. Var försiktig med lageruppdateringar och kedjande flyttningar. API-modellen i Odoo exponerar dessa metoder för utvidgning.


Odoo Studio

Odoo Studio låter dig lägga till fält utan kod. Bra för snabba anpassningar som anpassade fält på flyttformulär. För komplex logik eller arbetsflödesändringar är anpassade moduler mer underhållbara.

Bästa praxis


  • Se alltid till att location_id och location_dest_id är korrekt inställda. Felaktiga platser kan orsaka felaktiga lager nivåer.
  • Använd picking_id för att gruppera relaterade flyttningar. Skapa inte flyttningar utan en picking när de tillhör en överföring.
  • När du bygger API-integrationer, använd XML-RPC eller JSON-RPC API. stock.move-modellen är helt exponerad. Karta externa ID:n noggrant.
  • För anpassade fält, använd x_ prefix eller ett modulprefix för att undvika konflikter med framtida Odoo-versioner.
  • Använd move_dest_id och move_orig_ids för spårbarhet. När du skapar kedjade flyttningar programmässigt, ställ in dessa länkar korrekt.
  • Överväg quantity_done vs product_uom_qty när du validerar. Delvisa leveranser är tillåtna.

Vanliga misstag


  • Skapa flyttningar med felaktiga plats typer. Källa och destination måste vara kompatibla (t.ex. inte båda kundplatser).
  • Modifiera product_uom_qty efter att flyttlinjer existerar. Detta kan orsaka lagerinkonsekvenser. Avbryt och återskapa om det behövs.
  • Glöm inte att ställa in ursprung. Utan ursprung är det svårt att spåra en flytt tillbaka till sitt källdokument.
  • Överskrider _action_done utan att kalla super(). Detta kan bryta inventarieuppdateringar och andra moduler.
  • Skapar rörelser direkt utan att gå igenom rätt arbetsflöde (t.ex. stock.picking). Att kringgå plockningen kan bryta reservation och tilldelning.
  • Ignorerar move_dest_id när man delar eller slår samman rörelser. Kedjade rörelser kan bli föräldralösa.

Slutsats


Modellen stock.move är central för Odoo-inventariet. Den lagrar varje rörelse av varor från en plats till en annan. Att förstå dess fält och hur moduler utökar den kommer att hjälpa dig att konfigurera, anpassa och integrera Odoo effektivt.


Oavsett om du är en funktionell konsult som kartlägger lagerprocesser eller en utvecklare som bygger anpassade moduler, kommer en solid förståelse av stock.move att spara tid och förhindra fel.

Behöver du hjälp med din Odoo-implementering?


Dasolo hjälper företag att implementera, anpassa och optimera Odoo. Vi specialiserar oss på API-integrationer och Odoo-utveckling. Vårt team har djup erfarenhet av Odoo:s dataarkitektur och modeller som stock.move.


Om du behöver hjälp med din Odoo-implementering, anpassade moduler eller integrationer, är vi här för att hjälpa till. Boka en demo för att diskutera ditt projekt.

Stock.move Modellen: Förstå Odoos Lagerförflyttningsarkitektur
Dasolo 10 mars 2026
Dela detta inlägg
Logga in att lämna en kommentar