Overslaan naar inhoud

Het Product.product Model: Inzicht in Odoo's Productvariant Architectuur

Een complete gids voor het productvariantmodel van Odoo voor ontwikkelaars en functionele consultants
10 maart 2026 in
Het Product.product Model: Inzicht in Odoo's Productvariant Architectuur
Dasolo
| Nog geen reacties

Inleiding


In Odoo definiëren modellen hoe gegevens zijn gestructureerd en opgeslagen in de database. Elk stuk bedrijfsgegevens waarmee je werkt, van verkooporders tot inventaris tot producten, bevindt zich in een model.


Het begrijpen van Odoo-modellen is essentieel voor zowel ontwikkelaars als functionele consultants. Modellen zijn de basis van de Odoo-gegevensarchitectuur. Ze definiëren Odoo-velden, relaties en bedrijfslogica.


Dit artikel richt zich op een van de belangrijkste modellen in Odoo: product.product. Of je nu aangepaste modules bouwt, externe systemen integreert of productcatalogi configureert, je zult met dit model werken.

Wat is het product.product Model


Het product.product model vertegenwoordigt de daadwerkelijke productvarianten in Odoo. Dit zijn de concrete, verkoopbare en aankoopsbare items die verschijnen op verkooporders, aankooporders en voorraadbewegingen.


Dit model in Odoo verschilt van product.template. De template bevat gedeelde attributen voor een productfamilie. De product.product records zijn de specifieke varianten. Voor een eenvoudig product zonder varianten is er één product.product per product.template. Voor configureerbare producten (bijv. T-shirt met maat en kleur) is elke combinatie een aparte product.product.


Het model is gedefinieerd in de productmodule (product). Verkoop, Aankoop, Voorraad en e-commerce verwijzen allemaal naar product.product. Wanneer je een regel aan een offerte toevoegt of voorraad ontvangt, werk je met product.product records.


product.product gebruikt delegatie-erfelijkheid van product.template. Veel Odoo-velden zijn gedefinieerd op de template en geërfd door de variant. Dit houdt gedeelde gegevens op één plek, terwijl het specifieke overrides voor de variant mogelijk maakt.

Belangrijke Velden in het Model


Hier zijn de belangrijkste Odoo-velden in het product.product model. Het begrijpen hiervan zal je helpen om effectief met productvarianten te werken.


1. naam

Type: Char. Dit veld slaat de naam van de productvariant op. Het wordt doorgaans weergegeven in lijsten, formulieren en documenten. Voor eenvoudige producten komt het overeen met de template naam. Voor varianten kan het attribuutwaarden bevatten (bijv. "T-Shirt - Blauw / M").


2. product_tmpl_id

Type: Many2one (product.template). Verbindt de variant met zijn bovenliggende template. Dit is de kernrelatie. Elk product.product behoort tot precies één product.template. Gebruik dit wanneer je het model in Odoo moet erven of de productlogica moet uitbreiden.


3. default_code

Type: Char. Interne referentie of SKU. Gebruikt voor identificatie, barcode-opzoeking en integratie met externe systemen. Elke variant kan zijn eigen code hebben.


4. barcode

Type: Char. Barcode (EAN, UPC, enz.). Gebruikt voor scannen in POS, magazijn en inventaris. Moet uniek zijn voor producten wanneer ingesteld.


5. create_date

Type: Datetime. Slaat de datum en tijd op wanneer het record is aangemaakt. Automatisch beheerd door Odoo. Nuttig voor rapportage en auditing.


6. write_date

Type: Datetime. Slaat de datum en tijd van de laatste wijziging op. Ook automatisch beheerd. Helpt bij het bijhouden wanneer gegevens voor het laatst zijn bijgewerkt.


7. active

Type: Boolean. Soft delete vlag. Wanneer False, wordt het record gearchiveerd en verborgen in standaardweergaven. Producten worden niet fysiek verwijderd om de geschiedenis te behouden.


8. type

Type: Selection. Producttype: Verbruiksartikel, Dienst of Opslagproduct. Verbruiksartikelen worden niet in de inventaris gevolgd. Diensten hebben geen voorraad. Opslagproducten worden in voorraad gevolgd. Dit bepaalt welke modules en workflows van toepassing zijn.


9. categ_id

Type: Many2one (product.category). De productcategorie. Gebruikt voor rapportage, prijsregels en catalogusorganisatie. Categorieën kunnen een ouder-kind hiërarchie hebben.


10. list_price

Type: Float. De verkoopprijs. Weergegeven op offertes en gebruikt als standaard bij het toevoegen van een regel. Kan per klant of door prijslijsten worden overschreven.


11. standaard_prijs

Type: Float. De kostprijs. Gebruikt voor voorraadwaardering en margeberekeningen. Typisch bijgewerkt door inkooporders of handmatige invoer.


12. uom_id

Type: Many2one (uom.uom). Eenheid van maat voor verkoop en voorraad. Definieert hoe hoeveelheden worden uitgedrukt (eenheden, kg, liters, enz.).


13. uom_po_id

Type: Many2one (uom.uom). Eenheid van maat voor aankopen. Kan verschillen van uom_id (bijv. kopen in dozen, verkopen in eenheden). Conversie wordt automatisch afgehandeld.


14. description_sale

Type: Html. Verkoopbeschrijving. Weergegeven op offertes, bestellingen en facturen. Kan opmaak en productdetails bevatten.


15. description_purchase

Type: Html. Aankoopbeschrijving. Weergegeven op inkooporders en leveranciersfacturen. Gebruikt voor interne en leverancierscommunicatie.


16. sale_ok

Type: Boolean. Kan verkocht worden. Wanneer False, is het product verborgen voor verkoop en e-commerce. Nuttig voor interne of alleen-aankoop artikelen.


17. purchase_ok

Type: Boolean. Kan aangekocht worden. Wanneer False, is het product verborgen voor aankoop. Nuttig voor vervaardigde of alleen-verkoop artikelen.


18. image_1920

Type: Binair. Productafbeelding in volledige resolutie. Odoo slaat meerdere formaten op (image_512, image_256, enz.) voor weergave. Gebruikt in formulieren, e-commerce en rapporten.


19. weight

Type: Float. Productgewicht. Gebruikt voor verzendcalculaties en logistiek. Eenheid hangt af van de bedrijfsconfiguratie.


20. volume

Type: Float. Productvolume. Gebruikt voor verzending en magazijncapaciteit. Belangrijk voor bedrijven met volumetrische beperkingen.


21. company_id

Type: Many2one (res.company). In multi-company setups geeft dit aan welke onderneming het product bezit. Beïnvloedt de zichtbaarheid van records en voorraad.


22. currency_id

Type: Many2one (res.currency). Valuta voor list_price en standard_price. Gewoonlijk de bedrijfsvaluta. Prijslijsten kunnen naar andere valuta's converteren.


23. qty_available

Type: Float. Hoeveelheid op voorraad. Berekend op basis van voorraadquants. Alleen-lezen. Gebruikt voor beschikbaarheidscontroles en rapporten. Alleen voor opslaarbare producten.


24. virtual_available

Type: Float. Voorspelde hoeveelheid (op voorraad plus inkomend min uitgaand). Gebruikt voor beschikbaarheid en aanvulling. Alleen-lezen berekend veld.


25. product_template_attribute_value_ids

Type: Many2many. Verbindt met de attribuutwaarden die deze variant definiëren (bijv. Kleur=Blauw, Maat=M). Gebruikt voor variantconfiguratie en filtering.


26. sequence

Type: Integer. Weergavevolgorde. Gebruikt om producten in lijsten en configurators te sorteren. Lagere waarden verschijnen eerst.


27. display_name

Type: Char. Berekende weergavenaam. Combineert naam met variantattributen. Gebruikt in many2one dropdowns en zoekresultaten. Alleen-lezen.


28. responsible_id

Type: Many2one (res.users). Verantwoordelijke persoon voor het product. Gebruikt voor herbestelregels en interne toewijzing. Optioneel.

Hoe Dit Model Wordt Gebruikt in Bedrijfsworkflows


1. Verkoop en Offertes

Wanneer een verkoper een offerte aanmaakt, selecteert hij een product.product uit de catalogus. De list_price, description_sale en uom_id stromen naar de orderregel. Prijslijsten kunnen de prijs overschrijven. Alleen producten met sale_ok=True verschijnen.


2. Aankoop en Leveranciers

Inkooporders en leveranciersfacturen verwijzen naar product.product. De standard_price wordt bijgewerkt op basis van inkoopkosten. Producten met purchase_ok=True zijn beschikbaar. De uom_po_id bepaalt hoe hoeveelheden worden besteld (bijv. per doos).


3. Voorraad en Stock

Voorraadbewegingen, pickings en quants gebruiken allemaal product.product. De velden qty_available en virtual_available bepalen de beschikbaarheid. Alleen opslaarbare producten worden gevolgd. Barcode-scanning gebruikt het barcodeveld voor snelle opzoekingen.


4. E-commerce en Website

De webshop toont product.product records. Varianten met verschillende attributen (maat, kleur) worden als opties weergegeven. Productafbeeldingen, beschrijvingen en prijzen komen uit het model. De sale_ok-vlag controleert de zichtbaarheid.


5. Productie en MRP

Stukkenlijsten verwijzen naar product.product voor zowel componenten als eindproducten. Het typeveld bepaalt of een product wordt vervaardigd (opslaarbaar) of verbruikt. Voorraadniveaus sturen de productieplanning.

Hoe Ontwikkelaars Dit Model Uitbreiden


Ontwikkelaars breiden product.product uit met verschillende patronen. Odoo modelovererving is het belangrijkste mechanisme.


Model Inheritance

Gebruik _inherit = 'product.product' om het model uit te breiden. Voeg nieuwe Odoo-velden toe, overschrijf methoden of voeg beperkingen toe. Het erfmodel in Odoo houdt je wijzigingen in een aparte module voor gemakkelijke upgrades. Kies product.product wanneer het veld variant-specifiek is; gebruik product.template wanneer het van toepassing is op de hele productfamilie.


Toevoegen van Velden

Definieer nieuwe Odoo-velden in je geërfde model. Gebruik het juiste veldtype: Char, Many2one, Boolean, Integer, Text, Selection. Overweeg of het veld op de template (gedeeld) of de variant (specifiek) hoort. Voor variant-specifieke gegevens zoals SKU of barcode-overschrijvingen, gebruik product.product.


Python Uitbreidingen

Overschrijf create, write of unlink om logica toe te voegen. Gebruik super() om de originele aanroep te doen. Wees voorzichtig met berekende velden en hun afhankelijkheden. Het product.product model heeft veel berekende velden van de voorraad- en verkoopmodules.


Odoo Studio

Odoo Studio stelt je in staat om velden toe te voegen zonder code. Goed voor snelle aanpassingen. Voor complexe logica of upgrades zijn aangepaste modules beter onderhoudbaar. Het API-model in Odoo (product.product) is volledig blootgesteld via XML-RPC en JSON-RPC voor integraties.

Beste Praktijken


  • Gebruik default_code of barcode voor mapping met externe systemen. Houd ze uniek en consistent.
  • Stel het type correct in voor elk product. Consumable vs Storable vs Service beïnvloedt welke modules en workflows van toepassing zijn.
  • Bij het bouwen van API-integraties, gebruik product.product voor orderregels en transacties. Gebruik product.template voor catalogus-niveau operaties.
  • Voor aangepaste velden, gebruik de x_ prefix of een moduleprefix om conflicten met toekomstige Odoo-versies te vermijden.
  • Overweeg product.template wanneer u velden toevoegt die van toepassing zijn op alle varianten (bijv. merk, categorie). Gebruik product.product voor variant-specifieke gegevens (bijv. variant-specifieke barcode).

Veelvoorkomende Fouten


  • Erf van product.template wanneer u variant-specifieke logica nodig heeft. Gebruik product.product voor per-variant gedrag.
  • Maak product.product records handmatig aan in plaats van via de template. Voor variantproducten, maak ze aan via de productconfigurator.
  • Vergeet niet om sale_ok of purchase_ok in te stellen. Producten zijn standaard verborgen voor verkoop/aankoop in sommige configuraties.
  • Overschrijf kernmethoden zonder super() aan te roepen. Dit kan andere modules of toekomstige upgrades breken.
  • Gebruik product.product in domeinen wanneer product.template geschikter zou zijn (bijv. filteren op categorie op de template).

Conclusie


Het product.product model is centraal in de productarchitectuur van Odoo. Het vertegenwoordigt de werkelijke verkoopbare en aankooppunten. Begrijpen van de velden en hoe het zich verhoudt tot product.template zal u helpen Odoo effectief te configureren, aanpassen en integreren.


Of u nu een functionele consultant bent die productcatalogi in kaart brengt of een ontwikkelaar die aangepaste modules bouwt, een goed begrip van product.product zal tijd besparen en fouten voorkomen.

Hulp Nodig Bij Je Odoo Implementatie?


Dasolo helpt bedrijven bij het implementeren, aanpassen en optimaliseren van Odoo. We zijn gespecialiseerd in API-integraties en Odoo-ontwikkeling. Ons team heeft diepgaande ervaring met de Odoo-gegevensarchitectuur en modellen zoals product.product.


Als u hulp nodig heeft bij uw Odoo-implementatie, aangepaste modules of integraties, zijn wij hier om te helpen. Boek een demo om uw project te bespreken.

Het Product.product Model: Inzicht in Odoo's Productvariant Architectuur
Dasolo 10 maart 2026
Deel deze post
Aanmelden om een reactie achter te laten