| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 2033 |
| Technical Name |
cml_dynamic_report |
| License | LGPL-3 |
| Website | https://kaypi.pe |
| Versions | 16.0 17.0 18.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 2033 |
| Technical Name |
cml_dynamic_report |
| License | LGPL-3 |
| Website | https://kaypi.pe |
| Versions | 16.0 17.0 18.0 |
Dynamic Reports
Build, preview and export custom reports for any Odoo model — no developer needed. Configure columns, filters and formats visually, then download in Excel or TXT instantly.
Live Preview: The Heart of Dynamic Reports
Experience the power of our modern, interactive table viewer — the centerpiece that makes Dynamic Reports stand out from traditional reporting tools.
Smart Search & Filter
Search only works for database Field columns (not Python Code), ensuring fast and accurate results across thousands of records.
Smooth Scrolling Table
Navigate massive datasets with horizontal and vertical scroll, sticky headers, and a persistent index column for easy reference.
One-Click Exports
Export instantly to XLSX (Excel) or TXT files with optional ZIP compression. Professional formatting included.
Excel (XLSX) and TXT / ZIP
Get professional XLSX formatting with totals, and clean TXT files for integrations and compliance.
Excel Output (XLSX)
Text Output (TXT / ZIP)
Everything You Need to Build Custom Reports
From simple field mappings to advanced Python expressions, Dynamic Reports adapts to your business logic.
Visual Report Builder
Select any Odoo model, define columns using field paths or Python code, set data types and formatting — all from a clean form view.
Live Preview with Search
Instantly preview your report data in a paginated, searchable table before exporting. Supports light and dark themes.
Excel Export (XLSX)
Professional Excel files with formatted headers, auto-column widths, native date cells, number formatting with locale support, and column totals.
TXT Export
Generate delimited text files with configurable separators. Perfect for regulatory reports like PLE SUNAT, SIRE, and other government formats.
Server Actions
Create a one-click action button directly in any list view. Select records and generate the report instantly from the action menu.
Smart Date Filtering
Filter by month/year or custom date ranges. Supports both
date and datetime fields with timezone-aware conversion.
Form Header: Name, Model, Filename
Top of the form: set the report name, source model, and output filename pattern.
- Name: visible title of the report.
- Model: any installed model (Invoices, Sales Orders, Partners, etc.).
- Filename: use dynamic tags
{VAT},{YEAR},{MONTH},{DAY},{START},{END}for auto-generated names.
| Tag | Description | Example |
|---|---|---|
{VAT} |
Company tax ID (RUC) | 20123456789 |
{YEAR} |
Current year | 2025 |
{MONTH} |
Selected month | 03 |
{DAY} |
Current day | 15 |
{START} |
Start date (YYYYMMDD) | 20250301 |
{END} |
End date (YYYYMMDD) | 20250331 |
Columns Tab: Build Your Report
Choose between two value sources: Model Field for direct data access or Python Code for custom logic. Each column needs a description and a field type for proper formatting.
Model Field: Direct Data Access
Select any field from the model using the Field Path widget with autocomplete. Perfect for standard fields and simple relations.
Key Features
- Widget:
DynamicModelFieldSelectorCharwith smart autocomplete. - Relational support: navigate Many2one/One2many using dot notation.
- No code required: just pick the field path.
- Field Type: choose Text, Numeric, or Date for formatting.
Relational Fields Behavior
- Many2one: shows the record's
display_name. - One2many/Many2many: joins all
display_namevalues with commas. - Empty relations: shows blank when no records are linked.
- Deep navigation: traverse multiple levels (e.g.,
partner_id.country_id.name).
# Example field paths: Simple: name Many2one: partner_id.vat One2many: invoice_line_ids.price_subtotal Deep: partner_id.country_id.code
Python Code: Custom Logic
Write Python code to transform, calculate, or combine data. Access the full record object and useful libraries.
Available Variables
- record: Current record object.
- time, datetime, dateutil: Python date/time libraries.
- timezone: Pytz timezone utilities.
- float_compare: Odoo's float comparison function.
- formatLang: Locale-aware number formatting.
Requirements
- Result must be assigned to
resultvariable. - Field Type (Text/Numeric/Date) controls preview/export formatting.
- Use proper error handling for missing data.
# Example: calculate days until due if record.invoice_date_due: result = (record.invoice_date_due - record.invoice_date).days else: result = 0
Field Types: Control Output Formatting
Regardless of value source, choose the appropriate field type for correct alignment and formatting.
Date & Datetime
- Locale-aware formatting (respects user language)
- Native Excel date objects for proper sorting
- Center-aligned cells in XLSX exports
- Supports both date and datetime field types
Numeric & Monetary
- Right-aligned cells for better readability
- Locale-aware number formatting (comma/dot separators)
- Column totals with automatic sum row
- Precise decimal control for financial reports
Text & Selection
- Selection fields show human-readable labels (not keys)
- Boolean fields display as Yes/No instead of True/False
- HTML fields automatically stripped to plain text
- Many2one fields show the record's display name
Configuration & Format
Control filters and date behavior: make date filtering required, set the date field path, and decide if users can view/edit the domain in the wizard.
Domain & Date Filters
Base behavior for date and domain filters that appear in the wizard and preview.
- Date Field Required: Enable period-based filtering by a date or datetime field.
- Date Field Path: Technical path to the date field (e.g.
invoice_date). - Domain: Standard Odoo domain to filter records by type, state, company, etc.
- View Domain in Wizard: Allow end users to see and modify filters at download time.
Format Tab
Configure output options for both Excel (XLSX) and Text (TXT) formats in a single unified tab.
XLSX Options
- Generate Index: Add a numbered index column (1, 2, 3...) and header row.
- Automatic column width adjustment and native Excel date formatting.
- Supports column totals for numeric fields when enabled.
TXT Options
- Separator: Choose your delimiter character (pipe
|, comma,, semicolon;, tab, etc.). - Generate TXT in ZIP: Option to compress the text file inside a ZIP archive.
- Perfect for government formats like PLE SUNAT, SIRE, and other regulatory reports.
- Clean, delimited output with no extra formatting.
Menu & List Action
Make your report accessible from a menu entry or directly from the list view of the source model.
Menu Tab
- Create Menu: generates a dedicated menu item under any parent menu.
- Action/Menu fields: show the created records for traceability.
- Security: combine with groups to control who sees the menu.
List Action (Server Action)
- Adds an action in the Action menu of any list view of the selected model.
- Select records > run the action > open the preview filtered by those IDs.
- Ideal for ad-hoc reporting without changing the base domain.
Download & Preview Wizard
Pick your report, define the period and (optionally) adjust the domain, then preview and export.
💡 Note: This wizard appears when accessing reports through a configured menu. When using Server Actions from list views, the wizard opens directly with the selected records as the domain (no period filters needed).
Filters & Filename
- Report: select the report template.
- Filter Type: month/year or date range (when date filtering is required).
- Domain: visible and editable only if the report enables "View Domain in Wizard".
- Filename: final name preview with tags resolved.
Role-Based Access Control
Control who can create, edit, and download reports with Odoo's built-in user groups.
- Dedicated Dynamic Report User group
- Restrict report access per user or group
- Menu visibility controlled by access groups
- Compatible with multi-company environments
Need Help or Customization?
We're here to assist you with setup, configuration, or custom development for your specific needs.
Please log in to comment on this module