Odoo 19.0 Community · Persistent

sale.report: fields, relations and API

The sale.report model ("Sales Analysis Report") is a persistent model declared by the Sales module, then extended by 6 other modules. It exposes 51 fields, 45 of them declared directly on the model. Below you will find every field with its technical name, type, label and relations, followed by an Odoo 19 JSON-2 API call.

Model identity

Technical name
sale.report
Label
Sales Analysis Report
Type
Persistent (models.Model)
SQL table
None (no table)
Origin module
Sales (sale)
Extended by
sale_stock, pos_sale, sale_margin, pos_sale_margin, sale_project, website_sale
Default order (_order)
date desc
Display field (_rec_name)
date

Model fields

45 own fields, 0 inherited from mixins and 6 automatic ORM fields. Click a name to get a direct link to that field.

51 of 51 fields shown

Technical nameLabelTypeDetails
campaign_idCampaignmany2one
read-only
categ_idProduct Categorymany2one
read-only
commercial_partner_idCustomer Entitymany2one
read-only
company_idCompanymany2one
read-only
country_idCustomer Countrymany2one
read-only
currency_idCurrencymany2one
read-only
dateOrder Datedatetime
read-only
discountDiscount %float
read-only
discount_amountDiscount Amountmonetary
read-only
industry_idCustomer Industrymany2one
read-only
invoice_statusOrder Invoice Statusselection
read-only

Values: upselling (Upselling Opportunity), invoiced (Fully Invoiced), to invoice (To Invoice), no (Nothing to Invoice)

is_abandoned_cartAbandoned Cartboolean
read-only

added by eCommerce (website_sale)

line_invoice_statusInvoice Statusselection
read-only

Values: upselling (Upselling Opportunity), invoiced (Fully Invoiced), to invoice (To Invoice), no (Nothing to Invoice)

marginMarginfloat

added by Margins in Sales Orders (sale_margin)

medium_idMediummany2one
read-only
nameOrder Referencechar
read-only
nbr# of Linesinteger
read-only
order_referenceOrderreference
partner_idCustomermany2one
read-only
partner_zipCustomer ZIPchar
read-only
price_subtotalUntaxed Totalmonetary
read-only
price_totalTotalmonetary
read-only
price_unitUnit Pricefloat
read-only
pricelist_idPricelistmany2one
read-only
product_idProduct Variantmany2one
read-only
product_tmpl_idProductmany2one
read-only
product_uom_idUnitmany2one
read-only
product_uom_qtyQty Orderedfloat
read-only
project_idProjectmany2one
read-only

added by Sales - Project (sale_project)

public_categ_idseCommerce Categoriesmany2many

related: product_tmpl_id.public_categ_ids

added by eCommerce (website_sale)

qty_deliveredQty Deliveredfloat
read-only
qty_invoicedQty Invoicedfloat
read-only
qty_to_deliverQty To Deliverfloat
read-only
qty_to_invoiceQty To Invoicefloat
read-only
source_idSourcemany2one
read-only
stateStatusselection
read-only

Values: draft (Quotation), sent (Quotation Sent), sale (Sales Order), cancel (Cancelled)

state_idCustomer Statemany2one
read-only
team_idSales Teammany2one
read-only
untaxed_amount_invoicedUntaxed Amount Invoicedmonetary
read-only
untaxed_amount_to_invoiceUntaxed Amount To Invoicemonetary
read-only
user_idSalespersonmany2one
read-only
volumeVolumefloat
read-only
warehouse_idWarehousemany2one
read-only

added by Sales and Warehouse Management (sale_stock)

website_idWebsitemany2one
read-only

added by eCommerce (website_sale)

weightGross Weightfloat
read-only
create_dateCreated ondatetime
read-onlyautomatic
create_uidCreated bymany2one
read-onlyautomatic
display_nameDisplay Namechar
read-onlycomputedautomatic
idIDinteger
read-onlyautomatic
write_dateLast Updated ondatetime
read-onlyautomatic
write_uidLast Updated bymany2one
read-onlyautomatic

Relations

Models linked from this model

Fields of other models pointing here

No Many2one or Many2many field of another model points to this model.

Reading this model through the API

Odoo 19 JSON-2 API call reading the first five records with real fields of the model. Replace the instance, database and API key with your own.

curl
curl -X POST "https://your-instance.odoo.com/json/2/sale.report/search_read" \
  -H "Authorization: bearer $ODOO_API_KEY" \
  -H "X-Odoo-Database: your-db" \
  -H "Content-Type: application/json" \
  -d '{"domain":[],"fields":["date","state","campaign_id","categ_id","commercial_partner_id"],"limit":5}'
Python (requests)
import requests

BASE_URL = "https://your-instance.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "your-db"}

res = requests.post(
    f"{BASE_URL}/sale.report/search_read",
    headers=headers,
    json={"domain": [], "fields": ["date","state","campaign_id","categ_id","commercial_partner_id"], "limit": 5},
)
res.raise_for_status()
print(res.json())
  • External API access requires Odoo's Custom plan.
  • XML-RPC and JSON-RPC will be removed in Odoo 22 (fall 2028): use JSON-2.
  • The access rights and record rules of the key's user apply.

Cite this tool

Writing a tutorial, internal documentation or a forum answer? Copy this link to send your readers to the up-to-date reference.

<a href="https://aidoo.ai/en/outils/explorateur-modeles-odoo/sale-report">sale.report (Odoo 19.0)</a>

Sources

Data verified on September 23, 2026 · Odoo 19.0 Community

Have an Odoo project, or want to put your ERP to work with AI? Let's talk

Implementation, custom module development, connecting Claude or ChatGPT to your data: tell us about your context and we will reply within 24 business hours.