Skip to Content
Reporting in Odoo, finally built for the people who use Odoo
Report Writer for OdooReport Writer for Odoo
 Download FREE version  
 Download Community Library  
Download PRO version

Have you ever been:

  • Tired of waiting for a developer every time you need a new report?
  • Need client-ready PDFs that actually look like your brand?
  • Want to replace wkhtmltopdf headaches with reliable Python output?


  • Banded Repoet Writer is the answer

Every Odoo team eventually runs into the same problem: the standard reports are close, but not quite right—and tailoring them usually means hiring a developer, learning QWeb, or settling for “good enough”. Wilson Works built Banded Report Writer to remove that trade‑off.

Built by Odoo functional consultants who’ve lived the pain first‑hand, Banded Report Writer brings true banded reporting (think Crystal Reports) into Odoo. Reports are defined in clean, validated JSON, rendered in pure Python, and delivered as professional PDFs—with no QWeb, no wkhtmltopdf, and no custom code. Functional consultants, business analysts, and end users can design, deploy, and iterate entirely from the Odoo UI.

Banded Report Writer is available in three editions for both the community and enterprise Odoo editions: a fully featured Free core engine, a Community Library for sharing and discovering reports across the Odoo community, and Pro, which adds images, watermarks, runtime parameters, SQL data sources, snippet libraries, and scheduled email delivery. The Free and Community Library editions are available for direct download below. Pro is published on the Odoo Apps Store.

A brief introduction

This is a quick video presenting some of main features of the Banded report Writer for Odoo

Background 

The Banded Report Writer was created for Odoo business analysts, implementers, and users — anyone who has ever needed a custom report but found themselves at the mercy of a developer. As experienced Odoo functional experts ourselves, we know the frustration firsthand: standard Odoo reporting relies on QWeb, a developer-centric templating system that — even with Odoo’s move away from wkhtmltopdf toward newer rendering engines — still sits on the same complex underlying architecture, keeping report writing firmly out of reach for most functional users. Other attempts have been made, e.g. Pentaho Reporter which was Java-based, but none have been native to Odoo. That’s why we built this module. Banded Report Writer is a pure-Python Odoo report writer designed to put the power of beautiful, professional reports back in the hands of the people who understand the business — not just the developers. This app is for you: whether you’re creating your first report or building complex grouped summaries with dynamic images and scheduled delivery, everything you need is here. We hope you’ll not only use it to solve your own reporting challenges, but also share your reports in our growing community library so that everyone benefits.


Who Is This For?

👔

Functional Consultants

No developer required. Design, deploy, and iterate on reports entirely from the Odoo UI.

📊

Business Analysts

Rapidly prototype and deliver client-ready PDFs with grouping, totals, and formatting.

🖨

End Users

Print directly from any Odoo record or list view. One-click professional PDF output.

🤝

Odoo Partners

Deliver polished client reports faster. Share reusable definitions across projects.

Key Features

🚀 No Code Required

Design professional PDF reports using simple JSON definitions. No QWeb, no Python, no developers needed.

Report Design

🧙 Automated Report Builder

Get up and running in minutes with the guided wizard. Select your data model, choose fields, and generate a complete report automatically.

📐 Banded Report Layouts

Multi-section reports with headers, detail bands, group headers/footers, and footers. Professional banding like Crystal Reports.

📝 JSON Editor

Full JSON editor with validation and helpful error messages. Define every aspect of your report in clean, readable JSON.

📏 Column Positioning

Use constants for setting important column positions — changes only need to be updated in one place.

🎨 Colour Palette

Define and reuse your company’s colour theme with the “palette” directive.

🛠 Report Builder Wizard

Get started fast using the report builder wizard that produces ready-to-go reports that can be modified.

❓ Built-in Help

Comprehensive contextual help and documentation built directly into Odoo. Learn as you build.

Data & Grouping

🔀 Multi-Level Grouping

Group data by multiple fields with automatic subtotals and aggregates. Nested groups with hierarchical summaries.

➕ Aggregate Functions

SUM, COUNT, AVG, MIN, MAX for automatic calculations. Grand totals in the report footer.

💱 Field Formatting

Currency, number, and date formatting with conditional styling and precision control.

📽 Automatic Sorting

Sort by group fields automatically. Define sort order in your JSON report definition.

Output & Performance

📄 Professional PDF Output

Generate clean, professional PDFs using ReportLab. No WKHTMLTOPDF or external dependencies.

⚡ Performance Tested

Handles 10,000+ records and 800+ pages in under 1 second. Fully tested with 500+ quality tests.

📑 Pagination

Automatic page breaks with proper handling of group headers and footers across pages, including continuation messages.

🖨 Print from Forms or Selections

Automatically link reports to server actions that can be linked to forms or record selections.

📚 Tutorial Reports

11 tutorial reports included to demonstrate all features. Ready to run and learn from.

Connected & Intelligent

🌍 Shared Community Library

Users can share their standout reports with the community. The library is pre-populated with useful reports and is available in both free and pro versions.

🤖 AI Friendly Report Generator

Professional and full-featured AI prompt for report generation.

💬 AI Friendly Support Agent

Professional and full-featured AI prompt for instant support.

🙋 Human Support

Human support always available.

Free Version

 

Screenshots

Banded Report Writer can make difficult features easy to implement - note below overdue invoices are highlighted 

An automated report builder makes sit exceptionally easy to create impressive reports that can be re-created, edited,  used for leariing, or form the basis for a custom report. 

Report Builder - JSON report definition generated

Report Builder - The resultant professional PDF report

Tutorial Reports - Tutorial reports make it quicker to get started - use as is of modify to suit

Tutorial Reports - Tutorial reports make it quicker to get started - use as is of modify to suit 

Report Builder - Some of the designer features

Built in help and user guide

Community Library - Share standout reports with the community. Pre-populated and available in both free and pro.

AI Report Builder - A fully curated AI prompt to automate report building

AI Support Agent - A fully curated AI prompt ready to be a support agent

Pro Version

Key Features

🛡 Extended Power for Professional Reports

Pro extends the free Banded Report Writer with the advanced features power users and demanding reporting scenarios need — without breaking anything that already works.

Visual Enhancements

📷 Images in Reports

Company logos in headers, product images in detail lines, signatures in footers. Field references, external URLs, and three sizing modes (fit, stretch, original).

👁 Watermarks

Semi-transparent text or image watermarks on every page. Customise opacity, rotation, font, and colour. Renders on top of all content.

📚 Snippet Libraries

Reusable band definitions — create once, include everywhere. Update once, reflect everywhere. Perfect for consistent corporate headers, footers, and branding.

Advanced Functionality

❓ Report Parameters and Prompting at Runtime

Prompt users for input when a report runs. Supports date ranges (25+ presets), dropdowns, text, numbers, and booleans — with values flowing directly into report domains. Makes action-launched reports more flexible by letting users choose things like summary vs. detail at run time.

📊 SQL Data Sources

Direct SQL queries for complex data retrieval beyond Odoo’s ORM. Cross-table JOINs, aggregations, and safe parameter binding with %(name)s.

📧 Print & Send

Bind to Odoo’s Print button. Preview, generate, and email reports directly from the action menu — or replace built-in reports entirely.

⏱Server-side generation & email API

Programmatic PDF generation and email delivery via generate_pdf_attachment() and generate_and_email() . Parameter defaults resolve automatically, making reports fully callable from Odoo cron jobs or custom automation — ideal for unattended execution and scheduled delivery

📝 Enhanced JSON Editing

Expand or collapse all fields, or just a single band, for clearer editing on large reports. Switch between compact and verbose views in one click.

🔗 Run Reports Menu

Opt-in quick-access menu surfaces parameterized and non-parameterized reports for end users without needing form-level actions.

Learning & Support

📚 7 Pro Tutorial Reports

Pro tutorials demonstrating every Pro feature — images, watermarks, snippets, parameters, SQL, and scheduling. Ready to run, examine, and adapt.

📄 Pro User Guide & Schema

Dedicated Pro User Guide and a Pro Schema reference covering every advanced JSON key. Both are accessible from inside Odoo.

❓ Built-in Help (Pro)

All free contextual help, plus Pro-specific guidance for image fields, watermark configuration, snippet authoring, and parameter design.

Connected & Intelligent

🌍 Shared Community Library

Share Pro reports with the community. Pro-only features (images, watermarks, SQL, parameters, snippets) are automatically labelled so importers know what they need.

🤖 AI Friendly Report Generator

Pro-aware AI prompt that knows every Pro key and feature — generates working JSON for parameterized, image-rich, snippet-based reports on the first try.

💬 AI Friendly Support Agent

Pro-aware AI prompt for instant support across the whole feature surface, including watermark, parameter, and Print & Send troubleshooting.

🙋 Human Support

Priority human support for Pro license holders. Email brw_support@wilsonworks.com.au.

🔗 All Pro Features Work Together

Combine images with watermarks, use snippets with parameters, schedule SQL-based reports with automatic email delivery. Pro is one coherent reporting solution for enterprise needs.

 


 

Screenshots

Images - Add images like logos, product images and watermarks

Images - Add high resolution images as watermarks

Images - High resolution and test combined as watermarks

Dynamic Prompted reports - Design reports that prompt for report parameters. Designed for end-users to make it easy for them to product reports. Prompted reports can also be used when reports are assigned to model actions.

Snippets - for corporate branding and consistency

Snippets - are useful for SQL query readability

Integrated Print & Send — email reports directly from Odoo

JSON Editor Useability - Ability to collapse and expand sections of the JSON report definitions for easier editing

End-user reporting - #2

Include PDF documents - Conditionally, prepend and append PDF documents to reports. e.g. Terms of Service document appended to a Sales Order

Automated report writer for SQL reports

More information


How It Works

The Banded Reporting Model

Banded Report Writer brings the classic “banded” reporting paradigm — familiar from tools like Crystal Reports — directly into Odoo. A report is built from discrete horizontal bands that fire at predictable moments: a report header on the first page, page headers on every page, detail bands repeated for each data record, group headers and footers when data changes, and page/report footers for summaries and page numbers. Each band contains fields positioned by X and Y coordinates, giving you pixel-precise control over layout without touching QWeb or WKHTMLTOPDF.

One Foundational Idea: Flat In, Banded Out

Every Banded Report Writer report consumes a flat list of rows, where each row already carries every value the report could ever need — including values that “belong” to a group header or footer. We deliberately repeat group-level data on every row instead of nesting it.

This single design choice is the reason BRW is so flexible and predictable. Grouping, sorting, subtotals, page breaks, and conditional bands all become simple, regular operations on a uniform input. The hard work of joining tables and shaping data lives where it belongs — in your data source — not buried inside the report template.

The result: there is never any mystery about where a value comes from, every report behaves the same way, and reports are easy to reason about, modify, and migrate. It is a deliberate decision rooted in decades of classic banded-reporting practice — one that has paid off in every report we have built.

Structured JSON, Validated End-to-End

Everything about a report — bands, fields, data sources, grouping rules, formatting, colours, and constants — is declared in a single, clean JSON document. This is not loose markup: every key is validated against a strict schema, every field type is checked, every layout reference is resolved, and every colour token is verified before a single PDF byte is produced. The rendering engine is pure Python (ReportLab), with zero Odoo dependencies in its core, so the same definition runs consistently whether you are designing in Odoo 19 today or porting tomorrow.

Schema Rigor Enables AI and Guaranteed Quality

Because the format is tightly structured, we can do things ad-hoc template systems cannot. The built-in validator catches typos instantly — “Unknown key ‘fond_size’ — did you mean ‘font_size’?” — and the complete JSON schema is published as a machine-readable reference. That same schema powers our curated AI prompts: the AI Report Builder knows every valid key, every band type, and every formatting rule, so it generates working JSON on the first try rather than guessing. The result is a system where human authors, automated validators, and AI assistants all speak the same precise language.

Steps to Get Started

1 Install the Module

Install Banded Report Writer from the Odoo Apps Store. The free module includes everything you need to create professional reports.

2 Create Your First Report

Use the Automated Report Builder to generate a report in minutes. Select your data model, choose fields, and the system creates a complete banded report definition.

3 Customize as Needed

Edit the JSON directly for advanced customization. Add grouping, aggregates, formatting, and more. The built-in help guides you through each option.

4 Attach to Any Model

Link your report definition to any Odoo model. Print directly from the action menu on any record.

5 Print & Share

Generate professional PDFs instantly. Share with customers, partners, or internal teams.

📚 Ready Out of the Box

11 tutorial reports are included to help you learn. Run them, examine them, modify them. Everything you need is included.

📚 Don't forget to install the shared community reports module

Share your beautiful reports with the community and benefit from other's others contributions. We envisage the library becoming a valuable repository of quality reports for both the free and pro versions.

Frequently Asked Questions

Do I need to know Python or QWeb to use this?

No. Banded Report Writer is designed specifically for non-developers. You define reports entirely in JSON through the built-in editor — no Python coding, no QWeb templates, no XML. The only skill you need is understanding your data model (which Odoo already shows you in the UI).

Will this work with my custom Odoo modules?

Yes. Banded Report Writer can bind to any Odoo model — built-in or custom. As long as you can see the model in Odoo’s UI, you can create a report for it using the Automated Report Builder or by writing a JSON definition manually.

Is the Pro module required to create reports?

No. The free version is fully functional and includes all core banded reporting features: band layouts, grouping, aggregates, formatting, pagination, and PDF output. Pro adds advanced features like SQL data sources, images, watermarks, parameters, scheduling, and snippet libraries — but you can create complete professional reports without it.

Can I migrate reports between databases?

Yes. Report definitions are stored as pure JSON, which is completely portable. You can export a report definition, copy it to another database, and it will run identically — no dependencies on custom code or external assets.

How does this compare to Odoo’s built-in QWeb reports?

Odoo’s native QWeb reports require HTML/CSS knowledge and developer access. They are powerful but inaccessible to functional users. Banded Report Writer gives you the same professional PDF output through a simple JSON interface — think of it as “Crystal Reports for Odoo” but without the code. It is not a replacement for complex bespoke QWeb reports, but it covers 90% of business reporting needs without touching a single line of code.

What about support and updates?

We are committed to continuous improvement. The free module receives bug fixes and compatibility updates for new Odoo versions. Human support is always available. We also provide curated AI prompts that act as a support agent and a report builder — both included free.

Free vs Pro Feature Comparison

The Banded Report Writer is a comprehensive, free report engine for Odoo. The optional Pro module extends it with advanced features for professional report design, automation, and integration.

Note: Installing Pro automatically extends the free module — all existing reports continue to work unchanged.

Upgrade to Pro

The free version is fully functional for creating professional banded reports. Upgrade to Pro when you need images, watermarks, snippets, parameters, or advanced data sources.

Core Report Engine

Feature Free Pro
Band-based layout (report header, page header, detail, page footer, report footer)
Multi-page reports with automatic page breaks
Page sizes — A4, Letter, Legal
Portrait and landscape orientation
Configurable margins (top, bottom, left, right)
Developer PDF Preview (in-browser, no download)
JSON schema validation with typo detection and suggestions
Report Builder wizard (guided report creation)
Debug layout mode (visualise band boundaries)
Generate PDF button (download)

Data Sources & Queries

Feature Free Pro
ORM data sources with Odoo domain filters
Parent-child (master-detail) data sources via One2many fields
Dot-notation for related fields
Dynamic domain variables ({company_ids}, {today}, {active_ids})
SQL data sources — direct SQL queries
Cross-table JOINs for complex multi-table reporting
Parameterized SQL queries with safe %(name)s binding

Field Types & Formatting

Feature Free Pro
Static text labels
Dynamic field values with {field_name} placeholders
Currency formatting — locale-aware with per-record symbol
Number formatting — locale-aware with thousands separator
HTML to plain text conversion
Image fields — render images in any band
Image size modes — fit, stretch, original
Conditional image rendering with render_if

Layout & Styling

Feature Free Pro
Text alignment — left, right, center
Vertical alignment — top, middle, bottom
Bold and italic text (band and field level)
Font families — Helvetica, Times, Courier
Text color — hex #RRGGBB or named colors
Band backgrounds — solid or alternating row colors
Band borders and underlines
Named panels — positioned rectangles with backgrounds
Rounded corners (curved)
Watermarks — text or image on every page
Watermark customization — opacity, rotation, font, color

Grouping, Totals & Summaries

Feature Free Pro
Multi-level grouping by any field
Group header and footer bands (per level)
Aggregate functions — SUM, COUNT, AVG, MIN, MAX
Subtotals at each group level
Report footer with grand totals
Nested/hierarchical grouping (multiple levels)
Automatic page breaks per group
Continuation text for multi-page groups

Report Parameters & Prompts

Feature Free Pro
Runtime parameter prompts — dynamic wizard
Date range parameters — 25+ built-in presets
Selection/dropdown parameters
Text, number, and boolean parameters
Parameter values in domains
Run Reports menu — opt-in quick-access for prompted & non-prompted reports
Cron-ready defaults — unattended execution

Publishing, Print, Email & Scheduling

Feature Free Pro
Publish to Action Menu wizard
Cross-model report actions
Print & Send — bind to Odoo’s Print button
Default Report mode — replace built-in reports
Scheduled reports via cron
generate_pdf_attachment() — server-side PDF
generate_and_email() — generate and send via email

JSON Editing & Productivity

Feature Free Pro
JSON editor with syntax highlighting
JSON schema validation on save
Typo detection with suggestions
Report Builder wizard
JSON Compact All Fields
JSON Expand All Fields
JSON Expand Band

Reusable Components

Feature Free Pro
Constants — report-level layout variables
Constants — band-level, scoped to a specific band
Palette definition for style consistency
Layout references — {name.x}, {name.width}
Named panels — store x, y, width, height
Snippet Libraries — reusable JSON fragments
Band snippets — standard headers, footers
include_snippet at any JSON level

Learning Resources

Feature Free Pro
11 progressive tutorials (Tutorial 01–11)
7 Pro tutorials (Tutorial Pro 01–07)
In-app User Guide
In-app Quick Reference
Pro User Guide
Pro Schema reference

Summary

Free Pro
Total features100+140+
Data source typesORMORM + SQL
Report actionsAction MenuAction Menu + Print & Send
AutomationManual+ Cron, email
MediaText only+ Images + Watermarks
Parameters5 types, 25+ presets
Tutorials1111 + 7 Pro

Changelog

Version Type Changes
1.0.0 Initial Core banded report engine with JSON editor, grouping, aggregates, PDF output, and 11 tutorial reports

🔄 Active Development

This module is continuously maintained. All bug fixes and Odoo version compatibility updates are provided free of charge. Upgrade to Pro to unlock advanced features as your reporting needs grow.