Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Accounting
  3. Dynamic Account Reports v 19.0
  4. Sales Conditions FAQ

Dynamic Account Reports

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 19.0 Third Party 117
Download for v 19.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Invoicing (account)
• Discuss (mail)
Community Apps Dependencies Show
Accounting Suite Base
Lines of code 6839
Technical Name eh_account_dynamic_reports
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Invoicing (account)
• Discuss (mail)
Community Apps Dependencies Show
Accounting Suite Base
Lines of code 6839
Technical Name eh_account_dynamic_reports
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
ERP Heritage · Accounting Suite
ODOO 19 COMMUNITY ACCOUNTING REPORTS

Dynamic Account Reports

Ten accountant reports through one OWL viewer, on a SQL-direct engine that stays responsive past 100k posted entries.

Free · LGPL-310 REPORTSSQL-DIRECT ENGINEv19.0.1.3.8
SQL-direct
Move-version cache
Drill down
XLSX + PDF
Audit log

Why this module

Dynamic Account Reports

SPEED

SQL, not the ORM

The hot path is a parameter-bound, posted-only, company-scoped query against account.move.line. No ORM overhead per row, so reports stay responsive past 100k posted journal items where slower engines stall.

TRUST

A cache that cannot go stale

Results are keyed by an atomic per-company move-version counter that bumps only on a real account.move state change, with strict company-scope equality. You never see a stale number and never see one company's result leak into another's scope.

AUDIT

A trail you cannot edit

Every render writes one audit row, cache hits included, each pointing back at the compute it was served from. The model rejects edits and blocks deletes, so compliance keeps one immutable row per real user request.

Day in the life

An accountant pulls a P&L on a 100k-entry company, then proves it later.

The Profit and Loss kicks off the SQL builder directly against account.move.line. Posted-only filter, period bounds, multi-company scope and hierarchical account.group expand and collapse are all baked into the WHERE clause. The result hits the per-company cache keyed by the move-version counter, so subsequent renders return from cache until the next move state change bumps it. The accountant adds a prior-year comparative column, folds the operating section, and drills from a data line straight to the underlying journal items with the period and account filter preserved. The XLSX export carries the same currency number-format as the screen, cell for cell. Weeks later an auditor asks how that number was produced; the audit log still holds one immutable row for that render, pointing back at the exact compute that served it.

Edge cases

The cases most modules quietly ignore.

In the shipped code today, each one a place where a cheaper module silently does the wrong thing.

AUDIT

A cache hit still writes its own audit row pointing back at the source compute, so compliance keeps one row per real user request, not just the first render.

IMMUTABILITY

The audit log is append-only at the model level: write rejects any field outside an internal whitelist and unlink is blocked, so audit rows cannot be edited or deleted even by an administrator.

SCOPE ISOLATION

A render for companies one and two will not pick up a result cached for company one alone, because the cache requires exact sorted company-set equality. A naive m2m IN would have leaked across overlapping scopes.

RACE-SAFE

Cache invalidation increments the version counter with a direct SQL column = column + 1 update, not a read-modify-write, so two concurrent posts cannot lose a bump. The counter also bumps only when a move state actually changes value, avoiding spurious invalidation on routine recomputes.

GENERAL LEDGER

The General Ledger computes a true opening balance per account plus a running closing balance across the period, not just period movements.

COMPARATIVES

Variance percentage is divide-by-zero safe: a zero prior against a non-zero current reports a 100 percent overrun rather than crashing. A Feb 29 window is shifted to Feb 28 of the prior year instead of raising.

ODOO 19 DATA MODEL

Analytic filtering runs against the Odoo 19 jsonb analytic_distribution using the key-overlap operator, not a legacy many-to-many, so it matches the current data model.

What is inside

Built to do the job, end to end.

  • Ten reports, one viewer. Profit and Loss, Balance Sheet, Trial Balance, General Ledger, Partner Ledger, Aged Receivable, Aged Payable, Cash Flow (direct and indirect), plus Customer and Vendor Statements and an Analytic Balance, all rendered through a single OWL viewer.
  • Drill down to the ledger. Data lines (accounts, partners, journal items) click through to the underlying journal items or the journal entry form. Section headers, subtotals and computed rows are aggregates and are not drillable.
  • Comparatives. Prior period and prior year columns are native, with divide-by-zero-safe variance percentages and leap-day-safe prior-year date shifting.
  • Currency-aware export. Every monetary cell renders with the company currency symbol; the XLSX writer builds a matching Excel number-format string so the spreadsheet matches the screen cell for cell. PDF export ships a universal template with a brand footer.
  • Hierarchy with memory. Sectioned reports nest by account.group with caret expand and collapse, and the fold state persists per user between sessions.
  • Fixed aging buckets. Aged Receivable and Aged Payable share one base with a fixed five-tier layout: Not Due, 0 to 30, 31 to 60, 61 to 90, and 91 plus days overdue.
  • Statements from the partner form. Customer and vendor statements print from a one-click button on the partner form. The customer statement also appears on the customer portal home for self-service when the Customer Portal Extra module is installed.

Honest about the edges

What this does not do, so nothing surprises you.

  • No Tax Report is included in this module; the set is the ten reports listed above.
  • No periodic snapshot tables or materialised views. The cache is an in-process per-execution result keyed by options hash and move version, not a scheduled snapshot.
  • Comparatives cover prior period and prior year only. There is no custom-range comparator and no vs-budget comparison in this module.
  • The replayable execution ID lives in the audit log and the in-memory payload, not printed in the exported file; the XLSX and PDF carry a generated-at stamp, not the execution ID.
  • The custom report builder, saved views and scheduled email delivery live in the separate Dynamic Reports Pro module that builds on this one.
Search

Odoo 19 dynamic financial reports, Odoo Community profit and loss report, Odoo balance sheet trial balance report, Odoo general ledger partner ledger, aged receivable aged payable Odoo, cash flow statement Odoo Community, drill down journal entries report, Odoo accounting report XLSX PDF export, fast accounting reports large database Odoo, report audit log reproducible Odoo

ERP Heritage

Production-grade Odoo accounting, built to an engineering bar and documented honestly. Support: info@erpheritage.com.au
Developed by Odoo Customisation Services

v19.0.1.3.8 · LGPL-3 · Odoo 19 Community

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
  • Ratings
  • Discuss
Good!
by
gavinguo
on 5/14/26, 11:10 PM


Good!
by
ERP Heritage
on 5/16/26, 2:50 AM Author

Thank you.


by
gavinguo
on 5/9/26, 1:46 AM



Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with