Skip to Content

Forståelse Af Odoos Salgsordrelinje Model: Salgsordrelinje Arkitektur

En komplet guide til Odoos salgsordremodel for udviklere og funktionelle konsulenter
10. marts 2026 af
Forståelse Af Odoos Salgsordrelinje Model: Salgsordrelinje Arkitektur
Dasolo
| Ingen kommentarer endnu

Introduktion


I Odoo definerer modeller, hvordan data er struktureret og gemt i databasen. Hver enkelt del af forretningsdata, du arbejder med, fra salgsordrer til fakturaer til kontakter, lever i en model.


At forstå Odoo-modeller er essentielt for både udviklere og funktionelle konsulenter. Modellerne er fundamentet for Odoo's dataarkitektur. De definerer felter, relationer og forretningslogik.


Denne artikel fokuserer på en af de vigtigste modeller i Salgsmodulet: sale.order.line. Uanset om du bygger tilpassede moduler, integrerer eksterne systemer eller konfigurerer prisarbejdsgange, vil du arbejde med denne model.

Hvad er sale.order.line modellen


Modellen sale.order.line repræsenterer individuelle linjeposter på et tilbud eller en salgsordre i Odoo. Hver linje svarer typisk til ét produkt, med mængde, pris og skatteoplysninger.


Denne model i Odoo bruges af Salgsmodulet (sale). Den arver fra analytic.mixin til projektomkostningssporing og timesheet-integration. Når du tilføjer et produkt til et tilbud, opretter du en sale.order.line-post.


Modellen er defineret i salgsmodulet. Andre moduler udvider den gennem Odoo-modelarv. For eksempel tilføjer sale_stock leveringsrelaterede felter. sale_margin tilføjer marginberegninger. Hvert modul tilføjer det, det har brug for, uden at duplikere den grundlæggende struktur.

Nøglefelter i modellen


Her er de vigtigste Odoo-felter i sale.order.line-modellen. At forstå disse vil hjælpe dig med at arbejde effektivt med tilbud og salgsordrer.


1. order_id

Type: Many2one (sale.order). Påkrævet. Reference til den overordnede salgsordre. Dette felt forbinder hver linje til sin overordnede. Linjer slettes, når ordren slettes (kaskade).


2. sequence

Type: Integer. Standard 10. Kontrollerer visningsrækkefølgen af linjer på ordren. Bruges til sortering af sektioner, noter og produktlinjer.


3. company_id

Type: Many2one (res.company). Relateret fra order_id. Bruges til multi-selskabsregler og adgangskontrol.


4. currency_id

Type: Many2one (res.currency). Relateret fra order_id. Bruges til alle monetære felter på linjen. Sikrer korrekt valuta for prissætning.


5. order_partner_id

Type: Many2one (res.partner). Relateret fra order_id. Kunden. Bruges til prislist og skatteregler.


6. salesman_id

Type: Many2one (res.users). Relateret fra order_id. Salgspersonen. Bruges til provision og rapportering.


7. state

Type: Selection. Relateret fra order_id. Ordrestatus (udkast, sendt, salg, færdig, annulleret). Bestemmer hvilke felter der kan redigeres.


8. display_type

Type: Selection. Værdier: line_section eller line_note. Når den er indstillet, er linjen en sektion overskrift eller en note, ikke en produktlinje. Produktfelter er tomme.


9. is_downpayment

Type: Boolean. Angiver om linjen er en forskudsbetaling. Forskudsbetalinger faktureres separat.


10. is_expense

Type: Boolean. Sand, når linjen kommer fra en udgift eller leverandørfaktura. Bruges til projektomkostningssporing.


11. product_id

Type: Many2one (product.product). Det produkt, der sælges. Domænet begrænser sig til salgbare produkter. Påkrævet for produktlinjer.


12. product_template_id

Type: Many2one (product.template). Beregnet fra product_id. Bruges af produktkonfiguratoren til variantvalg.


13. name

Type: Text. Linjebeskrivelsen. Beregnet fra produkt- og brugerdefinerede attributter. Inkluderer variantdetaljer, når det er relevant.


14. product_uom_qty

Type: Float. Påkrævet. Den bestilte mængde. Standard 1.0. Kan styres af emballage.


15. product_uom

Type: Many2one (uom.uom). Enhed for måling. Standard fra produkt. Bruges til mængde og prissætning.


16. tax_id

Type: Many2many (account.tax). Skatter anvendt på linjen. Beregnet fra produkt og skattemæssig position.


17. pris_enhed

Type: Float. Påkrævet. Enhedspris pr. produkt_uom. Beregnet fra prisliste eller produkt. Kan overskrives manuelt.


18. rabat

Type: Float. Rabatprocent. Anvendes på pris_enhed før skat.


19. pris_delbeløb

Type: Monetary. Delbeløb før skat. Beregnet fra mængde, enhedspris og rabat.


20. pris_skat

Type: Float. Samlet skattebeløb. Beregnet fra pris_delbeløb og tax_id.


21. pris_total

Type: Monetary. Total inklusive skat. Hovedbeløbet til fakturering.


22. produkt_pakning_id

Type: Many2one (product.packaging). Valgfri emballage (f.eks. kasse med 12). Når den er indstillet, kan mængden styres af emballagen.


23. customer_lead

Type: Float. Ledetid i dage. Dage mellem ordrebekræftelse og forsendelse. Bruges til beregning af leveringsdato.


24. qty_delivered

Type: Float. Leveret mængde. Opdateres af lagerbevægelser eller manuelt. Bruges til delvis fakturering.


25. qty_invoiced

Type: Float. Mængde der allerede er faktureret. Beregnet ud fra fakturalinjer.


26. qty_to_invoice

Type: Float. Resterende mængde til fakturering. Beregnet ud fra qty_delivered og qty_invoiced.


27. invoice_status

Type: Selection. Værdier: upselling, faktureret, til fakturering, nej. Angiver faktureringsstatus for linjen.


28. invoice_lines

Type: Many2many (account.move.line). Links til fakturalinjer oprettet fra denne salgslinje. Bruges til sporbarhed.


29. create_date

Type: Datetime. Hvornår posten blev oprettet. Håndteres automatisk af Odoo.


30. write_date

Type: Datetime. Hvornår posten sidst blev ændret. Bruges til revision.

Hvordan denne model bruges i forretningsarbejdsgange


1. Tilbud og Salgsordre

Når en sælger opretter et tilbud, tilføjer de produkter. Hvert produkt bliver en sale.order.line. Linjerne viser mængde, pris, rabat og total. Ordren bekræftes, når kunden accepterer.


2. Prisliste og Rabatter

Prislister anvendes pr. linje. Felterne price_unit og discount beregnes ud fra prislisteregler. Volumenrabatter eller kundespecifikke priser håndteres her.


3. Levering og Fakturering

Når lageret leveres, opdateres qty_delivered. Fakturering kan ske pr. levering eller samlet. Feltet invoice_status vejleder brugeren om, hvad der er tilbage at fakturere.


4. Projekt og Tjenester

For serviceprodukter linker linjerne til projektopgaver og tidsregistreringer. Analytic.mixin arv muliggør omkostningssporing pr. projekt.


5. E-handel og Portal

Webstedets besøgende tilføjer produkter til indkøbskurven. Hver indkøbskurvlinje bliver en sale.order.line, når ordren oprettes. Produktkonfiguratoren bruger product_template_id og brugerdefinerede attributter.

Hvordan udviklere udvider denne model


Udviklere udvider sale.order.line ved hjælp af flere mønstre. Odoo modelarv er den primære mekanisme.


Model Arv

Brug _inherit = 'sale.order.line' til at udvide modellen. Tilføj nye felter, overskriv metoder eller tilføj begrænsninger. Den arvede model i Odoo holder dine ændringer i et separat modul for nem opgradering.


Tilføjelse af Felter

Definer nye Odoo-felter i din arvede model. Brug den rigtige felttype: Char, Many2one, Boolean, Integer, Text, Selection. Overvej selskabsafhængige felter til multi-selskab.


Python Udvidelser

Overskriv _compute_price_unit, _compute_price_subtotal, eller opret/skriv for at tilføje logik. Brug super() til at kalde den oprindelige. Vær forsigtig med beregnede felter og deres afhængigheder.


Odoo Studio

Odoo Studio lader dig tilføje felter uden kode. Godt til hurtige tilpasninger. For kompleks logik eller opgraderinger er tilpassede moduler mere vedligeholdelige.

Bedste praksis


  • Brug display_type til sektioner og noter i stedet for falske produktlinjer. Dette holder rapporteringen ren.
  • Når du bygger API-integrationer, skal du oprette linjer via order_id. Brug feltet order_line_ids på sale.order med det korrekte kommandformat.
  • Respekter SQL-begrænsningerne. En produktlinje skal have product_id og product_uom. En sektion eller note skal have display_type.
  • For tilpasset prissætning, brug prislisteregler når det er muligt. Overskriv compute-metoder kun når du har brug for logik, der ikke understøttes af prislister.
  • For brugerdefinerede felter, brug x_ præfikset eller et modulpræfiks for at undgå konflikter med fremtidige Odoo-versioner.

Almindelige fejl


  • Oprettelse af linjer uden order_id. Feltet er påkrævet. Opret altid linjer i konteksten af en ordre.
  • At blande product_id og product_template_id. For produktlinjer, sæt product_id. For konfigurationsflows, brug product_template_id til at vælge en variant.
  • Ændring af price_unit eller rabat efter fakturering. Når qty_invoiced er større end nul, kan prisændringer forårsage inkonsistenser.
  • Overskrivning af kerne metoder uden at kalde super(). Dette kan bryde andre moduler eller fremtidige opgraderinger.
  • At glemme at sætte display_type for sektion eller notelinjer. Uden det vil linjen blive behandlet som en produktlinje og vil fejle validering.

Konklusion


sale.order.line-modellen er central for Odoo Salg. Den gemmer hver produktlinje på tilbud og ordrer. At forstå dens felter og hvordan moduler udvider den vil hjælpe dig med at konfigurere, tilpasse og integrere Odoo effektivt.


Uanset om du er en funktionel konsulent, der kortlægger forretningsprocesser, eller en udvikler, der bygger brugerdefinerede moduler, vil en solid forståelse af sale.order.line spare tid og forhindre fejl.

Har du brug for hjælp med din Odoo-implementering?


Dasolo hjælper virksomheder med at implementere, tilpasse og optimere Odoo. Vi specialiserer os i API-integrationer og Odoo-udvikling. Vores team har dyb erfaring med Odoo-datastrukturen og modeller som sale.order.line.


Hvis du har brug for hjælp til din Odoo-implementering, tilpassede moduler eller integrationer, er vi her for at hjælpe. Book en demo for at diskutere dit projekt.

Forståelse Af Odoos Salgsordrelinje Model: Salgsordrelinje Arkitektur
Dasolo 10. marts 2026
Del dette indlæg
Log ind for at skrive en kommentar