Repository
odoo/odoo · module folder
Module version
1.2
Category
Accounting/Accounting
Folder size
2.6 MB
License
LGPL-3
Application
No
Auto-installable
No
Website
None
Last tracking update
2026-08-20 04:11:38
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Xavier Morel, Raphael Collet, Thibault Delavallée, Florent Xicluna, Odoo Translation Bot, Aaron Bohy, Yannick Tivisse, Jorge Pinna Puissant, Julien Castiaux, Andrea Grazioso (agr-odoo), Julien Mougenot, Anh Thao Pham (pta), Alvaro Fuentes, Prakash Prajapati, Rémy Voet (ryv), Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, william-andre, John (jol), Hubert Van De Walle, Renaud Thiry, Louis Wicket (wil), Maximilien (malb), Victor Piryns (pivi), Gauthier Wala (gawa), Dylan Kiss (dyki), Antoine Boonen, guva-odoo, Paul Stroobant, Mélanie, lase@odoo.com, Maxime de Neuville, reka-odoo, AMZIL Ayoub, yosa-odoo, Harsh Shah, Ahmad (alah), Maira Salazar (srma), Logan Staelens, elhayyany, Mohammad Abdulmoneim (abdu), khsr-odoo, Pierre Lamotte (pila), Pierre Pulinckx, Michaël Mattiello, Krzysztof Magusiak (krma), Akash Pandey, Hazem Ibrahim, Junqi, igbe, macs-odoo, Ayush Modi, saurabh, Camila Vives
Odoo dependencies
odoo/odoo:
- web
- bus
- uom
Python dependencies
None
System dependencies
None
Required by
account, account_analytic_distribution_model_recalculate, account_analytic_sequence, account_analytic_tag, analytic_amount_security, analytic_operating_unit, hr_timesheet, pms_account, project, stock_analytic
Description
Module for defining analytic accounting object.
===============================================

In Odoo, analytic accounts are linked to general accounts but are treated
totally independently. So, you can enter various different analytic operations
that have no counterpart in the general financial accounts.
    

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
account_analytic_distribution_model_form_view account.analytic.distribution.model.form account.analytic.distribution.model form New
account_analytic_distribution_model_tree_view account.analytic.distribution.model.list account.analytic.distribution.model list New
account_analytic_plan_form_view account.analytic.plan.form account.analytic.plan form New
account_analytic_plan_tree_view account.analytic.plan.list account.analytic.plan list New
view_account_analytic_account_form analytic.analytic.account.form account.analytic.account form New
view_account_analytic_account_kanban account.analytic.account.kanban account.analytic.account kanban New
view_account_analytic_account_list account.analytic.account.list account.analytic.account list New
view_account_analytic_account_list_select account.analytic.account.list.select account.analytic.account list Inherits analytic.view_account_analytic_account_list
view_account_analytic_account_search account.analytic.account.search account.analytic.account search New
view_account_analytic_line_filter account.analytic.line.select account.analytic.line search New
view_account_analytic_line_form account.analytic.line.form account.analytic.line form New
view_account_analytic_line_graph account.analytic.line.graph account.analytic.line graph New
view_account_analytic_line_kanban account.analytic.line.kanban account.analytic.line kanban New
view_account_analytic_line_pivot account.analytic.line.pivot account.analytic.line pivot New
view_account_analytic_line_tree account.analytic.line.list account.analytic.line list New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (9)

New fields (13)
  • active Boolean
    default=True help='Deactivate the account.' tracking=True args: 'Active'
  • balance Monetary
    compute='_compute_debit_credit_balance' string='Balance'
  • code Char
    index='btree' string='Reference' tracking=True
  • color Integer
    related='plan_id.color' args: 'Color Index'
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • credit Monetary
    compute='_compute_debit_credit_balance' string='Credit'
  • currency_id Many2one
    related='company_id.currency_id' string='Currency'
  • debit Monetary
    compute='_compute_debit_credit_balance' string='Debit'
  • line_ids One2many → account.analytic.line
    string='Analytic Lines' args: 'account.analytic.line', 'auto_account_id'
  • name Char
    index='trigram' required=True string='Analytic Account' tracking=True translate=True
  • partner_id Many2one → res.partner
    bypass_search_access=True check_company=True index='btree_not_null' string='Customer' tracking=True args: 'res.partner'
  • plan_id Many2one → account.analytic.plan
    index=True required=True string='Plan' args: 'account.analytic.plan'
  • root_plan_id Many2one → account.analytic.plan
    related='plan_id.root_id' store=True string='Root Plan' args: 'account.analytic.plan'
Public methods (3)
  • copy_data(self, default=None)
  • web_read(self, specification: <expr>) -> <expr>
  • write(self, vals)

New fields (4)
  • analytic_plan_id Many2one → account.analytic.plan
    index='btree_not_null' args: 'account.analytic.plan'
  • applicability Selection
    required=True string='Applicability' args: [('optional', 'Optional'), ('mandatory', 'Mandatory'), ('unavailable', 'Unavailable')]
  • business_domain Selection
    required=True selection=[('general', 'Miscellaneous')] string='Domain'
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (4)
  • company_id Many2one → res.company
    default=<expr> help='Select a company for which the analytic distribution will be used (e.g. create new customer invoice or Sales order if we select this company, it will automatically take this as an analytic account)' ondelete='cascade' string='Company' args: 'res.company'
  • partner_category_id Many2one → res.partner.category
    help='Select a partner category for which the analytic distribution will be used (e.g. create new customer invoice or Sales order if we select this partner, it will automatically take this as an analytic account)' ondelete='cascade' string='Partner Category' args: 'res.partner.category'
  • partner_id Many2one → res.partner
    help='Select a partner for which the analytic distribution will be used (e.g. create new customer invoice or Sales order if we select this partner, it will automatically take this as an analytic account)' ondelete='cascade' string='Partner' args: 'res.partner'
  • sequence Integer
    default=10
Public methods (0)

No public methods.

New fields (13)
  • amount Monetary
    default=0.0 required=True args: 'Amount'
  • analytic_distribution Json
    compute='_compute_analytic_distribution' inverse='_inverse_analytic_distribution' args: 'Analytic Distribution'
  • analytic_precision Integer
    default=<expr> store=False
  • category Selection
    default='other' args: [('other', 'Other')]
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • currency_id Many2one
    compute_sudo=True readonly=True related='company_id.currency_id' store=True string='Currency'
  • date Date
    default=fields.Date.context_today index=True required=True args: 'Date'
  • fiscal_year_search Boolean
    export_string_translation=False exportable=False search='_search_fiscal_date' store=False
  • name Char
    required=True args: 'Description'
  • partner_id Many2one → res.partner
    check_company=True string='Partner' args: 'res.partner'
  • product_uom_id Many2one → uom.uom
    string='Unit' args: 'uom.uom'
  • unit_amount Float
    default=0.0 args: 'Quantity'
  • user_id Many2one → res.users
    default=<expr> index=True string='User' args: 'res.users'
Public methods (0)

No public methods.

New fields (15)
  • account_count Integer
    compute='_compute_analytic_account_count' args: 'Analytic Accounts Count'
  • account_ids One2many → account.analytic.account
    string='Accounts' args: 'account.analytic.account', 'plan_id'
  • all_account_count Integer
    compute='_compute_all_analytic_account_count' args: 'All Analytic Accounts Count'
  • applicability_ids One2many → account.analytic.applicability
    domain="[('company_id', '=', current_company_id)]" string='Applicability' args: 'account.analytic.applicability', 'analytic_plan_id'
  • children_count Integer
    compute='_compute_children_count' args: 'Children Plans Count'
  • children_ids One2many → account.analytic.plan
    string='Childrens' args: 'account.analytic.plan', 'parent_id'
  • color Integer
    default=_default_color args: 'Color'
  • complete_name Char
    compute='_compute_complete_name' recursive=True store=True args: 'Complete Name'
  • default_applicability Selection
    company_dependent=True readonly=False selection=[('optional', 'Optional'), ('mandatory', 'Mandatory'), ('unavailable', 'Unavailable')] string='Default Applicability'
  • description Text
    string='Description'
  • name Char
    inverse='_inverse_name' required=True translate=True
  • parent_id Many2one → account.analytic.plan
    domain="['!', ('id', 'child_of', id)]" index='btree_not_null' inverse='_inverse_parent_id' ondelete='cascade' string='Parent' args: 'account.analytic.plan'
  • parent_path Char
    index='btree'
  • root_id Many2one → account.analytic.plan
    compute='_compute_root_id' search='_search_root_id' args: 'account.analytic.plan'
  • sequence Integer
    default=10
Public methods (6)
  • action_view_analytical_accounts(self)
  • action_view_children_plans(self)
  • create(self, vals_list)
    @api.model_create_multi
  • get_relevant_plans(self, **kwargs)
    @api.model
    Returns the list of plans that should be available. This list is computed based on the applicabilities of root plans.
  • unlink(self)
  • write(self, vals)

New fields (3)
  • analytic_distribution Json
    compute='_compute_analytic_distribution' copy=True readonly=False search='_search_analytic_distribution' store=True args: 'Analytic Distribution'
  • analytic_precision Integer
    default=<expr> store=False
  • distribution_analytic_account_ids Many2many → account.analytic.account
    comodel_name='account.analytic.account' compute='_compute_distribution_analytic_account_ids' search='_search_distribution_analytic_account_ids'
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
    Format the analytic_distribution float value, so equality on analytic_distribution can be done
  • filtered_domain(self, domain)
  • init(self)
  • write(self, vals)
    Format the analytic_distribution float value, so equality on analytic_distribution can be done

New fields (2)
  • account_id Many2one → account.analytic.account
    check_company=True index=True ondelete='restrict' args: 'account.analytic.account', 'Project Account'
  • auto_account_id Many2one → account.analytic.account
    comodel_name='account.analytic.account' compute='_compute_auto_account' inverse='_inverse_auto_account' search='_search_auto_account' string='Analytic Account'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • fields_get(self, allfields=None, attributes=None)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • write(self, vals)
    When this paramater is changed, dynamic fields needs to be recomputed

New fields (1)
  • group_analytic_accounting Boolean
    implied_group='analytic.group_analytic_accounting' string='Analytic Accounting'
Public methods (0)

No public methods.

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…