| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/account-financial-tools |
| GIT | |
| GIT | https://github.com/OCA/account-financial-tools.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/account-financial-tools/tree/19.0/account_asset_management |
| VERSION | |
| VERSION | 1.0.2 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Noviat |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Noviat |
| COMMITTERS | |
| COMMITTERS | Carlos Lopez, acysos, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, Mario Webinlab |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/account-financial-tools |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:40:46 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/reporting-engine: - report_xlsx_helper - report_xlsx odoo/odoo: - account - base_setup - base - web - onboarding - product - bus - web_tour - html_editor - uom - analytic - portal - http_routing - auth_signup - digest - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
python-dateutil xlrd xlsxwriter |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This Module manages the assets owned by a company. It will keep track of depreciation's occurred on those assets. And it allows to create accounting entries from the depreciation lines. The full asset life-cycle is managed (from asset creation to asset removal). Assets can be created manually as well as automatically (via the creation of an accounting entry on the asset account). Depreciation Journal Entries can be created manually in the "Deprecation Board" tab, or automatically by two ways: - Using the "Invoicing/Assets/Compute Assets" wizard. - Activating the "Asset Management: Generate assets" cron. These options are compatibles each other. The module contains a large number of functional enhancements compared to the standard account_asset module from Odoo. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_asset_compute_view_form |
account.asset.compute | account.asset.compute | form | New |
account_asset_compute_view_form_result |
account.asset.compute.result | account.asset.compute | form | New |
account_asset_group_view_form |
account.asset.group.form | account.asset.group | form | New |
account_asset_group_view_search |
account.asset.group.search | account.asset.group | search | New |
account_asset_group_view_tree |
account.asset.group.list | account.asset.group | list | New |
account_asset_profile_view_form |
account.asset.profile.form | account.asset.profile | form | New |
account_asset_profile_view_search |
account.asset.profile.search | account.asset.profile | search | New |
account_asset_profile_view_tree |
account.asset.profile.list | account.asset.profile | list | New |
account_asset_remove_view_form |
account.asset.remove.form | account.asset.remove | form | New |
account_asset_view_form |
account.asset.form | account.asset | form | New |
account_asset_view_search |
account.asset.search | account.asset | search | New |
account_asset_view_tree |
account.asset.list | account.asset | list | New |
view_account_form |
account.account.form | account.account | field | Inherits account.view_account_form |
view_account_list |
account.account | field | Inherits account.view_account_list | |
view_account_move_line_filter |
Journal Items (Search) | account.move.line | field | Inherits account.view_account_move_line_filter |
view_move_form |
account.move.form.account.asset.management | account.move | xpath | Inherits account.view_move_form |
view_move_line_form |
Journal Items (form) | account.move.line | field | Inherits account.view_move_line_form |
wiz_account_asset_report_view_form |
Financial Assets report | wiz.account.asset.report | form | New |
wiz_asset_move_reverse_view_form |
wiz.asset.move.reverse.form | wiz.asset.move.reverse | form | New |
asset_profile_id
Many2one → account.asset.profile
check_company=True
comodel_name='account.asset.profile'
help='Default Asset Profile when creating invoice lines with this account.'
string='Asset Profile'
No public methods.
account_move_line_ids
One2many → account.move.line
check_company=True
comodel_name='account.move.line'
copy=False
inverse_name='asset_id'
readonly=True
string='Entries'
active
Boolean
default=True
carry_forward_missed_depreciations
Boolean
help='If create an asset in a fiscal period that is now closed\n the accumulated amount of depreciations that cannot be posted will be\n carried forward to the first depreciation line of the current open\n period.'
string='Accumulate missed depreciations'
code
Char
size=32
string='Reference'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
string='Company'
currency_id
Many2one → res.currency
comodel_name='res.currency'
related='company_id.currency_id'
store=True
string='Company Currency'
date_remove
Date
readonly=True
string='Asset Removal Date'
date_start
Date
help='You should manually add depreciation lines with the depreciations of previous fiscal years if the Depreciation Start Date is different from the date for which accounting entries need to be generated.'
required=True
string='Asset Start Date'
days_calc
Boolean
compute='_compute_days_calc'
help='Use number of days to calculate depreciation amount'
readonly=False
store=True
string='Calculate by days'
depreciation_base
Monetary
compute='_compute_depreciation_base'
help='This amount represent the depreciation base of the asset (Purchase Value - Salvage Value).'
store=True
depreciation_line_ids
One2many → account.asset.line
check_company=True
comodel_name='account.asset.line'
copy=False
inverse_name='asset_id'
string='Depreciation Lines'
group_ids
Many2many → account.asset.group
column1='asset_id'
column2='group_id'
comodel_name='account.asset.group'
compute='_compute_group_ids'
readonly=False
relation='account_asset_group_rel'
store=True
string='Asset Groups'
method
Selection
compute='_compute_method'
help='Choose the method to use to compute the depreciation lines.\n * Linear: Calculated on basis of: Depreciation Base / Number of Depreciations. Depreciation Base = Purchase Value - Salvage Value.\n * Linear-Limit: Linear up to Salvage Value. Depreciation Base = Purchase Value.\n * Degressive: Calculated on basis of: Residual Value * Degressive Factor.\n * Degressive-Linear (only for Time Method = Year): Degressive becomes linear when the annual linear depreciation exceeds the annual degressive depreciation.\n * Degressive-Limit: Degressive up to Salvage Value. The Depreciation Base is equal to the asset value.'
readonly=False
selection=<expr>
store=True
string='Computation Method'
method_end
Date
compute='_compute_method_end'
readonly=False
store=True
string='Ending Date'
method_number
Integer
compute='_compute_method_number'
help='The number of years needed to depreciate your asset'
readonly=False
store=True
string='Number of Years'
method_period
Selection
compute='_compute_method_period'
help='Period length for the depreciation accounting entries'
readonly=False
selection=<expr>
store=True
string='Period Length'
method_progress_factor
Float
compute='_compute_method_progress_factor'
readonly=False
store=True
string='Degressive Factor'
method_time
Selection
compute='_compute_method_time'
help='Choose the method to use to compute the dates and number of depreciation lines.\n * Number of Years: Specify the number of years for the depreciation.\n * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n'
readonly=False
selection=<expr>
store=True
string='Time Method'
move_line_check
Boolean
compute='_compute_move_line_check'
string='Has accounting entries'
name
Char
required=True
string='Asset Name'
note
Text
partner_id
Many2one → res.partner
comodel_name='res.partner'
string='Partner'
profile_id
Many2one → account.asset.profile
change_default=True
check_company=True
comodel_name='account.asset.profile'
required=True
string='Asset Profile'
prorata
Boolean
compute='_compute_prorrata'
help='Indicates that the first depreciation entry for this asset has to be done from the depreciation start date instead of the first day of the fiscal year.'
readonly=False
store=True
string='Prorata Temporis'
purchase_value
Monetary
help='This amount represent the initial value of the asset.\nThe Depreciation Base is calculated as follows:\nPurchase Value - Salvage Value.'
required=True
salvage_value
Monetary
compute='_compute_salvage_value'
help='The estimated value that an asset will realize upon its sale at the end of its useful life.\nThis value is used to determine the depreciation amounts.'
readonly=False
store=True
state
Selection
copy=False
default='draft'
help="When an asset is created, the status is 'Draft'.\nIf the asset is confirmed, the status goes in 'Running' and the depreciation lines can be posted to the accounting.\nIf the last depreciation line is posted, the asset goes into the 'Close' status.\nWhen the removal entries are generated, the asset goes into the 'Removed' status."
required=True
selection=[('draft', 'Draft'), ('open', 'Running'), ('close', 'Close'), ('removed', 'Removed')]
string='Status'
use_leap_years
Boolean
compute='_compute_use_leap_years'
help='If not set, the system will distribute evenly the amount to amortize across the years, based on the number of years. So the amount per year will be the depreciation base / number of years.\n If set, the system will consider if the current year is a leap year. The amount to depreciate per year will be calculated as depreciation base / (depreciation end date - start date + 1) * days in the current year.'
readonly=False
store=True
value_depreciated
Monetary
compute='_compute_depreciation'
store=True
string='Depreciated Value'
value_residual
Monetary
compute='_compute_depreciation'
store=True
string='Residual Value'
compute_depreciation_board(self)
create(self, vals_list)
open_entries(self)
remove(self)
set_to_draft(self)
unlink(self)
validate(self)
write(self, vals)
date_end
Date
default=fields.Date.today
help='All depreciation lines prior to this date will be automatically posted'
required=True
string='Date'
note
Text
asset_compute(self)
view_asset_moves(self)
child_ids
One2many → account.asset.group
check_company=True
comodel_name='account.asset.group'
inverse_name='parent_id'
string='Child Asset Groups'
code
Char
index=True
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
name
Char
index=True
required=True
size=64
parent_id
Many2one → account.asset.group
check_company=True
comodel_name='account.asset.group'
ondelete='restrict'
string='Parent Asset Group'
parent_path
Char
index=True
No public methods.
amount
Monetary
required=True
asset_id
Many2one → account.asset
check_company=True
comodel_name='account.asset'
index=True
ondelete='cascade'
required=True
string='Asset'
company_id
Many2one
related='asset_id.company_id'
store=True
currency_id
Many2one
related='asset_id.company_id.currency_id'
store=True
string='Company Currency'
depreciated_value
Monetary
compute='_compute_values'
store=True
string='Amount Already Depreciated'
depreciation_base
Monetary
related='asset_id.depreciation_base'
string='Depreciation Base'
init_entry
Boolean
help='Set this flag for entries of previous fiscal years for which Odoo has not generated accounting entries.'
string='Initial Balance Entry'
line_date
Date
required=True
string='Date'
line_days
Integer
readonly=True
string='Days'
move_check
Boolean
compute='_compute_move_check'
store=True
string='Posted'
move_id
Many2one → account.move
check_company=True
comodel_name='account.move'
readonly=True
string='Depreciation Entry'
name
Char
readonly=True
size=64
string='Depreciation Name'
parent_state
Selection
related='asset_id.state'
string='State of Asset'
previous_id
Many2one → account.asset.line
comodel_name='account.asset.line'
readonly=True
string='Previous Depreciation Line'
remaining_value
Monetary
compute='_compute_values'
store=True
string='Next Period Depreciation'
type
Selection
default='depreciate'
readonly=True
selection=[('create', 'Depreciation Base'), ('depreciate', 'Depreciation'), ('remove', 'Asset Removal')]
create_move(self)
open_move(self)
unlink(self)
unlink_move(self)
update_asset_line_after_unlink_move(self)
write(self, vals)
account_asset_id
Many2one → account.account
check_company=True
comodel_name='account.account'
required=True
string='Asset Account'
account_depreciation_id
Many2one → account.account
check_company=True
comodel_name='account.account'
required=True
string='Depreciation Account'
account_expense_depreciation_id
Many2one → account.account
check_company=True
comodel_name='account.account'
required=True
string='Depr. Expense Account'
account_min_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
string='Min-Value Account'
account_plus_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
string='Plus-Value Account'
account_residual_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
string='Residual Value Account'
active
Boolean
default=True
allow_reversal
Boolean
help='If set, when pressing the Delete/Reverse Move button in a posted depreciation line will prompt the option to reverse the journal entry, instead of deleting them.'
args: 'Allow Reversal of journal entries'
asset_product_item
Boolean
help='By default during the validation of an invoice, an asset is created by invoice line as long as an accounting entry is created by invoice line. With this setting, an accounting entry will be created by product item. So, there will be an asset by product item.'
string='Create an asset by product item'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
days_calc
Boolean
default=False
help='Use number of days to calculate depreciation amount'
string='Calculate by days'
group_ids
Many2many → account.asset.group
check_company=True
column1='profile_id'
column2='group_id'
comodel_name='account.asset.group'
relation='account_asset_profile_group_rel'
string='Asset Groups'
journal_id
Many2one → account.journal
check_company=True
comodel_name='account.journal'
domain="[('type', '=', 'general'), ('company_id', '=', company_id)]"
required=True
string='Journal'
method
Selection
default='linear'
help='Choose the method to use to compute the depreciation lines.\n * Linear: Calculated on basis of: Depreciation Base / Number of Depreciations. Depreciation Base = Purchase Value - Salvage Value.\n * Linear-Limit: Linear up to Salvage Value. Depreciation Base = Purchase Value.\n * Degressive: Calculated on basis of: Residual Value * Degressive Factor.\n * Degressive-Linear (only for Time Method = Year): Degressive becomes linear when the annual linear depreciation exceeds the annual degressive depreciation.\n * Degressive-Limit: Degressive up to Salvage Value. The Depreciation Base is equal to the asset value.'
required=True
selection=<expr>
string='Computation Method'
method_number
Integer
default=5
help='The number of years needed to depreciate your asset'
string='Number of Years'
method_period
Selection
default='year'
help='Period length for the depreciation accounting entries'
required=True
selection=<expr>
string='Period Length'
method_progress_factor
Float
default=0.3
string='Degressive Factor'
method_time
Selection
default='year'
help='Choose the method to use to compute the dates and number of depreciation lines.\n * Number of Years: Specify the number of years for the depreciation.\n * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n'
required=True
selection=<expr>
string='Time Method'
name
Char
index=True
required=True
size=64
note
Text
open_asset
Boolean
help='Check this if you want to automatically confirm the assets of this profile when created by invoices.'
string='Skip Draft State'
prorata
Boolean
compute='_compute_prorrata'
help='Indicates that the first depreciation entry for this asset has to be done from the depreciation start date instead of the first day of the fiscal year.'
readonly=False
store=True
string='Prorata Temporis'
salvage_type
Selection
selection=[('fixed', 'Fixed'), ('percent', 'Percentage of Price')]
salvage_value
Float
digits='Account'
help='The estimated value that an asset will realize upon its sale at the end of its useful life.\nThis value is used to determine the depreciation amounts.'
use_leap_years
Boolean
default=False
help='If not set, the system will distribute evenly the amount to amortize across the years, based on the number of years. So the amount per year will be the depreciation base / number of years.\n If set, the system will consider if the current year is a leap year. The amount to depreciate per year will be calculated as depreciation base / (depreciation end date - start date + 1) * days in the current year.'
create(self, vals_list)
write(self, vals)
company_id
Many2one → res.company
required=True
string='Company'
args: 'res.company'
date_completed
Datetime
readonly=True
args: 'Completion Date'
date_trigger
Datetime
help='Date of the event triggering the need to recompute the Asset Tables.'
readonly=True
args: 'Trigger Date'
reason
Char
required=True
state
Selection
default='open'
readonly=True
selection=[('open', 'Open'), ('done', 'Done')]
No public methods.
account_min_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
default=<expr>
string='Min-Value Account'
account_plus_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
default=<expr>
string='Plus-Value Account'
account_residual_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
default=<expr>
string='Residual Value Account'
account_sale_id
Many2one → account.account
check_company=True
comodel_name='account.account'
default=<expr>
string='Asset Sale Account'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
string='Company'
currency_id
Many2one
related='company_id.currency_id'
string='Company Currency'
date_remove
Date
default=fields.Date.today
help='Removal date must be after the last posted entry in case of early removal'
required=True
string='Asset Removal Date'
force_date
Date
string='Force accounting date'
note
Text
posting_regime
Selection
default=<expr>
help="Removal Entry Policy \n * Residual Value: The non-depreciated value will be posted on the 'Residual Value Account' \n * Gain/Loss on Sale: The Gain or Loss will be posted on the 'Plus-Value Account' or 'Min-Value Account' "
required=True
selection=<expr>
string='Removal Entry Policy'
sale_value
Monetary
default=<expr>
remove(self)
asset_count
Integer
compute='_compute_asset_count'
action_post(self)
action_view_assets(self)
button_draft(self)
unlink(self)
write(self, vals)
asset_id
Many2one → account.asset
check_company=True
comodel_name='account.asset'
copy=False
ondelete='restrict'
string='Asset'
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
compute='_compute_asset_profile'
readonly=False
store=True
string='Asset Profile'
create(self, vals_list)
write(self, vals)
No new fields.
Public methods (3)acquisition_filter(wiz, asset)
active_filter(wiz, asset)
removal_filter(wiz, asset)
asset_group_id
Many2one → account.asset.group
comodel_name='account.asset.group'
default=<expr>
string='Asset Group'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
date_from
Date
required=True
string='Start Date'
date_to
Date
required=True
string='End Date'
draft
Boolean
string='Include draft assets'
xls_export(self)
date_reversal
Date
default=fields.Date.context_today
required=True
string='Reversal date'
journal_id
Many2one → account.journal
help='If empty, uses the journal of the journal entry to be reversed.'
string='Use Specific Journal'
args: 'account.journal'
line_id
Many2one → account.asset.line
comodel_name='account.asset.line'
readonly=True
required=True
string='Asset Line'
reason
Char
default_get(self, fields)
reverse_move(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/account-financial-tools |
| GIT | |
| GIT | https://github.com/OCA/account-financial-tools.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/account-financial-tools/tree/18.0/account_asset_management |
| VERSION | |
| VERSION | 1.1.10 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Noviat |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Noviat |
| COMMITTERS | |
| COMMITTERS | GitHub, Carlos Lopez, Víctor Martínez, Florian da Costa, Weblate, OCA-git-bot, Quentin Groulard, oca-ci, Benoit Aimont, Saran440, hda, Lena MONTENOT |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/account-financial-tools |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:07 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/reporting-engine: - report_xlsx_helper - report_xlsx odoo/odoo: - account - base_setup - base - web - onboarding - product - bus - web_tour - html_editor - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
python-dateutil |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This Module manages the assets owned by a company. It will keep track of depreciation's occurred on those assets. And it allows to create accounting entries from the depreciation lines. The full asset life-cycle is managed (from asset creation to asset removal). Assets can be created manually as well as automatically (via the creation of an accounting entry on the asset account). Depreciation Journal Entries can be created manually in the "Deprecation Board" tab, or automatically by two ways: - Using the "Invoicing/Assets/Compute Assets" wizard. - Activating the "Asset Management: Generate assets" cron. These options are compatibles each other. The module contains a large number of functional enhancements compared to the standard account_asset module from Odoo. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_asset_compute_view_form |
account.asset.compute | account.asset.compute | form | New |
account_asset_compute_view_form_result |
account.asset.compute.result | account.asset.compute | form | New |
account_asset_group_view_form |
account.asset.group.form | account.asset.group | form | New |
account_asset_group_view_search |
account.asset.group.search | account.asset.group | search | New |
account_asset_group_view_tree |
account.asset.group.list | account.asset.group | list | New |
account_asset_profile_view_form |
account.asset.profile.form | account.asset.profile | form | New |
account_asset_profile_view_search |
account.asset.profile.search | account.asset.profile | search | New |
account_asset_profile_view_tree |
account.asset.profile.list | account.asset.profile | list | New |
account_asset_remove_view_form |
account.asset.remove.form | account.asset.remove | form | New |
account_asset_view_form |
account.asset.form | account.asset | form | New |
account_asset_view_search |
account.asset.search | account.asset | search | New |
account_asset_view_tree |
account.asset.list | account.asset | list | New |
action_account_asset_report_graph |
account.asset.report | graph | New | |
action_account_asset_report_pivot |
account.asset.report | pivot | New | |
view_account_asset_report_search |
account.asset.report | search | New | |
view_account_form |
account.account.form | account.account | field | Inherits account.view_account_form |
view_account_list |
account.account | field | Inherits account.view_account_list | |
view_account_move_line_filter |
Journal Items (Search) | account.move.line | field | Inherits account.view_account_move_line_filter |
view_move_form |
account.move.form.account.asset.management | account.move | xpath | Inherits account.view_move_form |
view_move_line_form |
Journal Items (form) | account.move.line | field | Inherits account.view_move_line_form |
wiz_account_asset_report_view_form |
Financial Assets report | wiz.account.asset.report | form | New |
wiz_asset_move_reverse_view_form |
wiz.asset.move.reverse.form | wiz.asset.move.reverse | form | New |
asset_profile_id
Many2one → account.asset.profile
check_company=True
comodel_name='account.asset.profile'
company_dependent=True
help='Default Asset Profile when creating invoice lines with this account.'
string='Asset Profile'
No public methods.
account_move_line_ids
One2many → account.move.line
check_company=True
comodel_name='account.move.line'
copy=False
inverse_name='asset_id'
readonly=True
string='Entries'
active
Boolean
default=True
carry_forward_missed_depreciations
Boolean
help='If create an asset in a fiscal period that is now closed\n the accumulated amount of depreciations that cannot be posted will be\n carried forward to the first depreciation line of the current open\n period.'
string='Accumulate missed depreciations'
code
Char
size=32
string='Reference'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
string='Company'
currency_id
Many2one → res.currency
comodel_name='res.currency'
related='company_id.currency_id'
store=True
string='Company Currency'
date_remove
Date
readonly=True
string='Asset Removal Date'
date_start
Date
help='You should manually add depreciation lines with the depreciations of previous fiscal years if the Depreciation Start Date is different from the date for which accounting entries need to be generated.'
required=True
string='Asset Start Date'
days_calc
Boolean
compute='_compute_days_calc'
help='Use number of days to calculate depreciation amount'
readonly=False
store=True
string='Calculate by days'
depreciation_base
Monetary
compute='_compute_depreciation_base'
help='This amount represent the depreciation base of the asset (Purchase Value - Salvage Value).'
store=True
depreciation_line_ids
One2many → account.asset.line
check_company=True
comodel_name='account.asset.line'
copy=False
inverse_name='asset_id'
string='Depreciation Lines'
group_ids
Many2many → account.asset.group
column1='asset_id'
column2='group_id'
comodel_name='account.asset.group'
compute='_compute_group_ids'
readonly=False
relation='account_asset_group_rel'
store=True
string='Asset Groups'
method
Selection
compute='_compute_method'
help='Choose the method to use to compute the depreciation lines.\n * Linear: Calculated on basis of: Depreciation Base / Number of Depreciations. Depreciation Base = Purchase Value - Salvage Value.\n * Linear-Limit: Linear up to Salvage Value. Depreciation Base = Purchase Value.\n * Degressive: Calculated on basis of: Residual Value * Degressive Factor.\n * Degressive-Linear (only for Time Method = Year): Degressive becomes linear when the annual linear depreciation exceeds the annual degressive depreciation.\n * Degressive-Limit: Degressive up to Salvage Value. The Depreciation Base is equal to the asset value.'
readonly=False
selection=<expr>
store=True
string='Computation Method'
method_end
Date
compute='_compute_method_end'
readonly=False
store=True
string='Ending Date'
method_number
Integer
compute='_compute_method_number'
help='The number of years needed to depreciate your asset'
readonly=False
store=True
string='Number of Years'
method_period
Selection
compute='_compute_method_period'
help='Period length for the depreciation accounting entries'
readonly=False
selection=<expr>
store=True
string='Period Length'
method_progress_factor
Float
compute='_compute_method_progress_factor'
readonly=False
store=True
string='Degressive Factor'
method_time
Selection
compute='_compute_method_time'
help='Choose the method to use to compute the dates and number of depreciation lines.\n * Number of Years: Specify the number of years for the depreciation.\n * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n'
readonly=False
selection=<expr>
store=True
string='Time Method'
move_line_check
Boolean
compute='_compute_move_line_check'
string='Has accounting entries'
name
Char
required=True
string='Asset Name'
note
Text
partner_id
Many2one → res.partner
comodel_name='res.partner'
string='Partner'
profile_id
Many2one → account.asset.profile
change_default=True
check_company=True
comodel_name='account.asset.profile'
required=True
string='Asset Profile'
prorata
Boolean
compute='_compute_prorrata'
help='Indicates that the first depreciation entry for this asset has to be done from the depreciation start date instead of the first day of the fiscal year.'
readonly=False
store=True
string='Prorata Temporis'
purchase_value
Monetary
help='This amount represent the initial value of the asset.\nThe Depreciation Base is calculated as follows:\nPurchase Value - Salvage Value.'
required=True
salvage_value
Monetary
compute='_compute_salvage_value'
help='The estimated value that an asset will realize upon its sale at the end of its useful life.\nThis value is used to determine the depreciation amounts.'
readonly=False
store=True
state
Selection
copy=False
default='draft'
help="When an asset is created, the status is 'Draft'.\nIf the asset is confirmed, the status goes in 'Running' and the depreciation lines can be posted to the accounting.\nIf the last depreciation line is posted, the asset goes into the 'Close' status.\nWhen the removal entries are generated, the asset goes into the 'Removed' status."
required=True
selection=[('draft', 'Draft'), ('open', 'Running'), ('close', 'Close'), ('removed', 'Removed')]
string='Status'
use_leap_years
Boolean
compute='_compute_use_leap_years'
help='If not set, the system will distribute evenly the amount to amortize across the years, based on the number of years. So the amount per year will be the depreciation base / number of years.\n If set, the system will consider if the current year is a leap year. The amount to depreciate per year will be calculated as depreciation base / (depreciation end date - start date + 1) * days in the current year.'
readonly=False
store=True
value_depreciated
Monetary
compute='_compute_depreciation'
store=True
string='Depreciated Value'
value_residual
Monetary
compute='_compute_depreciation'
store=True
string='Residual Value'
compute_depreciation_board(self)
create(self, vals_list)
open_entries(self)
remove(self)
set_to_draft(self)
unlink(self)
validate(self)
write(self, vals)
date_end
Date
default=fields.Date.today
help='All depreciation lines prior to this date will be automatically posted'
required=True
string='Date'
note
Text
asset_compute(self)
view_asset_moves(self)
child_ids
One2many → account.asset.group
check_company=True
comodel_name='account.asset.group'
inverse_name='parent_id'
string='Child Asset Groups'
code
Char
index=True
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
name
Char
index=True
required=True
size=64
parent_id
Many2one → account.asset.group
check_company=True
comodel_name='account.asset.group'
ondelete='restrict'
string='Parent Asset Group'
parent_path
Char
index=True
No public methods.
amount
Monetary
required=True
asset_id
Many2one → account.asset
check_company=True
comodel_name='account.asset'
index=True
ondelete='cascade'
required=True
string='Asset'
company_id
Many2one
related='asset_id.company_id'
store=True
currency_id
Many2one
related='asset_id.company_id.currency_id'
store=True
string='Company Currency'
depreciated_value
Monetary
compute='_compute_values'
store=True
string='Amount Already Depreciated'
depreciation_base
Monetary
related='asset_id.depreciation_base'
string='Depreciation Base'
init_entry
Boolean
help='Set this flag for entries of previous fiscal years for which Odoo has not generated accounting entries.'
string='Initial Balance Entry'
line_date
Date
required=True
string='Date'
line_days
Integer
readonly=True
string='Days'
move_check
Boolean
compute='_compute_move_check'
store=True
string='Posted'
move_id
Many2one → account.move
check_company=True
comodel_name='account.move'
readonly=True
string='Depreciation Entry'
name
Char
readonly=True
size=64
string='Depreciation Name'
parent_state
Selection
related='asset_id.state'
string='State of Asset'
previous_id
Many2one → account.asset.line
comodel_name='account.asset.line'
readonly=True
string='Previous Depreciation Line'
remaining_value
Monetary
compute='_compute_values'
store=True
string='Next Period Depreciation'
type
Selection
default='depreciate'
readonly=True
selection=[('create', 'Depreciation Base'), ('depreciate', 'Depreciation'), ('remove', 'Asset Removal')]
create_move(self)
open_move(self)
unlink(self)
unlink_move(self)
update_asset_line_after_unlink_move(self)
write(self, vals)
account_asset_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain=[('deprecated', '=', False)]
required=True
string='Asset Account'
account_depreciation_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain=[('deprecated', '=', False)]
required=True
string='Depreciation Account'
account_expense_depreciation_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain=[('deprecated', '=', False)]
required=True
string='Depr. Expense Account'
account_min_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain=[('deprecated', '=', False)]
string='Min-Value Account'
account_plus_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain=[('deprecated', '=', False)]
string='Plus-Value Account'
account_residual_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain=[('deprecated', '=', False)]
string='Residual Value Account'
active
Boolean
default=True
allow_reversal
Boolean
help='If set, when pressing the Delete/Reverse Move button in a posted depreciation line will prompt the option to reverse the journal entry, instead of deleting them.'
args: 'Allow Reversal of journal entries'
asset_product_item
Boolean
help='By default during the validation of an invoice, an asset is created by invoice line as long as an accounting entry is created by invoice line. With this setting, an accounting entry will be created by product item. So, there will be an asset by product item.'
string='Create an asset by product item'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
days_calc
Boolean
default=False
help='Use number of days to calculate depreciation amount'
string='Calculate by days'
group_ids
Many2many → account.asset.group
check_company=True
column1='profile_id'
column2='group_id'
comodel_name='account.asset.group'
relation='account_asset_profile_group_rel'
string='Asset Groups'
journal_id
Many2one → account.journal
check_company=True
comodel_name='account.journal'
domain="[('type', '=', 'general'), ('company_id', '=', company_id)]"
required=True
string='Journal'
method
Selection
default='linear'
help='Choose the method to use to compute the depreciation lines.\n * Linear: Calculated on basis of: Depreciation Base / Number of Depreciations. Depreciation Base = Purchase Value - Salvage Value.\n * Linear-Limit: Linear up to Salvage Value. Depreciation Base = Purchase Value.\n * Degressive: Calculated on basis of: Residual Value * Degressive Factor.\n * Degressive-Linear (only for Time Method = Year): Degressive becomes linear when the annual linear depreciation exceeds the annual degressive depreciation.\n * Degressive-Limit: Degressive up to Salvage Value. The Depreciation Base is equal to the asset value.'
required=True
selection=<expr>
string='Computation Method'
method_number
Integer
default=5
help='The number of years needed to depreciate your asset'
string='Number of Years'
method_period
Selection
default='year'
help='Period length for the depreciation accounting entries'
required=True
selection=<expr>
string='Period Length'
method_progress_factor
Float
default=0.3
string='Degressive Factor'
method_time
Selection
default='year'
help='Choose the method to use to compute the dates and number of depreciation lines.\n * Number of Years: Specify the number of years for the depreciation.\n * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n'
required=True
selection=<expr>
string='Time Method'
name
Char
index=True
required=True
size=64
note
Text
open_asset
Boolean
help='Check this if you want to automatically confirm the assets of this profile when created by invoices.'
string='Skip Draft State'
prorata
Boolean
compute='_compute_prorrata'
help='Indicates that the first depreciation entry for this asset has to be done from the depreciation start date instead of the first day of the fiscal year.'
readonly=False
store=True
string='Prorata Temporis'
salvage_type
Selection
selection=[('fixed', 'Fixed'), ('percent', 'Percentage of Price')]
salvage_value
Float
digits='Account'
help='The estimated value that an asset will realize upon its sale at the end of its useful life.\nThis value is used to determine the depreciation amounts.'
use_leap_years
Boolean
default=False
help='If not set, the system will distribute evenly the amount to amortize across the years, based on the number of years. So the amount per year will be the depreciation base / number of years.\n If set, the system will consider if the current year is a leap year. The amount to depreciate per year will be calculated as depreciation base / (depreciation end date - start date + 1) * days in the current year.'
create(self, vals_list)
write(self, vals)
company_id
Many2one → res.company
required=True
string='Company'
args: 'res.company'
date_completed
Datetime
readonly=True
args: 'Completion Date'
date_trigger
Datetime
help='Date of the event triggering the need to recompute the Asset Tables.'
readonly=True
args: 'Trigger Date'
reason
Char
required=True
state
Selection
default='open'
readonly=True
selection=[('open', 'Open'), ('done', 'Done')]
No public methods.
account_min_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
default=<expr>
domain=[('deprecated', '=', False)]
string='Min-Value Account'
account_plus_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
default=<expr>
domain=[('deprecated', '=', False)]
string='Plus-Value Account'
account_residual_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
default=<expr>
domain=[('deprecated', '=', False)]
string='Residual Value Account'
account_sale_id
Many2one → account.account
check_company=True
comodel_name='account.account'
default=<expr>
domain=[('deprecated', '=', False)]
string='Asset Sale Account'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
string='Company'
currency_id
Many2one
related='company_id.currency_id'
string='Company Currency'
date_remove
Date
default=fields.Date.today
help='Removal date must be after the last posted entry in case of early removal'
required=True
string='Asset Removal Date'
force_date
Date
string='Force accounting date'
note
Text
posting_regime
Selection
default=<expr>
help="Removal Entry Policy \n * Residual Value: The non-depreciated value will be posted on the 'Residual Value Account' \n * Gain/Loss on Sale: The Gain or Loss will be posted on the 'Plus-Value Account' or 'Min-Value Account' "
required=True
selection=<expr>
string='Removal Entry Policy'
sale_value
Monetary
default=<expr>
remove(self)
asset_id
Many2one → account.asset
comodel_name='account.asset'
readonly=True
string='Asset'
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
readonly=True
string='Asset profile'
company_id
Many2one → res.company
comodel_name='res.company'
readonly=True
string='Company'
date
Date
readonly=True
depreciation_count
Integer
readonly=True
string='# of Depreciation Lines'
depreciation_date
Date
readonly=True
depreciation_value
Float
readonly=True
string='Amount of Depreciation Lines'
gross_value
Float
readonly=True
string='Gross Amount'
move_check
Boolean
readonly=True
string='Posted'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
string='Partner'
posted_value
Float
readonly=True
string='Posted Amount'
state
Selection
readonly=True
selection=<expr>
string='Status'
unposted_value
Float
readonly=True
string='Unposted Amount'
init(self)
asset_count
Integer
compute='_compute_asset_count'
action_post(self)
action_view_assets(self)
button_draft(self)
unlink(self)
write(self, vals)
asset_id
Many2one → account.asset
check_company=True
comodel_name='account.asset'
copy=False
ondelete='restrict'
string='Asset'
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
compute='_compute_asset_profile'
readonly=False
store=True
string='Asset Profile'
create(self, vals_list)
write(self, vals)
No new fields.
Public methods (3)acquisition_filter(wiz, asset)
active_filter(wiz, asset)
removal_filter(wiz, asset)
asset_group_id
Many2one → account.asset.group
comodel_name='account.asset.group'
default=<expr>
string='Asset Group'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
date_from
Date
required=True
string='Start Date'
date_to
Date
required=True
string='End Date'
draft
Boolean
string='Include draft assets'
xls_export(self)
date_reversal
Date
default=fields.Date.context_today
required=True
string='Reversal date'
journal_id
Many2one → account.journal
help='If empty, uses the journal of the journal entry to be reversed.'
string='Use Specific Journal'
args: 'account.journal'
line_id
Many2one → account.asset.line
comodel_name='account.asset.line'
readonly=True
required=True
string='Asset Line'
reason
Char
default_get(self, fields)
reverse_move(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/account-financial-tools |
| GIT | |
| GIT | https://github.com/OCA/account-financial-tools.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/account-financial-tools/tree/17.0/account_asset_management |
| VERSION | |
| VERSION | 1.2.2 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Noviat |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Noviat |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Carlos Lopez, Luc De Meyer, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, sbiosca-s73, Lena MONTENOT |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/account-financial-tools |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:01 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/reporting-engine: - report_xlsx_helper - report_xlsx odoo/odoo: - account - base_setup - base - web - onboarding - product - bus - web_tour - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
python-dateutil xlrd xlsxwriter |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This Module manages the assets owned by a company. It will keep track of depreciation's occurred on those assets. And it allows to create accounting entries from the depreciation lines. The full asset life-cycle is managed (from asset creation to asset removal). Assets can be created manually as well as automatically (via the creation of an accounting entry on the asset account). Depreciation Journal Entries can be created manually in the "Deprecation Board" tab, or automatically by two ways: - Using the "Invoicing/Assets/Compute Assets" wizard. - Activating the "Asset Management: Generate assets" cron. These options are compatibles each other. The module contains a large number of functional enhancements compared to the standard account_asset module from Odoo. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_asset_compute_view_form |
account.asset.compute | account.asset.compute | form | New |
account_asset_compute_view_form_result |
account.asset.compute.result | account.asset.compute | form | New |
account_asset_group_view_form |
account.asset.group.form | account.asset.group | form | New |
account_asset_group_view_search |
account.asset.group.search | account.asset.group | search | New |
account_asset_group_view_tree |
account.asset.group.tree | account.asset.group | tree | New |
account_asset_profile_view_form |
account.asset.profile.form | account.asset.profile | form | New |
account_asset_profile_view_search |
account.asset.profile.search | account.asset.profile | search | New |
account_asset_profile_view_tree |
account.asset.profile.tree | account.asset.profile | tree | New |
account_asset_remove_view_form |
account.asset.remove.form | account.asset.remove | form | New |
account_asset_view_form |
account.asset.form | account.asset | form | New |
account_asset_view_search |
account.asset.search | account.asset | search | New |
account_asset_view_tree |
account.asset.tree | account.asset | tree | New |
action_account_asset_report_graph |
account.asset.report | graph | New | |
action_account_asset_report_pivot |
account.asset.report | pivot | New | |
view_account_asset_report_search |
account.asset.report | search | New | |
view_account_form |
account.account.form | account.account | field | Inherits account.view_account_form |
view_account_list |
account.account | field | Inherits account.view_account_list | |
view_account_move_line_filter |
Journal Items (Search) | account.move.line | field | Inherits account.view_account_move_line_filter |
view_move_form |
account.move.form.account.asset.management | account.move | xpath | Inherits account.view_move_form |
view_move_line_form |
Journal Items (form) | account.move.line | field | Inherits account.view_move_line_form |
wiz_account_asset_report_view_form |
Financial Assets report | wiz.account.asset.report | form | New |
wiz_asset_move_reverse_view_form |
wiz.asset.move.reverse.form | wiz.asset.move.reverse | form | New |
asset_profile_id
Many2one → account.asset.profile
check_company=True
comodel_name='account.asset.profile'
help='Default Asset Profile when creating invoice lines with this account.'
string='Asset Profile'
No public methods.
account_move_line_ids
One2many → account.move.line
check_company=True
comodel_name='account.move.line'
copy=False
inverse_name='asset_id'
readonly=True
string='Entries'
active
Boolean
default=True
carry_forward_missed_depreciations
Boolean
help='If create an asset in a fiscal period that is now closed\n the accumulated amount of depreciations that cannot be posted will be\n carried forward to the first depreciation line of the current open\n period.'
string='Accumulate missed depreciations'
code
Char
size=32
string='Reference'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
string='Company'
currency_id
Many2one → res.currency
comodel_name='res.currency'
related='company_id.currency_id'
store=True
string='Company Currency'
date_remove
Date
readonly=True
string='Asset Removal Date'
date_start
Date
help='You should manually add depreciation lines with the depreciations of previous fiscal years if the Depreciation Start Date is different from the date for which accounting entries need to be generated.'
required=True
string='Asset Start Date'
days_calc
Boolean
compute='_compute_days_calc'
help='Use number of days to calculate depreciation amount'
readonly=False
store=True
string='Calculate by days'
depreciation_base
Monetary
compute='_compute_depreciation_base'
help='This amount represent the depreciation base of the asset (Purchase Value - Salvage Value).'
store=True
depreciation_line_ids
One2many → account.asset.line
check_company=True
comodel_name='account.asset.line'
copy=False
inverse_name='asset_id'
string='Depreciation Lines'
group_ids
Many2many → account.asset.group
column1='asset_id'
column2='group_id'
comodel_name='account.asset.group'
compute='_compute_group_ids'
readonly=False
relation='account_asset_group_rel'
store=True
string='Asset Groups'
method
Selection
compute='_compute_method'
help='Choose the method to use to compute the depreciation lines.\n * Linear: Calculated on basis of: Depreciation Base / Number of Depreciations. Depreciation Base = Purchase Value - Salvage Value.\n * Linear-Limit: Linear up to Salvage Value. Depreciation Base = Purchase Value.\n * Degressive: Calculated on basis of: Residual Value * Degressive Factor.\n * Degressive-Linear (only for Time Method = Year): Degressive becomes linear when the annual linear depreciation exceeds the annual degressive depreciation.\n * Degressive-Limit: Degressive up to Salvage Value. The Depreciation Base is equal to the asset value.'
readonly=False
selection=<expr>
store=True
string='Computation Method'
method_end
Date
compute='_compute_method_end'
readonly=False
store=True
string='Ending Date'
method_number
Integer
compute='_compute_method_number'
help='The number of years needed to depreciate your asset'
readonly=False
store=True
string='Number of Years'
method_period
Selection
compute='_compute_method_period'
help='Period length for the depreciation accounting entries'
readonly=False
selection=<expr>
store=True
string='Period Length'
method_progress_factor
Float
compute='_compute_method_progress_factor'
readonly=False
store=True
string='Degressive Factor'
method_time
Selection
compute='_compute_method_time'
help='Choose the method to use to compute the dates and number of depreciation lines.\n * Number of Years: Specify the number of years for the depreciation.\n * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n'
readonly=False
selection=<expr>
store=True
string='Time Method'
move_line_check
Boolean
compute='_compute_move_line_check'
string='Has accounting entries'
name
Char
required=True
string='Asset Name'
note
Text
partner_id
Many2one → res.partner
comodel_name='res.partner'
string='Partner'
profile_id
Many2one → account.asset.profile
change_default=True
check_company=True
comodel_name='account.asset.profile'
required=True
string='Asset Profile'
prorata
Boolean
compute='_compute_prorrata'
help='Indicates that the first depreciation entry for this asset has to be done from the depreciation start date instead of the first day of the fiscal year.'
readonly=False
store=True
string='Prorata Temporis'
purchase_value
Monetary
help='This amount represent the initial value of the asset.\nThe Depreciation Base is calculated as follows:\nPurchase Value - Salvage Value.'
required=True
salvage_value
Monetary
compute='_compute_salvage_value'
help='The estimated value that an asset will realize upon its sale at the end of its useful life.\nThis value is used to determine the depreciation amounts.'
readonly=False
store=True
state
Selection
copy=False
default='draft'
help="When an asset is created, the status is 'Draft'.\nIf the asset is confirmed, the status goes in 'Running' and the depreciation lines can be posted to the accounting.\nIf the last depreciation line is posted, the asset goes into the 'Close' status.\nWhen the removal entries are generated, the asset goes into the 'Removed' status."
required=True
selection=[('draft', 'Draft'), ('open', 'Running'), ('close', 'Close'), ('removed', 'Removed')]
string='Status'
use_leap_years
Boolean
compute='_compute_use_leap_years'
help='If not set, the system will distribute evenly the amount to amortize across the years, based on the number of years. So the amount per year will be the depreciation base / number of years.\n If set, the system will consider if the current year is a leap year. The amount to depreciate per year will be calculated as depreciation base / (depreciation end date - start date + 1) * days in the current year.'
readonly=False
store=True
value_depreciated
Monetary
compute='_compute_depreciation'
store=True
string='Depreciated Value'
value_residual
Monetary
compute='_compute_depreciation'
store=True
string='Residual Value'
compute_depreciation_board(self)
create(self, vals_list)
open_entries(self)
remove(self)
set_to_draft(self)
unlink(self)
validate(self)
write(self, vals)
date_end
Date
default=fields.Date.today
help='All depreciation lines prior to this date will be automatically posted'
required=True
string='Date'
note
Text
asset_compute(self)
view_asset_moves(self)
child_ids
One2many → account.asset.group
check_company=True
comodel_name='account.asset.group'
inverse_name='parent_id'
string='Child Asset Groups'
code
Char
index=True
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
name
Char
index=True
required=True
size=64
parent_id
Many2one → account.asset.group
check_company=True
comodel_name='account.asset.group'
ondelete='restrict'
string='Parent Asset Group'
parent_path
Char
index=True
unaccent=False
No public methods.
amount
Monetary
required=True
asset_id
Many2one → account.asset
check_company=True
comodel_name='account.asset'
index=True
ondelete='cascade'
required=True
string='Asset'
company_id
Many2one
related='asset_id.company_id'
store=True
currency_id
Many2one
related='asset_id.company_id.currency_id'
store=True
string='Company Currency'
depreciated_value
Monetary
compute='_compute_values'
store=True
string='Amount Already Depreciated'
depreciation_base
Monetary
related='asset_id.depreciation_base'
string='Depreciation Base'
init_entry
Boolean
help='Set this flag for entries of previous fiscal years for which Odoo has not generated accounting entries.'
string='Initial Balance Entry'
line_date
Date
required=True
string='Date'
line_days
Integer
readonly=True
string='Days'
move_check
Boolean
compute='_compute_move_check'
store=True
string='Posted'
move_id
Many2one → account.move
check_company=True
comodel_name='account.move'
readonly=True
string='Depreciation Entry'
name
Char
readonly=True
size=64
string='Depreciation Name'
parent_state
Selection
related='asset_id.state'
string='State of Asset'
previous_id
Many2one → account.asset.line
comodel_name='account.asset.line'
readonly=True
string='Previous Depreciation Line'
remaining_value
Monetary
compute='_compute_values'
store=True
string='Next Period Depreciation'
type
Selection
default='depreciate'
readonly=True
selection=[('create', 'Depreciation Base'), ('depreciate', 'Depreciation'), ('remove', 'Asset Removal')]
create_move(self)
open_move(self)
unlink(self)
unlink_move(self)
update_asset_line_after_unlink_move(self)
write(self, vals)
account_asset_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
required=True
string='Asset Account'
account_depreciation_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
required=True
string='Depreciation Account'
account_expense_depreciation_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
required=True
string='Depr. Expense Account'
account_min_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Min-Value Account'
account_plus_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Plus-Value Account'
account_residual_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Residual Value Account'
active
Boolean
default=True
allow_reversal
Boolean
help='If set, when pressing the Delete/Reverse Move button in a posted depreciation line will prompt the option to reverse the journal entry, instead of deleting them.'
args: 'Allow Reversal of journal entries'
asset_product_item
Boolean
help='By default during the validation of an invoice, an asset is created by invoice line as long as an accounting entry is created by invoice line. With this setting, an accounting entry will be created by product item. So, there will be an asset by product item.'
string='Create an asset by product item'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
days_calc
Boolean
default=False
help='Use number of days to calculate depreciation amount'
string='Calculate by days'
group_ids
Many2many → account.asset.group
check_company=True
column1='profile_id'
column2='group_id'
comodel_name='account.asset.group'
relation='account_asset_profile_group_rel'
string='Asset Groups'
journal_id
Many2one → account.journal
check_company=True
comodel_name='account.journal'
domain="[('type', '=', 'general'), ('company_id', '=', company_id)]"
required=True
string='Journal'
method
Selection
default='linear'
help='Choose the method to use to compute the depreciation lines.\n * Linear: Calculated on basis of: Depreciation Base / Number of Depreciations. Depreciation Base = Purchase Value - Salvage Value.\n * Linear-Limit: Linear up to Salvage Value. Depreciation Base = Purchase Value.\n * Degressive: Calculated on basis of: Residual Value * Degressive Factor.\n * Degressive-Linear (only for Time Method = Year): Degressive becomes linear when the annual linear depreciation exceeds the annual degressive depreciation.\n * Degressive-Limit: Degressive up to Salvage Value. The Depreciation Base is equal to the asset value.'
required=True
selection=<expr>
string='Computation Method'
method_number
Integer
default=5
help='The number of years needed to depreciate your asset'
string='Number of Years'
method_period
Selection
default='year'
help='Period length for the depreciation accounting entries'
required=True
selection=<expr>
string='Period Length'
method_progress_factor
Float
default=0.3
string='Degressive Factor'
method_time
Selection
default='year'
help='Choose the method to use to compute the dates and number of depreciation lines.\n * Number of Years: Specify the number of years for the depreciation.\n * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n'
required=True
selection=<expr>
string='Time Method'
name
Char
index=True
required=True
size=64
note
Text
open_asset
Boolean
help='Check this if you want to automatically confirm the assets of this profile when created by invoices.'
string='Skip Draft State'
prorata
Boolean
compute='_compute_prorrata'
help='Indicates that the first depreciation entry for this asset has to be done from the depreciation start date instead of the first day of the fiscal year.'
readonly=False
store=True
string='Prorata Temporis'
salvage_type
Selection
selection=[('fixed', 'Fixed'), ('percent', 'Percentage of Price')]
salvage_value
Float
digits='Account'
help='The estimated value that an asset will realize upon its sale at the end of its useful life.\nThis value is used to determine the depreciation amounts.'
use_leap_years
Boolean
default=False
help='If not set, the system will distribute evenly the amount to amortize across the years, based on the number of years. So the amount per year will be the depreciation base / number of years.\n If set, the system will consider if the current year is a leap year. The amount to depreciate per year will be calculated as depreciation base / (depreciation end date - start date + 1) * days in the current year.'
create(self, vals_list)
write(self, vals)
company_id
Many2one → res.company
required=True
string='Company'
args: 'res.company'
date_completed
Datetime
readonly=True
args: 'Completion Date'
date_trigger
Datetime
help='Date of the event triggering the need to recompute the Asset Tables.'
readonly=True
args: 'Trigger Date'
reason
Char
required=True
state
Selection
default='open'
readonly=True
selection=[('open', 'Open'), ('done', 'Done')]
No public methods.
account_min_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Min-Value Account'
account_plus_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Plus-Value Account'
account_residual_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Residual Value Account'
account_sale_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Asset Sale Account'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
string='Company'
currency_id
Many2one
related='company_id.currency_id'
string='Company Currency'
date_remove
Date
default=fields.Date.today
help='Removal date must be after the last posted entry in case of early removal'
required=True
string='Asset Removal Date'
force_date
Date
string='Force accounting date'
note
Text
posting_regime
Selection
default=<expr>
help="Removal Entry Policy \n * Residual Value: The non-depreciated value will be posted on the 'Residual Value Account' \n * Gain/Loss on Sale: The Gain or Loss will be posted on the 'Plus-Value Account' or 'Min-Value Account' "
required=True
selection=<expr>
string='Removal Entry Policy'
sale_value
Monetary
default=<expr>
remove(self)
asset_id
Many2one → account.asset
comodel_name='account.asset'
readonly=True
string='Asset'
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
readonly=True
string='Asset profile'
company_id
Many2one → res.company
comodel_name='res.company'
readonly=True
string='Company'
date
Date
readonly=True
depreciation_count
Integer
readonly=True
string='# of Depreciation Lines'
depreciation_date
Date
readonly=True
depreciation_value
Float
readonly=True
string='Amount of Depreciation Lines'
gross_value
Float
readonly=True
string='Gross Amount'
move_check
Boolean
readonly=True
string='Posted'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
string='Partner'
posted_value
Float
readonly=True
string='Posted Amount'
state
Selection
readonly=True
selection=<expr>
string='Status'
unposted_value
Float
readonly=True
string='Unposted Amount'
init(self)
asset_count
Integer
compute='_compute_asset_count'
action_post(self)
action_view_assets(self)
button_draft(self)
unlink(self)
write(self, vals)
asset_id
Many2one → account.asset
check_company=True
comodel_name='account.asset'
ondelete='restrict'
string='Asset'
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
compute='_compute_asset_profile'
readonly=False
store=True
string='Asset Profile'
create(self, vals_list)
write(self, vals)
No new fields.
Public methods (3)acquisition_filter(wiz, asset)
active_filter(wiz, asset)
removal_filter(wiz, asset)
asset_group_id
Many2one → account.asset.group
comodel_name='account.asset.group'
default=<expr>
string='Asset Group'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
date_from
Date
required=True
string='Start Date'
date_to
Date
required=True
string='End Date'
draft
Boolean
string='Include draft assets'
xls_export(self)
date_reversal
Date
default=fields.Date.context_today
required=True
string='Reversal date'
journal_id
Many2one → account.journal
help='If empty, uses the journal of the journal entry to be reversed.'
string='Use Specific Journal'
args: 'account.journal'
line_id
Many2one → account.asset.line
comodel_name='account.asset.line'
readonly=True
required=True
string='Asset Line'
reason
Char
default_get(self, fields)
reverse_move(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/account-financial-tools |
| GIT | |
| GIT | https://github.com/OCA/account-financial-tools.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/account-financial-tools/tree/16.0/account_asset_management |
| VERSION | |
| VERSION | 1.3.0 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Noviat |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Noviat |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Luc De Meyer, JordiMForgeFlow, Florian da Costa, Weblate, OCA-git-bot, Rodrigo, oca-ci, Aritz Olea, newtratip, Eduardo De Miguel, Saran440, Marcel Savegnago, Jérémy Didderen, Lena MONTENOT, duc.tdm |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/account-financial-tools |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:47 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/reporting-engine: - report_xlsx_helper - report_xlsx odoo/odoo: - account - base_setup - base - web - product - bus - web_tour - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
python-dateutil |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_asset_compute_view_form |
account.asset.compute | account.asset.compute | form | New |
account_asset_compute_view_form_result |
account.asset.compute.result | account.asset.compute | form | New |
account_asset_group_view_form |
account.asset.group.form | account.asset.group | form | New |
account_asset_group_view_search |
account.asset.group.search | account.asset.group | search | New |
account_asset_group_view_tree |
account.asset.group.tree | account.asset.group | tree | New |
account_asset_profile_view_form |
account.asset.profile.form | account.asset.profile | form | New |
account_asset_profile_view_search |
account.asset.profile.search | account.asset.profile | search | New |
account_asset_profile_view_tree |
account.asset.profile.tree | account.asset.profile | tree | New |
account_asset_remove_view_form |
account.asset.remove.form | account.asset.remove | form | New |
account_asset_view_form |
account.asset.form | account.asset | form | New |
account_asset_view_search |
account.asset.search | account.asset | search | New |
account_asset_view_tree |
account.asset.tree | account.asset | tree | New |
action_account_asset_report_graph |
account.asset.report | graph | New | |
action_account_asset_report_pivot |
account.asset.report | pivot | New | |
view_account_asset_report_search |
account.asset.report | search | New | |
view_account_form |
account.account.form | account.account | field | Inherits account.view_account_form |
view_account_list |
account.account | field | Inherits account.view_account_list | |
view_account_move_line_filter |
Journal Items (Search) | account.move.line | field | Inherits account.view_account_move_line_filter |
view_move_form |
account.move.form.account.asset.management | account.move | xpath | Inherits account.view_move_form |
view_move_line_form |
Journal Items (form) | account.move.line | field | Inherits account.view_move_line_form |
wiz_account_asset_report_view_form |
Financial Assets report | wiz.account.asset.report | form | New |
wiz_asset_move_reverse_view_form |
wiz.asset.move.reverse.form | wiz.asset.move.reverse | form | New |
asset_profile_id
Many2one → account.asset.profile
check_company=True
comodel_name='account.asset.profile'
help='Default Asset Profile when creating invoice lines with this account.'
string='Asset Profile'
No public methods.
account_move_line_ids
One2many → account.move.line
check_company=True
comodel_name='account.move.line'
copy=False
inverse_name='asset_id'
readonly=True
string='Entries'
active
Boolean
default=True
carry_forward_missed_depreciations
Boolean
help='If create an asset in a fiscal period that is now closed\n the accumulated amount of depreciations that cannot be posted will be\n carried forward to the first depreciation line of the current open\n period.'
string='Accumulate missed depreciations'
code
Char
size=32
states=READONLY_STATES
string='Reference'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
string='Company'
currency_id
Many2one → res.currency
comodel_name='res.currency'
related='company_id.currency_id'
store=True
string='Company Currency'
date_remove
Date
readonly=True
string='Asset Removal Date'
date_start
Date
help='You should manually add depreciation lines with the depreciations of previous fiscal years if the Depreciation Start Date is different from the date for which accounting entries need to be generated.'
required=True
states=READONLY_STATES
string='Asset Start Date'
days_calc
Boolean
compute='_compute_days_calc'
help='Use number of days to calculate depreciation amount'
readonly=False
store=True
string='Calculate by days'
depreciation_base
Monetary
compute='_compute_depreciation_base'
help='This amount represent the depreciation base of the asset (Purchase Value - Salvage Value).'
store=True
depreciation_line_ids
One2many → account.asset.line
check_company=True
comodel_name='account.asset.line'
copy=False
inverse_name='asset_id'
states=READONLY_STATES
string='Depreciation Lines'
group_ids
Many2many → account.asset.group
column1='asset_id'
column2='group_id'
comodel_name='account.asset.group'
compute='_compute_group_ids'
readonly=False
relation='account_asset_group_rel'
store=True
string='Asset Groups'
method
Selection
compute='_compute_method'
help='Choose the method to use to compute the depreciation lines.\n * Linear: Calculated on basis of: Depreciation Base / Number of Depreciations. Depreciation Base = Purchase Value - Salvage Value.\n * Linear-Limit: Linear up to Salvage Value. Depreciation Base = Purchase Value.\n * Degressive: Calculated on basis of: Residual Value * Degressive Factor.\n * Degressive-Linear (only for Time Method = Year): Degressive becomes linear when the annual linear depreciation exceeds the annual degressive depreciation.\n * Degressive-Limit: Degressive up to Salvage Value. The Depreciation Base is equal to the asset value.'
readonly=False
selection=<expr>
states=READONLY_STATES
store=True
string='Computation Method'
method_end
Date
compute='_compute_method_end'
readonly=False
states=READONLY_STATES
store=True
string='Ending Date'
method_number
Integer
compute='_compute_method_number'
help='The number of years needed to depreciate your asset'
readonly=False
states=READONLY_STATES
store=True
string='Number of Years'
method_period
Selection
compute='_compute_method_period'
help='Period length for the depreciation accounting entries'
readonly=False
selection=<expr>
states=READONLY_STATES
store=True
string='Period Length'
method_progress_factor
Float
compute='_compute_method_progress_factor'
readonly=False
states=READONLY_STATES
store=True
string='Degressive Factor'
method_time
Selection
compute='_compute_method_time'
help='Choose the method to use to compute the dates and number of depreciation lines.\n * Number of Years: Specify the number of years for the depreciation.\n * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n'
readonly=False
selection=<expr>
states=READONLY_STATES
store=True
string='Time Method'
move_line_check
Boolean
compute='_compute_move_line_check'
string='Has accounting entries'
name
Char
required=True
states=READONLY_STATES
string='Asset Name'
note
Text
partner_id
Many2one → res.partner
comodel_name='res.partner'
states=READONLY_STATES
string='Partner'
profile_id
Many2one → account.asset.profile
change_default=True
check_company=True
comodel_name='account.asset.profile'
required=True
states=READONLY_STATES
string='Asset Profile'
prorata
Boolean
compute='_compute_prorrata'
help='Indicates that the first depreciation entry for this asset has to be done from the depreciation start date instead of the first day of the fiscal year.'
readonly=False
states=READONLY_STATES
store=True
string='Prorata Temporis'
purchase_value
Monetary
help='This amount represent the initial value of the asset.\nThe Depreciation Base is calculated as follows:\nPurchase Value - Salvage Value.'
required=True
states=READONLY_STATES
salvage_value
Monetary
compute='_compute_salvage_value'
help='The estimated value that an asset will realize upon its sale at the end of its useful life.\nThis value is used to determine the depreciation amounts.'
readonly=False
states=READONLY_STATES
store=True
state
Selection
copy=False
default='draft'
help="When an asset is created, the status is 'Draft'.\nIf the asset is confirmed, the status goes in 'Running' and the depreciation lines can be posted to the accounting.\nIf the last depreciation line is posted, the asset goes into the 'Close' status.\nWhen the removal entries are generated, the asset goes into the 'Removed' status."
required=True
selection=[('draft', 'Draft'), ('open', 'Running'), ('close', 'Close'), ('removed', 'Removed')]
string='Status'
use_leap_years
Boolean
compute='_compute_use_leap_years'
help='If not set, the system will distribute evenly the amount to amortize across the years, based on the number of years. So the amount per year will be the depreciation base / number of years.\n If set, the system will consider if the current year is a leap year. The amount to depreciate per year will be calculated as depreciation base / (depreciation end date - start date + 1) * days in the current year.'
readonly=False
store=True
value_depreciated
Monetary
compute='_compute_depreciation'
store=True
string='Depreciated Value'
value_residual
Monetary
compute='_compute_depreciation'
store=True
string='Residual Value'
compute_depreciation_board(self)
create(self, vals_list)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
open_entries(self)
remove(self)
set_to_draft(self)
unlink(self)
validate(self)
write(self, vals)
date_end
Date
default=fields.Date.today
help='All depreciation lines prior to this date will be automatically posted'
required=True
string='Date'
note
Text
asset_compute(self)
view_asset_moves(self)
child_ids
One2many → account.asset.group
check_company=True
comodel_name='account.asset.group'
inverse_name='parent_id'
string='Child Asset Groups'
code
Char
index=True
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
name
Char
index=True
required=True
size=64
parent_id
Many2one → account.asset.group
check_company=True
comodel_name='account.asset.group'
ondelete='restrict'
string='Parent Asset Group'
parent_path
Char
index=True
unaccent=False
name_get(self)
amount
Monetary
required=True
asset_id
Many2one → account.asset
check_company=True
comodel_name='account.asset'
index=True
ondelete='cascade'
required=True
string='Asset'
company_id
Many2one
related='asset_id.company_id'
store=True
currency_id
Many2one
related='asset_id.company_id.currency_id'
store=True
string='Company Currency'
depreciated_value
Monetary
compute='_compute_values'
store=True
string='Amount Already Depreciated'
depreciation_base
Monetary
related='asset_id.depreciation_base'
string='Depreciation Base'
init_entry
Boolean
help='Set this flag for entries of previous fiscal years for which Odoo has not generated accounting entries.'
string='Initial Balance Entry'
line_date
Date
required=True
string='Date'
line_days
Integer
readonly=True
string='Days'
move_check
Boolean
compute='_compute_move_check'
store=True
string='Posted'
move_id
Many2one → account.move
check_company=True
comodel_name='account.move'
readonly=True
string='Depreciation Entry'
name
Char
readonly=True
size=64
string='Depreciation Name'
parent_state
Selection
related='asset_id.state'
string='State of Asset'
previous_id
Many2one → account.asset.line
comodel_name='account.asset.line'
readonly=True
string='Previous Depreciation Line'
remaining_value
Monetary
compute='_compute_values'
store=True
string='Next Period Depreciation'
type
Selection
default='depreciate'
readonly=True
selection=[('create', 'Depreciation Base'), ('depreciate', 'Depreciation'), ('remove', 'Asset Removal')]
create_move(self)
open_move(self)
unlink(self)
unlink_move(self)
update_asset_line_after_unlink_move(self)
write(self, vals)
account_asset_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
required=True
string='Asset Account'
account_depreciation_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
required=True
string='Depreciation Account'
account_expense_depreciation_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
required=True
string='Depr. Expense Account'
account_min_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Min-Value Account'
account_plus_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Plus-Value Account'
account_residual_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Residual Value Account'
active
Boolean
default=True
allow_reversal
Boolean
help='If set, when pressing the Delete/Reverse Move button in a posted depreciation line will prompt the option to reverse the journal entry, instead of deleting them.'
args: 'Allow Reversal of journal entries'
asset_product_item
Boolean
help='By default during the validation of an invoice, an asset is created by invoice line as long as an accounting entry is created by invoice line. With this setting, an accounting entry will be created by product item. So, there will be an asset by product item.'
string='Create an asset by product item'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
days_calc
Boolean
default=False
help='Use number of days to calculate depreciation amount'
string='Calculate by days'
group_ids
Many2many → account.asset.group
check_company=True
column1='profile_id'
column2='group_id'
comodel_name='account.asset.group'
relation='account_asset_profile_group_rel'
string='Asset Groups'
journal_id
Many2one → account.journal
check_company=True
comodel_name='account.journal'
domain="[('type', '=', 'general'), ('company_id', '=', company_id)]"
required=True
string='Journal'
method
Selection
default='linear'
help='Choose the method to use to compute the depreciation lines.\n * Linear: Calculated on basis of: Depreciation Base / Number of Depreciations. Depreciation Base = Purchase Value - Salvage Value.\n * Linear-Limit: Linear up to Salvage Value. Depreciation Base = Purchase Value.\n * Degressive: Calculated on basis of: Residual Value * Degressive Factor.\n * Degressive-Linear (only for Time Method = Year): Degressive becomes linear when the annual linear depreciation exceeds the annual degressive depreciation.\n * Degressive-Limit: Degressive up to Salvage Value. The Depreciation Base is equal to the asset value.'
required=True
selection=<expr>
string='Computation Method'
method_number
Integer
default=5
help='The number of years needed to depreciate your asset'
string='Number of Years'
method_period
Selection
default='year'
help='Period length for the depreciation accounting entries'
required=True
selection=<expr>
string='Period Length'
method_progress_factor
Float
default=0.3
string='Degressive Factor'
method_time
Selection
default='year'
help='Choose the method to use to compute the dates and number of depreciation lines.\n * Number of Years: Specify the number of years for the depreciation.\n * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n'
required=True
selection=<expr>
string='Time Method'
name
Char
index=True
required=True
size=64
note
Text
open_asset
Boolean
help='Check this if you want to automatically confirm the assets of this profile when created by invoices.'
string='Skip Draft State'
prorata
Boolean
compute='_compute_prorrata'
help='Indicates that the first depreciation entry for this asset has to be done from the depreciation start date instead of the first day of the fiscal year.'
readonly=False
store=True
string='Prorata Temporis'
salvage_type
Selection
selection=[('fixed', 'Fixed'), ('percent', 'Percentage of Price')]
salvage_value
Float
digits='Account'
help='The estimated value that an asset will realize upon its sale at the end of its useful life.\nThis value is used to determine the depreciation amounts.'
use_leap_years
Boolean
default=False
help='If not set, the system will distribute evenly the amount to amortize across the years, based on the number of years. So the amount per year will be the depreciation base / number of years.\n If set, the system will consider if the current year is a leap year. The amount to depreciate per year will be calculated as depreciation base / (depreciation end date - start date + 1) * days in the current year.'
create(self, vals_list)
write(self, vals)
company_id
Many2one → res.company
required=True
string='Company'
args: 'res.company'
date_completed
Datetime
readonly=True
args: 'Completion Date'
date_trigger
Datetime
help='Date of the event triggering the need to recompute the Asset Tables.'
readonly=True
args: 'Trigger Date'
reason
Char
required=True
state
Selection
default='open'
readonly=True
selection=[('open', 'Open'), ('done', 'Done')]
No public methods.
account_min_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Min-Value Account'
account_plus_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Plus-Value Account'
account_residual_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Residual Value Account'
account_sale_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Asset Sale Account'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
string='Company'
currency_id
Many2one
related='company_id.currency_id'
string='Company Currency'
date_remove
Date
default=fields.Date.today
help='Removal date must be after the last posted entry in case of early removal'
required=True
string='Asset Removal Date'
force_date
Date
string='Force accounting date'
note
Text
posting_regime
Selection
default=<expr>
help="Removal Entry Policy \n * Residual Value: The non-depreciated value will be posted on the 'Residual Value Account' \n * Gain/Loss on Sale: The Gain or Loss will be posted on the 'Plus-Value Account' or 'Min-Value Account' "
required=True
selection=<expr>
string='Removal Entry Policy'
sale_value
Monetary
default=<expr>
remove(self)
asset_id
Many2one → account.asset
comodel_name='account.asset'
readonly=True
string='Asset'
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
readonly=True
string='Asset profile'
company_id
Many2one → res.company
comodel_name='res.company'
readonly=True
string='Company'
date
Date
readonly=True
depreciation_count
Integer
readonly=True
string='# of Depreciation Lines'
depreciation_date
Date
readonly=True
depreciation_value
Float
readonly=True
string='Amount of Depreciation Lines'
gross_value
Float
readonly=True
string='Gross Amount'
move_check
Boolean
readonly=True
string='Posted'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
string='Partner'
posted_value
Float
readonly=True
string='Posted Amount'
state
Selection
readonly=True
selection=<expr>
string='Status'
unposted_value
Float
readonly=True
string='Unposted Amount'
init(self)
asset_count
Integer
compute='_compute_asset_count'
action_view_assets(self)
button_draft(self)
unlink(self)
write(self, vals)
asset_id
Many2one → account.asset
check_company=True
comodel_name='account.asset'
copy=False
ondelete='restrict'
string='Asset'
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
compute='_compute_asset_profile'
readonly=False
store=True
string='Asset Profile'
create(self, vals_list)
write(self, vals)
No new fields.
Public methods (3)acquisition_filter(wiz, asset)
active_filter(wiz, asset)
removal_filter(wiz, asset)
asset_group_id
Many2one → account.asset.group
comodel_name='account.asset.group'
default=<expr>
string='Asset Group'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
date_from
Date
required=True
string='Start Date'
date_to
Date
required=True
string='End Date'
draft
Boolean
string='Include draft assets'
xls_export(self)
date_reversal
Date
default=fields.Date.context_today
required=True
string='Reversal date'
journal_id
Many2one → account.journal
help='If empty, uses the journal of the journal entry to be reversed.'
string='Use Specific Journal'
args: 'account.journal'
line_id
Many2one → account.asset.line
comodel_name='account.asset.line'
readonly=True
required=True
string='Asset Line'
reason
Char
default_get(self, fields)
reverse_move(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/account-financial-tools |
| GIT | |
| GIT | https://github.com/OCA/account-financial-tools.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/account-financial-tools/tree/15.0/account_asset_management |
| VERSION | |
| VERSION | 1.2.1 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Noviat |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Noviat |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Pere Albujer, manu, OCA Transbot, Weblate, OCA-git-bot, oca-ci, newtratip, Saran440, Marcel Savegnago, ps-tubtim, angel, Jérémy Didderen, Juany Davila |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/account-financial-tools |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:34 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/reporting-engine: - report_xlsx_helper - report_xlsx odoo/odoo: - account - base_setup - base - web - product - bus - web_tour - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
python-dateutil xlrd xlsxwriter |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_asset_compute_view_form |
account.asset.compute | account.asset.compute | form | New |
account_asset_compute_view_form_result |
account.asset.compute.result | account.asset.compute | form | New |
account_asset_group_view_form |
account.asset.group.form | account.asset.group | form | New |
account_asset_group_view_search |
account.asset.group.search | account.asset.group | search | New |
account_asset_group_view_tree |
account.asset.group.tree | account.asset.group | tree | New |
account_asset_profile_view_form |
account.asset.profile.form | account.asset.profile | form | New |
account_asset_profile_view_search |
account.asset.profile.search | account.asset.profile | search | New |
account_asset_profile_view_tree |
account.asset.profile.tree | account.asset.profile | tree | New |
account_asset_remove_view_form |
account.asset.remove.form | account.asset.remove | form | New |
account_asset_view_form |
account.asset.form | account.asset | form | New |
account_asset_view_search |
account.asset.search | account.asset | search | New |
account_asset_view_tree |
account.asset.tree | account.asset | tree | New |
view_account_form |
account.account.form | account.account | field | Inherits account.view_account_form |
view_account_move_line_filter |
Journal Items (Search) | account.move.line | field | Inherits account.view_account_move_line_filter |
view_move_form |
account.move.form.account.asset.management | account.move | xpath | Inherits account.view_move_form |
view_move_line_form |
Journal Items (form) | account.move.line | field | Inherits account.view_move_line_form |
wiz_account_asset_report_view_form |
Financial Assets report | wiz.account.asset.report | form | New |
wiz_asset_move_reverse_view_form |
wiz.asset.move.reverse.form | wiz.asset.move.reverse | form | New |
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
help='Default Asset Profile when creating invoice lines with this account.'
string='Asset Profile'
No public methods.
account_analytic_id
Many2one → account.analytic.account
comodel_name='account.analytic.account'
compute='_compute_account_analytic_id'
readonly=False
store=True
string='Analytic account'
account_move_line_ids
One2many → account.move.line
check_company=True
comodel_name='account.move.line'
copy=False
inverse_name='asset_id'
readonly=True
string='Entries'
active
Boolean
default=True
analytic_tag_ids
Many2many → account.analytic.tag
comodel_name='account.analytic.tag'
compute='_compute_analytic_tag_ids'
readonly=False
store=True
string='Analytic tags'
carry_forward_missed_depreciations
Boolean
help='If create an asset in a fiscal period that is now closed\n the accumulated amount of depreciations that cannot be posted will be\n carried forward to the first depreciation line of the current open\n period.'
string='Accumulate missed depreciations'
code
Char
size=32
states=READONLY_STATES
string='Reference'
company_currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='company_id.currency_id'
store=True
string='Company Currency'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
string='Company'
date_remove
Date
readonly=True
string='Asset Removal Date'
date_start
Date
help='You should manually add depreciation lines with the depreciations of previous fiscal years if the Depreciation Start Date is different from the date for which accounting entries need to be generated.'
required=True
states=READONLY_STATES
string='Asset Start Date'
days_calc
Boolean
compute='_compute_days_calc'
help='Use number of days to calculate depreciation amount'
readonly=False
store=True
string='Calculate by days'
depreciation_base
Float
compute='_compute_depreciation_base'
digits='Account'
help='This amount represent the depreciation base of the asset (Purchase Value - Salvage Value).'
store=True
depreciation_line_ids
One2many → account.asset.line
check_company=True
comodel_name='account.asset.line'
copy=False
inverse_name='asset_id'
states=READONLY_STATES
string='Depreciation Lines'
group_ids
Many2many → account.asset.group
column1='asset_id'
column2='group_id'
comodel_name='account.asset.group'
compute='_compute_group_ids'
readonly=False
relation='account_asset_group_rel'
store=True
string='Asset Groups'
method
Selection
compute='_compute_method'
help='Choose the method to use to compute the depreciation lines.\n * Linear: Calculated on basis of: Depreciation Base / Number of Depreciations. Depreciation Base = Purchase Value - Salvage Value.\n * Linear-Limit: Linear up to Salvage Value. Depreciation Base = Purchase Value.\n * Degressive: Calculated on basis of: Residual Value * Degressive Factor.\n * Degressive-Linear (only for Time Method = Year): Degressive becomes linear when the annual linear depreciation exceeds the annual degressive depreciation.\n * Degressive-Limit: Degressive up to Salvage Value. The Depreciation Base is equal to the asset value.'
readonly=False
selection=<expr>
states=READONLY_STATES
store=True
string='Computation Method'
method_end
Date
compute='_compute_method_end'
readonly=False
states=READONLY_STATES
store=True
string='Ending Date'
method_number
Integer
compute='_compute_method_number'
help='The number of years needed to depreciate your asset'
readonly=False
states=READONLY_STATES
store=True
string='Number of Years'
method_period
Selection
compute='_compute_method_period'
help='Period length for the depreciation accounting entries'
readonly=False
selection=<expr>
states=READONLY_STATES
store=True
string='Period Length'
method_progress_factor
Float
compute='_compute_method_progress_factor'
readonly=False
states=READONLY_STATES
store=True
string='Degressive Factor'
method_time
Selection
compute='_compute_method_time'
help='Choose the method to use to compute the dates and number of depreciation lines.\n * Number of Years: Specify the number of years for the depreciation.\n * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n'
readonly=False
selection=<expr>
states=READONLY_STATES
store=True
string='Time Method'
move_line_check
Boolean
compute='_compute_move_line_check'
string='Has accounting entries'
name
Char
required=True
states=READONLY_STATES
string='Asset Name'
note
Text
partner_id
Many2one → res.partner
comodel_name='res.partner'
states=READONLY_STATES
string='Partner'
profile_id
Many2one → account.asset.profile
change_default=True
check_company=True
comodel_name='account.asset.profile'
required=True
states=READONLY_STATES
string='Asset Profile'
prorata
Boolean
compute='_compute_prorrata'
help='Indicates that the first depreciation entry for this asset has to be done from the depreciation start date instead of the first day of the fiscal year.'
readonly=False
states=READONLY_STATES
store=True
string='Prorata Temporis'
purchase_value
Float
help='This amount represent the initial value of the asset.\nThe Depreciation Base is calculated as follows:\nPurchase Value - Salvage Value.'
required=True
states=READONLY_STATES
salvage_value
Float
compute='_compute_salvage_value'
digits='Account'
help='The estimated value that an asset will realize upon its sale at the end of its useful life.\nThis value is used to determine the depreciation amounts.'
readonly=False
states=READONLY_STATES
store=True
state
Selection
copy=False
default='draft'
help="When an asset is created, the status is 'Draft'.\nIf the asset is confirmed, the status goes in 'Running' and the depreciation lines can be posted to the accounting.\nIf the last depreciation line is posted, the asset goes into the 'Close' status.\nWhen the removal entries are generated, the asset goes into the 'Removed' status."
required=True
selection=[('draft', 'Draft'), ('open', 'Running'), ('close', 'Close'), ('removed', 'Removed')]
string='Status'
use_leap_years
Boolean
compute='_compute_use_leap_years'
help='If not set, the system will distribute evenly the amount to amortize across the years, based on the number of years. So the amount per year will be the depreciation base / number of years.\n If set, the system will consider if the current year is a leap year. The amount to depreciate per year will be calculated as depreciation base / (depreciation end date - start date + 1) * days in the current year.'
readonly=False
store=True
value_depreciated
Float
compute='_compute_depreciation'
digits='Account'
store=True
string='Depreciated Value'
value_residual
Float
compute='_compute_depreciation'
digits='Account'
store=True
string='Residual Value'
compute_depreciation_board(self)
create(self, vals)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
open_entries(self)
remove(self)
set_to_draft(self)
unlink(self)
validate(self)
write(self, vals)
date_end
Date
default=fields.Date.today
help='All depreciation lines prior to this date will be automatically posted'
required=True
string='Date'
note
Text
asset_compute(self)
view_asset_moves(self)
child_ids
One2many → account.asset.group
check_company=True
comodel_name='account.asset.group'
inverse_name='parent_id'
string='Child Asset Groups'
code
Char
index=True
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
name
Char
index=True
required=True
size=64
parent_id
Many2one → account.asset.group
check_company=True
comodel_name='account.asset.group'
ondelete='restrict'
string='Parent Asset Group'
parent_path
Char
index=True
name_get(self)
amount
Float
digits='Account'
required=True
asset_id
Many2one → account.asset
check_company=True
comodel_name='account.asset'
index=True
ondelete='cascade'
required=True
string='Asset'
company_id
Many2one → res.company
readonly=True
related='asset_id.company_id'
store=True
args: 'res.company'
depreciated_value
Float
compute='_compute_values'
digits='Account'
store=True
string='Amount Already Depreciated'
depreciation_base
Float
readonly=True
related='asset_id.depreciation_base'
string='Depreciation Base'
init_entry
Boolean
help='Set this flag for entries of previous fiscal years for which Odoo has not generated accounting entries.'
string='Initial Balance Entry'
line_date
Date
required=True
string='Date'
line_days
Integer
readonly=True
string='Days'
move_check
Boolean
compute='_compute_move_check'
store=True
string='Posted'
move_id
Many2one → account.move
check_company=True
comodel_name='account.move'
readonly=True
string='Depreciation Entry'
name
Char
readonly=True
size=64
string='Depreciation Name'
parent_state
Selection
readonly=True
related='asset_id.state'
string='State of Asset'
previous_id
Many2one → account.asset.line
comodel_name='account.asset.line'
readonly=True
string='Previous Depreciation Line'
remaining_value
Float
compute='_compute_values'
digits='Account'
store=True
string='Next Period Depreciation'
type
Selection
default='depreciate'
readonly=True
selection=[('create', 'Depreciation Base'), ('depreciate', 'Depreciation'), ('remove', 'Asset Removal')]
create_move(self)
open_move(self)
unlink(self)
unlink_move(self)
update_asset_line_after_unlink_move(self)
write(self, vals)
account_analytic_id
Many2one → account.analytic.account
comodel_name='account.analytic.account'
string='Analytic account'
account_asset_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
required=True
string='Asset Account'
account_depreciation_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
required=True
string='Depreciation Account'
account_expense_depreciation_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
required=True
string='Depr. Expense Account'
account_min_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Min-Value Account'
account_plus_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Plus-Value Account'
account_residual_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Residual Value Account'
active
Boolean
default=True
allow_reversal
Boolean
help='If set, when pressing the Delete/Reverse Move button in a posted depreciation line will prompt the option to reverse the journal entry, instead of deleting them.'
args: 'Allow Reversal of journal entries'
analytic_tag_ids
Many2many → account.analytic.tag
comodel_name='account.analytic.tag'
string='Analytic tags'
asset_product_item
Boolean
help='By default during the validation of an invoice, an asset is created by invoice line as long as an accounting entry is created by invoice line. With this setting, an accounting entry will be created by product item. So, there will be an asset by product item.'
string='Create an asset by product item'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
days_calc
Boolean
default=False
help='Use number of days to calculate depreciation amount'
string='Calculate by days'
group_ids
Many2many → account.asset.group
check_company=True
column1='profile_id'
column2='group_id'
comodel_name='account.asset.group'
relation='account_asset_profile_group_rel'
string='Asset Groups'
journal_id
Many2one → account.journal
check_company=True
comodel_name='account.journal'
domain="[('type', '=', 'general'), ('company_id', '=', company_id)]"
required=True
string='Journal'
method
Selection
default='linear'
help='Choose the method to use to compute the depreciation lines.\n * Linear: Calculated on basis of: Depreciation Base / Number of Depreciations. Depreciation Base = Purchase Value - Salvage Value.\n * Linear-Limit: Linear up to Salvage Value. Depreciation Base = Purchase Value.\n * Degressive: Calculated on basis of: Residual Value * Degressive Factor.\n * Degressive-Linear (only for Time Method = Year): Degressive becomes linear when the annual linear depreciation exceeds the annual degressive depreciation.\n * Degressive-Limit: Degressive up to Salvage Value. The Depreciation Base is equal to the asset value.'
required=True
selection=<expr>
string='Computation Method'
method_number
Integer
default=5
help='The number of years needed to depreciate your asset'
string='Number of Years'
method_period
Selection
default='year'
help='Period length for the depreciation accounting entries'
required=True
selection=<expr>
string='Period Length'
method_progress_factor
Float
default=0.3
string='Degressive Factor'
method_time
Selection
default='year'
help='Choose the method to use to compute the dates and number of depreciation lines.\n * Number of Years: Specify the number of years for the depreciation.\n * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n'
required=True
selection=<expr>
string='Time Method'
name
Char
index=True
required=True
size=64
note
Text
open_asset
Boolean
help='Check this if you want to automatically confirm the assets of this profile when created by invoices.'
string='Skip Draft State'
prorata
Boolean
compute='_compute_prorrata'
help='Indicates that the first depreciation entry for this asset has to be done from the depreciation start date instead of the first day of the fiscal year.'
readonly=False
store=True
string='Prorata Temporis'
salvage_type
Selection
selection=[('fixed', 'Fixed'), ('percent', 'Percentage of Price')]
salvage_value
Float
digits='Account'
help='The estimated value that an asset will realize upon its sale at the end of its useful life.\nThis value is used to determine the depreciation amounts.'
use_leap_years
Boolean
default=False
help='If not set, the system will distribute evenly the amount to amortize across the years, based on the number of years. So the amount per year will be the depreciation base / number of years.\n If set, the system will consider if the current year is a leap year. The amount to depreciate per year will be calculated as depreciation base / (depreciation end date - start date + 1) * days in the current year.'
create(self, vals)
write(self, vals)
company_id
Many2one → res.company
required=True
string='Company'
args: 'res.company'
date_completed
Datetime
readonly=True
args: 'Completion Date'
date_trigger
Datetime
help='Date of the event triggering the need to recompute the Asset Tables.'
readonly=True
args: 'Trigger Date'
reason
Char
required=True
state
Selection
default='open'
readonly=True
selection=[('open', 'Open'), ('done', 'Done')]
No public methods.
account_min_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Min-Value Account'
account_plus_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Plus-Value Account'
account_residual_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Residual Value Account'
account_sale_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Asset Sale Account'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
string='Company'
date_remove
Date
default=fields.Date.today
help='Removal date must be after the last posted entry in case of early removal'
required=True
string='Asset Removal Date'
force_date
Date
string='Force accounting date'
note
Text
posting_regime
Selection
default=<expr>
help="Removal Entry Policy \n * Residual Value: The non-depreciated value will be posted on the 'Residual Value Account' \n * Gain/Loss on Sale: The Gain or Loss will be posted on the 'Plus-Value Account' or 'Min-Value Account' "
required=True
selection=<expr>
string='Removal Entry Policy'
sale_value
Float
default=<expr>
remove(self)
asset_count
Integer
compute='_compute_asset_count'
action_post(self)
action_view_assets(self)
button_draft(self)
unlink(self)
write(self, vals)
asset_id
Many2one → account.asset
comodel_name='account.asset'
ondelete='restrict'
string='Asset'
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
compute='_compute_asset_profile'
readonly=False
store=True
string='Asset Profile'
create(self, vals_list)
write(self, vals)
No new fields.
Public methods (3)acquisition_filter(wiz, asset)
active_filter(wiz, asset)
removal_filter(wiz, asset)
asset_group_id
Many2one → account.asset.group
comodel_name='account.asset.group'
default=<expr>
string='Asset Group'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
date_from
Date
required=True
string='Start Date'
date_to
Date
required=True
string='End Date'
draft
Boolean
string='Include draft assets'
xls_export(self)
date_reversal
Date
default=fields.Date.context_today
required=True
string='Reversal date'
journal_id
Many2one → account.journal
help='If empty, uses the journal of the journal entry to be reversed.'
string='Use Specific Journal'
args: 'account.journal'
line_id
Many2one → account.asset.line
comodel_name='account.asset.line'
readonly=True
required=True
string='Asset Line'
reason
Char
default_get(self, fields)
reverse_move(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/account-financial-tools |
| GIT | |
| GIT | https://github.com/OCA/account-financial-tools.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/account-financial-tools/tree/14.0/account_asset_management |
| VERSION | |
| VERSION | 3.1.4 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Noviat |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Noviat |
| COMMITTERS | |
| COMMITTERS | Stéphane Bidoul, Alexis de Lattre, Stefan Rijnhart, Pedro M. Baeza, GitHub, Jairo Llopis, mreficent, Enric Tobella, Luis González, OCA Transbot, Miquel Raïch, Víctor Martínez, JordiMForgeFlow, João Marques, oca-travis, Weblate, OCA-git-bot, sergiocorato, oca-ci, Kitti U, mariadforgeflow, Saran440, Marcel Savegnago, ps-tubtim, bosd, Jérémy Didderen, oca-git-bot, KNVx, Robin Conjour |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/account-financial-tools |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:41:00 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/reporting-engine: - report_xlsx_helper - report_xlsx odoo/odoo: - account - base_setup - base - web - product - 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 | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_asset_compute_view_form |
account.asset.compute | account.asset.compute | form | New |
account_asset_compute_view_form_result |
account.asset.compute.result | account.asset.compute | form | New |
account_asset_group_view_form |
account.asset.group.form | account.asset.group | form | New |
account_asset_group_view_search |
account.asset.group.search | account.asset.group | search | New |
account_asset_group_view_tree |
account.asset.group.tree | account.asset.group | tree | New |
account_asset_profile_view_form |
account.asset.profile.form | account.asset.profile | form | New |
account_asset_profile_view_search |
account.asset.profile.search | account.asset.profile | search | New |
account_asset_profile_view_tree |
account.asset.profile.tree | account.asset.profile | tree | New |
account_asset_remove_view_form |
account.asset.remove.form | account.asset.remove | form | New |
account_asset_view_form |
account.asset.form | account.asset | form | New |
account_asset_view_search |
account.asset.search | account.asset | search | New |
account_asset_view_tree |
account.asset.tree | account.asset | tree | New |
view_account_form |
account.account.form | account.account | group | Inherits account.view_account_form |
view_account_list |
account.account | field | Inherits account.view_account_list | |
view_account_move_line_filter |
Journal Items (Search) | account.move.line | field | Inherits account.view_account_move_line_filter |
view_move_form |
account.move.form.account.asset.management | account.move | xpath | Inherits account.view_move_form |
view_move_line_form |
Journal Items (form) | account.move.line | field | Inherits account.view_move_line_form |
wiz_account_asset_report_view_form |
Financial Assets report | wiz.account.asset.report | form | New |
wiz_asset_move_reverse_view_form |
wiz.asset.move.reverse.form | wiz.asset.move.reverse | form | New |
asset_profile_id
Many2one → account.asset.profile
check_company=True
comodel_name='account.asset.profile'
help='Default Asset Profile when creating invoice lines with this account.'
string='Asset Profile'
No public methods.
account_analytic_id
Many2one → account.analytic.account
comodel_name='account.analytic.account'
compute='_compute_account_analytic_id'
readonly=False
store=True
string='Analytic account'
account_move_line_ids
One2many → account.move.line
check_company=True
comodel_name='account.move.line'
copy=False
inverse_name='asset_id'
readonly=True
string='Entries'
active
Boolean
default=True
analytic_tag_ids
Many2many → account.analytic.tag
comodel_name='account.analytic.tag'
compute='_compute_analytic_tag_ids'
readonly=False
store=True
string='Analytic tags'
carry_forward_missed_depreciations
Boolean
help='If create an asset in a fiscal period that is now closed\n the accumulated amount of depreciations that cannot be posted will be\n carried forward to the first depreciation line of the current open\n period.'
string='Accumulate missed depreciations'
code
Char
size=32
states=READONLY_STATES
string='Reference'
company_currency_id
Many2one → res.currency
comodel_name='res.currency'
related='company_id.currency_id'
store=True
string='Company Currency'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
string='Company'
date_remove
Date
readonly=True
string='Asset Removal Date'
date_start
Date
help='You should manually add depreciation lines with the depreciations of previous fiscal years if the Depreciation Start Date is different from the date for which accounting entries need to be generated.'
required=True
states=READONLY_STATES
string='Asset Start Date'
days_calc
Boolean
compute='_compute_days_calc'
help='Use number of days to calculate depreciation amount'
readonly=False
store=True
string='Calculate by days'
depreciation_base
Monetary
compute='_compute_depreciation_base'
currency_field='company_currency_id'
help='This amount represent the depreciation base of the asset (Purchase Value - Salvage Value).'
store=True
string='Depreciation Base'
depreciation_line_ids
One2many → account.asset.line
check_company=True
comodel_name='account.asset.line'
copy=False
inverse_name='asset_id'
states=READONLY_STATES
string='Depreciation Lines'
group_ids
Many2many → account.asset.group
column1='asset_id'
column2='group_id'
comodel_name='account.asset.group'
compute='_compute_group_ids'
readonly=False
relation='account_asset_group_rel'
store=True
string='Asset Groups'
method
Selection
compute='_compute_method'
help='Choose the method to use to compute the depreciation lines.\n * Linear: Calculated on basis of: Depreciation Base / Number of Depreciations. Depreciation Base = Purchase Value - Salvage Value.\n * Linear-Limit: Linear up to Salvage Value. Depreciation Base = Purchase Value.\n * Degressive: Calculated on basis of: Residual Value * Degressive Factor.\n * Degressive-Linear (only for Time Method = Year): Degressive becomes linear when the annual linear depreciation exceeds the annual degressive depreciation.\n * Degressive-Limit: Degressive up to Salvage Value. The Depreciation Base is equal to the asset value.'
readonly=False
selection=<expr>
states=READONLY_STATES
store=True
string='Computation Method'
method_end
Date
compute='_compute_method_end'
readonly=False
states=READONLY_STATES
store=True
string='Ending Date'
method_number
Integer
compute='_compute_method_number'
help='The number of years needed to depreciate your asset'
readonly=False
states=READONLY_STATES
store=True
string='Number of Years'
method_period
Selection
compute='_compute_method_period'
help='Period length for the depreciation accounting entries'
readonly=False
selection=<expr>
states=READONLY_STATES
store=True
string='Period Length'
method_progress_factor
Float
compute='_compute_method_progress_factor'
readonly=False
states=READONLY_STATES
store=True
string='Degressive Factor'
method_time
Selection
compute='_compute_method_time'
help='Choose the method to use to compute the dates and number of depreciation lines.\n * Number of Years: Specify the number of years for the depreciation.\n * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n'
readonly=False
selection=<expr>
states=READONLY_STATES
store=True
string='Time Method'
move_line_check
Boolean
compute='_compute_move_line_check'
string='Has accounting entries'
name
Char
required=True
states=READONLY_STATES
string='Asset Name'
note
Text
partner_id
Many2one → res.partner
comodel_name='res.partner'
states=READONLY_STATES
string='Partner'
profile_id
Many2one → account.asset.profile
change_default=True
check_company=True
comodel_name='account.asset.profile'
required=True
states=READONLY_STATES
string='Asset Profile'
prorata
Boolean
compute='_compute_prorrata'
help='Indicates that the first depreciation entry for this asset has to be done from the depreciation start date instead of the first day of the fiscal year.'
readonly=False
states=READONLY_STATES
store=True
string='Prorata Temporis'
purchase_value
Monetary
currency_field='company_currency_id'
help='This amount represent the initial value of the asset.\nThe Depreciation Base is calculated as follows:\nPurchase Value - Salvage Value.'
required=True
states=READONLY_STATES
string='Purchase Value'
salvage_value
Monetary
currency_field='company_currency_id'
help='The estimated value that an asset will realize upon its sale at the end of its useful life.\nThis value is used to determine the depreciation amounts.'
states=READONLY_STATES
string='Salvage Value'
state
Selection
copy=False
default='draft'
help="When an asset is created, the status is 'Draft'.\nIf the asset is confirmed, the status goes in 'Running' and the depreciation lines can be posted to the accounting.\nIf the last depreciation line is posted, the asset goes into the 'Close' status.\nWhen the removal entries are generated, the asset goes into the 'Removed' status."
required=True
selection=[('draft', 'Draft'), ('open', 'Running'), ('close', 'Close'), ('removed', 'Removed')]
string='Status'
use_leap_years
Boolean
compute='_compute_use_leap_years'
help='If not set, the system will distribute evenly the amount to amortize across the years, based on the number of years. So the amount per year will be the depreciation base / number of years.\n If set, the system will consider if the current year is a leap year. The amount to depreciate per year will be calculated as depreciation base / (depreciation end date - start date + 1) * days in the current year.'
readonly=False
store=True
string='Use leap years'
value_depreciated
Monetary
compute='_compute_depreciation'
currency_field='company_currency_id'
store=True
string='Depreciated Value'
value_residual
Monetary
compute='_compute_depreciation'
currency_field='company_currency_id'
store=True
string='Residual Value'
compute_depreciation_board(self)
create(self, vals)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
open_entries(self)
remove(self)
set_to_draft(self)
unlink(self)
validate(self)
write(self, vals)
date_end
Date
default=fields.Date.today
help='All depreciation lines prior to this date will be automatically posted'
required=True
string='Date'
note
Text
asset_compute(self)
view_asset_moves(self)
child_ids
One2many → account.asset.group
check_company=True
comodel_name='account.asset.group'
inverse_name='parent_id'
string='Child Asset Groups'
code
Char
index=True
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
name
Char
index=True
required=True
size=64
string='Name'
parent_id
Many2one → account.asset.group
check_company=True
comodel_name='account.asset.group'
ondelete='restrict'
string='Parent Asset Group'
parent_path
Char
index=True
name_get(self)
amount
Monetary
currency_field='company_currency_id'
required=True
string='Amount'
asset_id
Many2one → account.asset
check_company=True
comodel_name='account.asset'
index=True
ondelete='cascade'
required=True
string='Asset'
company_currency_id
Many2one
related='asset_id.company_id.currency_id'
store=True
string='Company Currency'
company_id
Many2one
related='asset_id.company_id'
store=True
depreciated_value
Monetary
compute='_compute_values'
currency_field='company_currency_id'
store=True
string='Amount Already Depreciated'
depreciation_base
Monetary
currency_field='company_currency_id'
related='asset_id.depreciation_base'
string='Depreciation Base'
init_entry
Boolean
help='Set this flag for entries of previous fiscal years for which Odoo has not generated accounting entries.'
string='Initial Balance Entry'
line_date
Date
required=True
string='Date'
line_days
Integer
readonly=True
string='Days'
move_check
Boolean
compute='_compute_move_check'
store=True
string='Posted'
move_id
Many2one → account.move
check_company=True
comodel_name='account.move'
readonly=True
string='Depreciation Entry'
name
Char
readonly=True
size=64
string='Depreciation Name'
parent_state
Selection
related='asset_id.state'
string='State of Asset'
previous_id
Many2one → account.asset.line
comodel_name='account.asset.line'
readonly=True
string='Previous Depreciation Line'
remaining_value
Monetary
compute='_compute_values'
currency_field='company_currency_id'
store=True
string='Next Period Depreciation'
type
Selection
default='depreciate'
readonly=True
selection=[('create', 'Depreciation Base'), ('depreciate', 'Depreciation'), ('remove', 'Asset Removal')]
create_move(self)
open_move(self)
unlink(self)
unlink_move(self)
update_asset_line_after_unlink_move(self)
write(self, vals)
account_analytic_id
Many2one → account.analytic.account
comodel_name='account.analytic.account'
string='Analytic account'
account_asset_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
required=True
string='Asset Account'
account_depreciation_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
required=True
string='Depreciation Account'
account_expense_depreciation_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
required=True
string='Depr. Expense Account'
account_min_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Min-Value Account'
account_plus_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Plus-Value Account'
account_residual_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Residual Value Account'
active
Boolean
default=True
allow_reversal
Boolean
help='If set, when pressing the Delete/Reverse Move button in a posted depreciation line will prompt the option to reverse the journal entry, instead of deleting them.'
args: 'Allow Reversal of journal entries'
analytic_tag_ids
Many2many → account.analytic.tag
comodel_name='account.analytic.tag'
string='Analytic tags'
asset_product_item
Boolean
help='By default during the validation of an invoice, an asset is created by invoice line as long as an accounting entry is created by invoice line. With this setting, an accounting entry will be created by product item. So, there will be an asset by product item.'
string='Create an asset by product item'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
days_calc
Boolean
default=False
help='Use number of days to calculate depreciation amount'
string='Calculate by days'
group_ids
Many2many → account.asset.group
check_company=True
column1='profile_id'
column2='group_id'
comodel_name='account.asset.group'
relation='account_asset_profile_group_rel'
string='Asset Groups'
journal_id
Many2one → account.journal
check_company=True
comodel_name='account.journal'
domain="[('type', '=', 'general'), ('company_id', '=', company_id)]"
required=True
string='Journal'
method
Selection
default='linear'
help='Choose the method to use to compute the depreciation lines.\n * Linear: Calculated on basis of: Depreciation Base / Number of Depreciations. Depreciation Base = Purchase Value - Salvage Value.\n * Linear-Limit: Linear up to Salvage Value. Depreciation Base = Purchase Value.\n * Degressive: Calculated on basis of: Residual Value * Degressive Factor.\n * Degressive-Linear (only for Time Method = Year): Degressive becomes linear when the annual linear depreciation exceeds the annual degressive depreciation.\n * Degressive-Limit: Degressive up to Salvage Value. The Depreciation Base is equal to the asset value.'
required=True
selection=<expr>
string='Computation Method'
method_number
Integer
default=5
help='The number of years needed to depreciate your asset'
string='Number of Years'
method_period
Selection
default='year'
help='Period length for the depreciation accounting entries'
required=True
selection=<expr>
string='Period Length'
method_progress_factor
Float
default=0.3
string='Degressive Factor'
method_time
Selection
default='year'
help='Choose the method to use to compute the dates and number of depreciation lines.\n * Number of Years: Specify the number of years for the depreciation.\n * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n'
required=True
selection=<expr>
string='Time Method'
name
Char
index=True
required=True
size=64
string='Name'
note
Text
open_asset
Boolean
help='Check this if you want to automatically confirm the assets of this profile when created by invoices.'
string='Skip Draft State'
prorata
Boolean
compute='_compute_prorrata'
help='Indicates that the first depreciation entry for this asset has to be done from the depreciation start date instead of the first day of the fiscal year.'
readonly=False
store=True
string='Prorata Temporis'
use_leap_years
Boolean
default=False
help='If not set, the system will distribute evenly the amount to amortize across the years, based on the number of years. So the amount per year will be the depreciation base / number of years.\n If set, the system will consider if the current year is a leap year. The amount to depreciate per year will be calculated as depreciation base / (depreciation end date - start date + 1) * days in the current year.'
string='Use leap years'
create(self, vals)
write(self, vals)
company_id
Many2one → res.company
required=True
string='Company'
args: 'res.company'
date_completed
Datetime
readonly=True
args: 'Completion Date'
date_trigger
Datetime
help='Date of the event triggering the need to recompute the Asset Tables.'
readonly=True
args: 'Trigger Date'
reason
Char
required=True
string='Reason'
state
Selection
default='open'
readonly=True
selection=[('open', 'Open'), ('done', 'Done')]
string='State'
No public methods.
account_min_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Min-Value Account'
account_plus_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Plus-Value Account'
account_residual_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Residual Value Account'
account_sale_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Asset Sale Account'
company_currency_id
Many2one
related='company_id.currency_id'
string='Company Currency'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
string='Company'
date_remove
Date
default=fields.Date.today
help='Removal date must be after the last posted entry in case of early removal'
required=True
string='Asset Removal Date'
force_date
Date
string='Force accounting date'
note
Text
posting_regime
Selection
default=<expr>
help="Removal Entry Policy \n * Residual Value: The non-depreciated value will be posted on the 'Residual Value Account' \n * Gain/Loss on Sale: The Gain or Loss will be posted on the 'Plus-Value Account' or 'Min-Value Account' "
required=True
selection=<expr>
string='Removal Entry Policy'
sale_value
Monetary
currency_field='company_currency_id'
default=<expr>
string='Sale Value'
remove(self)
asset_count
Integer
compute='_compute_asset_count'
action_post(self)
action_view_assets(self)
button_draft(self)
unlink(self)
write(self, vals)
asset_id
Many2one → account.asset
check_company=True
comodel_name='account.asset'
ondelete='restrict'
string='Asset'
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
compute='_compute_asset_profile'
readonly=False
store=True
string='Asset Profile'
create(self, vals_list)
write(self, vals)
No new fields.
Public methods (3)acquisition_filter(wiz, asset)
active_filter(wiz, asset)
removal_filter(wiz, asset)
asset_group_id
Many2one → account.asset.group
comodel_name='account.asset.group'
default=<expr>
string='Asset Group'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
date_from
Date
required=True
string='Start Date'
date_to
Date
required=True
string='End Date'
draft
Boolean
string='Include draft assets'
xls_export(self)
date_reversal
Date
default=fields.Date.context_today
required=True
string='Reversal date'
journal_id
Many2one → account.journal
help='If empty, uses the journal of the journal entry to be reversed.'
string='Use Specific Journal'
args: 'account.journal'
line_id
Many2one → account.asset.line
comodel_name='account.asset.line'
readonly=True
required=True
string='Asset Line'
reason
Char
string='Reason'
default_get(self, fields)
reverse_move(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/account-financial-tools |
| GIT | |
| GIT | https://github.com/OCA/account-financial-tools.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/account-financial-tools/tree/13.0/account_asset_management |
| VERSION | |
| VERSION | 3.7.4 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Noviat |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Noviat |
| COMMITTERS | |
| COMMITTERS | Stefan Rijnhart, Pedro M. Baeza, GitHub, Jairo Llopis, mreficent, Andrea, Jordi Ballester, OCA Transbot, Miquel Raïch, Víctor Martínez, JordiMForgeFlow, Ernesto Tejeda, João Marques, oca-travis, Weblate, OCA-git-bot, oca-ci, Kitti U, Saran440, Valentin Vinagre Urteaga, Mateu Griful, fromera |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/account-financial-tools |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:34:13 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/reporting-engine: - report_xlsx_helper - report_xlsx odoo/odoo: - account - base_setup - base - web - product - bus - web_tour - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
python-dateutil |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_asset_compute_view_form |
account.asset.compute | account.asset.compute | form | New |
account_asset_compute_view_form_result |
account.asset.compute.result | account.asset.compute | form | New |
account_asset_group_view_form |
account.asset.group.form | account.asset.group | form | New |
account_asset_group_view_search |
account.asset.group.search | account.asset.group | search | New |
account_asset_group_view_tree |
account.asset.group.tree | account.asset.group | tree | New |
account_asset_profile_view_form |
account.asset.profile.form | account.asset.profile | form | New |
account_asset_profile_view_search |
account.asset.profile.search | account.asset.profile | search | New |
account_asset_profile_view_tree |
account.asset.profile.tree | account.asset.profile | tree | New |
account_asset_remove_view_form |
account.asset.remove.form | account.asset.remove | form | New |
account_asset_view_form |
account.asset.form | account.asset | form | New |
account_asset_view_search |
account.asset.search | account.asset | search | New |
account_asset_view_tree |
account.asset.tree | account.asset | tree | New |
view_account_form |
account.account.form | account.account | field | Inherits account.view_account_form |
view_account_move_line_filter |
Journal Items (Search) | account.move.line | field | Inherits account.view_account_move_line_filter |
view_move_form |
account.move.form.account.asset.management | account.move | xpath | Inherits account.view_move_form |
view_move_line_form |
Journal Items (form) | account.move.line | field | Inherits account.view_move_line_form |
wiz_account_asset_report_view_form |
Financial Assets report | wiz.account.asset.report | form | New |
wiz_asset_move_reverse_view_form |
wiz.asset.move.reverse.form | wiz.asset.move.reverse | form | New |
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
help='Default Asset Profile when creating invoice lines with this account.'
string='Asset Profile'
No public methods.
account_analytic_id
Many2one → account.analytic.account
comodel_name='account.analytic.account'
compute='_compute_account_analytic_id'
readonly=False
store=True
string='Analytic account'
account_move_line_ids
One2many → account.move.line
check_company=True
comodel_name='account.move.line'
copy=False
inverse_name='asset_id'
readonly=True
string='Entries'
active
Boolean
default=True
analytic_tag_ids
Many2many → account.analytic.tag
comodel_name='account.analytic.tag'
compute='_compute_analytic_tag_ids'
readonly=False
store=True
string='Analytic tags'
carry_forward_missed_depreciations
Boolean
help='If create an asset in a fiscal period that is now closed\n the accumulated amount of depreciations that cannot be posted will be\n carried forward to the first depreciation line of the current open\n period.'
string='Accumulate missed depreciations'
code
Char
size=32
states=READONLY_STATES
string='Reference'
company_currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='company_id.currency_id'
store=True
string='Company Currency'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
string='Company'
date_remove
Date
readonly=True
string='Asset Removal Date'
date_start
Date
help='You should manually add depreciation lines with the depreciations of previous fiscal years if the Depreciation Start Date is different from the date for which accounting entries need to be generated.'
required=True
states=READONLY_STATES
string='Asset Start Date'
days_calc
Boolean
compute='_compute_days_calc'
help='Use number of days to calculate depreciation amount'
readonly=False
store=True
string='Calculate by days'
depreciation_base
Float
compute='_compute_depreciation_base'
digits='Account'
help='This amount represent the depreciation base of the asset (Purchase Value - Salvage Value).'
store=True
string='Depreciation Base'
depreciation_line_ids
One2many → account.asset.line
check_company=True
comodel_name='account.asset.line'
copy=False
inverse_name='asset_id'
states=READONLY_STATES
string='Depreciation Lines'
group_ids
Many2many → account.asset.group
column1='asset_id'
column2='group_id'
comodel_name='account.asset.group'
compute='_compute_group_ids'
readonly=False
relation='account_asset_group_rel'
store=True
string='Asset Groups'
method
Selection
compute='_compute_method'
help='Choose the method to use to compute the depreciation lines.\n * Linear: Calculated on basis of: Depreciation Base / Number of Depreciations. Depreciation Base = Purchase Value - Salvage Value.\n * Linear-Limit: Linear up to Salvage Value. Depreciation Base = Purchase Value.\n * Degressive: Calculated on basis of: Residual Value * Degressive Factor.\n * Degressive-Linear (only for Time Method = Year): Degressive becomes linear when the annual linear depreciation exceeds the annual degressive depreciation.\n * Degressive-Limit: Degressive up to Salvage Value. The Depreciation Base is equal to the asset value.'
readonly=False
selection=<expr>
states=READONLY_STATES
store=True
string='Computation Method'
method_end
Date
compute='_compute_method_end'
readonly=False
states=READONLY_STATES
store=True
string='Ending Date'
method_number
Integer
compute='_compute_method_number'
help='The number of years needed to depreciate your asset'
readonly=False
states=READONLY_STATES
store=True
string='Number of Years'
method_period
Selection
compute='_compute_method_period'
help='Period length for the depreciation accounting entries'
readonly=False
selection=<expr>
states=READONLY_STATES
store=True
string='Period Length'
method_progress_factor
Float
compute='_compute_method_progress_factor'
readonly=False
states=READONLY_STATES
store=True
string='Degressive Factor'
method_time
Selection
compute='_compute_method_time'
help='Choose the method to use to compute the dates and number of depreciation lines.\n * Number of Years: Specify the number of years for the depreciation.\n * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n'
readonly=False
selection=<expr>
states=READONLY_STATES
store=True
string='Time Method'
move_line_check
Boolean
compute='_compute_move_line_check'
string='Has accounting entries'
name
Char
required=True
states=READONLY_STATES
string='Asset Name'
note
Text
partner_id
Many2one → res.partner
comodel_name='res.partner'
states=READONLY_STATES
string='Partner'
profile_id
Many2one → account.asset.profile
change_default=True
check_company=True
comodel_name='account.asset.profile'
required=True
states=READONLY_STATES
string='Asset Profile'
prorata
Boolean
compute='_compute_prorrata'
help='Indicates that the first depreciation entry for this asset has to be done from the depreciation start date instead of the first day of the fiscal year.'
readonly=False
states=READONLY_STATES
store=True
string='Prorata Temporis'
purchase_value
Float
help='This amount represent the initial value of the asset.\nThe Depreciation Base is calculated as follows:\nPurchase Value - Salvage Value.'
required=True
states=READONLY_STATES
string='Purchase Value'
salvage_value
Float
digits='Account'
help='The estimated value that an asset will realize upon its sale at the end of its useful life.\nThis value is used to determine the depreciation amounts.'
states=READONLY_STATES
string='Salvage Value'
state
Selection
copy=False
default='draft'
help="When an asset is created, the status is 'Draft'.\nIf the asset is confirmed, the status goes in 'Running' and the depreciation lines can be posted to the accounting.\nIf the last depreciation line is posted, the asset goes into the 'Close' status.\nWhen the removal entries are generated, the asset goes into the 'Removed' status."
required=True
selection=[('draft', 'Draft'), ('open', 'Running'), ('close', 'Close'), ('removed', 'Removed')]
string='Status'
use_leap_years
Boolean
compute='_compute_use_leap_years'
help='If not set, the system will distribute evenly the amount to amortize across the years, based on the number of years. So the amount per year will be the depreciation base / number of years.\n If set, the system will consider if the current year is a leap year. The amount to depreciate per year will be calculated as depreciation base / (depreciation end date - start date + 1) * days in the current year.'
readonly=False
store=True
string='Use leap years'
value_depreciated
Float
compute='_compute_depreciation'
digits='Account'
store=True
string='Depreciated Value'
value_residual
Float
compute='_compute_depreciation'
digits='Account'
store=True
string='Residual Value'
compute_depreciation_board(self)
create(self, vals)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
open_entries(self)
remove(self)
set_to_draft(self)
unlink(self)
validate(self)
write(self, vals)
date_end
Date
default=fields.Date.today
help='All depreciation lines prior to this date will be automatically posted'
required=True
string='Date'
note
Text
asset_compute(self)
view_asset_moves(self)
child_ids
One2many → account.asset.group
check_company=True
comodel_name='account.asset.group'
inverse_name='parent_id'
string='Child Asset Groups'
code
Char
index=True
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
name
Char
index=True
required=True
size=64
string='Name'
parent_id
Many2one → account.asset.group
check_company=True
comodel_name='account.asset.group'
ondelete='restrict'
string='Parent Asset Group'
parent_path
Char
index=True
name_get(self)
amount
Float
digits='Account'
required=True
string='Amount'
asset_id
Many2one → account.asset
check_company=True
comodel_name='account.asset'
index=True
ondelete='cascade'
required=True
string='Asset'
company_id
Many2one → res.company
readonly=True
related='asset_id.company_id'
store=True
args: 'res.company'
depreciated_value
Float
compute='_compute_values'
digits='Account'
store=True
string='Amount Already Depreciated'
depreciation_base
Float
readonly=True
related='asset_id.depreciation_base'
string='Depreciation Base'
init_entry
Boolean
help='Set this flag for entries of previous fiscal years for which Odoo has not generated accounting entries.'
string='Initial Balance Entry'
line_date
Date
required=True
string='Date'
line_days
Integer
readonly=True
string='Days'
move_check
Boolean
compute='_compute_move_check'
store=True
string='Posted'
move_id
Many2one → account.move
check_company=True
comodel_name='account.move'
readonly=True
string='Depreciation Entry'
name
Char
readonly=True
size=64
string='Depreciation Name'
parent_state
Selection
readonly=True
related='asset_id.state'
string='State of Asset'
previous_id
Many2one → account.asset.line
comodel_name='account.asset.line'
readonly=True
string='Previous Depreciation Line'
remaining_value
Float
compute='_compute_values'
digits='Account'
store=True
string='Next Period Depreciation'
type
Selection
default='depreciate'
readonly=True
selection=[('create', 'Depreciation Base'), ('depreciate', 'Depreciation'), ('remove', 'Asset Removal')]
create_move(self)
open_move(self)
unlink(self)
unlink_move(self)
update_asset_line_after_unlink_move(self)
write(self, vals)
account_analytic_id
Many2one → account.analytic.account
comodel_name='account.analytic.account'
string='Analytic account'
account_asset_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
required=True
string='Asset Account'
account_depreciation_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
required=True
string='Depreciation Account'
account_expense_depreciation_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
required=True
string='Depr. Expense Account'
account_min_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Min-Value Account'
account_plus_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Plus-Value Account'
account_residual_value_id
Many2one → account.account
check_company=True
comodel_name='account.account'
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Residual Value Account'
active
Boolean
default=True
allow_reversal
Boolean
help='If set, when pressing the Delete/Reverse Move button in a posted depreciation line will prompt the option to reverse the journal entry, instead of deleting them.'
args: 'Allow Reversal of journal entries'
analytic_tag_ids
Many2many → account.analytic.tag
comodel_name='account.analytic.tag'
string='Analytic tags'
asset_product_item
Boolean
help='By default during the validation of an invoice, an asset is created by invoice line as long as an accounting entry is created by invoice line. With this setting, an accounting entry will be created by product item. So, there will be an asset by product item.'
string='Create an asset by product item'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
days_calc
Boolean
default=False
help='Use number of days to calculate depreciation amount'
string='Calculate by days'
group_ids
Many2many → account.asset.group
check_company=True
column1='profile_id'
column2='group_id'
comodel_name='account.asset.group'
relation='account_asset_profile_group_rel'
string='Asset Groups'
journal_id
Many2one → account.journal
check_company=True
comodel_name='account.journal'
domain="[('type', '=', 'general'), ('company_id', '=', company_id)]"
required=True
string='Journal'
method
Selection
default='linear'
help='Choose the method to use to compute the depreciation lines.\n * Linear: Calculated on basis of: Depreciation Base / Number of Depreciations. Depreciation Base = Purchase Value - Salvage Value.\n * Linear-Limit: Linear up to Salvage Value. Depreciation Base = Purchase Value.\n * Degressive: Calculated on basis of: Residual Value * Degressive Factor.\n * Degressive-Linear (only for Time Method = Year): Degressive becomes linear when the annual linear depreciation exceeds the annual degressive depreciation.\n * Degressive-Limit: Degressive up to Salvage Value. The Depreciation Base is equal to the asset value.'
required=True
selection=<expr>
string='Computation Method'
method_number
Integer
default=5
help='The number of years needed to depreciate your asset'
string='Number of Years'
method_period
Selection
default='year'
help='Period length for the depreciation accounting entries'
required=True
selection=<expr>
string='Period Length'
method_progress_factor
Float
default=0.3
string='Degressive Factor'
method_time
Selection
default='year'
help='Choose the method to use to compute the dates and number of depreciation lines.\n * Number of Years: Specify the number of years for the depreciation.\n * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n'
required=True
selection=<expr>
string='Time Method'
name
Char
index=True
required=True
size=64
string='Name'
note
Text
open_asset
Boolean
help='Check this if you want to automatically confirm the assets of this profile when created by invoices.'
string='Skip Draft State'
prorata
Boolean
compute='_compute_prorrata'
help='Indicates that the first depreciation entry for this asset has to be done from the depreciation start date instead of the first day of the fiscal year.'
readonly=False
store=True
string='Prorata Temporis'
use_leap_years
Boolean
default=False
help='If not set, the system will distribute evenly the amount to amortize across the years, based on the number of years. So the amount per year will be the depreciation base / number of years.\n If set, the system will consider if the current year is a leap year. The amount to depreciate per year will be calculated as depreciation base / (depreciation end date - start date + 1) * days in the current year.'
string='Use leap years'
create(self, vals)
write(self, vals)
company_id
Many2one → res.company
required=True
string='Company'
args: 'res.company'
date_completed
Datetime
readonly=True
args: 'Completion Date'
date_trigger
Datetime
help='Date of the event triggering the need to recompute the Asset Tables.'
readonly=True
args: 'Trigger Date'
reason
Char
required=True
string='Reason'
state
Selection
default='open'
readonly=True
selection=[('open', 'Open'), ('done', 'Done')]
string='State'
No public methods.
account_min_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Min-Value Account'
account_plus_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Plus-Value Account'
account_residual_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Residual Value Account'
account_sale_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain="[('deprecated', '=', False), ('company_id', '=', company_id)]"
string='Asset Sale Account'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
string='Company'
date_remove
Date
default=fields.Date.today
help='Removal date must be after the last posted entry in case of early removal'
required=True
string='Asset Removal Date'
force_date
Date
string='Force accounting date'
note
Text
posting_regime
Selection
default=<expr>
help="Removal Entry Policy \n * Residual Value: The non-depreciated value will be posted on the 'Residual Value Account' \n * Gain/Loss on Sale: The Gain or Loss will be posted on the 'Plus-Value Account' or 'Min-Value Account' "
required=True
selection=<expr>
string='Removal Entry Policy'
sale_value
Float
default=<expr>
string='Sale Value'
remove(self)
No new fields.
Public methods (2)create(self, vals)
write(self, vals)
asset_count
Integer
compute='_compute_asset_count'
action_view_assets(self)
button_draft(self)
post(self)
unlink(self)
write(self, vals)
asset_id
Many2one → account.asset
comodel_name='account.asset'
ondelete='restrict'
string='Asset'
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
compute='_compute_asset_profile'
copy=True
readonly=False
store=True
string='Asset Profile'
create(self, vals_list)
write(self, vals)
No new fields.
Public methods (3)acquisition_filter(wiz, asset)
active_filter(wiz, asset)
removal_filter(wiz, asset)
asset_group_id
Many2one → account.asset.group
comodel_name='account.asset.group'
default=<expr>
string='Asset Group'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
date_from
Date
required=True
string='Start Date'
date_to
Date
required=True
string='End Date'
draft
Boolean
string='Include draft assets'
xls_export(self)
date_reversal
Date
default=fields.Date.context_today
required=True
string='Reversal date'
journal_id
Many2one → account.journal
help='If empty, uses the journal of the journal entry to be reversed.'
string='Use Specific Journal'
args: 'account.journal'
line_id
Many2one → account.asset.line
comodel_name='account.asset.line'
readonly=True
required=True
string='Asset Line'
reason
Char
string='Reason'
default_get(self, fields)
reverse_move(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/account-financial-tools |
| GIT | |
| GIT | https://github.com/OCA/account-financial-tools.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/account-financial-tools/tree/12.0/account_asset_management |
| VERSION | |
| VERSION | 3.3.0 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Noviat |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Noviat |
| COMMITTERS | |
| COMMITTERS | Stefan Rijnhart, Holger Brunn, Pedro M. Baeza, GitHub, mreficent, Luc De Meyer, sbejaoui, OCA Transbot, Miquel Raïch, Víctor Martínez, Ernesto Tejeda, João Marques, oca-travis, Weblate, OCA-git-bot, Maxence Groine, Quentin Groulard, hveficent, Saran, Saran440, Roberto Lizana Ramírez, César López Ramírez, Joan Sisquella, Stéphane Valaeys |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/account-financial-tools |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:18 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/reporting-engine: - report_xlsx_helper - report_xlsx odoo/odoo: - account - base_setup - base - web - product - decimal_precision - bus - web_tour - uom - analytic - portal - http_routing - digest |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
xlrd xlsxwriter |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_asset_compute_view_form |
account.asset.compute | account.asset.compute | form | New |
account_asset_compute_view_form_result |
account.asset.compute.result | account.asset.compute | form | New |
account_asset_group_view_form |
account.asset.group.form | account.asset.group | form | New |
account_asset_group_view_search |
account.asset.group.search | account.asset.group | search | New |
account_asset_group_view_tree |
account.asset.group.tree | account.asset.group | tree | New |
account_asset_profile_view_form |
account.asset.profile.form | account.asset.profile | form | New |
account_asset_profile_view_search |
account.asset.profile.search | account.asset.profile | search | New |
account_asset_profile_view_tree |
account.asset.profile.tree | account.asset.profile | tree | New |
account_asset_remove_view_form |
account.asset.remove.form | account.asset.remove | form | New |
account_asset_view_form |
account.asset.form | account.asset | form | New |
account_asset_view_search |
account.asset.search | account.asset | search | New |
account_asset_view_tree |
account.asset.tree | account.asset | tree | New |
action_account_asset_report_graph |
account.asset.report | graph | New | |
action_account_asset_report_pivot |
account.asset.report | pivot | New | |
invoice_form |
account.invoice.customer.form | account.invoice | xpath | Inherits account.invoice_form |
invoice_supplier_form |
account.invoice.supplier.form | account.invoice | xpath | Inherits account.invoice_supplier_form |
res_config_settings_view_form |
res.config.settings.view.form.inherit.account | res.config.settings | field | Inherits account.res_config_settings_view_form |
view_account_asset_report_search |
account.asset.report | search | New | |
view_account_form |
account.account.form | account.account | field | Inherits account.view_account_form |
view_account_move_line_filter |
Journal Items (Search) | account.move.line | field | Inherits account.view_account_move_line_filter |
view_invoice_line_form |
account.invoice.form.add.asset_profile | account.invoice.line | field | Inherits account.view_invoice_line_form |
view_move_form |
account.move.form | account.move | xpath | Inherits account.view_move_form |
view_move_line_form |
Journal Items (form) | account.move.line | field | Inherits account.view_move_line_form |
wiz_account_asset_report_view_form |
Financial Assets report | wiz.account.asset.report | form | New |
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
help='Default Asset Profile when creating invoice lines with this account.'
string='Asset Profile'
No public methods.
account_analytic_id
Many2one → account.analytic.account
comodel_name='account.analytic.account'
string='Analytic account'
account_move_line_ids
One2many → account.move.line
comodel_name='account.move.line'
copy=False
inverse_name='asset_id'
readonly=True
string='Entries'
active
Boolean
default=True
analytic_tag_ids
Many2many → account.analytic.tag
comodel_name='account.analytic.tag'
string='Analytic tags'
code
Char
readonly=True
size=32
states={'draft': [('readonly', False)]}
string='Reference'
company_currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='company_id.currency_id'
store=True
string='Company Currency'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
string='Company'
date_remove
Date
readonly=True
string='Asset Removal Date'
date_start
Date
help='You should manually add depreciation lines with the depreciations of previous fiscal years if the Depreciation Start Date is different from the date for which accounting entries need to be generated.'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Asset Start Date'
days_calc
Boolean
default=False
help='Use number of days to calculate depreciation amount'
string='Calculate by days'
depreciation_base
Float
compute='_compute_depreciation_base'
digits=dp.get_precision('Account')
help='This amount represent the depreciation base of the asset (Purchase Value - Salvage Value.'
store=True
string='Depreciation Base'
depreciation_line_ids
One2many → account.asset.line
comodel_name='account.asset.line'
copy=False
inverse_name='asset_id'
readonly=True
states={'draft': [('readonly', False)]}
string='Depreciation Lines'
group_ids
Many2many → account.asset.group
column1='asset_id'
column2='group_id'
comodel_name='account.asset.group'
relation='account_asset_group_rel'
string='Asset Groups'
method
Selection
default='linear'
help='Choose the method to use to compute the amount of depreciation lines.\n * Linear: Calculated on basis of: Gross Value / Number of Depreciations\n * Degressive: Calculated on basis of: Residual Value * Degressive Factor * Degressive-Linear (only for Time Method = Year): Degressive becomes linear when the annual linear depreciation exceeds the annual degressive depreciation'
readonly=True
required=True
selection=<expr>
states={'draft': [('readonly', False)]}
string='Computation Method'
method_end
Date
readonly=True
states={'draft': [('readonly', False)]}
string='Ending Date'
method_number
Integer
default=5
help='The number of years needed to depreciate your asset'
readonly=True
states={'draft': [('readonly', False)]}
string='Number of Years'
method_period
Selection
default='year'
help='Period length for the depreciation accounting entries'
readonly=True
required=True
selection=<expr>
states={'draft': [('readonly', False)]}
string='Period Length'
method_progress_factor
Float
default=0.3
digits=(16, 4)
readonly=True
states={'draft': [('readonly', False)]}
string='Degressive Factor'
method_time
Selection
default='year'
help='Choose the method to use to compute the dates and number of depreciation lines.\n * Number of Years: Specify the number of years for the depreciation.\n * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n'
readonly=True
required=True
selection=<expr>
states={'draft': [('readonly', False)]}
string='Time Method'
move_line_check
Boolean
compute='_compute_move_line_check'
string='Has accounting entries'
name
Char
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Asset Name'
note
Text
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
states={'draft': [('readonly', False)]}
string='Partner'
profile_id
Many2one → account.asset.profile
change_default=True
comodel_name='account.asset.profile'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Asset Profile'
prorata
Boolean
help='Indicates that the first depreciation entry for this asset have to be done from the depreciation start date instead of the first day of the fiscal year.'
readonly=True
states={'draft': [('readonly', False)]}
string='Prorata Temporis'
purchase_value
Float
help='This amount represent the initial value of the asset.\nThe Depreciation Base is calculated as follows:\nPurchase Value - Salvage Value.'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Purchase Value'
salvage_value
Float
digits=dp.get_precision('Account')
help='The estimated value that an asset will realize upon its sale at the end of its useful life.\nThis value is used to determine the depreciation amounts.'
readonly=True
states={'draft': [('readonly', False)]}
string='Salvage Value'
state
Selection
copy=False
default='draft'
help="When an asset is created, the status is 'Draft'.\nIf the asset is confirmed, the status goes in 'Running' and the depreciation lines can be posted to the accounting.\nIf the last depreciation line is posted, the asset goes into the 'Close' status.\nWhen the removal entries are generated, the asset goes into the 'Removed' status."
required=True
selection=[('draft', 'Draft'), ('open', 'Running'), ('close', 'Close'), ('removed', 'Removed')]
string='Status'
use_leap_years
Boolean
default=False
help='If not set, the system will distribute evenly the amount to amortize across the years, based on the number of years. So the amount per year will be the depreciation base / number of years.\n If set, the system will consider if the current year is a leap year. The amount to depreciate per year will be calculated as depreciation base / (depreciation end date - start date + 1) * days in the current year.'
string='Use leap years'
value_depreciated
Float
compute='_compute_depreciation'
digits=dp.get_precision('Account')
store=True
string='Depreciated Value'
value_residual
Float
compute='_compute_depreciation'
digits=dp.get_precision('Account')
store=True
string='Residual Value'
compute_depreciation_board(self)
create(self, vals)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
open_entries(self)
remove(self)
set_to_draft(self)
unlink(self)
validate(self)
write(self, vals)
date_end
Date
default=fields.Date.today
help='All depreciation lines prior to this date will be automatically posted'
required=True
string='Date'
note
Text
asset_compute(self)
view_asset_moves(self)
child_ids
One2many → account.asset.group
comodel_name='account.asset.group'
inverse_name='parent_id'
string='Child Asset Groups'
code
Char
index=True
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
name
Char
index=True
required=True
size=64
string='Name'
parent_id
Many2one → account.asset.group
comodel_name='account.asset.group'
ondelete='restrict'
string='Parent Asset Group'
parent_path
Char
index=True
name_get(self)
amount
Float
digits=dp.get_precision('Account')
required=True
string='Amount'
asset_id
Many2one → account.asset
comodel_name='account.asset'
ondelete='cascade'
required=True
string='Asset'
depreciated_value
Float
compute='_compute_values'
digits=dp.get_precision('Account')
store=True
string='Amount Already Depreciated'
depreciation_base
Float
readonly=True
related='asset_id.depreciation_base'
string='Depreciation Base'
init_entry
Boolean
help='Set this flag for entries of previous fiscal years for which Odoo has not generated accounting entries.'
string='Initial Balance Entry'
line_date
Date
required=True
string='Date'
line_days
Integer
readonly=True
string='Days'
move_check
Boolean
compute='_compute_move_check'
store=True
string='Posted'
move_id
Many2one → account.move
comodel_name='account.move'
readonly=True
string='Depreciation Entry'
name
Char
readonly=True
size=64
string='Depreciation Name'
parent_state
Selection
readonly=True
related='asset_id.state'
string='State of Asset'
previous_id
Many2one → account.asset.line
comodel_name='account.asset.line'
readonly=True
string='Previous Depreciation Line'
remaining_value
Float
compute='_compute_values'
digits=dp.get_precision('Account')
store=True
string='Next Period Depreciation'
type
Selection
default='depreciate'
readonly=True
selection=[('create', 'Depreciation Base'), ('depreciate', 'Depreciation'), ('remove', 'Asset Removal')]
create_move(self)
open_move(self)
unlink(self)
unlink_move(self)
write(self, vals)
account_analytic_id
Many2one → account.analytic.account
comodel_name='account.analytic.account'
string='Analytic account'
account_asset_id
Many2one → account.account
comodel_name='account.account'
domain="[('company_id', '=', company_id), ('deprecated', '=', False)]"
required=True
string='Asset Account'
account_depreciation_id
Many2one → account.account
comodel_name='account.account'
domain="[('company_id', '=', company_id), ('deprecated', '=', False)]"
required=True
string='Depreciation Account'
account_expense_depreciation_id
Many2one → account.account
comodel_name='account.account'
domain="[('company_id', '=', company_id), ('deprecated', '=', False)]"
required=True
string='Depr. Expense Account'
account_min_value_id
Many2one → account.account
comodel_name='account.account'
domain="[('company_id', '=', company_id), ('deprecated', '=', False)]"
string='Min-Value Account'
account_plus_value_id
Many2one → account.account
comodel_name='account.account'
domain="[('company_id', '=', company_id), ('deprecated', '=', False)]"
string='Plus-Value Account'
account_residual_value_id
Many2one → account.account
comodel_name='account.account'
domain="[('company_id', '=', company_id), ('deprecated', '=', False)]"
string='Residual Value Account'
active
Boolean
default=True
analytic_tag_ids
Many2many → account.analytic.tag
comodel_name='account.analytic.tag'
string='Analytic tags'
asset_product_item
Boolean
help='By default during the validation of an invoice, an asset is created by invoice line as long as an accounting entry is created by invoice line. With this setting, an accounting entry will be created by product item. So, there will be an asset by product item.'
string='Create an asset by product item'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
days_calc
Boolean
default=False
help='Use number of days to calculate depreciation amount'
string='Calculate by days'
group_ids
Many2many → account.asset.group
column1='profile_id'
column2='group_id'
comodel_name='account.asset.group'
relation='account_asset_profile_group_rel'
string='Asset Groups'
journal_id
Many2one → account.journal
comodel_name='account.journal'
domain="[('company_id', '=', company_id), ('type', '=', 'general')]"
required=True
string='Journal'
method
Selection
default='linear'
help='Choose the method to use to compute the depreciation lines.\n * Linear: Calculated on basis of: Depreciation Base / Number of Depreciations. Depreciation Base = Purchase Value - Salvage Value.\n * Linear-Limit: Linear up to Salvage Value. Depreciation Base = Purchase Value.\n * Degressive: Calculated on basis of: Residual Value * Degressive Factor.\n * Degressive-Linear (only for Time Method = Year): Degressive becomes linear when the annual linear depreciation exceeds the annual degressive depreciation.\n * Degressive-Limit: Degressive up to Salvage Value. The Depreciation Base is equal to the asset value.'
required=True
selection=<expr>
string='Computation Method'
method_number
Integer
default=5
help='The number of years needed to depreciate your asset'
string='Number of Years'
method_period
Selection
default='year'
help='Period length for the depreciation accounting entries'
required=True
selection=<expr>
string='Period Length'
method_progress_factor
Float
default=0.3
digits=(16, 4)
string='Degressive Factor'
method_time
Selection
default='year'
help='Choose the method to use to compute the dates and number of depreciation lines.\n * Number of Years: Specify the number of years for the depreciation.\n * Number of Depreciations: Fix the number of depreciation lines and the time between 2 depreciations.\n'
required=True
selection=<expr>
string='Time Method'
name
Char
index=True
required=True
size=64
string='Name'
note
Text
open_asset
Boolean
help='Check this if you want to automatically confirm the assets of this profile when created by invoices.'
string='Skip Draft State'
prorata
Boolean
help='Indicates that the first depreciation entry for this asset has to be done from the depreciation start date instead of the first day of the fiscal year.'
string='Prorata Temporis'
use_leap_years
Boolean
default=False
help='If not set, the system will distribute evenly the amount to amortize across the years, based on the number of years. So the amount per year will be the depreciation base / number of years.\n If set, the system will consider if the current year is a leap year. The amount to depreciate per year will be calculated as depreciation base / (depreciation end date - start date + 1) * days in the current year.'
string='Use leap years'
create(self, vals)
write(self, vals)
company_id
Many2one → res.company
required=True
string='Company'
args: 'res.company'
date_completed
Datetime
readonly=True
args: 'Completion Date'
date_trigger
Datetime
help='Date of the event triggering the need to recompute the Asset Tables.'
readonly=True
args: 'Trigger Date'
reason
Char
required=True
string='Reason'
state
Selection
default='open'
readonly=True
selection=[('open', 'Open'), ('done', 'Done')]
string='State'
No public methods.
account_min_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain=[('deprecated', '=', False)]
string='Min-Value Account'
account_plus_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain=[('deprecated', '=', False)]
string='Plus-Value Account'
account_residual_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain=[('deprecated', '=', False)]
string='Residual Value Account'
account_sale_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain=[('deprecated', '=', False)]
string='Asset Sale Account'
date_remove
Date
default=fields.Date.today
help='Removal date must be after the last posted entry in case of early removal'
required=True
string='Asset Removal Date'
force_date
Date
string='Force accounting date'
note
Text
posting_regime
Selection
default=<expr>
help="Removal Entry Policy \n * Residual Value: The non-depreciated value will be posted on the 'Residual Value Account' \n * Gain/Loss on Sale: The Gain or Loss will be posted on the 'Plus-Value Account' or 'Min-Value Account' "
required=True
selection=<expr>
string='Removal Entry Policy'
sale_value
Float
default=<expr>
string='Sale Value'
remove(self)
asset_id
Many2one → account.asset
comodel_name='account.asset'
readonly=True
string='Asset'
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
readonly=True
string='Asset profile'
company_id
Many2one → res.company
comodel_name='res.company'
readonly=True
string='Company'
date
Date
readonly=True
depreciation_count
Integer
readonly=True
string='# of Depreciation Lines'
depreciation_date
Date
readonly=True
string='Depreciation Date'
depreciation_value
Float
readonly=True
string='Amount of Depreciation Lines'
gross_value
Float
readonly=True
string='Gross Amount'
move_check
Boolean
readonly=True
string='Posted'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
string='Partner'
posted_value
Float
readonly=True
string='Posted Amount'
state
Selection
readonly=True
selection=<expr>
string='Status'
unposted_value
Float
readonly=True
string='Unposted Amount'
init(self)
No new fields.
Public methods (2)create(self, vals)
write(self, vals)
No new fields.
Public methods (6)action_cancel(self)
action_move_create(self)
finalize_invoice_move_lines(self, move_lines)
inv_line_characteristic_hashcode(self, invoice_line)
invoice_line_move_line_get(self)
line_get_convert(self, line, part)
asset_id
Many2one → account.asset
comodel_name='account.asset'
domain=[('state', 'in', ['open', 'close'])]
help="Complete this field when selling an asset in order to facilitate the creation of the asset removal accounting entries via the asset 'Removal' button"
string='Asset'
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
string='Asset Profile'
No public methods.
No new fields.
Public methods (2)unlink(self)
write(self, vals)
asset_id
Many2one → account.asset
comodel_name='account.asset'
ondelete='restrict'
string='Asset'
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
string='Asset Profile'
create(self, vals_list)
write(self, vals)
No new fields.
Public methods (3)acquisition_filter(wiz, asset)
active_filter(wiz, asset)
removal_filter(wiz, asset)
module_account_asset_management
Boolean
help='This allows you to manage the assets owned by a company\n or a person. It keeps track of the depreciation occurred\n on those assets, and creates account move for those\n depreciation lines.\n This installs the module account_asset_management.'
string='Assets management (OCA)'
No public methods.
asset_group_id
Many2one → account.asset.group
comodel_name='account.asset.group'
default=<expr>
string='Asset Group'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
date_from
Date
required=True
string='Start Date'
date_to
Date
required=True
string='End Date'
draft
Boolean
string='Include draft assets'
xls_export(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/account-financial-tools |
| GIT | |
| GIT | https://github.com/OCA/account-financial-tools.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/account-financial-tools/tree/11.0/account_asset_management |
| VERSION | |
| VERSION | 1.0.3 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Noviat |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Noviat |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, GitHub, Andrea, Akim Juillerat, Stéphane Bidoul (ACSONE), Luc De Meyer, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Rodrigo, Maxence Groine |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/account-financial-tools |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:23:57 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/account-financial-tools: - account_fiscal_year OCA/server-ux: - date_range odoo/odoo: - account - base_setup - base - web - product - decimal_precision - bus - web_tour - analytic - web_planner - portal - http_routing |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_asset_compute_view_form |
account.asset.compute | account.asset.compute | form | New |
account_asset_compute_view_form_result |
account.asset.compute.result | account.asset.compute | form | New |
account_asset_profile_view_form |
account.asset.profile.form | account.asset.profile | form | New |
account_asset_profile_view_search |
account.asset.profile.search | account.asset.profile | search | New |
account_asset_profile_view_tree |
account.asset.profile.tree | account.asset.profile | tree | New |
account_asset_remove_view_form |
account.asset.remove.form | account.asset.remove | form | New |
account_asset_view_form |
account.asset.form | account.asset | form | New |
account_asset_view_search |
account.asset.search | account.asset | search | New |
account_asset_view_tree |
account.asset.tree | account.asset | tree | New |
invoice_form |
account.invoice.customer.form | account.invoice | xpath | Inherits account.invoice_form |
invoice_supplier_form |
account.invoice.supplier.form | account.invoice | xpath | Inherits account.invoice_supplier_form |
res_config_settings_view_form |
res.config.settings.view.form.inherit.account | res.config.settings | field | Inherits account.res_config_settings_view_form |
view_account_form |
account.account.form | account.account | field | Inherits account.view_account_form |
view_account_move_line_filter |
Journal Items (Search) | account.move.line | field | Inherits account.view_account_move_line_filter |
view_invoice_line_form |
account.invoice.form.add.asset_profile | account.invoice.line | field | Inherits account.view_invoice_line_form |
view_move_form |
account.move.form | account.move | xpath | Inherits account.view_move_form |
view_move_line_form |
Journal Items (form) | account.move.line | field | Inherits account.view_move_line_form |
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
help='Default Asset Profile when creating invoice lines with this account.'
string='Asset Profile'
No public methods.
account_analytic_id
Many2one → account.analytic.account
comodel_name='account.analytic.account'
string='Analytic account'
account_move_line_ids
One2many → account.move.line
comodel_name='account.move.line'
copy=False
inverse_name='asset_id'
readonly=True
string='Entries'
active
Boolean
default=True
child_ids
One2many → account.asset
comodel_name='account.asset'
inverse_name='parent_id'
string='Child Assets'
code
Char
readonly=True
size=32
states={'draft': [('readonly', False)]}
string='Reference'
company_currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='company_id.currency_id'
store=True
string='Company Currency'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
string='Company'
date_remove
Date
readonly=True
string='Asset Removal Date'
date_start
Date
help='You should manually add depreciation lines with the depreciations of previous fiscal years if the Depreciation Start Date is different from the date for which accounting entries need to be generated.'
readonly=True
states={'draft': [('readonly', False)]}
string='Asset Start Date'
depreciation_base
Float
compute='_compute_depreciation_base'
digits=dp.get_precision('Account')
help='This amount represent the depreciation base of the asset (Purchase Value - Salvage Value.'
store=True
string='Depreciation Base'
depreciation_line_ids
One2many → account.asset.line
comodel_name='account.asset.line'
copy=False
inverse_name='asset_id'
readonly=True
states={'draft': [('readonly', False)]}
string='Depreciation Lines'
method
Selection
default='linear'
help='Choose the method to use to compute the amount of depreciation lines.\n * Linear: Calculated on basis of: Gross Value / Number of Depreciations\n * Degressive: Calculated on basis of: Residual Value * Degressive Factor * Degressive-Linear (only for Time Method = Year): Degressive becomes linear when the annual linear depreciation exceeds the annual degressive depreciation'
readonly=True
required=True
selection=<expr>
states={'draft': [('readonly', False)]}
string='Computation Method'
method_end
Date
readonly=True
states={'draft': [('readonly', False)]}
string='Ending Date'
method_number
Integer
default=5
help='The number of years needed to depreciate your asset'
readonly=True
states={'draft': [('readonly', False)]}
string='Number of Years'
method_period
Selection
default='year'
help='Period length for the depreciation accounting entries'
readonly=True
required=True
selection=<expr>
states={'draft': [('readonly', False)]}
string='Period Length'
method_progress_factor
Float
default=0.3
readonly=True
states={'draft': [('readonly', False)]}
string='Degressive Factor'
method_time
Selection
default='year'
help='Choose the method to use to compute the dates and number of depreciation lines.\n * Number of Years: Specify the number of years for the depreciation.\n'
readonly=True
required=True
selection=<expr>
states={'draft': [('readonly', False)]}
string='Time Method'
move_line_check
Boolean
compute='_compute_move_line_check'
string='Has accounting entries'
name
Char
readonly=True
required=True
size=64
states={'draft': [('readonly', False)]}
string='Asset Name'
note
Text
parent_id
Many2one → account.asset
comodel_name='account.asset'
domain=[('type', '=', 'view')]
index=True
ondelete='restrict'
readonly=True
states={'draft': [('readonly', False)]}
string='Parent Asset'
parent_left
Integer
index=True
parent_right
Integer
index=True
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
states={'draft': [('readonly', False)]}
string='Partner'
profile_id
Many2one → account.asset.profile
change_default=True
comodel_name='account.asset.profile'
readonly=True
states={'draft': [('readonly', False)]}
string='Asset Profile'
prorata
Boolean
help='Indicates that the first depreciation entry for this asset have to be done from the depreciation start date instead of the first day of the fiscal year.'
readonly=True
states={'draft': [('readonly', False)]}
string='Prorata Temporis'
purchase_value
Float
help='This amount represent the initial value of the asset.\nThe Depreciation Base is calculated as follows:\nPurchase Value - Salvage Value.'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Purchase Value'
salvage_value
Float
digits=dp.get_precision('Account')
help='The estimated value that an asset will realize upon its sale at the end of its useful life.\nThis value is used to determine the depreciation amounts.'
readonly=True
states={'draft': [('readonly', False)]}
string='Salvage Value'
state
Selection
copy=False
default='draft'
help="When an asset is created, the status is 'Draft'.\nIf the asset is confirmed, the status goes in 'Running' and the depreciation lines can be posted to the accounting.\nIf the last depreciation line is posted, the asset goes into the 'Close' status.\nWhen the removal entries are generated, the asset goes into the 'Removed' status."
required=True
selection=[('draft', 'Draft'), ('open', 'Running'), ('close', 'Close'), ('removed', 'Removed')]
string='Status'
type
Selection
default='normal'
readonly=True
required=True
selection=[('view', 'View'), ('normal', 'Normal')]
states={'draft': [('readonly', False)]}
string='Type'
value_depreciated
Float
compute='_compute_depreciation'
digits=dp.get_precision('Account')
store=True
string='Depreciated Value'
value_residual
Float
compute='_compute_depreciation'
digits=dp.get_precision('Account')
store=True
string='Residual Value'
compute_depreciation_board(self)
create(self, vals)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
open_entries(self)
remove(self)
set_to_draft(self)
unlink(self)
validate(self)
write(self, vals)
date_end
Date
default=fields.Date.today
help='All depreciation lines prior to this date will be automatically posted'
required=True
string='Date'
note
Text
asset_compute(self)
view_asset_moves(self)
amount
Float
digits=dp.get_precision('Account')
required=True
string='Amount'
asset_id
Many2one → account.asset
comodel_name='account.asset'
ondelete='cascade'
required=True
string='Asset'
depreciated_value
Float
compute='_compute_values'
digits=dp.get_precision('Account')
store=True
string='Amount Already Depreciated'
depreciation_base
Float
readonly=True
related='asset_id.depreciation_base'
string='Depreciation Base'
init_entry
Boolean
help='Set this flag for entries of previous fiscal years for which Odoo has not generated accounting entries.'
string='Initial Balance Entry'
line_date
Date
required=True
string='Date'
move_check
Boolean
compute='_compute_move_check'
store=True
string='Posted'
move_id
Many2one → account.move
comodel_name='account.move'
readonly=True
string='Depreciation Entry'
name
Char
readonly=True
size=64
string='Depreciation Name'
parent_state
Selection
readonly=True
related='asset_id.state'
string='State of Asset'
previous_id
Many2one → account.asset.line
comodel_name='account.asset.line'
readonly=True
string='Previous Depreciation Line'
remaining_value
Float
compute='_compute_values'
digits=dp.get_precision('Account')
store=True
string='Next Period Depreciation'
type
Selection
default='depreciate'
readonly=True
selection=[('create', 'Depreciation Base'), ('depreciate', 'Depreciation'), ('remove', 'Asset Removal')]
create_move(self)
open_move(self)
unlink(self)
unlink_move(self)
write(self, vals)
account_analytic_id
Many2one → account.analytic.account
comodel_name='account.analytic.account'
string='Analytic account'
account_asset_id
Many2one → account.account
comodel_name='account.account'
domain=[('deprecated', '=', False)]
required=True
string='Asset Account'
account_depreciation_id
Many2one → account.account
comodel_name='account.account'
domain=[('deprecated', '=', False)]
required=True
string='Depreciation Account'
account_expense_depreciation_id
Many2one → account.account
comodel_name='account.account'
domain=[('deprecated', '=', False)]
required=True
string='Depr. Expense Account'
account_min_value_id
Many2one → account.account
comodel_name='account.account'
domain=[('deprecated', '=', False)]
string='Min-Value Account'
account_plus_value_id
Many2one → account.account
comodel_name='account.account'
domain=[('deprecated', '=', False)]
string='Plus-Value Account'
account_residual_value_id
Many2one → account.account
comodel_name='account.account'
domain=[('deprecated', '=', False)]
string='Residual Value Account'
active
Boolean
default=True
asset_product_item
Boolean
help='By default during the validation of an invoice, an asset is created by invoice line as long as an accounting entry is created by invoice line. With this setting, an accounting entry will be created by product item. So, there will be an asset by product item.'
string='Create an asset by product item'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
journal_id
Many2one → account.journal
comodel_name='account.journal'
domain=[('type', '=', 'general')]
required=True
string='Journal'
method
Selection
default='linear'
help='Choose the method to use to compute the depreciation lines.\n * Linear: Calculated on basis of: Depreciation Base / Number of Depreciations. Depreciation Base = Purchase Value - Salvage Value.\n * Linear-Limit: Linear up to Salvage Value. Depreciation Base = Purchase Value.\n * Degressive: Calculated on basis of: Residual Value * Degressive Factor.\n * Degressive-Linear (only for Time Method = Year): Degressive becomes linear when the annual linear depreciation exceeds the annual degressive depreciation.\n * Degressive-Limit: Degressive up to Salvage Value. The Depreciation Base is equal to the asset value.'
required=True
selection=<expr>
string='Computation Method'
method_number
Integer
default=5
help='The number of years needed to depreciate your asset'
string='Number of Years'
method_period
Selection
default='year'
help='Period length for the depreciation accounting entries'
required=True
selection=<expr>
string='Period Length'
method_progress_factor
Float
default=0.3
string='Degressive Factor'
method_time
Selection
default='year'
help='Choose the method to use to compute the dates and number of depreciation lines.\n * Number of Years: Specify the number of years for the depreciation.\n'
required=True
selection=<expr>
string='Time Method'
name
Char
index=True
required=True
size=64
string='Name'
note
Text
open_asset
Boolean
help='Check this if you want to automatically confirm the assets of this profile when created by invoices.'
string='Skip Draft State'
parent_id
Many2one → account.asset
comodel_name='account.asset'
domain=[('type', '=', 'view')]
string='Parent Asset'
prorata
Boolean
help='Indicates that the first depreciation entry for this asset has to be done from the depreciation start date instead of the first day of the fiscal year.'
string='Prorata Temporis'
create(self, vals)
write(self, vals)
company_id
Many2one → res.company
required=True
string='Company'
args: 'res.company'
date_completed
Datetime
readonly=True
args: 'Completion Date'
date_trigger
Datetime
help='Date of the event triggering the need to recompute the Asset Tables.'
readonly=True
args: 'Trigger Date'
reason
Char
required=True
string='Reason'
state
Selection
default='open'
readonly=True
selection=[('open', 'Open'), ('done', 'Done')]
string='State'
No public methods.
account_min_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain=[('deprecated', '=', False)]
string='Min-Value Account'
account_plus_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain=[('deprecated', '=', False)]
string='Plus-Value Account'
account_residual_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain=[('deprecated', '=', False)]
string='Residual Value Account'
account_sale_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain=[('deprecated', '=', False)]
string='Asset Sale Account'
date_remove
Date
default=fields.Date.today
help='Removal date must be after the last posted entry in case of early removal'
required=True
string='Asset Removal Date'
force_date
Date
string='Force accounting date'
note
Text
posting_regime
Selection
default=<expr>
help="Removal Entry Policy \n * Residual Value: The non-depreciated value will be posted on the 'Residual Value Account' \n * Gain/Loss on Sale: The Gain or Loss will be posted on the 'Plus-Value Account' or 'Min-Value Account' "
required=True
selection=<expr>
string='Removal Entry Policy'
sale_value
Float
default=<expr>
string='Sale Value'
remove(self)
No new fields.
Public methods (6)action_cancel(self)
action_move_create(self)
finalize_invoice_move_lines(self, move_lines)
inv_line_characteristic_hashcode(self, invoice_line)
invoice_line_move_line_get(self)
line_get_convert(self, line, part)
asset_id
Many2one → account.asset
comodel_name='account.asset'
domain=[('type', '=', 'normal'), ('state', 'in', ['open', 'close'])]
help="Complete this field when selling an asset in order to facilitate the creation of the asset removal accounting entries via the asset 'Removal' button"
string='Asset'
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
string='Asset Profile'
No public methods.
No new fields.
Public methods (2)unlink(self)
write(self, vals)
asset_id
Many2one → account.asset
comodel_name='account.asset'
ondelete='restrict'
string='Asset'
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
string='Asset Profile'
create(self, vals)
write(self, vals)
No new fields.
Public methods (2)create(self, vals)
write(self, vals)
module_account_asset_management
Boolean
help='This allows you to manage the assets owned by a company\n or a person. It keeps track of the depreciation occurred\n on those assets, and creates account move for those\n depreciation lines.\n This installs the module account_asset_management.'
string='Assets management (OCA)'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/account-financial-tools |
| GIT | |
| GIT | https://github.com/OCA/account-financial-tools.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/account-financial-tools/tree/10.0/account_asset_management |
| VERSION | |
| VERSION | 3.1.0 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Noviat |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Noviat |
| COMMITTERS | |
| COMMITTERS | Alexis de Lattre, Pedro M. Baeza, GitHub, Cédric Pigeon, Denis Roussel, Akim Juillerat, Stéphane Bidoul (ACSONE), Luc De Meyer, Tonow-c2c, OCA Transbot, oca-travis, Weblate, nbessi |
| WEBSITE | |
| WEBSITE | http://www.noviat.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:19:57 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/account-financial-tools: - account_fiscal_year OCA/server-tools: - date_range odoo/odoo: - account - base_setup - base - web_kanban - web - product - decimal_precision - bus - web_tour - report - analytic - web_planner |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_asset_compute_view_form |
account.asset.compute | account.asset.compute | form | New |
account_asset_compute_view_form_result |
account.asset.compute.result | account.asset.compute | form | New |
account_asset_profile_view_form |
account.asset.profile.form | account.asset.profile | form | New |
account_asset_profile_view_search |
account.asset.profile.search | account.asset.profile | search | New |
account_asset_profile_view_tree |
account.asset.profile.tree | account.asset.profile | tree | New |
account_asset_remove_view_form |
account.asset.remove.form | account.asset.remove | form | New |
account_asset_view_form |
account.asset.form | account.asset | form | New |
account_asset_view_search |
account.asset.search | account.asset | search | New |
account_asset_view_tree |
account.asset.tree | account.asset | tree | New |
account_asset_view_tree_hierarchy |
account.asset.hierarchy | account.asset | tree | New |
invoice_form |
account.invoice.customer.form | account.invoice | xpath | Inherits account.invoice_form |
invoice_supplier_form |
account.invoice.supplier.form | account.invoice | xpath | Inherits account.invoice_supplier_form |
view_account_config_settings |
account.config.settings.inherit | account.config.settings | field | Inherits account.view_account_config_settings |
view_account_form |
account.account.form | account.account | field | Inherits account.view_account_form |
view_account_move_line_filter |
Journal Items (Search) | account.move.line | field | Inherits account.view_account_move_line_filter |
view_invoice_line_form |
account.invoice.form.add.asset_profile | account.invoice.line | field | Inherits account.view_invoice_line_form |
view_move_form |
account.move.form | account.move | xpath | Inherits account.view_move_form |
view_move_line_form |
Journal Items (form) | account.move.line | field | Inherits account.view_move_line_form |
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
help='Default Asset Profile when creating invoice lines with this account.'
string='Asset Profile'
No public methods.
account_analytic_id
Many2one → account.analytic.account
comodel_name='account.analytic.account'
string='Analytic account'
account_move_line_ids
One2many → account.move.line
comodel_name='account.move.line'
copy=False
inverse_name='asset_id'
readonly=True
string='Entries'
active
Boolean
default=True
child_ids
One2many → account.asset
comodel_name='account.asset'
inverse_name='parent_id'
string='Child Assets'
code
Char
readonly=True
size=32
states={'draft': [('readonly', False)]}
string='Reference'
company_currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='company_id.currency_id'
store=True
string='Company Currency'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
readonly=True
required=True
string='Company'
date_remove
Date
readonly=True
string='Asset Removal Date'
date_start
Date
help='You should manually add depreciation lines with the depreciations of previous fiscal years if the Depreciation Start Date is different from the date for which accounting entries need to be generated.'
readonly=True
states={'draft': [('readonly', False)]}
string='Asset Start Date'
depreciation_base
Float
compute='_compute_depreciation_base'
digits=dp.get_precision('Account')
help='This amount represent the depreciation base of the asset (Purchase Value - Salvage Value.'
store=True
string='Depreciation Base'
depreciation_line_ids
One2many → account.asset.line
comodel_name='account.asset.line'
copy=False
inverse_name='asset_id'
readonly=True
states={'draft': [('readonly', False)]}
string='Depreciation Lines'
method
Selection
default='linear'
help='Choose the method to use to compute the amount of depreciation lines.\n * Linear: Calculated on basis of: Gross Value / Number of Depreciations\n * Degressive: Calculated on basis of: Residual Value * Degressive Factor * Degressive-Linear (only for Time Method = Year): Degressive becomes linear when the annual linear depreciation exceeds the annual degressive depreciation'
readonly=True
required=True
selection=<expr>
states={'draft': [('readonly', False)]}
string='Computation Method'
method_end
Date
readonly=True
states={'draft': [('readonly', False)]}
string='Ending Date'
method_number
Integer
default=5
help='The number of years needed to depreciate your asset'
readonly=True
states={'draft': [('readonly', False)]}
string='Number of Years'
method_period
Selection
default='year'
help='Period length for the depreciation accounting entries'
readonly=True
required=True
selection=<expr>
states={'draft': [('readonly', False)]}
string='Period Length'
method_progress_factor
Float
default=0.3
readonly=True
states={'draft': [('readonly', False)]}
string='Degressive Factor'
method_time
Selection
default='year'
help='Choose the method to use to compute the dates and number of depreciation lines.\n * Number of Years: Specify the number of years for the depreciation.\n'
readonly=True
required=True
selection=<expr>
states={'draft': [('readonly', False)]}
string='Time Method'
move_line_check
Boolean
compute='_compute_move_line_check'
string='Has accounting entries'
name
Char
readonly=True
required=True
size=64
states={'draft': [('readonly', False)]}
string='Asset Name'
note
Text
parent_id
Many2one → account.asset
comodel_name='account.asset'
domain=[('type', '=', 'view')]
ondelete='restrict'
readonly=True
states={'draft': [('readonly', False)]}
string='Parent Asset'
parent_left
Integer
index=True
parent_right
Integer
index=True
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
states={'draft': [('readonly', False)]}
string='Partner'
profile_id
Many2one → account.asset.profile
change_default=True
comodel_name='account.asset.profile'
readonly=True
states={'draft': [('readonly', False)]}
string='Asset Profile'
prorata
Boolean
help='Indicates that the first depreciation entry for this asset have to be done from the depreciation start date instead of the first day of the fiscal year.'
readonly=True
states={'draft': [('readonly', False)]}
string='Prorata Temporis'
purchase_value
Float
help='This amount represent the initial value of the asset.\nThe Depreciation Base is calculated as follows:\nPurchase Value - Salvage Value.'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Purchase Value'
salvage_value
Float
digits=dp.get_precision('Account')
help='The estimated value that an asset will realize upon its sale at the end of its useful life.\nThis value is used to determine the depreciation amounts.'
readonly=True
states={'draft': [('readonly', False)]}
string='Salvage Value'
state
Selection
copy='draft'
default='draft'
help="When an asset is created, the status is 'Draft'.\nIf the asset is confirmed, the status goes in 'Running' and the depreciation lines can be posted to the accounting.\nIf the last depreciation line is posted, the asset goes into the 'Close' status.\nWhen the removal entries are generated, the asset goes into the 'Removed' status."
required=True
selection=[('draft', 'Draft'), ('open', 'Running'), ('close', 'Close'), ('removed', 'Removed')]
string='Status'
type
Selection
default='normal'
readonly=True
required=True
selection=[('view', 'View'), ('normal', 'Normal')]
states={'draft': [('readonly', False)]}
string='Type'
value_depreciated
Float
compute='_compute_depreciation'
digits=dp.get_precision('Account')
store=True
string='Depreciated Value'
value_residual
Float
compute='_compute_depreciation'
digits=dp.get_precision('Account')
store=True
string='Residual Value'
compute_depreciation_board(self)
create(self, vals)
name_get(self)
name_search(self, name, args=None, operator='ilike', limit=100)
open_entries(self)
remove(self)
set_to_draft(self)
unlink(self)
validate(self)
write(self, vals)
date_end
Date
default=fields.Date.today
help='All depreciation lines prior to this date will be automatically posted'
required=True
string='Date'
note
Text
asset_compute(self)
view_asset_moves(self)
amount
Float
digits=dp.get_precision('Account')
required=True
string='Amount'
asset_id
Many2one → account.asset
comodel_name='account.asset'
ondelete='cascade'
required=True
string='Asset'
depreciated_value
Float
compute='_compute_values'
digits=dp.get_precision('Account')
store=True
string='Amount Already Depreciated'
depreciation_base
Float
related='asset_id.depreciation_base'
string='Depreciation Base'
init_entry
Boolean
help='Set this flag for entries of previous fiscal years for which OpenERP has not generated accounting entries.'
string='Initial Balance Entry'
line_date
Date
required=True
string='Date'
move_check
Boolean
compute='_compute_move_check'
store=True
string='Posted'
move_id
Many2one → account.move
comodel_name='account.move'
readonly=True
string='Depreciation Entry'
name
Char
readonly=True
size=64
string='Depreciation Name'
parent_state
Selection
related='asset_id.state'
selection=[('draft', 'Draft'), ('open', 'Running'), ('close', 'Close'), ('removed', 'Removed')]
string='State of Asset'
previous_id
Many2one → account.asset.line
comodel_name='account.asset.line'
readonly=True
string='Previous Depreciation Line'
remaining_value
Float
compute='_compute_values'
digits=dp.get_precision('Account')
store=True
string='Next Period Depreciation'
type
Selection
default='depreciate'
readonly=True
selection=[('create', 'Depreciation Base'), ('depreciate', 'Depreciation'), ('remove', 'Asset Removal')]
create_move(self)
open_move(self)
unlink(self)
unlink_move(self)
write(self, vals)
account_analytic_id
Many2one → account.analytic.account
comodel_name='account.analytic.account'
string='Analytic account'
account_asset_id
Many2one → account.account
comodel_name='account.account'
domain=[('deprecated', '=', False)]
required=True
string='Asset Account'
account_depreciation_id
Many2one → account.account
comodel_name='account.account'
domain=[('deprecated', '=', False)]
required=True
string='Depreciation Account'
account_expense_depreciation_id
Many2one → account.account
comodel_name='account.account'
domain=[('deprecated', '=', False)]
required=True
string='Depr. Expense Account'
account_min_value_id
Many2one → account.account
comodel_name='account.account'
domain=[('deprecated', '=', False)]
string='Min-Value Account'
account_plus_value_id
Many2one → account.account
comodel_name='account.account'
domain=[('deprecated', '=', False)]
string='Plus-Value Account'
account_residual_value_id
Many2one → account.account
comodel_name='account.account'
domain=[('deprecated', '=', False)]
string='Residual Value Account'
active
Boolean
default=True
asset_product_item
Boolean
help='By default during the validation of an invoice, an asset is created by invoice line as long as an accounting entry is created by invoice line. With this setting, an accounting entry will be created by product item. So, there will be an asset by product item.'
string='Create an asset by product item'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
journal_id
Many2one → account.journal
comodel_name='account.journal'
domain=[('type', '=', 'general')]
required=True
string='Journal'
method
Selection
default='linear'
help='Choose the method to use to compute the depreciation lines.\n * Linear: Calculated on basis of: Depreciation Base / Number of Depreciations. Depreciation Base = Purchase Value - Salvage Value.\n * Linear-Limit: Linear up to Salvage Value. Depreciation Base = Purchase Value.\n * Degressive: Calculated on basis of: Residual Value * Degressive Factor.\n * Degressive-Linear (only for Time Method = Year): Degressive becomes linear when the annual linear depreciation exceeds the annual degressive depreciation.\n * Degressive-Limit: Degressive up to Salvage Value. The Depreciation Base is equal to the asset value.'
required=True
selection=<expr>
string='Computation Method'
method_number
Integer
default=5
help='The number of years needed to depreciate your asset'
string='Number of Years'
method_period
Selection
default='year'
help='Period length for the depreciation accounting entries'
required=True
selection=<expr>
string='Period Length'
method_progress_factor
Float
default=0.3
string='Degressive Factor'
method_time
Selection
default='year'
help='Choose the method to use to compute the dates and number of depreciation lines.\n * Number of Years: Specify the number of years for the depreciation.\n'
required=True
selection=<expr>
string='Time Method'
name
Char
index=1
required=True
size=64
string='Name'
note
Text
open_asset
Boolean
help='Check this if you want to automatically confirm the assets of this profile when created by invoices.'
string='Skip Draft State'
parent_id
Many2one → account.asset
comodel_name='account.asset'
domain=[('type', '=', 'view')]
string='Parent Asset'
prorata
Boolean
help='Indicates that the first depreciation entry for this asset has to be done from the depreciation start date instead of the first day of the fiscal year.'
string='Prorata Temporis'
create(self, vals)
write(self, vals)
company_id
Many2one → res.company
required=True
string='Company'
args: 'res.company'
date_completed
Datetime
readonly=True
args: 'Completion Date'
date_trigger
Datetime
help='Date of the event triggering the need to recompute the Asset Tables.'
readonly=True
args: 'Trigger Date'
reason
Char
required=True
string='Reason'
state
Selection
default='open'
readonly=True
selection=[('open', 'Open'), ('done', 'Done')]
string='State'
No public methods.
account_min_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain=[('deprecated', '=', False)]
string='Min-Value Account'
account_plus_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain=[('deprecated', '=', False)]
string='Plus-Value Account'
account_residual_value_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain=[('deprecated', '=', False)]
string='Residual Value Account'
account_sale_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain=[('deprecated', '=', False)]
string='Asset Sale Account'
date_remove
Date
default=fields.Date.today
help='Removal date must be after the last posted entry in case of early removal'
required=True
string='Asset Removal Date'
force_date
Date
string='Force accounting date'
note
Text
posting_regime
Selection
default=<expr>
help="Removal Entry Policy \n * Residual Value: The non-depreciated value will be posted on the 'Residual Value Account' \n * Gain/Loss on Sale: The Gain or Loss will be posted on the 'Plus-Value Account' or 'Min-Value Account' "
required=True
selection=<expr>
string='Removal Entry Policy'
sale_value
Float
default=<expr>
string='Sale Value'
remove(self)
module_account_asset_management
Boolean
help='This allows you to manage the assets owned by a company\n or a person. It keeps track of the depreciation occurred\n on those assets, and creates account move for those\n depreciation lines.\n This installs the module account_asset_management.'
string='Assets management (OCA)'
No public methods.
No new fields.
Public methods (6)action_cancel(self)
action_move_create(self)
finalize_invoice_move_lines(self, move_lines)
inv_line_characteristic_hashcode(self, invoice_line)
invoice_line_move_line_get(self)
line_get_convert(self, line, part)
asset_id
Many2one → account.asset
comodel_name='account.asset'
domain=[('type', '=', 'normal'), ('state', 'in', ['open', 'close'])]
help="Complete this field when selling an asset in order to facilitate the creation of the asset removal accounting entries via the asset 'Removal' button"
string='Asset'
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
string='Asset Profile'
No public methods.
No new fields.
Public methods (2)unlink(self, **kwargs)
write(self, vals)
asset_id
Many2one → account.asset
comodel_name='account.asset'
ondelete='restrict'
string='Asset'
asset_profile_id
Many2one → account.asset.profile
comodel_name='account.asset.profile'
string='Asset Profile'
create(self, vals, **kwargs)
write(self, vals, **kwargs)
No new fields.
Public methods (2)create(self, vals)
write(self, vals)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/account-financial-tools |
| GIT | |
| GIT | https://github.com/OCA/account-financial-tools.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/account-financial-tools/tree/9.0/account_asset_management |
| VERSION | |
| VERSION | 2.6.0 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), OpenERP & Noviat |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), OpenERP & Noviat |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Stéphane Bidoul (ACSONE) |
| WEBSITE | |
| WEBSITE | http://www.noviat.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:15:20 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web_kanban - web - product - decimal_precision - bus - report - analytic - web_tip - web_planner |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_asset_remove_form |
account.asset.remove.form | account.asset.remove | form | New |
action_account_asset_report_graph |
asset.asset.report.graph | asset.asset.report | graph | New |
asset_modify_form |
wizard.asset.modify.form | asset.modify | form | New |
view_account_asset_asset_form |
account.asset.asset.form | account.asset.asset | form | New |
view_account_asset_asset_hierarchy_tree |
account.asset.asset.hierarchy | account.asset.asset | tree | New |
view_account_asset_asset_tree |
account.asset.asset.tree | account.asset.asset | tree | New |
view_account_asset_category_form |
account.asset.category.form | account.asset.category | form | New |
view_account_asset_category_search |
account.asset.category.search | account.asset.category | search | New |
view_account_asset_category_tree |
account.asset.category.tree | account.asset.category | tree | New |
view_account_asset_form |
account.asset.form | account.account | field | Inherits account.view_account_form |
view_account_asset_history_form |
account.asset.history.form | account.asset.history | form | New |
view_account_asset_history_tree |
account.asset.history.tree | account.asset.history | tree | New |
view_account_asset_search |
account.asset.asset.search | account.asset.asset | search | New |
view_account_config_settings |
account.config.settings.inherit | account.config.settings | field | Inherits account.view_account_config_settings |
view_account_invoice_asset_form |
account.invoice.form.add.asset_category | account.invoice.line | field | Inherits account.view_invoice_line_form |
view_account_move_asset_form |
account.move.asset.form | account.move | xpath | Inherits account.view_move_form |
view_account_move_line_filter_inherit |
Journal Items (Search) | account.move.line | field | Inherits account.view_account_move_line_filter |
view_account_move_line_form_inherit |
Journal Items (form) | account.move.line | field | Inherits account.view_move_line_form |
view_asset_asset_report_search |
asset.asset.report.search | asset.asset.report | search | New |
view_asset_asset_report_tree |
asset.asset.report.tree | asset.asset.report | tree | New |
view_asset_depreciation_confirmation_wizard |
asset.depreciation.confirmation.wizard | asset.depreciation.confirmation.wizard | form | New |
view_customer_invoice_asset |
account.invoice.customer.form | account.invoice | xpath | Inherits account.invoice_form |
view_invoice_asset_category |
account.invoice.supplier.form | account.invoice | xpath | Inherits account.invoice_supplier_form |
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)remove(self, cr, uid, ids, context=None)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (2)create(self, cr, uid, vals, context=None)
write(self, cr, uid, ids, vals, context=None)
No new fields.
Public methods (4)action_cancel(self, cr, uid, ids, context=None)
action_number(self, cr, uid, ids, context=None)
inv_line_characteristic_hashcode(self, invoice_line)
line_get_convert(self, cr, uid, x, part, date, context=None)
No new fields.
Public methods (2)move_line_get_item(self, cr, uid, line, context=None)
onchange_account_id(self, cr, uid, ids, product_id, partner_id, inv_type, fposition_id, account_id)
No new fields.
Public methods (2)unlink(self, cr, uid, ids, context=None, check=True)
write(self, cr, uid, ids, vals, context=None)
No new fields.
Public methods (3)create(self, cr, uid, vals, context=None, check=True)
onchange_account_id(self, cr, uid, ids, account_id=False, partner_id=False, context=None)
write(self, cr, uid, ids, vals, context=None, check=True, update_check=True)
No new fields.
Public methods (1)init(self, cr)
No new fields.
Public methods (1)asset_compute(self, cr, uid, ids, context)
No new fields.
Public methods (3)default_get(self, cr, uid, fields, context=None)
fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False)
modify(self, cr, uid, ids, context=None)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/account-financial-tools |
| GIT | |
| GIT | https://github.com/OCA/account-financial-tools.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/account-financial-tools/tree/8.0/account_asset_management |
| VERSION | |
| VERSION | 2.6.0 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), OpenERP & Noviat |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), OpenERP & Noviat |
| COMMITTERS | |
| COMMITTERS | Stéphane Bidoul, Yannick Vaucher, Alexandre Fayolle, Joël Grand-Guillaume, Stefan Rijnhart, Leonardo Pistone, Juan Rial, Pedro M. Baeza, GitHub, Andrea, Stéphane Bidoul (ACSONE), luc-demeyer, OCA Transbot, Sandy, Adrien Peiffer (ACSONE), oca-travis, Weblate |
| WEBSITE | |
| WEBSITE | http://www.noviat.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:11:22 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web_kanban - web - product - decimal_precision - report - analytic - board - edi - email_template |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_asset_remove_form |
account.asset.remove.form | account.asset.remove | form | New |
action_account_asset_report_graph |
asset.asset.report.graph | asset.asset.report | graph | New |
asset_modify_form |
wizard.asset.modify.form | asset.modify | form | New |
view_account_asset_asset_form |
account.asset.asset.form | account.asset.asset | form | New |
view_account_asset_asset_hierarchy_tree |
account.asset.asset.hierarchy | account.asset.asset | tree | New |
view_account_asset_asset_tree |
account.asset.asset.tree | account.asset.asset | tree | New |
view_account_asset_category_form |
account.asset.category.form | account.asset.category | form | New |
view_account_asset_category_search |
account.asset.category.search | account.asset.category | search | New |
view_account_asset_category_tree |
account.asset.category.tree | account.asset.category | tree | New |
view_account_asset_form |
account.asset.form | account.account | field | Inherits account.view_account_form |
view_account_asset_history_form |
account.asset.history.form | account.asset.history | form | New |
view_account_asset_history_tree |
account.asset.history.tree | account.asset.history | tree | New |
view_account_asset_search |
account.asset.asset.search | account.asset.asset | search | New |
view_account_config_settings |
account.config.settings.inherit | account.config.settings | field | Inherits account.view_account_config_settings |
view_account_invoice_asset_form |
account.invoice.form.add.asset_category | account.invoice.line | field | Inherits account.view_invoice_line_form |
view_account_move_asset_form |
account.move.asset.form | account.move | xpath | Inherits account.view_move_form |
view_account_move_line_filter_inherit |
Journal Items (Search) | account.move.line | field | Inherits account.view_account_move_line_filter |
view_account_move_line_form_inherit |
Journal Items (form) | account.move.line | field | Inherits account.view_move_line_form |
view_asset_asset_report_search |
asset.asset.report.search | asset.asset.report | search | New |
view_asset_asset_report_tree |
asset.asset.report.tree | asset.asset.report | tree | New |
view_asset_depreciation_confirmation_wizard |
asset.depreciation.confirmation.wizard | asset.depreciation.confirmation.wizard | form | New |
view_customer_invoice_asset |
account.invoice.customer.form | account.invoice | xpath | Inherits account.invoice_form |
view_invoice_asset_category |
account.invoice.supplier.form | account.invoice | xpath | Inherits account.invoice_supplier_form |
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)remove(self, cr, uid, ids, context=None)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (2)create(self, cr, uid, vals, context=None)
write(self, cr, uid, ids, vals, context=None)
No new fields.
Public methods (4)action_cancel(self, cr, uid, ids, context=None)
action_number(self, cr, uid, ids, context=None)
inv_line_characteristic_hashcode(self, invoice_line)
line_get_convert(self, cr, uid, x, part, date, context=None)
No new fields.
Public methods (2)move_line_get_item(self, cr, uid, line, context=None)
onchange_account_id(self, cr, uid, ids, product_id, partner_id, inv_type, fposition_id, account_id)
No new fields.
Public methods (2)unlink(self, cr, uid, ids, context=None, check=True)
write(self, cr, uid, ids, vals, context=None)
No new fields.
Public methods (3)create(self, cr, uid, vals, context=None, check=True)
onchange_account_id(self, cr, uid, ids, account_id=False, partner_id=False, context=None)
write(self, cr, uid, ids, vals, context=None, check=True, update_check=True)
No new fields.
Public methods (1)init(self, cr)
No new fields.
Public methods (1)asset_compute(self, cr, uid, ids, context)
No new fields.
Public methods (3)default_get(self, cr, uid, fields, context=None)
fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False)
modify(self, cr, uid, ids, context=None)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/account-financial-tools |
| GIT | |
| GIT | https://github.com/OCA/account-financial-tools.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/account-financial-tools/tree/7.0/account_asset_management |
| VERSION | |
| VERSION | 2.4 |
| CATEGORY | |
| CATEGORY | Accounting & Finance |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), OpenERP & Noviat |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), OpenERP & Noviat |
| COMMITTERS | |
| COMMITTERS | Stéphane Bidoul, Alexandre Fayolle, florian-dacosta, luc-demeyer, OCA Transbot |
| WEBSITE | |
| WEBSITE | http://www.noviat.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:07:14 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web_kanban - web - product - process - decimal_precision - analytic - board - edi - email_template |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Financial asset management.
===========================
This Module manages the assets owned by a company. It will keep
track of depreciation's occurred on those assets. And it allows to create
accounting entries from the depreciation lines.
The full asset life-cycle is managed (from asset creation to asset removal).
Assets can be created manually as well as automatically
(via the creation of an accounting entry on the asset account).
Excel based reporting is available via the 'account_asset_management_xls'
module (cf. http://odoo.apps.com).
The module contains a large number of functional enhancements compared to
the standard account_asset module from OpenERP/Odoo.
The module in NOT compatible with the standard account_asset module.
Contributors
------------
- OpenERP SA
- Luc De Meyer (Noviat)
- Frédéric Clementi (camptocamp)
- Florian Dacosta (Akretion)
- Stéphane Bidoul (Acsone)
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_asset_remove_form |
account.asset.remove.form | account.asset.remove | form | New |
action_account_asset_report_graph |
asset.asset.report.graph | asset.asset.report | graph | New |
asset_modify_form |
wizard.asset.modify.form | asset.modify | form | New |
view_account_asset_asset_form |
account.asset.asset.form | account.asset.asset | form | New |
view_account_asset_asset_hierarchy_tree |
account.asset.asset.hierarchy | account.asset.asset | tree | New |
view_account_asset_asset_tree |
account.asset.asset.tree | account.asset.asset | tree | New |
view_account_asset_category_form |
account.asset.category.form | account.asset.category | form | New |
view_account_asset_category_search |
account.asset.category.search | account.asset.category | search | New |
view_account_asset_category_tree |
account.asset.category.tree | account.asset.category | tree | New |
view_account_asset_form |
account.asset.form | account.account | field | Inherits account.view_account_form |
view_account_asset_history_form |
account.asset.history.form | account.asset.history | form | New |
view_account_asset_history_tree |
account.asset.history.tree | account.asset.history | tree | New |
view_account_asset_search |
account.asset.asset.search | account.asset.asset | search | New |
view_account_config_settings |
account.config.settings.inherit | account.config.settings | field | Inherits account.view_account_config_settings |
view_account_invoice_asset_form |
account.invoice.line.form | account.invoice.line | field | Inherits account.view_invoice_line_form |
view_account_move_asset_form |
account.move.asset.form | account.move | xpath | Inherits account.view_move_form |
view_account_move_line_filter_inherit |
Journal Items (Search) | account.move.line | field | Inherits account.view_account_move_line_filter |
view_account_move_line_form_inherit |
Journal Items (form) | account.move.line | field | Inherits account.view_move_line_form |
view_asset_asset_report_search |
asset.asset.report.search | asset.asset.report | search | New |
view_asset_asset_report_tree |
asset.asset.report.tree | asset.asset.report | tree | New |
view_asset_depreciation_confirmation_wizard |
asset.depreciation.confirmation.wizard | asset.depreciation.confirmation.wizard | form | New |
view_customer_invoice_asset |
account.invoice.customer.form | account.invoice | xpath | Inherits account.invoice_form |
view_invoice_asset_category |
account.invoice.supplier.form | account.invoice | xpath | Inherits account.invoice_supplier_form |
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)remove(self, cr, uid, ids, context=None)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (2)create(self, cr, uid, vals, context=None)
write(self, cr, uid, ids, vals, context=None)
No new fields.
Public methods (4)action_cancel(self, cr, uid, ids, context=None)
action_number(self, cr, uid, ids, context=None)
inv_line_characteristic_hashcode(self, invoice, invoice_line)
line_get_convert(self, cr, uid, x, part, date, context=None)
No new fields.
Public methods (2)move_line_get_item(self, cr, uid, line, context=None)
onchange_account_id(self, cr, uid, ids, product_id, partner_id, inv_type, fposition_id, account_id)
No new fields.
Public methods (2)unlink(self, cr, uid, ids, context=None, check=True)
write(self, cr, uid, ids, vals, context=None)
No new fields.
Public methods (3)create(self, cr, uid, vals, context=None, check=True)
onchange_account_id(self, cr, uid, ids, account_id=False, partner_id=False, context=None)
write(self, cr, uid, ids, vals, context=None, check=True, update_check=True)
No new fields.
Public methods (1)init(self, cr)
No new fields.
Public methods (1)asset_compute(self, cr, uid, ids, context)
No new fields.
Public methods (3)default_get(self, cr, uid, fields, context=None)
fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False)
modify(self, cr, uid, ids, context=None)