TIP: You can type at any time to perform a new search.
Analytic Accounting
analytic · odoo/odoo
- 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
- 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 ID | Name | Model | Type | Status |
|---|---|---|---|---|
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)
-
activeBooleandefault=Truehelp='Deactivate the account.'tracking=True args: 'Active' -
balanceMonetarycompute='_compute_debit_credit_balance'string='Balance' -
codeCharindex='btree'string='Reference'tracking=True -
colorIntegerrelated='plan_id.color' args: 'Color Index' -
company_idMany2one → res.companydefault=<expr>string='Company' args: 'res.company' -
creditMonetarycompute='_compute_debit_credit_balance'string='Credit' -
currency_idMany2onerelated='company_id.currency_id'string='Currency' -
debitMonetarycompute='_compute_debit_credit_balance'string='Debit' -
line_idsOne2many → account.analytic.linestring='Analytic Lines' args: 'account.analytic.line', 'auto_account_id' -
nameCharindex='trigram'required=Truestring='Analytic Account'tracking=Truetranslate=True -
partner_idMany2one → res.partnerbypass_search_access=Truecheck_company=Trueindex='btree_not_null'string='Customer'tracking=True args: 'res.partner' -
plan_idMany2one → account.analytic.planindex=Truerequired=Truestring='Plan' args: 'account.analytic.plan' -
root_plan_idMany2one → account.analytic.planrelated='plan_id.root_id'store=Truestring='Root Plan' args: 'account.analytic.plan'
-
copy_data(self, default=None) -
web_read(self, specification: <expr>) -> <expr> -
write(self, vals)
New fields (4)
-
analytic_plan_idMany2one → account.analytic.planindex='btree_not_null' args: 'account.analytic.plan' -
applicabilitySelectionrequired=Truestring='Applicability' args: [('optional', 'Optional'), ('mandatory', 'Mandatory'), ('unavailable', 'Unavailable')] -
business_domainSelectionrequired=Trueselection=[('general', 'Miscellaneous')]string='Domain' -
company_idMany2one → res.companydefault=<expr>string='Company' args: 'res.company'
-
create(self, vals_list)@api.model_create_multi -
write(self, vals)
New fields (4)
-
company_idMany2one → res.companydefault=<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_idMany2one → res.partner.categoryhelp='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_idMany2one → res.partnerhelp='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' -
sequenceIntegerdefault=10
No public methods.
New fields (13)
-
amountMonetarydefault=0.0required=True args: 'Amount' -
analytic_distributionJsoncompute='_compute_analytic_distribution'inverse='_inverse_analytic_distribution' args: 'Analytic Distribution' -
analytic_precisionIntegerdefault=<expr>store=False -
categorySelectiondefault='other' args: [('other', 'Other')] -
company_idMany2one → res.companydefault=<expr>readonly=Truerequired=Truestring='Company' args: 'res.company' -
currency_idMany2onecompute_sudo=Truereadonly=Truerelated='company_id.currency_id'store=Truestring='Currency' -
dateDatedefault=fields.Date.context_todayindex=Truerequired=True args: 'Date' -
fiscal_year_searchBooleanexport_string_translation=Falseexportable=Falsesearch='_search_fiscal_date'store=False -
nameCharrequired=True args: 'Description' -
partner_idMany2one → res.partnercheck_company=Truestring='Partner' args: 'res.partner' -
product_uom_idMany2one → uom.uomstring='Unit' args: 'uom.uom' -
unit_amountFloatdefault=0.0 args: 'Quantity' -
user_idMany2one → res.usersdefault=<expr>index=Truestring='User' args: 'res.users'
No public methods.
New fields (15)
-
account_countIntegercompute='_compute_analytic_account_count' args: 'Analytic Accounts Count' -
account_idsOne2many → account.analytic.accountstring='Accounts' args: 'account.analytic.account', 'plan_id' -
all_account_countIntegercompute='_compute_all_analytic_account_count' args: 'All Analytic Accounts Count' -
applicability_idsOne2many → account.analytic.applicabilitydomain="[('company_id', '=', current_company_id)]"string='Applicability' args: 'account.analytic.applicability', 'analytic_plan_id' -
children_countIntegercompute='_compute_children_count' args: 'Children Plans Count' -
children_idsOne2many → account.analytic.planstring='Childrens' args: 'account.analytic.plan', 'parent_id' -
colorIntegerdefault=_default_color args: 'Color' -
complete_nameCharcompute='_compute_complete_name'recursive=Truestore=True args: 'Complete Name' -
default_applicabilitySelectioncompany_dependent=Truereadonly=Falseselection=[('optional', 'Optional'), ('mandatory', 'Mandatory'), ('unavailable', 'Unavailable')]string='Default Applicability' -
descriptionTextstring='Description' -
nameCharinverse='_inverse_name'required=Truetranslate=True -
parent_idMany2one → account.analytic.plandomain="['!', ('id', 'child_of', id)]"index='btree_not_null'inverse='_inverse_parent_id'ondelete='cascade'string='Parent' args: 'account.analytic.plan' -
parent_pathCharindex='btree' -
root_idMany2one → account.analytic.plancompute='_compute_root_id'search='_search_root_id' args: 'account.analytic.plan' -
sequenceIntegerdefault=10
-
action_view_analytical_accounts(self) -
action_view_children_plans(self) -
create(self, vals_list)@api.model_create_multi -
get_relevant_plans(self, **kwargs)@api.modelReturns 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_distributionJsoncompute='_compute_analytic_distribution'copy=Truereadonly=Falsesearch='_search_analytic_distribution'store=True args: 'Analytic Distribution' -
analytic_precisionIntegerdefault=<expr>store=False -
distribution_analytic_account_idsMany2many → account.analytic.accountcomodel_name='account.analytic.account'compute='_compute_distribution_analytic_account_ids'search='_search_distribution_analytic_account_ids'
-
create(self, vals_list)@api.model_create_multiFormat 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_idMany2one → account.analytic.accountcheck_company=Trueindex=Trueondelete='restrict' args: 'account.analytic.account', 'Project Account' -
auto_account_idMany2one → account.analytic.accountcomodel_name='account.analytic.account'compute='_compute_auto_account'inverse='_inverse_auto_account'search='_search_auto_account'string='Analytic Account'
-
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_accountingBooleanimplied_group='analytic.group_analytic_accounting'string='Analytic Accounting'
No public methods.
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…