BI View Editor

bi_view_editor
REPOSITORY
REPOSITORYOCA/reporting-engine
GIT
GIThttps://github.com/OCA/reporting-engine.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/reporting-engine/tree/17.0/bi_view_editor
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYProductivity
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Onestein
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Onestein
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Antonio David Ruban Espinal
WEBSITE
WEBSITEhttps://github.com/OCA/reporting-engine
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
    - spreadsheet_dashboard
    - spreadsheet
    - bus
    - portal
    - web_editor
    - http_routing
    - mail
    - base_setup
    - web_tour
    - auth_signup
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES graphviz
DESCRIPTION
DESCRIPTION
BI View Editor is a tool integrated in Odoo that allows users define and
execute their own reports without the need to code.

Purpose:

- The BI View Editor is used to create reports not already contained in
  the standard Odoo, combining data from existing sources.
- It has been designed to be used by users with little or no knowledge
  of the technical architecture of Odoo. Users visually link business
  objects and select the fields to visualize.
- The BI View Editor offers users different types of representations,
  including tree, graph, pivot views.

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
view_bi_view_editor_view_form bve.view form New
view_bi_view_editor_view_tree bve.view tree New
Models touched (5)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (15)
  • action_id Many2one → ir.actions.act_window
    string='Action' args: 'ir.actions.act_window'
  • data Char
    compute='_compute_serialized_data' help="Use the special query builder to define the query to generate your report dataset. NOTE: To be edited, the query should be in 'Draft' status." inverse='_inverse_serialized_data'
  • er_diagram_image Binary
    compute='_compute_er_diagram_image'
  • field_ids One2many → bve.view.line
    domain=['|', ('join_node', '=', -1), ('join_node', '=', False)] string='Fields' args: 'bve.view.line', 'bve_view_id'
  • group_ids Many2many → res.groups
    help='User groups allowed to see the generated report; if NO groups are specified the report will be public for everyone.' string='Groups' args: 'res.groups'
  • line_ids One2many → bve.view.line
    string='Lines' args: 'bve.view.line', 'bve_view_id'
  • model_name Char
    compute='_compute_model_name' store=True
  • name Char
    copy=False required=True translate=True
  • note Text
    string='Notes'
  • over_condition Text
    help="Condition to be inserted in the OVER part of the ID's row_number function.\nFor instance, 'ORDER BY t1.id' would create IDs ordered in the same way as t1's IDs; otherwise IDs are assigned with no specific order."
  • query Text
    compute='_compute_sql_query'
  • relation_ids One2many → bve.view.line
    domain=[('join_node', '!=', -1), ('join_node', '!=', False)] string='Relations' args: 'bve.view.line', 'bve_view_id'
  • state Selection
    copy=False default='draft' args: [('draft', 'Draft'), ('created', 'Created')]
  • user_ids Many2many → res.users
    compute='_compute_users' store=True string='Users' args: 'res.users'
  • view_id Many2one → ir.ui.view
    string='View' args: 'ir.ui.view'
Public methods (6)
  • action_create(self)
  • action_reset(self)
  • copy(self, default=None)
  • get_clean_list(self, data_dict)
    @api.model
  • open_view(self)
  • unlink(self)

New fields (20)
  • bve_view_id Many2one → bve.view
    ondelete='cascade' args: 'bve.view'
  • column Boolean
  • description Char
    translate=True
  • field_id Many2one → ir.model.fields
    args: 'ir.model.fields'
  • field_name Char
    compute='_compute_model_field_name' store=True
  • in_list Boolean
  • join_model_id Many2one → ir.model
    args: 'ir.model'
  • join_node Char
  • left_join Boolean
  • list_attr Selection
    default='sum' string='List Attribute' args: [('sum', 'Sum'), ('avg', 'Average')]
  • measure Boolean
  • model_id Many2one → ir.model
    args: 'ir.model'
  • model_name Char
    related='model_id.model' store=True string='Model Name'
  • name Char
    compute='_compute_name'
  • relation Char
  • row Boolean
  • sequence Integer
    default=1
  • table_alias Char
    required=True
  • ttype Char
    string='Type'
  • view_field_type Char
    compute='_compute_view_field_type'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (6)
  • get_fields(self, model_id)
    @api.model
  • get_join_nodes(self, field_data, new_field)
    @api.model
    Return list of field dicts of join nodes Return all possible join nodes to add new_field to the query containing model_ids.
  • get_model_list(self, model_table_map)
  • get_models(self, table_model_map=None)
    @api.model
    Return list of model dicts for all available models.
  • get_related_models(self, model_table_map)
    @api.model
    Return list of model dicts for all models that can be joined with the already selected models.
  • get_relation_list(self, model_table_map)

New fields (0)

No new fields.

Public methods (2)
  • default_get(self, fields_list)
    @api.model
  • menu_create(self)
REPOSITORY
REPOSITORYOCA/reporting-engine
GIT
GIThttps://github.com/OCA/reporting-engine.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/reporting-engine/tree/16.0/bi_view_editor
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYProductivity
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Onestein
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Onestein
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Maksym Yankin, hugues de keyzer
WEBSITE
WEBSITEhttps://github.com/OCA/reporting-engine
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES graphviz
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
view_bi_view_editor_view_form bve.view form New
view_bi_view_editor_view_tree bve.view tree New
Models touched (5)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (15)
  • action_id Many2one → ir.actions.act_window
    string='Action' args: 'ir.actions.act_window'
  • data Char
    compute='_compute_serialized_data' help="Use the special query builder to define the query to generate your report dataset. NOTE: To be edited, the query should be in 'Draft' status." inverse='_inverse_serialized_data'
  • er_diagram_image Binary
    compute='_compute_er_diagram_image'
  • field_ids One2many → bve.view.line
    domain=['|', ('join_node', '=', -1), ('join_node', '=', False)] string='Fields' args: 'bve.view.line', 'bve_view_id'
  • group_ids Many2many → res.groups
    help='User groups allowed to see the generated report; if NO groups are specified the report will be public for everyone.' string='Groups' args: 'res.groups'
  • line_ids One2many → bve.view.line
    string='Lines' args: 'bve.view.line', 'bve_view_id'
  • model_name Char
    compute='_compute_model_name' store=True
  • name Char
    copy=False required=True translate=True
  • note Text
    string='Notes'
  • over_condition Text
    help="Condition to be inserted in the OVER part of the ID's row_number function.\nFor instance, 'ORDER BY t1.id' would create IDs ordered in the same way as t1's IDs; otherwise IDs are assigned with no specific order." readonly=True states={'draft': [('readonly', False)]}
  • query Text
    compute='_compute_sql_query'
  • relation_ids One2many → bve.view.line
    domain=[('join_node', '!=', -1), ('join_node', '!=', False)] string='Relations' args: 'bve.view.line', 'bve_view_id'
  • state Selection
    copy=False default='draft' args: [('draft', 'Draft'), ('created', 'Created')]
  • user_ids Many2many → res.users
    compute='_compute_users' store=True string='Users' args: 'res.users'
  • view_id Many2one → ir.ui.view
    string='View' args: 'ir.ui.view'
Public methods (6)
  • action_create(self)
  • action_reset(self)
  • copy(self, default=None)
  • get_clean_list(self, data_dict)
    @api.model
  • open_view(self)
  • unlink(self)

New fields (20)
  • bve_view_id Many2one → bve.view
    ondelete='cascade' args: 'bve.view'
  • column Boolean
  • description Char
    translate=True
  • field_id Many2one → ir.model.fields
    args: 'ir.model.fields'
  • field_name Char
    compute='_compute_model_field_name' store=True
  • in_list Boolean
  • join_model_id Many2one → ir.model
    args: 'ir.model'
  • join_node Char
  • left_join Boolean
  • list_attr Selection
    default='sum' string='List Attribute' args: [('sum', 'Sum'), ('avg', 'Average')]
  • measure Boolean
  • model_id Many2one → ir.model
    args: 'ir.model'
  • model_name Char
    related='model_id.model' store=True string='Model Name'
  • name Char
    compute='_compute_name'
  • relation Char
  • row Boolean
  • sequence Integer
    default=1
  • table_alias Char
    required=True
  • ttype Char
    string='Type'
  • view_field_type Char
    compute='_compute_view_field_type'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (6)
  • get_fields(self, model_id)
    @api.model
  • get_join_nodes(self, field_data, new_field)
    @api.model
    Return list of field dicts of join nodes Return all possible join nodes to add new_field to the query containing model_ids.
  • get_model_list(self, model_table_map)
  • get_models(self, table_model_map=None)
    @api.model
    Return list of model dicts for all available models.
  • get_related_models(self, model_table_map)
    @api.model
    Return list of model dicts for all models that can be joined with the already selected models.
  • get_relation_list(self, model_table_map)

New fields (0)

No new fields.

Public methods (2)
  • default_get(self, fields_list)
    @api.model
  • menu_create(self)
REPOSITORY
REPOSITORYOCA/reporting-engine
GIT
GIThttps://github.com/OCA/reporting-engine.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/reporting-engine/tree/15.0/bi_view_editor
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYProductivity
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Onestein
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Onestein
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Maksym Yankin, ilo
WEBSITE
WEBSITEhttps://github.com/OCA/reporting-engine
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:42
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES graphviz
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
view_bi_view_editor_view_form bve.view form New
view_bi_view_editor_view_tree bve.view tree New
Models touched (5)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (15)
  • action_id Many2one → ir.actions.act_window
    string='Action' args: 'ir.actions.act_window'
  • data Char
    compute='_compute_serialized_data' help="Use the special query builder to define the query to generate your report dataset. NOTE: To be edited, the query should be in 'Draft' status." inverse='_inverse_serialized_data'
  • er_diagram_image Binary
    compute='_compute_er_diagram_image'
  • field_ids One2many → bve.view.line
    domain=['|', ('join_node', '=', -1), ('join_node', '=', False)] string='Fields' args: 'bve.view.line', 'bve_view_id'
  • group_ids Many2many → res.groups
    help='User groups allowed to see the generated report; if NO groups are specified the report will be public for everyone.' string='Groups' args: 'res.groups'
  • line_ids One2many → bve.view.line
    string='Lines' args: 'bve.view.line', 'bve_view_id'
  • model_name Char
    compute='_compute_model_name' store=True
  • name Char
    copy=False default='' required=True
  • note Text
    string='Notes'
  • over_condition Text
    help="Condition to be inserted in the OVER part of the ID's row_number function.\nFor instance, 'ORDER BY t1.id' would create IDs ordered in the same way as t1's IDs; otherwise IDs are assigned with no specific order." readonly=True states={'draft': [('readonly', False)]}
  • query Text
    compute='_compute_sql_query'
  • relation_ids One2many → bve.view.line
    domain=[('join_node', '!=', -1), ('join_node', '!=', False)] string='Relations' args: 'bve.view.line', 'bve_view_id'
  • state Selection
    copy=False default='draft' args: [('draft', 'Draft'), ('created', 'Created')]
  • user_ids Many2many → res.users
    compute='_compute_users' store=True string='Users' args: 'res.users'
  • view_id Many2one → ir.ui.view
    string='View' args: 'ir.ui.view'
Public methods (7)
  • action_create(self)
  • action_reset(self)
  • action_translations(self)
  • copy(self, default=None)
  • get_clean_list(self, data_dict)
    @api.model
  • open_view(self)
  • unlink(self)

New fields (20)
  • bve_view_id Many2one → bve.view
    ondelete='cascade' args: 'bve.view'
  • column Boolean
  • description Char
    translate=True
  • field_id Many2one → ir.model.fields
    args: 'ir.model.fields'
  • field_name Char
    compute='_compute_model_field_name' store=True
  • in_list Boolean
  • join_model_id Many2one → ir.model
    args: 'ir.model'
  • join_node Char
  • left_join Boolean
  • list_attr Selection
    default='sum' string='List Attribute' args: [('sum', 'Sum'), ('avg', 'Average')]
  • measure Boolean
  • model_id Many2one → ir.model
    args: 'ir.model'
  • model_name Char
    related='model_id.model' store=True string='Model Name'
  • name Char
    compute='_compute_name'
  • relation Char
  • row Boolean
  • sequence Integer
    default=1
  • table_alias Char
    required=True
  • ttype Char
    string='Type'
  • view_field_type Char
    compute='_compute_view_field_type'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (6)
  • get_fields(self, model_id)
    @api.model
  • get_join_nodes(self, field_data, new_field)
    @api.model
    Return list of field dicts of join nodes Return all possible join nodes to add new_field to the query containing model_ids.
  • get_model_list(self, model_table_map)
  • get_models(self, table_model_map=None)
    @api.model
    Return list of model dicts for all available models.
  • get_related_models(self, model_table_map)
    @api.model
    Return list of model dicts for all models that can be joined with the already selected models.
  • get_relation_list(self, model_table_map)

New fields (0)

No new fields.

Public methods (2)
  • default_get(self, fields_list)
    @api.model
  • menu_create(self)
REPOSITORY
REPOSITORYOCA/reporting-engine
GIT
GIThttps://github.com/OCA/reporting-engine.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/reporting-engine/tree/14.0/bi_view_editor
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYProductivity
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Onestein
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Onestein
COMMITTERS
COMMITTERSStéphane Bidoul, Andrea, OCA Transbot, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/reporting-engine
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:10
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES graphviz
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
assets_backend bi_view_editor assets ir.ui.view qweb Inherits web.assets_backend
view_bi_view_editor_view_form bve.view form New
view_bi_view_editor_view_tree bve.view tree New
Models touched (5)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (15)
  • action_id Many2one → ir.actions.act_window
    string='Action' args: 'ir.actions.act_window'
  • data Char
    compute='_compute_serialized_data' help="Use the special query builder to define the query to generate your report dataset. NOTE: To be edited, the query should be in 'Draft' status." inverse='_inverse_serialized_data'
  • er_diagram_image Binary
    compute='_compute_er_diagram_image'
  • field_ids One2many → bve.view.line
    domain=['|', ('join_node', '=', -1), ('join_node', '=', False)] string='Fields' args: 'bve.view.line', 'bve_view_id'
  • group_ids Many2many → res.groups
    help='User groups allowed to see the generated report; if NO groups are specified the report will be public for everyone.' string='Groups' args: 'res.groups'
  • line_ids One2many → bve.view.line
    string='Lines' args: 'bve.view.line', 'bve_view_id'
  • model_name Char
    compute='_compute_model_name' store=True
  • name Char
    copy=False default='' required=True
  • note Text
    string='Notes'
  • over_condition Text
    help="Condition to be inserted in the OVER part of the ID's row_number function.\nFor instance, 'ORDER BY t1.id' would create IDs ordered in the same way as t1's IDs; otherwise IDs are assigned with no specific order." readonly=True states={'draft': [('readonly', False)]}
  • query Text
    compute='_compute_sql_query'
  • relation_ids One2many → bve.view.line
    domain=[('join_node', '!=', -1), ('join_node', '!=', False)] string='Relations' args: 'bve.view.line', 'bve_view_id'
  • state Selection
    copy=False default='draft' args: [('draft', 'Draft'), ('created', 'Created')]
  • user_ids Many2many → res.users
    compute='_compute_users' store=True string='Users' args: 'res.users'
  • view_id Many2one → ir.ui.view
    string='View' args: 'ir.ui.view'
Public methods (7)
  • action_create(self)
  • action_reset(self)
  • action_translations(self)
  • copy(self, default=None)
  • get_clean_list(self, data_dict)
    @api.model
  • open_view(self)
  • unlink(self)

New fields (20)
  • bve_view_id Many2one → bve.view
    ondelete='cascade' args: 'bve.view'
  • column Boolean
  • description Char
    translate=True
  • field_id Many2one → ir.model.fields
    args: 'ir.model.fields'
  • field_name Char
    compute='_compute_model_field_name' store=True
  • in_list Boolean
  • join_model_id Many2one → ir.model
    args: 'ir.model'
  • join_node Char
  • left_join Boolean
  • list_attr Selection
    default='sum' string='List Attribute' args: [('sum', 'Sum'), ('avg', 'Average')]
  • measure Boolean
  • model_id Many2one → ir.model
    args: 'ir.model'
  • model_name Char
    related='model_id.model' store=True string='Model Name'
  • name Char
    compute='_compute_name'
  • relation Char
  • row Boolean
  • sequence Integer
    default=1
  • table_alias Char
    required=True
  • ttype Char
    string='Type'
  • view_field_type Char
    compute='_compute_view_field_type'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (6)
  • get_fields(self, model_id)
    @api.model
  • get_join_nodes(self, field_data, new_field)
    @api.model
    Return list of field dicts of join nodes Return all possible join nodes to add new_field to the query containing model_ids.
  • get_model_list(self, model_table_map)
  • get_models(self, table_model_map=None)
    @api.model
    Return list of model dicts for all available models.
  • get_related_models(self, model_table_map)
    @api.model
    Return list of model dicts for all models that can be joined with the already selected models.
  • get_relation_list(self, model_table_map)

New fields (0)

No new fields.

Public methods (2)
  • default_get(self, fields_list)
    @api.model
  • menu_create(self)
REPOSITORY
REPOSITORYOCA/reporting-engine
GIT
GIThttps://github.com/OCA/reporting-engine.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/reporting-engine/tree/12.0/bi_view_editor
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYReporting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Onestein
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Onestein
COMMITTERS
COMMITTERSAndrea, Enric Tobella, OCA Transbot, oca-travis, Weblate, OCA-git-bot, SimoRubi
WEBSITE
WEBSITEhttps://github.com/OCA/reporting-engine
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:24
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - web
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES pydot
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES graphviz
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
assets_backend bi_view_editor assets ir.ui.view qweb Inherits web.assets_backend
view_bi_view_editor_view_form bve.view form New
view_bi_view_editor_view_tree bve.view tree New
Models touched (5)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (15)
  • action_id Many2one → ir.actions.act_window
    string='Action' args: 'ir.actions.act_window'
  • data Char
    compute='_compute_serialized_data' help="Use the special query builder to define the query to generate your report dataset. NOTE: To be edited, the query should be in 'Draft' status." inverse='_inverse_serialized_data'
  • er_diagram_image Binary
    compute='_compute_er_diagram_image'
  • field_ids One2many → bve.view.line
    domain=['|', ('join_node', '=', -1), ('join_node', '=', False)] string='Fields' args: 'bve.view.line', 'bve_view_id'
  • group_ids Many2many → res.groups
    help='User groups allowed to see the generated report; if NO groups are specified the report will be public for everyone.' string='Groups' args: 'res.groups'
  • line_ids One2many → bve.view.line
    string='Lines' args: 'bve.view.line', 'bve_view_id'
  • model_name Char
    compute='_compute_model_name' store=True
  • name Char
    copy=False required=True
  • note Text
    string='Notes'
  • over_condition Text
    help="Condition to be inserted in the OVER part of the ID's row_number function.\nFor instance, 'ORDER BY t1.id' would create IDs ordered in the same way as t1's IDs; otherwise IDs are assigned with no specific order." readonly=True states={'draft': [('readonly', False)]}
  • query Text
    compute='_compute_sql_query'
  • relation_ids One2many → bve.view.line
    domain=[('join_node', '!=', -1), ('join_node', '!=', False)] string='Relations' args: 'bve.view.line', 'bve_view_id'
  • state Selection
    copy=False default='draft' args: [('draft', 'Draft'), ('created', 'Created')]
  • user_ids Many2many → res.users
    compute='_compute_users' store=True string='Users' args: 'res.users'
  • view_id Many2one → ir.ui.view
    string='View' args: 'ir.ui.view'
Public methods (7)
  • action_create(self)
  • action_reset(self)
  • action_translations(self)
  • copy(self, default=None)
    @api.multi
  • get_clean_list(self, data_dict)
    @api.model
  • open_view(self)
  • unlink(self)

New fields (20)
  • bve_view_id Many2one → bve.view
    ondelete='cascade' args: 'bve.view'
  • column Boolean
  • description Char
    translate=True
  • field_id Many2one → ir.model.fields
    string='Field' args: 'ir.model.fields'
  • field_name Char
    compute='_compute_model_field_name' store=True
  • in_list Boolean
  • join_model_id Many2one → ir.model
    string='Join Model' args: 'ir.model'
  • join_node Char
  • left_join Boolean
  • list_attr Selection
    default='sum' string='List Attribute' args: [('sum', 'Sum'), ('avg', 'Average')]
  • measure Boolean
  • model_id Many2one → ir.model
    string='Model' args: 'ir.model'
  • model_name Char
    compute='_compute_model_name' store=True
  • name Char
    compute='_compute_name'
  • relation Char
  • row Boolean
  • sequence Integer
    default=1
  • table_alias Char
  • ttype Char
    string='Type'
  • view_field_type Char
    compute='_compute_view_field_type'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (7)
  • create(self, vals)
    @api.model
  • get_fields(self, model_id)
    @api.model
  • get_join_nodes(self, field_data, new_field)
    @api.model
    Return list of field dicts of join nodes Return all possible join nodes to add new_field to the query containing model_ids.
  • get_model_list(self, model_table_map)
  • get_models(self, table_model_map=None)
    @api.model
    Return list of model dicts for all available models.
  • get_related_models(self, model_table_map)
    @api.model
    Return list of model dicts for all models that can be joined with the already selected models.
  • get_relation_list(self, model_table_map)

New fields (0)

No new fields.

Public methods (2)
  • default_get(self, fields_list)
    @api.model
  • menu_create(self)
REPOSITORY
REPOSITORYOCA/reporting-engine
GIT
GIThttps://github.com/OCA/reporting-engine.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/reporting-engine/tree/11.0/bi_view_editor
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYReporting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Onestein
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Onestein
COMMITTERS
COMMITTERSPedro M. Baeza, OCA Transbot, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/reporting-engine
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:24:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - web
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
assets_backend bi_view_editor assets ir.ui.view qweb Inherits web.assets_backend
view_bi_view_editor_view_form bve.view form New
view_bi_view_editor_view_tree bve.view tree New
Models touched (4)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (8)
  • action_id Many2one → ir.actions.act_window
    string='Action' args: 'ir.actions.act_window'
  • group_ids Many2many → res.groups
    help='User groups allowed to see the generated report; if NO groups are specified the report will be public for everyone.' string='Groups' args: 'res.groups'
  • model_name Char
    compute='_compute_model_name' store=True
  • name Char
    copy=False required=True
  • note Text
    string='Notes'
  • state Selection
    copy=False default='draft' args: [('draft', 'Draft'), ('created', 'Created')]
  • user_ids Many2many → res.users
    compute='_compute_users' store=True string='Users' args: 'res.users'
  • view_id Many2one → ir.ui.view
    string='View' args: 'ir.ui.view'
Public methods (6)
  • action_create(self)
    @api.multi
  • action_reset(self)
    @api.multi
  • action_translations(self)
    @api.multi
  • copy(self, default=None)
    @api.multi
  • open_view(self)
    @api.multi
  • unlink(self)
    @api.multi

New fields (0)

No new fields.

Public methods (7)
  • create(self, vals)
    @api.model
  • get_fields(self, model_id)
    @api.model
  • get_join_nodes(self, field_data, new_field)
    @api.model
    Return list of field dicts of join nodes Return all possible join nodes to add new_field to the query containing model_ids.
  • get_models(self)
    @api.model
    Return list of model dicts for all available models.
  • get_related_fields(self, model_ids)
    @api.model
    Return list of field dicts for all fields that can be joined with models in model_ids
  • get_related_models(self, model_ids)
    @api.model
    Return list of model dicts for all models that can be joined with the already selected models.
  • sort_filter_models(self, models_list)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • default_get(self, fields_list)
    @api.model
  • menu_create(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/reporting-engine
GIT
GIThttps://github.com/OCA/reporting-engine.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/reporting-engine/tree/10.0/bi_view_editor
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYReporting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Onestein
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Onestein
COMMITTERS
COMMITTERSGitHub, Andrea, Luc De Meyer, OCA Transbot, oca-travis, Weblate, OCA-git-bot, SimoRubi, Simone Rubino, OCA Git Bot
WEBSITE
WEBSITEhttp://www.onestein.eu
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:20:02
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
assets_backend bi_view_editor assets ir.ui.view qweb Inherits web.assets_backend
view_bi_view_editor_view_form bve.view form New
view_bi_view_editor_view_tree bve.view tree New
Models touched (4)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (9)
  • action_id Many2one → ir.actions.act_window
    string='Action' args: 'ir.actions.act_window'
  • data Serialized
    help="Use the special query builder to define the query to generate your report dataset. NOTE: To be edited, the query should be in 'Draft' status."
  • group_ids Many2many → res.groups
    help='User groups allowed to see the generated report; if NO groups are specified the report will be public for everyone.' string='Groups' args: 'res.groups'
  • model_name Char
    compute='_compute_model_name' store=True
  • name Char
    copy=False required=True
  • note Text
    string='Notes'
  • state Selection
    copy=False default='draft' args: [('draft', 'Draft'), ('created', 'Created')]
  • user_ids Many2many → res.users
    compute='_compute_users' store=True string='Users' args: 'res.users'
  • view_id Many2one → ir.ui.view
    string='View' args: 'ir.ui.view'
Public methods (5)
  • action_create(self)
    @api.multi
  • action_reset(self)
    @api.multi
  • copy(self, default=None)
    @api.multi
  • open_view(self)
    @api.multi
  • unlink(self)
    @api.multi

New fields (0)

No new fields.

Public methods (7)
  • create(self, vals)
    @api.model
  • get_fields(self, model_id)
    @api.model
  • get_join_nodes(self, field_data, new_field)
    @api.model
    Return list of field dicts of join nodes Return all possible join nodes to add new_field to the query containing model_ids.
  • get_models(self)
    @api.model
    Return list of model dicts for all available models.
  • get_related_fields(self, model_ids)
    @api.model
    Return list of field dicts for all fields that can be joined with models in model_ids
  • get_related_models(self, model_ids)
    @api.model
    Return list of model dicts for all models that can be joined with the already selected models.
  • sort_filter_models(self, models_list)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • default_get(self, fields_list)
    @api.model
  • menu_create(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/reporting-engine
GIT
GIThttps://github.com/OCA/reporting-engine.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/reporting-engine/tree/9.0/bi_view_editor
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYReporting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Onestein
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Onestein
COMMITTERS
COMMITTERSAndrea, OCA Transbot, oca-travis, Weblate
WEBSITE
WEBSITEhttp://www.onestein.eu
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:24
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
assets_backend bi_view_editor assets ir.ui.view qweb Inherits web.assets_backend
view_bi_view_editor_view_form bve.view form New
view_bi_view_editor_view_tree bve.view tree New
Models touched (3)

New fields (9)
  • action_id Many2one → ir.actions.act_window
    string='Action' args: 'ir.actions.act_window'
  • data Text
    help="Use the special query builder to define the query to generate your report dataset. NOTE: To be edited, the query should be in 'Draft' status."
  • group_ids Many2many → res.groups
    help='User groups allowed to see the generated report; if NO groups are specified the report will be public for everyone.' string='Groups' args: 'res.groups'
  • model_name Char
  • name Char
    copy=False required=True
  • note Text
    string='Notes'
  • state Selection
    copy=False default='draft' args: [('draft', 'Draft'), ('created', 'Created')]
  • user_ids Many2many → res.users
    compute=_compute_users store=True string='Users' args: 'res.users'
  • view_id Many2one → ir.ui.view
    string='View' args: 'ir.ui.view'
Public methods (5)
  • action_create(self)
    @api.multi
  • action_reset(self)
    @api.multi
  • copy(self, default=None)
    @api.multi
  • open_view(self)
    @api.multi
  • unlink(self)
    @api.multi

New fields (0)

No new fields.

Public methods (6)
  • create(self, vals)
    @api.model
  • get_fields(self, model_id)
    @api.model
  • get_join_nodes(self, field_data, new_field)
    @api.model
    Return list of field dicts of join nodes Return all possible join nodes to add new_field to the query containing model_ids.
  • get_models(self)
    @api.model
    Return list of model dicts for all available models.
  • get_related_fields(self, model_ids)
    @api.model
    Return list of field dicts for all fields that can be joined with models in model_ids
  • get_related_models(self, model_ids)
    @api.model
    Return list of model dicts for all models that can be joined with models in model_ids

New fields (0)

No new fields.

Public methods (2)
  • default_get(self, fields_list)
    @api.model
  • menu_create(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/reporting-engine
GIT
GIThttps://github.com/OCA/reporting-engine.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/reporting-engine/tree/8.0/bi_view_editor
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYReporting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ONESTEiN BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ONESTEiN BV
COMMITTERS
COMMITTERSStéphane Bidoul (ACSONE), OCA Transbot, oca-travis, Weblate, astirpe
WEBSITE
WEBSITEhttp://www.onestein.eu
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:27
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
bve_js bi view editor assets ir.ui.view qweb Inherits web.assets_backend
view_bi_view_editor_view_form bve.view.form bve.view form New
view_bi_view_editor_view_tree bve.view.tree bve.view tree New
Models touched (2)

New fields (9)
  • action_id Many2one → ir.actions.act_window
    string='Action' args: 'ir.actions.act_window'
  • data Text
    help="Use the special query builder to define the query to generate your report dataset. NOTE: Te be edited, the query should be in 'Draft' status." string='Data'
  • group_ids Many2many → res.groups
    help='User groups allowed to see the generated report; if NO groups are specified the report will be public for everyone.' string='Groups' args: 'res.groups'
  • model_name Char
    size=128 string='Model Name'
  • name Char
    required=True size=128 string='Name'
  • note Text
    string='Notes'
  • state Selection
    default='draft' string='State' args: [('draft', 'Draft'), ('created', 'Created')]
  • user_ids Many2many → res.users
    compute=_compute_users store=True string='Users' args: 'res.users'
  • view_id Many2one → ir.ui.view
    string='View' args: 'ir.ui.view'
Public methods (5)
  • action_create(self)
    @api.multi
  • action_edit_query(self)
    @api.multi
  • action_reset(self)
    @api.multi
  • open_view(self)
    @api.multi
  • unlink(self)
    @api.multi

New fields (0)

No new fields.

Public methods (6)
  • create(self, cr, user, vals, context=None)
  • get_fields(self, model_id)
    @api.model
  • get_join_nodes(self, field_data, new_field)
    @api.model
    Return list of field dicts of join nodes Return all possible join nodes to add new_field to the query containing model_ids.
  • get_models(self)
    @api.model
    Return list of model dicts for all available models.
  • get_related_fields(self, model_ids)
    @api.model
    Return list of field dicts for all fields that can be joined with models in model_ids
  • get_related_models(self, model_ids)
    @api.model
    Return list of model dicts for all models that can be joined with models in model_ids