Skip to main content
SQL BI View Editor — A build-to-order Odoo module that turns your SQL into governed business intelligence views — materialize — 1/1Illustrative preview

A build-to-order Odoo module that turns your SQL into governed business intelligence views

— materialized or standard — exposed as read-only ORM models you can pivot, filter, group, and export.

ECOSIRE scopes, builds, installs, and supports it.

What is SQL BI View Editor?

A build-to-order Odoo module that turns your SQL into governed business intelligence views — materialized or standard — exposed as read-only ORM models you can pivot, filter, group, and export. ECOSIRE scopes, builds, installs, and supports it. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Key Features

View-definition model with `_auto = False` whose `init()` issues `CREATE OR REPLACE VIEW` for standard views
Materialized-view mode: `CREATE MATERIALIZED VIEW` plus scheduled `REFRESH MATERIALIZED VIEW`, with a unique index to enable `CONCURRENTLY`
Column-to-field mapping that exposes SQL columns as native Odoo fields (`Integer`, `Float`, `Char`, `Many2one`, `Date`, `Datetime`, `Selection`)
Automatic pivot, graph, list, and search views on each dataset with `group_by`/`measure` support and one-click XLSX export
SELECT-only statement validation (allowlist parser) that rejects any embedded DML/DDL before a definition can be saved
Per-view `ir.model.access.csv` generation plus optional `ir.rule` record rules for company/department/group scoping
Multi-company aware datasets that filter on `company_id` and respect the active company set
`ir.cron`-driven refresh for materialized views, plus manual refresh button and automated-action trigger
Read-only enforcement: `create`/`write`/`unlink` blocked on generated models so BI data can never be edited in place
Restricted authoring group — only designated analysts can define or alter view SQL; everyone else consumes
Datasets reachable over XML-RPC/JSON-RPC so external dashboards query through Odoo's authenticated API, not a raw DB link
Supporting-index creation on materialized views for large aggregations, with `EXPLAIN`-informed tuning during the build
Definition versioning/audit trail so SQL changes are logged and reversible
Menu, action, and access-group wiring so each new view appears in the correct app menu without manual XML editing

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 3

    Go live + support

    You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.

Technical Specifications

Odoo Compatibility
Odoo 17, Odoo 18, Odoo 19
Editions
Enterprise & Community
License
Licence confirmation required
Python Requirement
Python 3.10+
Database
PostgreSQL 12+

About this Product

Analysts and finance teams on Odoo constantly hit the same wall: the reporting they actually need spans several models — sale orders joined to invoices joined to stock moves joined to analytic lines — but Odoo's native pivot, list, and graph views only report on one model at a time. The out-of-the-box workarounds are painful: build a fragile computed model, wire up dozens of related/compute fields, export to a spreadsheet and reconcile by hand, or push everything into an external BI tool and re-implement your access rules there. Meanwhile the SQL that answers the question already exists in someone's psql session — it just has nowhere to live inside Odoo where the business can safely use it.

The SQL BI View Editor closes that gap. We build a module that lets your team define a business intelligence dataset as a SQL statement and register it as a first-class, read-only Odoo model backed by a real PostgreSQL view. Under the hood each definition maps to a models.Model with _auto = False whose init() runs a CREATE OR REPLACE VIEW for standard (always-live) views, or a CREATE MATERIALIZED VIEW with a scheduled REFRESH for heavy aggregations that you would rather compute on a cron. The declared columns become proper Odoo fields — Integer, Float, Char, Many2one, Date, Datetime, Selection — so the dataset instantly gains pivot, graph, list, and search views, group_by/measure behaviour, and XLSX export, with no bespoke reporting UI to maintain.

Governance is built in, because a raw SQL surface inside an ERP is a liability if it is ungoverned. Every generated model ships with ir.model.access.csv entries and optional ir.rule record rules so a view can be scoped by company, department, or user group, and multi-company datasets respect company_id filtering. Definitions are edited by a restricted authoring group only; the resulting views are read-only to everyone else. We validate each statement against a SELECT-only allowlist so authors cannot smuggle DML into a definition, register the view against the correct database cursor, and (for materialized views) create the supporting indexes and a REFRESH MATERIALIZED VIEW CONCURRENTLY-safe unique index where the workload calls for it. Refreshes can be triggered by ir.cron, by an automated action, or on demand from a button. Because the datasets are ordinary models, they are reachable over XML-RPC/JSON-RPC and can feed a downstream BI/dashboard tool through Odoo's own authenticated API rather than a direct database connection.

Delivery is build-to-order: this is not an existing apps.odoo.com download. We start with a short scoping call to inventory the reports you need, the source models and joins involved, your Community-vs-Enterprise edition, target version (17.0, 18.0, or 19.0), and multi-company/localization requirements. We then build your version of the module, prove it on a staging database with your data volumes, run UAT with your analysts, and deploy with a rollback plan. Typical delivery is one working week from confirmed scope. Pricing starts from $999 (indicative, single-company base scope); the number and complexity of source views, multi-company/record-rule depth, materialized-refresh scheduling, and data-migration or historical-backfill volume increase the quoted scope. You receive a fixed quote after the scoping call.

What you get

  • Installable source code for your version of the SQL BI View Editor module (17.0 / 18.0 / 19.0 as scoped)
  • Installation and configuration on your environment, including view registration and cron/refresh setup
  • Technical documentation: model design, view-definition schema, access-rule map, and refresh scheduling
  • End-user guide plus a live training session for your analyst/authoring group
  • Post-go-live support window for defect fixes and configuration questions
  • UAT on a staging database with your data volumes, plus a documented rollback plan
  • Git repository handover with full commit history and tagged release
  • Seed set of your initial BI view definitions built and validated during the engagement

Who this is for

Finance & Controlling Analyst

Needs cross-model reporting (orders-to-invoice-to-payment, margin by analytic account) that native single-model pivots can't express. Wants to author the SQL once and hand the team a governed, filterable dataset instead of a spreadsheet.

Odoo Functional / ERP Manager

Owns reporting standardization across departments and companies. Needs role-scoped access, multi-company `company_id` filtering, and a read-only surface so ad-hoc queries never mutate ERP data.

BI / Data Engineer

Already writes the SQL and maintains dashboards downstream. Wants those queries to live as Odoo models reachable over XML-RPC/JSON-RPC with materialized-view refresh on a schedule, rather than a fragile direct database connection.

Operations / Supply-Chain Lead

Needs joined views over stock moves, purchase, and manufacturing with heavy aggregations refreshed nightly, surfaced as pivot/graph views the team can slice without exporting.

How SQL BI View Editor Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
Cross-model reporting (multi-table joins)Purpose-built: any SQL join exposed as one governed BI datasetAchievable but you design and maintain the SQL-to-model plumbing yourselfGeneric editor, often limited to simpler joins and light governancePivot/graph report on a single model only
Materialized vs standard viewsBoth, chosen per dataset with scheduled `REFRESH` and indexingPossible, but refresh/index logic is hand-rolled each timeUsually standard views only; materialized support variesNo user-facing SQL view layer
Access governancePer-view `ir.model.access.csv` + optional `ir.rule`, restricted authorsWhatever you remember to buildBasic group access; record-rule depth often shallowStandard model ACLs, but no ad-hoc view layer to govern
Multi-company`company_id`-aware filtering built into scoped datasetsAdd it yourself per viewInconsistent; frequently single-company assumptionsNative models are multi-company; ad-hoc joins are not
External BI / API accessDatasets queryable over XML-RPC/JSON-RPC through Odoo authBuild the endpoints or expose a raw DB linkVaries; may require direct DB accessAPI exists per model, but no combined-view dataset
Safety of raw SQLSELECT-only allowlist + read-only generated modelsDepends entirely on your validation disciplineValidation strength varies by vendorNo raw SQL surface, so no exposure
Fit to your data modelBuilt to your exact reports, versions, and editionFully bespoke but full cost and timeline on youGeneric; you adapt your needs to the toolFixed to core report views
Support & ownershipFixed quote, support window, full source + git handoverYou own everything including the maintenance burdenVendor-dependent; roadmap outside your controlCovered by your Odoo support, no custom layer

Frequently Asked Questions about SQL BI View Editor

Is this an app I can download and install today?

No. This is a build-to-order engagement, not an existing apps.odoo.com download. ECOSIRE scopes your reporting requirements, builds your version of the module, validates it on staging, and installs it. You receive installable source and a git repo at handover.

How long does delivery take?

Typical delivery is one working week from confirmed scope. The timeline depends on how many source views you need, the complexity of the joins, multi-company/record-rule depth, and whether historical data backfill is involved. We confirm a delivery date with the fixed quote after the scoping call.

How does pricing and scoping work?

Pricing starts from $999 (indicative, single-company base scope). The number and complexity of views, multi-company and record-rule requirements, materialized-refresh scheduling, and any data-migration volume increase the quoted scope. After a short scoping call we send a fixed, itemized quote — no firm price is committed before we understand your requirements.

What about support and updates after go-live?

Every engagement includes a post-go-live support window for defect fixes and configuration questions. Because you receive the full source and git repository, your team can maintain and extend the module. We also offer ongoing support and version-upgrade engagements (for example moving your build from 17.0 to 18.0 or 19.0) as a separate scope.

Standard SQL view or materialized view — which do I get?

Both are supported and we choose per dataset during scoping. Standard views (`CREATE OR REPLACE VIEW`) are always live and best for lightweight queries. Materialized views are used for heavy aggregations where you prefer to precompute on a schedule; we add the supporting indexes and an `ir.cron` refresh (with a unique index so `REFRESH … CONCURRENTLY` doesn't lock readers).

Does it work with Odoo Community, and which versions?

Yes. The module is built on standard ORM primitives (`_auto = False` models, `ir.model.access.csv`, `ir.rule`, `ir.cron`) that exist in both Community and Enterprise, and we build for Odoo 17.0, 18.0, or 19.0. Any Enterprise-only integration points (such as feeding Enterprise dashboards) are confirmed during scoping.

Is letting people run SQL inside Odoo safe?

Yes, because the surface is governed. View definitions are editable only by a restricted authoring group, each statement is validated against a SELECT-only allowlist so no DML/DDL can be saved, generated models are read-only (`create`/`write`/`unlink` blocked), and every view carries access rules and optional record rules for company/group scoping.

Request a quote

SQL BI View Editor

A build-to-order Odoo module that turns your SQL into governed business intelligence views — materialized or standard — exposed as read-only ORM models you can pivot, filter, group, and export. ECOSIRE scopes, builds, installs, and supports it.

  • View-definition model with `_auto = False` whose `init()` issues `CREATE OR REPLACE VIEW` for standard views
  • Materialized-view mode: `CREATE MATERIALIZED VIEW` plus scheduled `REFRESH MATERIALIZED VIEW`, with a unique index to enable `CONCURRENTLY`
  • Column-to-field mapping that exposes SQL columns as native Odoo fields (`Integer`, `Float`, `Char`, `Many2one`, `Date`, `Datetime`, `Selection`)
  • Automatic pivot, graph, list, and search views on each dataset with `group_by`/`measure` support and one-click XLSX export

Request a Quotation

Tell us about your SQL BI View Editor requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.