Introduktion
I Odoo definierar modeller hur data struktureras och lagras i databasen. Varje bit affärsdata du arbetar med, från försäljningsorder till lageröverföringar till lageroperationer, 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 Odoo:s dataarkitektur. De definierar fält, relationer och affärslogik.
Denna artikel fokuserar på en av de viktigaste modellerna i Lagerappen: stock.picking. Oavsett om du bygger anpassade lagermoduler, integrerar externa system eller konfigurerar arbetsflöden, kommer du att arbeta med denna modell.
Vad är stock.picking-modellen
Modellen stock.picking representerar överföringar i Odoo. Det är den centrala platsen där lageroperationer spåras. Varje picking-post representerar en enskild överföring av varor från en plats till en annan.
Denna modell i Odoo används över hela lagerhanteringsmodulen. Mottagningar, leveranser och interna överföringar skapar alla stock.picking-poster. När du bekräftar en leveransorder från en försäljning, tar emot varor från ett köp eller flyttar lager mellan lager, skapar eller uppdaterar du en stock.picking-post.
Modellen definieras i lager-modulen. Andra moduler utökar den genom Odoo-modellärv. Försäljning lägger till leveransrelaterade fält. Inköp lägger till mottagningsarbetsflöden. Tillverkning lägger till produktionsrörelser. Varje modul lägger till vad den behöver utan att duplicera den grundläggande strukturen.
Modellen stock.picking ärver från mail.thread och mail.activity.mixin. Detta innebär att du kan spåra ändringar, lägga till chattmeddelanden och schemalägga aktiviteter på överföringar direkt.
Nyckelfält i modellen
Här är de viktigaste Odoo-fälten i modellen stock.picking. Att förstå dessa kommer att hjälpa dig att arbeta effektivt med överföringar och lageroperationer.
1. namn
Typ: Char. Detta fält lagrar referensen för överföringen. Det genereras vanligtvis automatiskt från en sekvens (t.ex. WH/OUT/00001). Det visas i rubriken på överföringsformulär och är den primära identifieraren för pickingen.
2. ursprung
Typ: Char. Referens till källdokumentet. För en leverans kan detta vara namnet på försäljningsordern. För en mottagning, inköpsordern. Det hjälper till att spåra var överföringen härstammar ifrån.
3. tillstånd
Typ: Val. Status för överföringen. Värden: Utkast, Väntar på en annan åtgärd, Väntar, Klar, Utförd, Avbruten. Varje tillstånd styr vilka åtgärder som är tillgängliga. Odoo beräknar detta från de relaterade lagerflyttningarna.
4. picking_type_id
Typ: Many2one (stock.picking.type). Operationstypen. Definierar om detta är en mottagning, leverans eller intern överföring. Obligatorisk. Varje plocktyp har standard käll- och destinationsplatser.
5. move_ids
Typ: One2many (stock.move). Lagerflyttningar. Varje rad representerar en produkt och kvantitet som ska flyttas. Detta är kärnan i överföringen. All reservations- och tillgänglighetslogik fungerar på dessa flyttningar.
6. move_line_ids
Typ: One2many (stock.move.line). De detaljerade operationerna. När du har batch- eller serienummerövervakning lagrar dessa rader de specifika batcherna och platserna. Används för plockning, packning och validering.
7. location_id
Typ: Many2one (stock.location). Källplatsen. Var produkter tas ifrån. Obligatorisk. För leveranser är detta vanligtvis lagerplatsen. För mottagningar är det leverantörens plats.
8. location_dest_id
Typ: Many2one (stock.location). Destinationsplatsen. Var produkter flyttas till. Obligatorisk. För leveranser är detta vanligtvis kundens plats. För mottagningar är det lagerplatsen.
9. partner_id
Typ: Many2one (res.partner). Kontakten. För leveranser, kunden. För mottagningar, leverantören. Används för adress på dokument och för transportintegrering.
10. scheduled_date
Typ: Datum och tid. När överföringen är planerad att behandlas. Används för planering och prioritering. Att ställa in det manuellt sätter det förväntade datumet för alla lagerflyttar.
11. datum_deadline
Typ: Datum och tid. Deadline. Kommer ofta från försäljningsordern eller inköpsordern. Används för att flagga sena överföringar och för kundens löften om datum.
12. datum_gjort
Typ: Datum och tid. När överföringen validerades eller avbröts. Endast för läsning. Ställs in automatiskt när plockningen är klar.
13. prioritet
Typ: Val. Prioritetsnivå. Produkter reserveras först för överföringar med högre prioritet. Används för brådskande beställningar.
14. flytt_typ
Typ: Val. Fraktpolicy. Värden: Så snart som möjligt (delvis leverans tillåten) eller När alla produkter är klara (allt eller inget). Påverkar när plockningen kan behandlas.
15. användar_id
Typ: Many2one (res.users). Den ansvariga användaren. Används för tilldelning och arbetsbelastningsspårning. Standardinställning är den aktuella användaren vid skapande.
16. företag_id
Typ: Many2one (res.company). Företaget. Relaterad från plocktypen. I flerföretagsinställningar avgör detta vilket företag som äger överföringen.
17. group_id
Typ: Many2one (procurement.group). Inköpsgruppen. Länkar relaterade rörelser tillsammans. Används när flera plockningar kommer från samma order.
18. backorder_id
Typ: Many2one (stock.picking). När en överföring delvis har validerats skapas en restorder för det som återstår. Detta fält länkar till den ursprungliga plockningen.
19. backorder_ids
Typ: One2many (stock.picking). Restordrarna som skapats från denna plockning. Används när du validerar delvis och behöver bearbeta resten senare.
20. return_id
Typ: Many2one (stock.picking). Om denna plockning skapades som en retur, länkar detta till den ursprungliga plockningen. Används för returarbetsflöden.
21. note
Typ: Html. Interna anteckningar. Synliga för lageranvändare. Kan inkludera särskilda instruktioner eller hanteringskrav.
22. signature
Typ: Bild. Signaturen som fångas när leveransen valideras. Används som bevis på leverans. Lagrad som en bilaga.
23. är_undertecknad
Typ: Boolean. Beräknad från signatur. Indikerar om leveransen har undertecknats.
24. ägar_id
Typ: Many2one (res.partner). Ägaren som ska tilldelas vid validering. Används för försändelse eller när produkter tillhör en tredje part.
25. paket_nivå_ids
Typ: One2many (stock.package_level). Paketnivåer vid användning av lägg i paket. Grupperar flyttlinjer i paket för frakt.
26. skapad_datum
Typ: Datetime. När posten skapades. Hanteras automatiskt av Odoo. Ärvt från basmodellen.
27. ändrad_datum
Typ: Datetime. När posten senast ändrades. Hanteras automatiskt. Ärvt från basmodellen.
28. aktiv
Typ: Boolean. Flag för mjuk radering. När den är False, arkiveras posten. Ärver från basmodellen.
Hur denna modell används i affärsarbetsflöden
1. Försäljning och Leverans
När en försäljningsorder bekräftas, skapar Odoo en leveransorder (stock.picking). Plockningen länkas till försäljningsordern via ursprung. Lagerpersonal plockar och packar, och validerar sedan. Tillståndet går från utkast till klart till gjort.
2. Inköp och Mottagning
När en inköpsorder bekräftas, skapar Odoo en inkommande mottagning. Plockningen tar emot produkter från leverantörens plats till lager. partner_id är leverantören. Validering uppdaterar lagerkvantiteter.
3. Interna Överföringar
Att flytta lager mellan lager eller platser skapar interna plockningar. picking_type_id har koden 'intern'. Plats och destination är båda interna lagerplatser.
4. Returer och Backorders
När en försäljning returneras, skapas en returplockning. return_id länkar till den ursprungliga leveransen. När en leverans delvis valideras, håller backorder_ids det återstående arbetet.
5. Tillverkning och Produktion
Tillverkningsorder skapar plockningar för råvaror (förbrukning) och färdiga produkter (produktion). stock.picking-modellen utökas av mrp-modulen för dessa flöden.
Hur utvecklare utökar denna modell
Utvecklare utökar stock.picking med flera mönster. Odoo-modellärvande är den huvudsakliga mekanismen.
Modell Arv
Använd _inherit = 'stock.picking' 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.
Python Utvidgningar
Åsidosätt button_validate, action_assign eller _create_backorder för att lägga till logik. Använd super() för att anropa den ursprungliga. Var försiktig med tillståndsövergångar och skapande av flyttningar.
Odoo Studio
Odoo Studio låter dig lägga till fält utan kod. Bra för snabba anpassningar som anpassade etiketter eller extra anteckningar. För komplex logik eller transportintegrering är anpassade moduler mer underhållbara.
Bästa praxis
- Ställ alltid in picking_type_id när du skapar plockningar manuellt. Det styr standardplatser och beteende.
- Använd fältet origin för att spåra tillbaka till källdokumentet. Det hjälper med rapportering och felsökning.
- När du bygger API-integrationer är stock.picking-modellen helt exponerad via Odoo API. Skapa flyttningar via relationen move_ids. Skapa inte plockningar utan flyttningar.
- Använd scheduled_date för planering. Det påverkar reservation och prioritering.
- För anpassade fält, använd
x_-prefixet eller ett modulprefix för att undvika konflikter med framtida Odoo-versioner.
Vanliga misstag
- Skapa plockningar utan att ställa in picking_type_id. Detta kan leda till felaktiga standardplatser.
- Ändra move_ids efter bekräftelse utan att förstå tillståndsmaskinen. Tillståndsövergångar kan vara komplexa.
- Glömma att ställa in partner_id för leveranser. Fraktföretag och dokument behöver kontakten.
- Överskrida button_validate utan att kalla super(). Detta kan bryta skapandet av backorders och andra moduler.
- Anta att move_ids och move_line_ids alltid är synkroniserade. Flyttlinjer skapas när du reserverar eller när du använder detaljerade operationer.
Slutsats
Modellen stock.picking är central för Odoo-inventariet. Den lagrar överföringar, leveranser och kvitton. 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.picking att spara tid och förhindra fel.
Redo att optimera ditt Odoo-lager
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.picking.
Om du behöver hjälp med din Odoo-implementering, anpassade lager-moduler eller integrationer, är vi här för att hjälpa till. Boka en demo för att diskutera ditt projekt.