Overslaan naar inhoud

Het sale.order.line Model: Inzicht in Odoo's Verkooporderlijn Architectuur

Een complete gids voor het verkooporderlijnmodel van Odoo voor ontwikkelaars en functionele consultants
10 maart 2026 in
Het sale.order.line Model: Inzicht in Odoo's Verkooporderlijn Architectuur
Dasolo
| Nog geen reacties

Inleiding


In Odoo definiëren modellen hoe gegevens zijn gestructureerd en opgeslagen in de database. Elk stuk bedrijfsgegevens waarmee u werkt, van verkooporders tot facturen tot contacten, 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 velden, relaties en bedrijfslogica.


Dit artikel richt zich op een van de belangrijkste modellen in de Verkoopmodule: sale.order.line. Of u nu aangepaste modules bouwt, externe systemen integreert of prijsworkflows configureert, u zult met dit model werken.

Wat is het sale.order.line Model


Het sale.order.line-model vertegenwoordigt individuele lijnitems op een offerte of verkooporder in Odoo. Elke lijn komt typisch overeen met één product, met informatie over hoeveelheid, prijs en belasting.


Dit model in Odoo wordt gebruikt door de Sales-module (sale). Het erft van analytic.mixin voor projectkostenregistratie en integratie van urenregistratie. Wanneer je een product aan een offerte toevoegt, maak je een sale.order.line-record aan.


Het model is gedefinieerd in de verkoopmodule. Andere modules breiden het uit via Odoo-modelovererving. Bijvoorbeeld, sale_stock voegt leveringsgerelateerde velden toe. sale_margin voegt margeberekeningen toe. Elke module voegt toe wat het nodig heeft zonder de kernstructuur te dupliceren.

Belangrijke Velden in het Model


Hier zijn de belangrijkste Odoo-velden in het sale.order.line-model. Het begrijpen hiervan zal je helpen om effectief te werken met offertes en verkooporders.


1. order_id

Type: Many2one (sale.order). Vereist. Verwijzing naar de bovenliggende verkooporder. Dit veld koppelt elke lijn aan zijn bovenliggende. Lijnen worden verwijderd wanneer de order wordt verwijderd (cascade).


2. sequence

Type: Integer. Standaard 10. Beheert de weergavevolgorde van lijnen op de order. Gebruikt voor het sorteren van secties, notities en productlijnen.


3. company_id

Type: Many2one (res.company). Gerelateerd vanuit order_id. Gebruikt voor multi-company regels en toegangscontrole.


4. currency_id

Type: Many2one (res.currency). Gerelateerd vanuit order_id. Gebruikt voor alle monetaire velden op de lijn. Zorgt voor de juiste valuta voor prijsstelling.


5. order_partner_id

Type: Many2one (res.partner). Gerelateerd aan order_id. De klant. Gebruikt voor prijslijsten en belastingregels.


6. salesman_id

Type: Many2one (res.users). Gerelateerd aan order_id. De verkoper. Gebruikt voor commissie en rapportage.


7. state

Type: Selectie. Gerelateerd aan order_id. Bestelstatus (concept, verzonden, verkoop, voltooid, geannuleerd). Bepaalt welke velden bewerkbaar zijn.


8. display_type

Type: Selectie. Waarden: line_section of line_note. Wanneer ingesteld, is de regel een sectiekop of een opmerking, geen productregel. Productvelden zijn leeg.


9. is_downpayment

Type: Boolean. Geeft aan of de regel een aanbetaling is. Aanbetalingen worden afzonderlijk gefactureerd.


10. is_expense

Type: Boolean. Waar wanneer de regel afkomstig is van een uitgave of leverancierfactuur. Gebruikt voor projectkostenregistratie.


11. product_id

Type: Many2one (product.product). Het product dat verkocht wordt. Domein beperkt tot verkoopbare producten. Vereist voor productlijnen.


12. product_template_id

Type: Many2one (product.template). Gecomputeerd vanuit product_id. Gebruikt door de productconfigurator voor variantselectie.


13. name

Type: Text. De lijnbeschrijving. Gecomputeerd vanuit product en aangepaste attributen. Bevat variantdetails indien van toepassing.


14. product_uom_qty

Type: Float. Vereist. De bestelde hoeveelheid. Standaard 1.0. Kan worden bepaald door verpakking.


15. product_uom

Type: Many2one (uom.uom). Eenheid van maat. Standaard vanuit product. Gebruikt voor hoeveelheid en prijsstelling.


16. tax_id

Type: Many2many (account.tax). Belastingen toegepast op de lijn. Gecomputeerd vanuit product en fiscale positie.


17. prijs_eenheid

Type: Float. Vereist. Eenheidsprijs per product_uom. Berekend vanuit de prijslijst of het product. Kan handmatig worden overschreven.


18. korting

Type: Float. Kortingpercentage. Toegepast op prijs_eenheid vóór belasting.


19. prijs_subtotaal

Type: Monetair. Subtotaal vóór belasting. Berekend vanuit hoeveelheid, eenheidsprijs en korting.


20. prijs_belasting

Type: Float. Totaal belastingbedrag. Berekend vanuit prijs_subtotaal en belasting_id.


21. prijs_totaal

Type: Monetair. Totaal inclusief belasting. Het hoofdbedrag voor facturering.


22. product_verpakking_id

Type: Many2one (product.verpakking). Optionele verpakking (bijv. doos van 12). Wanneer ingesteld, kan de hoeveelheid worden bepaald door de verpakking.


23. customer_lead

Type: Float. Levertijd in dagen. Dagen tussen orderbevestiging en verzending. Gebruikt voor de berekening van de leverdatum.


24. qty_delivered

Type: Float. Hoeveelheid geleverd. Bijgewerkt door voorraadbewegingen of handmatig. Gebruikt voor gedeeltelijke facturering.


25. qty_invoiced

Type: Float. Hoeveelheid al gefactureerd. Berekend uit factuurregels.


26. qty_to_invoice

Type: Float. Overgebleven hoeveelheid om te factureren. Berekend uit qty_delivered en qty_invoiced.


27. invoice_status

Type: Selectie. Waarden: upselling, gefactureerd, te factureren, nee. Geeft de facturatiestatus voor de regel aan.


28. invoice_lines

Type: Many2many (account.move.line). Verbindt met factuurregels die zijn aangemaakt vanuit deze verkoopregel. Gebruikt voor traceerbaarheid.


29. create_date

Type: Datetime. Wanneer het record is aangemaakt. Automatisch beheerd door Odoo.


30. write_date

Type: Datetime. Wanneer het record voor het laatst is gewijzigd. Gebruikt voor auditing.

Hoe Dit Model Wordt Gebruikt in Bedrijfsworkflows


1. Offerte en Verkooporder

Wanneer een verkoper een offerte aanmaakt, voegt hij producten toe. Elk product wordt een sale.order.line. De regels tonen hoeveelheid, prijs, korting en totaal. De bestelling wordt bevestigd wanneer de klant accepteert.


2. Prijslijsten en Kortingen

Prijslijsten worden per regel toegepast. De velden price_unit en discount worden berekend op basis van prijslijstreferenties. Volumekortingen of klant-specifieke prijzen worden hier behandeld.


3. Levering en Facturatie

Wanneer de voorraad wordt geleverd, wordt qty_delivered bijgewerkt. Facturatie kan per levering of in één keer gebeuren. Het invoice_status veld begeleidt de gebruiker over wat er nog gefactureerd moet worden.


4. Project en Diensten

Voor serviceproducten linken de regels naar projecttaken en urenstaten. De analytic.mixin overerving maakt kostenregistratie per project mogelijk.


5. E-commerce en Portaal

Websitebezoekers voegen producten toe aan hun winkelwagentje. Elke regel in het winkelwagentje wordt een sale.order.line wanneer de bestelling wordt aangemaakt. De productconfigurator gebruikt product_template_id en aangepaste attributen.

Hoe Ontwikkelaars Dit Model Uitbreiden


Ontwikkelaars breiden sale.order.line uit met verschillende patronen. Odoo modelovererving is het belangrijkste mechanisme.


Modelovererving

Gebruik _inherit = 'sale.order.line' om het model uit te breiden. Voeg nieuwe velden toe, overschrijf methoden of voeg beperkingen toe. Het geërfde model in Odoo houdt je wijzigingen in een aparte module voor eenvoudige upgrades.


Velden Toevoegen

Definieer nieuwe Odoo-velden in je geërfde model. Gebruik het juiste veldtype: Char, Many2one, Boolean, Integer, Text, Selection. Overweeg bedrijfsspecifieke velden voor meerdere bedrijven.


Python Uitbreidingen

Overschrijf _compute_price_unit, _compute_price_subtotal, of maak/schrijf om logica toe te voegen. Gebruik super() om de originele aanroep te doen. Wees voorzichtig met berekende velden en hun afhankelijkheden.


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.

Beste Praktijken


  • Gebruik display_type voor secties en notities in plaats van nep productregels. Dit houdt rapportage schoon.
  • Bij het bouwen van API-integraties, maak lijnen via de order_id. Gebruik het order_line_ids-veld op sale.order met het juiste commandoformaat.
  • Respecteer de SQL-beperkingen. Een productlijn moet een product_id en product_uom hebben. Een sectie of opmerking moet een display_type hebben.
  • Voor aangepaste prijzen, gebruik prijslijstregels wanneer mogelijk. Overschrijf compute-methoden alleen wanneer je logica nodig hebt die niet door prijslijsten wordt ondersteund.
  • Voor aangepaste velden, gebruik de x_ prefix of een moduleprefix om conflicten met toekomstige Odoo-versies te vermijden.

Veelvoorkomende Fouten


  • Lijnen maken zonder order_id. Het veld is verplicht. Maak altijd lijnen in de context van een bestelling.
  • Product_id en product_template_id door elkaar halen. Voor productlijnen, stel product_id in. Voor configuratorstromen, gebruik product_template_id om een variant te selecteren.
  • Wijzigen van price_unit of korting na facturering. Zodra qty_invoiced groter is dan nul, kunnen prijswijzigingen inconsistenties veroorzaken.
  • Kernmethoden overschrijven zonder super() aan te roepen. Dit kan andere modules of toekomstige upgrades breken.
  • Vergeten om display_type in te stellen voor sectie- of opmerkinglijnen. Zonder dit wordt de lijn behandeld als een productlijn en zal deze de validatie niet doorstaan.

Conclusie


Het sale.order.line-model is centraal in Odoo Sales. Het slaat elke productlijn op offertes en bestellingen op. Begrijpen van de velden en hoe modules het uitbreiden zal je helpen Odoo effectief te configureren, aan te passen en te integreren.


Of je nu een functionele consultant bent die bedrijfsprocessen in kaart brengt of een ontwikkelaar die aangepaste modules bouwt, een goed begrip van sale.order.line zal tijd besparen en fouten voorkomen.

Hulp Nodig Bij Uw 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 sale.order.line.


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

Het sale.order.line Model: Inzicht in Odoo's Verkooporderlijn Architectuur
Dasolo 10 maart 2026
Deel deze post
Aanmelden om een reactie achter te laten