Budgets Management

account_budget_oca
REPOSITORY
REPOSITORYOCA/account-budgeting
GIT
GIThttps://github.com/OCA/account-budgeting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-budgeting/tree/19.0/account_budget_oca
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Odoo S.A.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Odoo S.A.
COMMITTERS
COMMITTERSPedro M. Baeza, Weblate, OCA-git-bot, oca-ci, Yusuke1998
WEBSITE
WEBSITEhttps://github.com/OCA/account-budgeting
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:47
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows accountants to manage analytic and crossovered
budgets.

Once the Budgets are defined (in Invoicing/Budgets/Budgets), the Project
Managers can set the planned amount on each Analytic Account.

The accountant has the possibility to see the total of amount planned
for each Budget in order to ensure the total planned is not
greater/lower than what he planned for this Budget. Each list of record
can also be switched to a graphical view of it.

## Three reports are available:

1.  The first is available from a list of Budgets. It gives the
    spreading, for these Budgets, of the Analytic Accounts.
2.  The second is a summary of the previous one, it only gives the
    spreading, for the selected Budgets, of the Analytic Accounts.
3.  The last one is available from the Analytic Chart of Accounts. It
    gives the spreading, for the selected Analytic Accounts of Budgets.

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
crossovered_budget_view_form crossovered.budget.view.form crossovered.budget form New
crossovered_budget_view_tree crossovered.budget.view.list crossovered.budget list New
res_config_settings_view_form res.config.settings.view.form.inherit.account.budget res.config.settings xpath Inherits account.res_config_settings_view_form
view_account_analytic_account_form_inherit_budget account.analytic.account.form.inherit.budget account.analytic.account xpath Inherits analytic.view_account_analytic_account_form
view_budget_post_form account.budget.post.form account.budget.post form New
view_budget_post_search account.budget.post.search account.budget.post search New
view_budget_post_tree account.budget.post.list account.budget.post list New
view_crossovered_budget_kanban crossovered.budget.kanban crossovered.budget kanban New
view_crossovered_budget_line_form crossovered.budget.line.form crossovered.budget.lines form New
view_crossovered_budget_line_search account.budget.line.search crossovered.budget.lines search New
view_crossovered_budget_line_tree crossovered.budget.line.list crossovered.budget.lines list New
view_crossovered_budget_search crossovered.budget.search crossovered.budget search New
Models touched (4)

New fields (1)
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' inverse_name='analytic_account_id' string='Budget Lines'
Public methods (0)

No public methods.

New fields (4)
  • account_ids Many2many → account.account
    column1='budget_id' column2='account_id' comodel_name='account.account' domain="[('active', '=', True), ('company_ids', 'in', company_id)]" relation='account_budget_rel' string='Accounts'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' inverse_name='general_budget_id' string='Budget Lines'
  • name Char
    required=True
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (7)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True
  • creating_user_id Many2one → res.users
    comodel_name='res.users' default=<expr> string='Responsible'
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' copy=True inverse_name='crossovered_budget_id' string='Budget Lines'
  • date_from Date
    required=True string='Start Date'
  • date_to Date
    required=True string='End Date'
  • name Char
    required=True string='Budget Name'
  • state Selection
    copy=False default='draft' index=True readonly=True required=True selection=[('draft', 'Draft'), ('cancel', 'Cancelled'), ('confirm', 'Confirmed'), ('validate', 'Validated'), ('done', 'Done')] string='Status' tracking=True
Public methods (5)
  • action_budget_cancel(self)
  • action_budget_confirm(self)
  • action_budget_done(self)
  • action_budget_draft(self)
  • action_budget_validate(self)

New fields (11)
  • analytic_account_id Many2one → account.analytic.account
    comodel_name='account.analytic.account'
  • company_id Many2one
    readonly=True related='crossovered_budget_id.company_id' store=True
  • crossovered_budget_id Many2one → crossovered.budget
    comodel_name='crossovered.budget' index=True ondelete='cascade' required=True string='Budget'
  • date_from Date
    required=True string='Start Date'
  • date_to Date
    required=True string='End Date'
  • general_budget_id Many2one → account.budget.post
    comodel_name='account.budget.post' required=True string='Budgetary Position'
  • paid_date Date
  • percentage Float
    compute='_compute_percentage' string='Achievement'
  • planned_amount Float
    digits=0 required=True
  • practical_amount Float
    compute='_compute_practical_amount' digits=0
  • theoretical_amount Float
    compute='_compute_theoretical_amount' digits=0
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/account-budgeting
GIT
GIThttps://github.com/OCA/account-budgeting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-budgeting/tree/18.0/account_budget_oca
VERSION
VERSION 1.2.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Odoo S.A.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Odoo S.A.
COMMITTERS
COMMITTERSCarlos Lopez, Weblate, OCA-git-bot, oca-ci, Quan Nguyen
WEBSITE
WEBSITEhttps://github.com/OCA/account-budgeting
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:08
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows accountants to manage analytic and crossovered
budgets.

Once the Budgets are defined (in Invoicing/Budgets/Budgets), the Project
Managers can set the planned amount on each Analytic Account.

The accountant has the possibility to see the total of amount planned
for each Budget in order to ensure the total planned is not
greater/lower than what he planned for this Budget. Each list of record
can also be switched to a graphical view of it.

## Three reports are available:

1.  The first is available from a list of Budgets. It gives the
    spreading, for these Budgets, of the Analytic Accounts.
2.  The second is a summary of the previous one, it only gives the
    spreading, for the selected Budgets, of the Analytic Accounts.
3.  The last one is available from the Analytic Chart of Accounts. It
    gives the spreading, for the selected Analytic Accounts of Budgets.

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
crossovered_budget_view_form crossovered.budget.view.form crossovered.budget form New
crossovered_budget_view_tree crossovered.budget.view.list crossovered.budget list New
res_config_settings_view_form res.config.settings.view.form.inherit.account.budget res.config.settings xpath Inherits account.res_config_settings_view_form
view_account_analytic_account_form_inherit_budget account.analytic.account.form.inherit.budget account.analytic.account xpath Inherits analytic.view_account_analytic_account_form
view_budget_post_form account.budget.post.form account.budget.post form New
view_budget_post_search account.budget.post.search account.budget.post search New
view_budget_post_tree account.budget.post.list account.budget.post list New
view_crossovered_budget_kanban crossovered.budget.kanban crossovered.budget kanban New
view_crossovered_budget_line_form crossovered.budget.line.form crossovered.budget.lines form New
view_crossovered_budget_line_search account.budget.line.search crossovered.budget.lines search New
view_crossovered_budget_line_tree crossovered.budget.line.list crossovered.budget.lines list New
view_crossovered_budget_search crossovered.budget.search crossovered.budget search New
Models touched (4)

New fields (1)
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' inverse_name='analytic_account_id' string='Budget Lines'
Public methods (0)

No public methods.

New fields (4)
  • account_ids Many2many → account.account
    column1='budget_id' column2='account_id' comodel_name='account.account' domain="[('deprecated', '=', False), ('company_ids', 'in', company_id)]" relation='account_budget_rel' string='Accounts'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' inverse_name='general_budget_id' string='Budget Lines'
  • name Char
    required=True
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (7)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True
  • creating_user_id Many2one → res.users
    comodel_name='res.users' default=<expr> string='Responsible'
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' copy=True inverse_name='crossovered_budget_id' string='Budget Lines'
  • date_from Date
    required=True string='Start Date'
  • date_to Date
    required=True string='End Date'
  • name Char
    required=True string='Budget Name'
  • state Selection
    copy=False default='draft' index=True readonly=True required=True selection=[('draft', 'Draft'), ('cancel', 'Cancelled'), ('confirm', 'Confirmed'), ('validate', 'Validated'), ('done', 'Done')] string='Status' tracking=True
Public methods (5)
  • action_budget_cancel(self)
  • action_budget_confirm(self)
  • action_budget_done(self)
  • action_budget_draft(self)
  • action_budget_validate(self)

New fields (12)
  • analytic_account_id Many2one → account.analytic.account
    comodel_name='account.analytic.account'
  • company_id Many2one
    readonly=True related='crossovered_budget_id.company_id' store=True
  • crossovered_budget_id Many2one → crossovered.budget
    comodel_name='crossovered.budget' index=True ondelete='cascade' required=True string='Budget'
  • date_from Date
    required=True string='Start Date'
  • date_to Date
    required=True string='End Date'
  • display_name Char
    compute='_compute_display_name_budget'
  • general_budget_id Many2one → account.budget.post
    comodel_name='account.budget.post' required=True string='Budgetary Position'
  • paid_date Date
  • percentage Float
    compute='_compute_percentage' string='Achievement'
  • planned_amount Float
    digits=0 required=True
  • practical_amount Float
    compute='_compute_practical_amount' digits=0
  • theoretical_amount Float
    compute='_compute_theoretical_amount' digits=0
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/account-budgeting
GIT
GIThttps://github.com/OCA/account-budgeting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-budgeting/tree/17.0/account_budget_oca
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Odoo S.A.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Odoo S.A.
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, Dario Rodriguez
WEBSITE
WEBSITEhttps://github.com/OCA/account-budgeting
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:59:25
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
crossovered_budget_view_form crossovered.budget.view.form crossovered.budget form New
crossovered_budget_view_tree crossovered.budget.view.tree crossovered.budget tree New
res_config_settings_view_form res.config.settings.view.form.inherit.account.budget res.config.settings xpath Inherits account.res_config_settings_view_form
view_account_analytic_account_form_inherit_budget account.analytic.account.form.inherit.budget account.analytic.account xpath Inherits analytic.view_account_analytic_account_form
view_budget_post_form account.budget.post.form account.budget.post form New
view_budget_post_search account.budget.post.search account.budget.post search New
view_budget_post_tree account.budget.post.tree account.budget.post tree New
view_crossovered_budget_kanban crossovered.budget.kanban crossovered.budget kanban New
view_crossovered_budget_line_form crossovered.budget.line.form crossovered.budget.lines form New
view_crossovered_budget_line_search account.budget.line.search crossovered.budget.lines search New
view_crossovered_budget_line_tree crossovered.budget.line.tree crossovered.budget.lines tree New
view_crossovered_budget_search crossovered.budget.search crossovered.budget search New
Models touched (4)

New fields (1)
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' inverse_name='analytic_account_id' string='Budget Lines'
Public methods (0)

No public methods.

New fields (4)
  • account_ids Many2many → account.account
    column1='budget_id' column2='account_id' comodel_name='account.account' domain="[('deprecated', '=', False), ('company_id', '=', company_id)]" relation='account_budget_rel' string='Accounts'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' inverse_name='general_budget_id' string='Budget Lines'
  • name Char
    required=True
Public methods (2)
  • create(self, vals)
    @api.model
  • write(self, vals)

New fields (7)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True
  • creating_user_id Many2one → res.users
    comodel_name='res.users' default=<expr> string='Responsible'
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' copy=True inverse_name='crossovered_budget_id' string='Budget Lines'
  • date_from Date
    required=True string='Start Date'
  • date_to Date
    required=True string='End Date'
  • name Char
    required=True string='Budget Name'
  • state Selection
    copy=False default='draft' index=True readonly=True required=True selection=[('draft', 'Draft'), ('cancel', 'Cancelled'), ('confirm', 'Confirmed'), ('validate', 'Validated'), ('done', 'Done')] string='Status' tracking=True
Public methods (5)
  • action_budget_cancel(self)
  • action_budget_confirm(self)
  • action_budget_done(self)
  • action_budget_draft(self)
  • action_budget_validate(self)

New fields (11)
  • analytic_account_id Many2one → account.analytic.account
    comodel_name='account.analytic.account'
  • company_id Many2one
    readonly=True related='crossovered_budget_id.company_id' store=True
  • crossovered_budget_id Many2one → crossovered.budget
    comodel_name='crossovered.budget' index=True ondelete='cascade' required=True string='Budget'
  • date_from Date
    required=True string='Start Date'
  • date_to Date
    required=True string='End Date'
  • general_budget_id Many2one → account.budget.post
    comodel_name='account.budget.post' required=True string='Budgetary Position'
  • paid_date Date
  • percentage Float
    compute='_compute_percentage' string='Achievement'
  • planned_amount Float
    digits=0 required=True
  • practical_amount Float
    compute='_compute_practical_amount' digits=0
  • theoretical_amount Float
    compute='_compute_theoretical_amount' digits=0
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/account-budgeting
GIT
GIThttps://github.com/OCA/account-budgeting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-budgeting/tree/16.0/account_budget_oca
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYAccounting
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Odoo S.A.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Odoo S.A.
COMMITTERS
COMMITTERSStéphane Bidoul, Miquel Raïch, Weblate, OCA-git-bot, oca-ci, pol
WEBSITE
WEBSITEhttps://github.com/OCA/account-budgeting
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:41
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
crossovered_budget_view_form crossovered.budget.view.form crossovered.budget form New
crossovered_budget_view_tree crossovered.budget.view.tree crossovered.budget tree New
res_config_settings_view_form res.config.settings.view.form.inherit.account.budget res.config.settings div Inherits account.res_config_settings_view_form
view_account_analytic_account_form_inherit_budget account.analytic.account.form.inherit.budget account.analytic.account xpath Inherits analytic.view_account_analytic_account_form
view_budget_post_form account.budget.post.form account.budget.post form New
view_budget_post_search account.budget.post.search account.budget.post search New
view_budget_post_tree account.budget.post.tree account.budget.post tree New
view_crossovered_budget_kanban crossovered.budget.kanban crossovered.budget kanban New
view_crossovered_budget_line_form crossovered.budget.line.form crossovered.budget.lines form New
view_crossovered_budget_line_search account.budget.line.search crossovered.budget.lines search New
view_crossovered_budget_line_tree crossovered.budget.line.tree crossovered.budget.lines tree New
view_crossovered_budget_search crossovered.budget.search crossovered.budget search New
Models touched (4)

New fields (1)
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' inverse_name='analytic_account_id' string='Budget Lines'
Public methods (0)

No public methods.

New fields (4)
  • account_ids Many2many → account.account
    column1='budget_id' column2='account_id' comodel_name='account.account' domain="[('deprecated', '=', False), ('company_id', '=', company_id)]" relation='account_budget_rel' string='Accounts'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' inverse_name='general_budget_id' string='Budget Lines'
  • name Char
    required=True
Public methods (2)
  • create(self, vals)
    @api.model
  • write(self, vals)

New fields (7)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True
  • creating_user_id Many2one → res.users
    comodel_name='res.users' default=<expr> string='Responsible'
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' copy=True inverse_name='crossovered_budget_id' states={'done': [('readonly', True)]} string='Budget Lines'
  • date_from Date
    required=True states={'done': [('readonly', True)]} string='Start Date'
  • date_to Date
    required=True states={'done': [('readonly', True)]} string='End Date'
  • name Char
    required=True states={'done': [('readonly', True)]} string='Budget Name'
  • state Selection
    copy=False default='draft' index=True readonly=True required=True selection=[('draft', 'Draft'), ('cancel', 'Cancelled'), ('confirm', 'Confirmed'), ('validate', 'Validated'), ('done', 'Done')] string='Status' tracking=True
Public methods (5)
  • action_budget_cancel(self)
  • action_budget_confirm(self)
  • action_budget_done(self)
  • action_budget_draft(self)
  • action_budget_validate(self)

New fields (11)
  • analytic_account_id Many2one → account.analytic.account
    comodel_name='account.analytic.account'
  • company_id Many2one
    readonly=True related='crossovered_budget_id.company_id' store=True
  • crossovered_budget_id Many2one → crossovered.budget
    comodel_name='crossovered.budget' index=True ondelete='cascade' required=True string='Budget'
  • date_from Date
    required=True string='Start Date'
  • date_to Date
    required=True string='End Date'
  • general_budget_id Many2one → account.budget.post
    comodel_name='account.budget.post' required=True string='Budgetary Position'
  • paid_date Date
  • percentage Float
    compute='_compute_percentage' string='Achievement'
  • planned_amount Float
    digits=0 required=True
  • practical_amount Float
    compute='_compute_practical_amount' digits=0
  • theoretical_amount Float
    compute='_compute_theoretical_amount' digits=0
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/account-budgeting
GIT
GIThttps://github.com/OCA/account-budgeting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-budgeting/tree/14.0/account_budget_oca
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYAccounting
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Odoo S.A.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Odoo S.A.
COMMITTERS
COMMITTERSOCA Transbot, Miquel Raïch, oca-travis, Weblate, OCA-git-bot, oca-ci, Saran440, Freni-OSI
WEBSITE
WEBSITEhttps://github.com/OCA/account-budgeting
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:50
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
crossovered_budget_view_form crossovered.budget.view.form crossovered.budget form New
crossovered_budget_view_tree crossovered.budget.view.tree crossovered.budget tree New
res_config_settings_view_form res.config.settings.view.form.inherit.account.budget res.config.settings div Inherits account.res_config_settings_view_form
view_account_analytic_account_form_inherit_budget account.analytic.account.form.inherit.budget account.analytic.account xpath Inherits analytic.view_account_analytic_account_form
view_budget_post_form account.budget.post.form account.budget.post form New
view_budget_post_search account.budget.post.search account.budget.post search New
view_budget_post_tree account.budget.post.tree account.budget.post tree New
view_crossovered_budget_kanban crossovered.budget.kanban crossovered.budget kanban New
view_crossovered_budget_line_form crossovered.budget.line.form crossovered.budget.lines form New
view_crossovered_budget_line_search account.budget.line.search crossovered.budget.lines search New
view_crossovered_budget_line_tree crossovered.budget.line.tree crossovered.budget.lines tree New
view_crossovered_budget_search crossovered.budget.search crossovered.budget search New
Models touched (4)

New fields (1)
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' inverse_name='analytic_account_id' string='Budget Lines'
Public methods (0)

No public methods.

New fields (4)
  • account_ids Many2many → account.account
    column1='budget_id' column2='account_id' comodel_name='account.account' domain="[('deprecated', '=', False), ('company_id', '=', company_id)]" relation='account_budget_rel' string='Accounts'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' inverse_name='general_budget_id' string='Budget Lines'
  • name Char
    required=True
Public methods (2)
  • create(self, vals)
    @api.model
  • write(self, vals)

New fields (7)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True
  • creating_user_id Many2one → res.users
    comodel_name='res.users' default=<expr> string='Responsible'
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' copy=True inverse_name='crossovered_budget_id' states={'done': [('readonly', True)]} string='Budget Lines'
  • date_from Date
    required=True states={'done': [('readonly', True)]} string='Start Date'
  • date_to Date
    required=True states={'done': [('readonly', True)]} string='End Date'
  • name Char
    required=True states={'done': [('readonly', True)]} string='Budget Name'
  • state Selection
    copy=False default='draft' index=True readonly=True required=True selection=[('draft', 'Draft'), ('cancel', 'Cancelled'), ('confirm', 'Confirmed'), ('validate', 'Validated'), ('done', 'Done')] string='Status' tracking=True
Public methods (5)
  • action_budget_cancel(self)
  • action_budget_confirm(self)
  • action_budget_done(self)
  • action_budget_draft(self)
  • action_budget_validate(self)

New fields (11)
  • analytic_account_id Many2one → account.analytic.account
    comodel_name='account.analytic.account'
  • company_id Many2one
    readonly=True related='crossovered_budget_id.company_id' store=True
  • crossovered_budget_id Many2one → crossovered.budget
    comodel_name='crossovered.budget' index=True ondelete='cascade' required=True string='Budget'
  • date_from Date
    required=True string='Start Date'
  • date_to Date
    required=True string='End Date'
  • general_budget_id Many2one → account.budget.post
    comodel_name='account.budget.post' required=True string='Budgetary Position'
  • paid_date Date
  • percentage Float
    compute='_compute_percentage' string='Achievement'
  • planned_amount Float
    digits=0 required=True
  • practical_amount Float
    compute='_compute_practical_amount' digits=0
  • theoretical_amount Float
    compute='_compute_theoretical_amount' digits=0
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/account-budgeting
GIT
GIThttps://github.com/OCA/account-budgeting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-budgeting/tree/13.0/account_budget_oca
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Odoo S.A.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Odoo S.A.
COMMITTERS
COMMITTERSGitHub, OCA Transbot, oca-travis, Weblate, OCA-git-bot, amcor
WEBSITE
WEBSITEhttps://github.com/OCA/account-budgeting
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:09
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
crossovered_budget_view_form crossovered.budget.view.form crossovered.budget form New
crossovered_budget_view_tree crossovered.budget.view.tree crossovered.budget tree New
res_config_settings_view_form res.config.settings.view.form.inherit.account.budget res.config.settings div Inherits account.res_config_settings_view_form
view_account_analytic_account_form_inherit_budget account.analytic.account.form.inherit.budget account.analytic.account xpath Inherits analytic.view_account_analytic_account_form
view_budget_post_form account.budget.post.form account.budget.post form New
view_budget_post_search account.budget.post.search account.budget.post search New
view_budget_post_tree account.budget.post.tree account.budget.post tree New
view_crossovered_budget_kanban crossovered.budget.kanban crossovered.budget kanban New
view_crossovered_budget_line_form crossovered.budget.line.form crossovered.budget.lines form New
view_crossovered_budget_line_search account.budget.line.search crossovered.budget.lines search New
view_crossovered_budget_line_tree crossovered.budget.line.tree crossovered.budget.lines tree New
view_crossovered_budget_search crossovered.budget.search crossovered.budget search New
Models touched (4)

New fields (1)
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' inverse_name='analytic_account_id' string='Budget Lines'
Public methods (0)

No public methods.

New fields (4)
  • account_ids Many2many → account.account
    column1='budget_id' column2='account_id' comodel_name='account.account' domain="[('deprecated', '=', False), ('company_id', '=', company_id)]" relation='account_budget_rel' string='Accounts'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' inverse_name='general_budget_id' string='Budget Lines'
  • name Char
    required=True
Public methods (2)
  • create(self, vals)
    @api.model
  • write(self, vals)

New fields (7)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True
  • creating_user_id Many2one → res.users
    comodel_name='res.users' default=<expr> string='Responsible'
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' copy=True inverse_name='crossovered_budget_id' states={'done': [('readonly', True)]} string='Budget Lines'
  • date_from Date
    required=True states={'done': [('readonly', True)]} string='Start Date'
  • date_to Date
    required=True states={'done': [('readonly', True)]} string='End Date'
  • name Char
    required=True states={'done': [('readonly', True)]} string='Budget Name'
  • state Selection
    copy=False default='draft' index=True readonly=True required=True selection=[('draft', 'Draft'), ('cancel', 'Cancelled'), ('confirm', 'Confirmed'), ('validate', 'Validated'), ('done', 'Done')] string='Status' track_visibility='always'
Public methods (5)
  • action_budget_cancel(self)
  • action_budget_confirm(self)
  • action_budget_done(self)
  • action_budget_draft(self)
  • action_budget_validate(self)

New fields (11)
  • analytic_account_id Many2one → account.analytic.account
    comodel_name='account.analytic.account'
  • company_id Many2one
    readonly=True related='crossovered_budget_id.company_id' store=True
  • crossovered_budget_id Many2one → crossovered.budget
    comodel_name='crossovered.budget' index=True ondelete='cascade' required=True string='Budget'
  • date_from Date
    required=True string='Start Date'
  • date_to Date
    required=True string='End Date'
  • general_budget_id Many2one → account.budget.post
    comodel_name='account.budget.post' required=True string='Budgetary Position'
  • paid_date Date
  • percentage Float
    compute='_compute_percentage' string='Achievement'
  • planned_amount Float
    digits=0 required=True
  • practical_amount Float
    compute='_compute_practical_amount' digits=0
  • theoretical_amount Float
    compute='_compute_theoretical_amount' digits=0
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/account-budgeting
GIT
GIThttps://github.com/OCA/account-budgeting.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/account-budgeting/tree/12.0/account_budget_oca
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Odoo S.A.
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Odoo S.A.
COMMITTERS
COMMITTERSOCA Transbot, Miquel Raïch, oca-travis, Weblate, OCA-git-bot, Oihane Crucelaegui, Eduardo Aparicio, Cyril Vinh-Tung
WEBSITE
WEBSITEhttps://github.com/OCA/account-budgeting
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:13
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - http_routing
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
crossovered_budget_view_form crossovered.budget.view.form crossovered.budget form New
crossovered_budget_view_tree crossovered.budget.view.tree crossovered.budget tree New
res_config_settings_view_form res.config.settings.view.form.inherit.account.budget res.config.settings div Inherits account.res_config_settings_view_form
view_account_analytic_account_form_inherit_budget account.analytic.account.form.inherit.budget account.analytic.account xpath Inherits analytic.view_account_analytic_account_form
view_budget_post_form account.budget.post.form account.budget.post form New
view_budget_post_search account.budget.post.search account.budget.post search New
view_budget_post_tree account.budget.post.tree account.budget.post tree New
view_crossovered_budget_kanban crossovered.budget.kanban crossovered.budget kanban New
view_crossovered_budget_line_form crossovered.budget.line.form crossovered.budget.lines form New
view_crossovered_budget_line_search account.budget.line.search crossovered.budget.lines search New
view_crossovered_budget_line_tree crossovered.budget.line.tree crossovered.budget.lines tree New
view_crossovered_budget_search crossovered.budget.search crossovered.budget search New
Models touched (4)

New fields (1)
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' inverse_name='analytic_account_id' string='Budget Lines'
Public methods (0)

No public methods.

New fields (4)
  • account_ids Many2many → account.account
    column1='budget_id' column2='account_id' comodel_name='account.account' domain=[('deprecated', '=', False)] relation='account_budget_rel' string='Accounts'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True string='Company'
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' inverse_name='general_budget_id' string='Budget Lines'
  • name Char
    required=True
Public methods (2)
  • create(self, vals)
    @api.model
  • write(self, vals)
    @api.multi

New fields (7)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True string='Company'
  • creating_user_id Many2one → res.users
    comodel_name='res.users' default=<expr> string='Responsible'
  • crossovered_budget_line_ids One2many → crossovered.budget.lines
    comodel_name='crossovered.budget.lines' copy=True inverse_name='crossovered_budget_id' states={'done': [('readonly', True)]} string='Budget Lines'
  • date_from Date
    required=True states={'done': [('readonly', True)]} string='Start Date'
  • date_to Date
    required=True states={'done': [('readonly', True)]} string='End Date'
  • name Char
    required=True states={'done': [('readonly', True)]} string='Budget Name'
  • state Selection
    copy=False default='draft' index=True readonly=True required=True selection=[('draft', 'Draft'), ('cancel', 'Cancelled'), ('confirm', 'Confirmed'), ('validate', 'Validated'), ('done', 'Done')] string='Status' track_visibility='always'
Public methods (5)
  • action_budget_cancel(self)
    @api.multi
  • action_budget_confirm(self)
    @api.multi
  • action_budget_done(self)
    @api.multi
  • action_budget_draft(self)
    @api.multi
  • action_budget_validate(self)
    @api.multi

New fields (11)
  • analytic_account_id Many2one → account.analytic.account
    comodel_name='account.analytic.account' string='Analytic Account'
  • company_id Many2one → res.company
    comodel_name='res.company' readonly=True related='crossovered_budget_id.company_id' store=True string='Company'
  • crossovered_budget_id Many2one → crossovered.budget
    comodel_name='crossovered.budget' index=True ondelete='cascade' required=True string='Budget'
  • date_from Date
    required=True string='Start Date'
  • date_to Date
    required=True string='End Date'
  • general_budget_id Many2one → account.budget.post
    comodel_name='account.budget.post' required=True string='Budgetary Position'
  • paid_date Date
  • percentage Float
    compute='_compute_percentage' string='Achievement'
  • planned_amount Float
    digits=0 required=True
  • practical_amount Float
    compute='_compute_practical_amount' digits=0
  • theoretical_amount Float
    compute='_compute_theoretical_amount' digits=0 oldname='theoritical_amount'
Public methods (0)

No public methods.

STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/account-budgeting
PULL REQUEST
PULL REQUEST[MIG] account_budget_oca 15.0 (#56)
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/account-budgeting
PULL REQUEST
PULL REQUEST15.0 mig account budget oca (#55)