Hoppa till innehåll

Förstå Odoos Produktvariantarkitektur: En Guide till Produktmodellen

En komplett guide till Odoos produktvariantmodell för utvecklare och funktionella konsulter
10 mars 2026 av
Förstå Odoos Produktvariantarkitektur: En Guide till Produktmodellen
Dasolo
| Inga kommentarer ännu

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 till produkter, lever 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 Odoo-fält, relationer och affärslogik.


Denna artikel fokuserar på en av de viktigaste modellerna i Odoo: produkt.product. Oavsett om du bygger anpassade moduler, integrerar externa system eller konfigurerar produktkataloger, kommer du att arbeta med denna modell.

Vad är produkt.product-modellen


Produkt.product-modellen representerar de faktiska produktvarianterna i Odoo. Dessa är de konkreta, säljbara och inköpsbara artiklar som visas på försäljningsorder, inköpsorder och lagerflyttningar.


Denna modell i Odoo skiljer sig från product.template. Mallen innehåller delade attribut för en produktfamilj. Produkt.product-posterna är de specifika varianterna. För en enkel produkt utan varianter finns det en produkt.product per product.template. För konfigurerbara produkter (t.ex. T-shirt med storlek och färg) är varje kombination en separat produkt.product.


Modellen definieras i produktmodulen (product). Försäljning, inköp, lager och e-handel refererar alla till produkt.product. När du lägger till en rad i en offert eller tar emot lager arbetar du med produkt.product-poster.


Produkt.product använder delegationsarv från product.template. Många Odoo-fält definieras på mallen och ärvda av varianten. Detta håller delad data på ett ställe samtidigt som det möjliggör specifika överskrivningar för varianter.

Nyckelfält i modellen


Här är de viktigaste Odoo-fälten i produkt.product-modellen. Att förstå dessa kommer att hjälpa dig att arbeta effektivt med produktvarianter.


1. namn

Typ: Char. Detta fält lagrar namnet på produktvarianten. Det visas vanligtvis i listor, formulär och dokument. För enkla produkter matchar det mallens namn. För varianter kan det inkludera attributvärden (t.ex. "T-Shirt - Blå / M").


2. product_tmpl_id

Typ: Many2one (product.template). Länkar varianten till sin föräldramall. Detta är den centrala relationen. Varje produkt.product tillhör exakt en product.template. Använd detta när du behöver ärva modell i Odoo eller utöka produktlogik.


3. default_code

Typ: Char. Intern referens eller SKU. Används för identifiering, streckkodssökning och integration med externa system. Varje variant kan ha sin egen kod.


4. streckkod

Typ: Tecken. Streckkod (EAN, UPC, etc.). Används för scanning i POS, lager och inventering. Måste vara unik över produkter när den är inställd.


5. skapelsedatum

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


6. ändringsdatum

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


7. aktiv

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


8. typ

Typ: Val. Produkttyp: Förbrukningsvara, Tjänst eller Lagringsprodukt. Förbrukningsvaror spåras inte i lager. Tjänster har inget lager. Lagringsprodukter spåras i lager. Detta styr vilka moduler och arbetsflöden som tillämpas.


9. categ_id

Typ: Many2one (product.category). Produktkategori. Används för rapportering, prissättningsregler och katalogorganisation. Kategorier kan ha en förälder-barn-hierarki.


10. listpris

Typ: Float. Försäljningspriset. Visas på offerter och används som standard när en rad läggs till. Kan åsidosättas per kund eller av prislistor.


11. standard_price

Typ: Float. Kostnadspriset. Används för lagervärdering och marginalberäkningar. Uppdateras vanligtvis av inköpsorder eller manuell inmatning.


12. uom_id

Typ: Many2one (uom.uom). Enhet för mått för försäljning och lager. Definierar hur kvantiteter uttrycks (enheter, kg, liter, etc.).


13. uom_po_id

Typ: Many2one (uom.uom). Enhet för mått för inköp. Kan skilja sig från uom_id (t.ex. köpa i lådor, sälja i enheter). Konvertering hanteras automatiskt.


14. description_sale

Typ: Html. Försäljningsbeskrivning. Visas på offerter, beställningar och fakturor. Kan inkludera formatering och produktdetaljer.


15. description_purchase

Typ: Html. Inköpsbeskrivning. Visas på inköpsorder och leverantörsfakturor. Används för intern och leverantörskommunikation.


16. sale_ok

Typ: Boolean. Kan säljas. När False är produkten gömd från försäljning och e-handel. Användbart för interna eller endast köpprodukter.


17. purchase_ok

Typ: Boolean. Kan köpas. När False är produkten gömd från köp. Användbart för tillverkade eller endast försäljningsprodukter.


18. image_1920

Typ: Binär. Produktbild i full upplösning. Odoo lagrar flera storlekar (image_512, image_256, etc.) för visning. Används i formulär, e-handel och rapporter.


19. weight

Typ: Float. Produktens vikt. Används för fraktberäkningar och logistik. Enhet beror på företagskonfiguration.


20. volume

Typ: Float. Produktens volym. Används för frakt och lagerkapacitet. Viktigt för företag med volymbegränsningar.


21. company_id

Typ: Many2one (res.company). I flerföretagsinställningar anger detta vilket företag som äger produkten. Påverkar registreringssynlighet och lager.


22. currency_id

Typ: Many2one (res.currency). Valuta för list_price och standard_price. Vanligtvis företagets valuta. Prislistor kan konvertera till andra valutor.


23. qty_available

Typ: Float. Kvantitet på lager. Beräknas från lagerkvantiteter. Endast för läsning. Används för tillgänglighetskontroller och rapporter. Endast för lagringsbara produkter.


24. virtual_available

Typ: Float. Prognostiserad kvantitet (på lager plus inkommande minus utgående). Används för tillgänglighet och påfyllning. Endast för läsning beräknat fält.


25. product_template_attribute_value_ids

Typ: Many2many. Länkar till attributvärden som definierar denna variant (t.ex. Färg=Blå, Storlek=M). Används för variantkonfiguration och filtrering.


26. sequence

Typ: Integer. Visningsordning. Används för att sortera produkter i listor och konfigurerare. Lägsta värden visas först.


27. display_name

Typ: Char. Beräknat visningsnamn. Kombinerar namn med variantattribut. Används i many2one rullgardinsmenyer och sökresultat. Endast för läsning.


28. responsible_id

Typ: Many2one (res.users). Ansvarig person för produkten. Används för ombeställningsregler och intern tilldelning. Valfritt.

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


1. Försäljning och Offert

När en säljare skapar en offert väljer de en product.product från katalogen. list_price, description_sale och uom_id flödar till orderlinjen. Priskataloger kan åsidosätta priset. Endast produkter med sale_ok=True visas.


2. Inköp och Leverantörer

Inköpsorder och leverantörsfakturor refererar till product.product. standard_price uppdateras från inköpskostnader. Produkter med purchase_ok=True är tillgängliga. uom_po_id definierar hur kvantiteter beställs (t.ex. per låda).


3. Lager och Stock

Lagerflyttar, plockningar och kvantiteter använder alla product.product. fälten qty_available och virtual_available styr tillgänglighet. Endast lagringsbara produkter spåras. Streckkodsskanning använder fältet för streckkod för snabb uppslagning.


4. E-handel och Webbplats

Webbshoppen visar product.product-poster. Varianter med olika attribut (storlek, färg) visas som alternativ. Produktbilder, beskrivningar och priser kommer från modellen. sale_ok-flaggan styr synlighet.


5. Tillverkning och MRP

Materiallistor refererar till product.product för både komponenter och färdiga varor. fältet typ avgör om en produkt tillverkas (lagringsbar) eller konsumeras. Lager nivåer styr produktionsplanering.

Hur utvecklare utökar denna modell


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


Modellarv

Använd _inherit = 'product.product' för att utöka modellen. Lägg till nya Odoo-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. Välj product.product när fältet är variant-specifikt; använd product.template när det gäller hela produktfamiljen.


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. Överväg om fältet tillhör mallen (delad) eller varianten (specifik). För variant-specifik data som SKU eller streckkodsåsidosättningar, använd product.product.


Python-tillägg

Åsidosätt create, write eller unlink för att lägga till logik. Använd super() för att anropa den ursprungliga. Var försiktig med beräknade fält och deras beroenden. Modellen product.product har många beräknade fält från lager- och försäljningsmoduler.


Odoo Studio

Odoo Studio låter dig lägga till fält utan kod. Bra för snabba anpassningar. För komplex logik eller uppgraderingar är anpassade moduler mer underhållbara. API-modellen i Odoo (product.product) är helt exponerad via XML-RPC och JSON-RPC för integrationer.

Bästa praxis


  • Använd default_code eller streckkod för extern systemkartläggning. Håll dem unika och konsekventa.
  • Ställ in typ korrekt för varje produkt. Konsumtion vs Lagring vs Tjänst påverkar vilka moduler och arbetsflöden som gäller.
  • När du bygger API-integrationer, använd product.product för orderrader och transaktioner. Använd product.template för katalognivåoperationer.
  • För anpassade fält, använd x_-prefixet eller ett modulprefix för att undvika konflikter med framtida Odoo-versioner.
  • Överväg product.template när du lägger till fält som gäller för alla varianter (t.ex. märke, kategori). Använd product.product för variant-specifik data (t.ex. variant-specifik streckkod).

Vanliga misstag


  • Ärva från product.template när du behöver variant-specifik logik. Använd product.product för per-variant beteende.
  • Skapa product.product-poster manuellt istället för genom mallen. För variantprodukter, skapa dem via produktkonfiguratorn.
  • Glöm inte att ställa in sale_ok eller purchase_ok. Produkter är dolda från försäljning/köp som standard i vissa konfigurationer.
  • Överskridande av kärnmetoder utan att kalla super(). Detta kan bryta andra moduler eller framtida uppgraderingar.
  • Använda product.product i domäner när product.template skulle vara mer lämpligt (t.ex. filtrering efter kategori på mallen).

Slutsats


product.product-modellen är central för Odoos produktarkitektur. Den representerar de faktiska säljbara och köpbara artiklarna. Att förstå dess fält och hur det relaterar till product.template kommer att hjälpa dig att konfigurera, anpassa och integrera Odoo effektivt.


Oavsett om du är en funktionell konsult som kartlägger produktkataloger eller en utvecklare som bygger anpassade moduler, kommer en solid förståelse av product.product 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 Odoos dataarkitektur och modeller som product.product.


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.

Förstå Odoos Produktvariantarkitektur: En Guide till Produktmodellen
Dasolo 10 mars 2026
Dela detta inlägg
Logga in att lämna en kommentar