Hoppa till innehåll

Produkt.template i Odoo — Förstå Produktarkitekturen

En praktisk guide till Odoos produktmall (product.template) för utvecklare och funktionella konsulter — allt du behöver veta för att modellera produkter, hantera varianter och integrera med lager, prislista och webbshop.
10 mars 2026 av
Produkt.template i Odoo — Förstå Produktarkitekturen
Dasolo
| Inga kommentarer ännu

Introduktion


I Odoo bestämmer modeller hur informationen sparas och organiseras i databasen. All affärsdata — allt från offerter och fakturor till artiklar — levs i modeller som definierar fälten, relationerna och reglerna för just den informationstypen.


Att förstå Odoo-modeller är avgörande både för utvecklare och funktionella konsulter. Modellerna utgör grunden i Odoos datalager: här man anger fälttyper, relationer mellan poster och var affärslogiken sitter. Mönstren är återkommande — lär du dig dem blir det lättare att navigera hela systemet.


Den här texten handlar om en av de viktigaste modellerna i Odoo: product.template. Oavsett om du sätter upp produktkataloger, bygger integrationer eller utvecklar tilläggsmoduler kommer du stöta på den här modellen ofta.

Vad är modellen product.template


Modellen product.template används för att beskriva en produktfamilj — en grundläggande produkt där några varianter (till exempel färg eller storlek) skiljer sig åt. I stället för att skapa separata artiklar för varje liten variant lägger man attributen på templaten och låter varianterna ärva det gemensamma.


product.template spelar roll i många delar av Odoo: försäljning, inköp, lager, e-handel och produktion. När du lägger upp en artikel i katalogen skapar du en template, och i kundorder väljer du vanligtvis en specifik variant som är kopplad till den templaten.


Själva definitionen ligger i produktmodulen, men många andra moduler bygger på eller förlänger den via Odoos arvssystem. Försäljning tillsätter priser och faktureringslogik, inköp lägger på leverantörsinställningar och lager ansvarar för spårning — utan att duplicera kärnstrukturen.

Skillnaden mellan product.template och product.product är central: templaten innehåller det delade, generella innehållet, medan product.product representerar en konkret variant med egna värden som SKU eller streckkod.

Viktiga fält i modellen


Nedan följer en lista över de viktigaste fälten i product.template och varför de betyder något i praktisk användning — känna till dem ger tydligare konfigurationer och enklare felsökning.


1. name

Typ: Char. Produktens synliga namn — det du oftast ser i listor, på offerter och i sökningar. Ett tydligt namn underlättar både användning och automatisering.


2. create_date

Typ: Datetime. Tidpunkt då posten skapades. Automatiskt spårat och nyttigt för rapporter, uppföljning och historik.


3. write_date

Typ: Datetime. Tidpunkt för senaste ändring. Hjälper att avgöra om informationen är aktuell och vem som senast uppdaterade den.


4. active

Typ: Boolean. Mjuk arkivering — sätt till False för att gömma en produkt utan att ta bort den permanent. Bra för säsongsartiklar eller utgågna produkter.


5. sequence

Typ: Integer. Styr sorteringsordningen i listor och dropdowns. Lägre värden visas först och kan användas för att prioritera produkter i gränssnittet.


6. type

Typ: Selection. Produktkategori: Consumable, Service eller Storable. Bestämmer om lagerspårning och hantering krävs för artikeln.


7. categ_id

Typ: Many2one (product.category). Produktkategori påverkar rapportering, standardrutterna och struktur i katalogen. Kategorier kan vara uppdelade hierarkiskt.


8. list_price

Typ: Float. Försäljningspris som används som förslag i offerter. Pricelistor eller varianter kan skriva över detta.


9. standard_price

Typ: Float. Kostnadspris som påverkar marginal- och värderingsberäkningar. Viktigt för lönsamhetsrapporter och lagervärde.


10. currency_id

Typ: Many2one (res.currency). Valuta för prisfält som list_price och standard_price. Vanligtvis kopplat till företagets valuta.


11. uom_id

Typ: Many2one (uom.uom). Enhet för försäljning — hur mängder uttrycks (st, kg, liter). Påverkar order- och lagerhantering.


12. uom_po_id

Typ: Many2one (uom.uom). Enhet för inköp — kan skilja sig från försäljningsenheten och kräver omräkning vid beställning.


13. default_code

Typ: Char. Intern referens eller artikelkod. Används ofta som SKU och i integrationer mot externa system för id- och matchning.


14. barcode

Typ: Char. Streckkod för skanning i POS och lager. För varianter placeras streckkoden vanligtvis på product.product.


15. description

Typ: Char. Intern beskrivning som syns för medarbetare i Odoo — praktiskt för interna anteckningar och instruktioner.


16. description_sale

Typ: Text. Kundvänlig beskrivning som visas på offerter, fakturor och i webbutiken. Kan innehålla formatering för bättre presentation.


17. description_purchase

Typ: Text. Information riktad till leverantörer, synlig på inköpsorder och fakturor för tydlighet vid beställning.


18. sale_ok

Typ: Boolean. Avgör om produkten får säljas. Om False visas den inte i försäljningsformulär eller kataloger.


19. purchase_ok

Typ: Boolean. Avgör om produkten får köpas. När False syns den inte i inköpsflödet.


20. weight

Typ: Float. Vikt för fraktberäkningar och logistik; enhet beror på företagets UoM-inställningar.


21. volume

Typ: Float. Volym för planering av lagerutrymme och frakt.


22. product_variant_ids

Typ: One2many (product.product). Lista över varianter som hör till templaten — varje variant är en konkret artikel med egna värden.


23. product_variant_count

Typ: Integer. Räknat fält som visar antal varianter — praktiskt för filter och visning i gränssnitt.


24. image_1920

Typ: Binary. Produktbild som används i formulär, katalog och webb. Odoo lagrar flera storlekar för prestanda.


25. responsible_id

Typ: Many2one (res.users). Den ansvarige för produkten — användbar för uppgifter, godkännanden och uppföljning.


26. company_id

Typ: Many2one (res.company). Anger vilket företag i en multi-company-miljö som produkten tillhör.


27. tax_ids

Typ: Many2many (account.tax). Kundskatter som appliceras vid försäljning och fakturering.


28. supplier_tax_id

Typ: Many2many (account.tax). Leverantörsskatter som används vid inköp och leverantörsfakturor.


29. attribute_line_ids

Typ: One2many. Attributrader som definierar vilka egenskaper (t.ex. storlek, färg) som genererar varianter.


30. route_ids

Typ: Many2many (stock.route). Styr hur artikeln rör sig i leveranskedjan — t.ex. Buy, Make to Order eller dropship.


31. property_stock_production

Typ: Many2one (stock.location). Produktionsplats för tillverkade artiklar — viktig vid produktion och receptstyrning.


32. property_stock_inventory

Typ: Many2one (stock.location). Standardlokation för lagerjusteringar och inventeringar.


33. property_valuation

Typ: Selection. Värderingsmetod: Automatisk eller Manuell — påverkar lagerredovisningen starkt.


34. property_cost_method

Typ: Selection. Kostnadsmetod: Standard eller FIFO — avgör hur lagervärdet beräknas över tid.


35. property_account_income_id

Typ: Many2one (account.account). Intäktskonto relaterat till produkten som används vid fakturering.


36. property_account_expense_id

Typ: Many2one (account.account). Kostnadskonto för inköp som används i leverantörsfakturor.


37. invoice_policy

Typ: Selection. Faktureringspolicy: fakturera vid order eller vid leverans — påverkar intäktsredovisning och orderhantering.


38. expense_policy

Typ: Selection. Kostnadspolicy: bokför kostnad vid beställning eller leverans.


39. service_type

Typ: Selection. För tjänsteprodukter: Manual, Timesheet eller Milestones — styr hur tjänsten mäts och faktureras.


40. optional_product_ids

Typ: Many2many (product.template). Valbara produkter som visas som tillval i offerter för korsförsäljning eller paket.

Hur modellen används i affärsprocesser


1. Försäljning och offerter

Säljare plockar produkter från katalogen när de skapar offerter. Templaten ger basinformationen — om produkten har attribut väljs en specifik variant vid orderläggningen.


2. E-handel

På webbshoppen presenteras templaten i produktlistor och produktsidor. Bilder och gemensam beskrivning kommer från templaten medan kunden väljer variant i detaljvyn.


3. Inköp och leverantörer

Inköpsorder och leverantörsfakturor refererar templaten. Fält som purchase_ok, supplier_tax_id och uom_po_id styr hur inköp visas och hanteras.


4. Lager och produktion

Lagertransaktioner och tillverkningsordrar pekar på varianterna. Templaten styr rutter, värdering och kostnadsmetoder medan lagersaldon hålls per variant.


5. Fakturering

Fakturor och leverantörsfakturor använder produktrader kopplade till templaten för att få rätt skatter och bokföringskonton. Invoice_policy påverkar när intäkten skall bokföras.

Hur utvecklare utökar modellen


Utvecklare bygger på product.template med hjälp av Odoos arv och ett par etablerade mönster för att lägga till fält, logik eller kopplingar.


Modellarv

Genom att ärva modellen (_inherit = 'product.template') kan du lägga in nya fält, skriva över metoder eller lägga till constraints utan att ändra kärnmodulen. Det ger renare uppgraderingar och minskar krockar mellan moduler.


Lägga till fält

Definiera nya fälttyper i din ärvda modell — välj lämplig typ (Char, Many2one, Boolean, Integer, Text, Selection). Tänk på om fältet ska vara företagsspecifikt i multi-company-scenarion.


Python-förlängningar

Överskugga metoder som create, write eller unlink för att injicera affärslogik. Anropa alltid super() när det behövs och var försiktig med beräknade fält och deras beroenden.


Odoo Studio

Odoo Studio gör det enkelt att lägga till fält utan kod — bra för snabba anpassningar. För komplex logik eller långsiktigt underhåll rekommenderas dock moduler och kodbaserade lösningar.

Bra arbetssätt


  • Lägg delad information på templaten och variant-specifika värden på product.product — följ den relationen konsekvent för att undvika dataduplikat och förvirring.
  • Sätt kategorier korrekt (categ_id) för att dra nytta av standardrutterna och rätt i rapporterna — kategorisering underlättar automatiska regler.
  • Använd default_code för integrationer och extern matchning. Försök hålla interna koder konsekventa och unika där det är möjligt.
  • Vid API-integrationer, använd Odoos XML-RPC eller JSON-RPC och mappa externa IDn noggrant. product.template är fullt tillgänglig via API:et, så strukturera överföringen efter templaten/varianterna.
  • När du skapar egna fält, prefiksera dem (t.ex. med x_ eller modulnamn) för att undvika kollisioner med framtida Odoo-uppdateringar.

Vanliga misstag


  • Att skapa separata templates istället för att använda attribut och varianter leder ofta till redundans. Använd attribute_line_ids för att hantera små skillnader (storlek, färg) som varianter.
  • Förväxla inte product.template med product.product — variant-specifik data som streckkod eller SKU ska ligga på product.product.
  • Glöm inte att markera sale_ok eller purchase_ok korrekt — produkter med dessa satta till False kommer inte att synas i respektive flöde.
  • Att skriva över kärnmetoder utan att anropa super() kan leda till oförutsedda problem och göra framtida uppgraderingar svårare.
  • Lägga till obligatoriska fält utan standardvärden kan bryta befintliga poster vid uppdateringar — tänk på migrering och bakåtkompatibilitet.

Avslutning


product.template är en central byggsten i Odoo som beskriver produktfamiljer och delad information. Kännedom om dess fält och hur andra moduler lägger till funktionalitet gör det enklare att konfigurera och integrera systemet.


Oavsett om du arbetar med katalogmappning som konsult eller bygger moduler som utvecklare, kommer en god förståelse för product.template att minska tiden för felrättning och ge stabilare lösningar.

Kom igång med Dasolo


Dasolo hjälper företag med implementation, anpassning och optimering av Odoo. Vi är specialiserade på API-integrationer och utveckling, och har stor erfarenhet av Odoos datamodeller som product.template.


Behöver du stöd med implementation, skräddarsydda moduler eller systemintegrationer hjälper vi gärna till. Boka en demo för att prata om ditt projekt.

Produkt.template i Odoo — Förstå Produktarkitekturen
Dasolo 10 mars 2026
Dela detta inlägg
Logga in att lämna en kommentar