Chapter 9 Reports

Odoo natively provides two common types of reporting capabilities. The first type is printable PDF documents for customers or internal archive, such as quotations, invoices, and delivery slips. The second type is analytical reports inside the system, such as sales analysis, purchase statistics, inventory analysis, aged receivables, pivot tables, and charts.

When many companies first use Odoo, they understand "reports" as rebuilding every old system or Excel report. This is usually not the best path. Odoo is better used by first relying on native reports, filters, groups, favorites, exports, pivot views, and charts to clarify data definitions, then deciding whether a few truly valuable reports need customization. This chapter explains how to use native Odoo reporting and why native solutions are usually more stable, cheaper, and easier to upgrade.

First Distinguish Two Report Types

In Odoo implementation, "report" usually means at least two things.

Type Examples Main Usage
Printable reports Quotation, sales order, invoice, delivery slip, purchase order, labels External sending, internal archive, printing with goods
Analytical reports Sales analysis, inventory analysis, purchase analysis, aged receivables, profit analysis Management decisions, daily checks, business review

These two types are handled differently.

Printable reports focus on layout, logo, header and footer, terms, field display, and PDF appearance. Analytical reports focus on data definition, filters, grouping dimensions, date range, and permissions.

If a customer says they need a report, the consultant should not jump into a development quote immediately. First ask: is this a customer-facing document or internal business analysis? Is it viewed every day or only occasionally? Can native lists filter it out, or does it require cross-module calculations?

What Native Odoo Reports Can Do

Native Odoo reporting is more complete than many customers expect.

Capability Usage
Reporting menus in modules View built-in statistics such as sales, purchase, inventory, and finance analysis
Search Quickly find records by customer, product, status, date, and more
Filters Show only data meeting conditions, such as this month's orders or unpaid invoices
Group By Summarize by salesperson, customer, product category, month, and other dimensions
Favorites Save common filters for quick reuse
List view View detailed data and export Excel or CSV
Pivot view Similar to a spreadsheet pivot table, suitable for multi-dimensional summaries
Graph view Use bar, line, or pie charts to see trends quickly
PDF printing Output standard documents such as quotations, invoices, and delivery slips
Document layout Manage company logo, header, footer, colors, and basic layout

For self-implementation, learn these native capabilities first. Many "custom report requirements" are really just unfamiliarity with filters, grouping, pivot views, and favorites.

Common Printable Reports

Different modules have their own printable reports.

Module Common Reports
Sales Quotation, sales order
Purchase Purchase order, request for quotation
Inventory Delivery slip, receipt slip, picking slip, inventory labels
Accounting Customer invoice, vendor bill, payment receipt, aged report
POS Receipt, session closing report
Manufacturing Manufacturing order, work order, bill of materials

For a first go-live, do not rebuild every document to match the old system. A safer approach is to confirm the 3 to 5 most commonly used documents first, such as quotation, invoice, delivery slip, purchase order, and receipt slip.

These documents should first satisfy: understandable, correct fields, correct company information, and acceptable to customers. Layout can be optimized later.

Document Layout

Document layout controls the basic appearance of PDF documents such as quotations and invoices: logo, colors, header, and footer.

Configure it from Settings -> General Settings -> Company -> Document Layout.

Document layout settings

Confirm:

  • Is the logo clear?
  • Are company name, address, phone, and email correct?
  • Does the document color fit the company brand?
  • Is footer information correct?
  • Are Chinese and English displayed correctly?
  • Are quotation, invoice, and delivery slip readable after printing?

Document layout is a global basic setting. Do not change it frequently, especially after quotations and invoices have already been sent to customers.

Where Analytical Reports Are

Most Odoo applications provide a Reporting menu to analyze and visualize business data.

Common entries:

Module Common Analysis
Sales Revenue, salesperson performance, product sales, customer sales
CRM Lead count, opportunity stage, win rate, sales team performance
Purchase Purchase amount, vendor purchase, purchase lead time
Inventory Stock quantity, inventory value, receipts/deliveries, product moves
Accounting Receivables/payables, aging, profit and loss, balance sheet, cash flow
POS Store sales, cashier, product sales, payment methods
Project Task status, timesheets, assignee, project progress

Report names differ by module, but usage is similar: enter the report, then analyze with filters, groups, charts, pivot views, and exports.

Search, Filter, And Group

Before using native reports, become familiar with the search bar.

Odoo search usually supports three operations:

Function Usage Example
Search Find records by keywords Customer name, product name, order number
Filter Limit data range This month's orders, unpaid invoices, completed tasks
Group By Summarize by dimension Salesperson, customer, month, product category

For example, if the owner asks for this month's sales amount by salesperson, a custom report may not be needed. Open Sales Analysis, filter this month, group by salesperson, and view amount totals.

If finance asks which customers still have unpaid invoices, open the invoice list, filter unpaid, and group by customer.

The key is not always development. The key is knowing where the data is, which conditions to filter by, and which dimension to group by.

Save Common Queries As Favorites

Many reports customers view daily are not complex. They only use fixed conditions.

Examples:

  • This month's sales orders;
  • My opportunities to follow up;
  • Overdue unpaid invoices;
  • Today's pending deliveries;
  • Products below safety stock;
  • Quotations from a sales team;
  • POS sales from a store.

Use favorites to save these query conditions. Next time, the user can open the same view without reselecting filters.

Favorites are very valuable. They turn "the consultant teaches the customer how to click" into "the customer clicks once and sees it." For self-implementation, this native capability is often underestimated.

Pivot Tables And Charts

Lists are good for details. Pivot tables and charts are better for summaries.

Pivot tables are suitable for:

  • Summarizing sales by month, salesperson, and product category;
  • Counting purchase amount by vendor and product;
  • Viewing receivables by customer and payment term;
  • Viewing inventory value by warehouse and product category;
  • Viewing timesheets by project and assignee.

Charts are suitable for:

  • Whether sales are rising or falling;
  • Which product category contributes most;
  • Which sales team performs better;
  • Which months have abnormal inventory changes;
  • Which payment methods have the largest share.

If customers are used to Excel pivot tables, explain Odoo pivot views as "pivot tables inside the system." Many scenarios do not need to export to Excel.

Export To Excel

Odoo supports exporting Excel or CSV from list views.

Suitable scenarios:

  • Temporary analysis;
  • Sharing with external people;
  • Comparing with old systems;
  • Finance checking;
  • Batch checking master data;
  • Data cleaning before go-live.

Do not rely on export for daily management for the long term. If the same table must be exported and manually processed every day, it usually means one of two things:

  • Native filters, grouping, favorites, and pivot views are not being used well;
  • This report has become a fixed management need and should be redesigned as an in-system report or dashboard.

Export is a useful helper, but it should not become the company's daily management process.

Data Definition Matters More Than Layout

The most important part of a report is not style, but data definition.

For example, "sales amount" can mean:

  • Quotation amount;
  • Confirmed sales order amount;
  • Invoiced amount;
  • Paid amount;
  • Tax excluded amount;
  • Tax included amount;
  • Based on order date;
  • Based on invoice date;
  • Based on payment date;
  • Excluding canceled orders;
  • Including or excluding freight and discounts.

If the definition is not clear first, even a beautiful report will be considered inaccurate.

Confirm key indicators first:

Indicator Questions To Confirm
Sales amount Order, invoice, or payment? Tax included or excluded?
Gross margin Where does cost come from? Standard cost, average cost, or actual cost?
Inventory value Which costing method? Is inventory valuation enabled?
Receivables Invoice balance or customer balance? Which date is used for aging?
Purchase amount Purchase order or vendor bill? Tax included or excluded?

The owner, sales, finance, and warehouse may understand the same word differently. The first step of report implementation is aligning language.

Why Native Solutions Come First

The best reporting solution is usually to use native Odoo first.

Native Advantage Description
Lower upgrade risk Native views, search, reporting menus, and QWeb reports upgrade more easily
Consistent permissions Native reports follow Odoo model access, record rules, and company permissions
Real-time data Directly based on business data without extra synchronization
Lower learning cost Once users learn filters, groups, and favorites, they can reuse them across modules
Lower maintenance cost No extra report engine or plugin to maintain
Easier troubleshooting Data source, fields, and permissions are inside Odoo

There are many report plugins, BI plugins, drag-and-drop report designers, and external dashboards on the market. They are not unusable, but they should not be the first choice.

Common issues:

  • Extra plugins increase maintenance cost;
  • Plugin compatibility depends on specific Odoo versions;
  • Plugins may rewrite native report engines or frontend components;
  • Upgrades require separate migration and testing;
  • Permissions, company, currency, language, multi-website, and other rules may not match native Odoo logic;
  • External BI needs data synchronization and may show numbers different from Odoo;
  • If the plugin author stops maintenance, later upgrades can be blocked.

Our recommendation: use native first, customize only when native is not enough; if QWeb and native views can solve it, do not introduce heavy report plugins first; if filters and groups can solve it, do not start development immediately.

When Custom Reports Are Needed

Consider customization when:

  • A fixed format is required;
  • Government, customs, or platform requires a specific format;
  • PDF documents must match an industry layout;
  • Management needs a cross-module dashboard;
  • Native fields cannot satisfy the statistical definition;
  • Complex calculations are needed, such as rebates, commissions, or margin allocation;
  • Data from multiple systems must be combined;
  • Different templates must be generated by customer, channel, country, or business type.

Before customization, confirm:

Question Description
Who reads it? Owner, finance, sales, warehouse, or customer
What is shown? Indicators and fields
How is it calculated? Statistical definition
How often is it viewed? Real-time, daily, monthly
Data source Sales, inventory, finance, or external systems
Output format PDF, Excel, chart, dashboard
Permission boundary Who can see it and who cannot
Upgrade impact Whether native reports are modified or third-party plugins are required

Report requests without definitions should not be developed immediately. Write the definition first, then evaluate native features, QWeb customization, server actions, view extension, or external BI.

Boundary Of Printable Report Customization

Printable reports are usually based on QWeb templates. QWeb is Odoo's native PDF reporting technology and is suitable for quotations, invoices, delivery slips, purchase orders, and similar documents.

Suitable light adjustments:

  • Add fields;
  • Adjust header text;
  • Modify footer terms;
  • Adjust logo and company information;
  • Add customer reference, contact person, or delivery notes.

Needs careful evaluation:

  • Rebuilding the entire layout;
  • One template per customer;
  • Complex multi-language, multi-currency, multi-company templates;
  • Many conditional branches and complex calculations;
  • PDF merge, encryption, preview, stamping, cloud printing, and similar extensions.

Light adjustments are usually stable. Heavy customization must consider future upgrades and maintenance. Do not block the native upgrade path just to make Odoo look exactly like the old system.

Different Report Styles By Customer

Standard Odoo usually configures document layout by company. This is the safest phase-one approach. In some projects, customers may want different report styles, company slogans, headers, footers, or special terms for different customers under the same company.

This requirement usually belongs to report enhancement or customization.

In Ohm Network's base solution, custom report configuration can provide more detailed report style control. It does not replace native Odoo reports; it enhances the native report mechanism.

First, enable custom report configuration permission in user settings.

Enable custom report configuration

Then create custom report configuration from technical settings.

Custom report configuration

Next, assign a report configuration on the customer record.

Customer report configuration

When printing that customer's document, the specified style is used.

Custom report result

This is suitable for:

  • One company serving multiple branded customers;
  • Different customers requiring different footers or terms;
  • Foreign trade customers needing different languages and styles;
  • Group companies needing one system with different external documents;
  • Agents or channel customers requiring dedicated document formats.

Implementation advice remains the same: run the process with native reports first, then configure or customize report differences that truly create value. Do not build separate reports for every customer from the beginning.

Implementation Advice

Report implementation can follow this sequence:

Stage Recommendation
Stage 1 Use native PDF documents and document layout; confirm key documents such as quotations, invoices, and delivery slips are usable
Stage 2 Teach users search, filters, grouping, favorites, and export
Stage 3 Use Reporting menus, pivot views, and charts to answer daily business questions
Stage 4 Confirm key indicator definitions with management, sales, and finance
Stage 5 Customize or enhance only reports that native features cannot satisfy and that have clear value

For self-implementation customers, do not start with big screens, dashboards, or drag-and-drop designers. First let each role see the data they need every day in Odoo, then let management confirm a few key indicators, and finally discuss complex reports.

This chapter covered native Odoo reports, PDF documents, search and filters, grouping and favorites, pivot views, charts, export, report definitions, and customization boundaries. At this point, the basic data, email, messages, and reports in Part 2 are mostly ready. The next part moves into Sales Management and begins the complete business flow from quotation to order.

results matching ""

    No results matching ""