TIP: You can type at any time to perform a new search.
Analytic Accounting
analytic · odoo/odoo
Security findings
- Repository
- odoo/odoo · module folder
- Module version
- 1.2
- Category
- Accounting/Accounting
- Folder size
- 2.5 MB
- License
- LGPL-3
- Application
- No
- Auto-installable
- No
- Website
- None
- Last tracking update
- 2026-09-30 18:18:36
- Authors
- Odoo S.A.
- Maintainers
- Odoo S.A.
- Committers
- Raphael Collet, Odoo Translation Bot, Christophe Matthieu, Géry Debongnie, Jorge Pinna Puissant, Julien Castiaux, Victor Feyens, Andrea Grazioso (agr-odoo), Julien Mougenot, David Beguin, Tiffany Chang (tic), william-andre, Nicolas Bayet, Renaud Thiry, Victor Piryns (pivi), Dylan Kiss (dyki), Chong Wang (cwg), Xavier Bol (xbo), adda-odoo, omra-odoo, Mélanie, reka-odoo, AMZIL Ayoub, Harsh Shah, Ahmad (alah), Logan Staelens, roto-odoo, Michaël Mattiello, Corentin Heinix (cohe), Krzysztof Magusiak (krma), Akash Pandey, Hazem Ibrahim, Junqi, Julien Launois (jula), macs-odoo, Ayush Modi, Saurabh, Amr Elkhatieb, Ai Lin Zuccarello (aizu), mibav-odoo, ELCO, Camila Vives, Julien Coppin (jucop)
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- account, hr_timesheet, project
- 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 (10)
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>index=Truestring='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'
-
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 (5)
-
analytic_distributionJsonrequired=True -
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>index=Truereadonly=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 -
nameCharargs: 'Description' -
partner_idMany2one → res.partnercheck_company=Truestring='Partner' args: 'res.partner' -
product_uom_idMany2one → uom.uomcompute='_compute_product_uom_id'readonly=Falsestore=Truestring='Unit' args: 'uom.uom' -
unit_amountFloatdefault=0.0 args: 'Quantity' -
user_idMany2one → res.usersdefault=<expr>index=Truestring='User' args: 'res.users'
-
write(self, vals)
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.
New fields (0)
No new fields.
Public methods (0)No public methods.
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…