TIP: You can type at any time to perform a new search.
Assets Management
account_asset_management · OCA/account-financial-tools
- Repository
- OCA/account-financial-tools · module folder · Try on Runboat
- Module version
- 1.0.2
- Category
- Accounting & Finance
- Folder size
- 5.21 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/account-financial-tools
- Last tracking update
- 2026-08-19 05:33:09
- Authors
- Noviat, Odoo Community Association (OCA)
- Maintainers
- Noviat, Odoo Community Association (OCA)
- Committers
- Carlos Lopez, Víctor Martínez, Weblate, acysos, OCA-git-bot, oca-ci, Mario Webinlab
- Odoo dependencies
- Python dependencies
- python-dateutil, xlrd, xlsxwriter
- System dependencies
- None
- Required by
- account_asset_force_account, l10n_es_account_asset, pms_account_asset
- 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.
Code Analysis ⓘ
Views touched (19)
| 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 | form | Inherits account.view_account_form |
view_account_list |
account.account | list | Inherits account.view_account_list | |
view_account_move_line_filter |
Journal Items (Search) | account.move.line | Inherits account.view_account_move_line_filter | |
view_move_form |
account.move.form.account.asset.management | account.move | form | Inherits account.view_move_form |
view_move_line_form |
Journal Items (form) | account.move.line | form | 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 |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (13)
New fields (1)
-
asset_profile_idMany2one → account.asset.profilecheck_company=Truecomodel_name='account.asset.profile'help='Default Asset Profile when creating invoice lines with this account.'string='Asset Profile'
No public methods.
New fields (30)
-
account_move_line_idsOne2many → account.move.linecheck_company=Truecomodel_name='account.move.line'copy=Falseinverse_name='asset_id'readonly=Truestring='Entries' -
activeBooleandefault=True -
carry_forward_missed_depreciationsBooleanhelp='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' -
codeCharsize=32string='Reference' -
company_idMany2one → res.companycomodel_name='res.company'default=<expr>readonly=Truerequired=Truestring='Company' -
currency_idMany2one → res.currencycomodel_name='res.currency'related='company_id.currency_id'store=Truestring='Company Currency' -
date_removeDatereadonly=Truestring='Asset Removal Date' -
date_startDatehelp='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=Truestring='Asset Start Date' -
days_calcBooleancompute='_compute_days_calc'help='Use number of days to calculate depreciation amount'readonly=Falsestore=Truestring='Calculate by days' -
depreciation_baseMonetarycompute='_compute_depreciation_base'help='This amount represent the depreciation base of the asset (Purchase Value - Salvage Value).'store=True -
depreciation_line_idsOne2many → account.asset.linecheck_company=Truecomodel_name='account.asset.line'copy=Falseinverse_name='asset_id'string='Depreciation Lines' -
group_idsMany2many → account.asset.groupcolumn1='asset_id'column2='group_id'comodel_name='account.asset.group'compute='_compute_group_ids'readonly=Falserelation='account_asset_group_rel'store=Truestring='Asset Groups' -
methodSelectioncompute='_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=Falseselection=<expr>store=Truestring='Computation Method' -
method_endDatecompute='_compute_method_end'readonly=Falsestore=Truestring='Ending Date' -
method_numberIntegercompute='_compute_method_number'help='The number of years needed to depreciate your asset'readonly=Falsestore=Truestring='Number of Years' -
method_periodSelectioncompute='_compute_method_period'help='Period length for the depreciation accounting entries'readonly=Falseselection=<expr>store=Truestring='Period Length' -
method_progress_factorFloatcompute='_compute_method_progress_factor'readonly=Falsestore=Truestring='Degressive Factor' -
method_timeSelectioncompute='_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=Falseselection=<expr>store=Truestring='Time Method' -
move_line_checkBooleancompute='_compute_move_line_check'string='Has accounting entries' -
nameCharrequired=Truestring='Asset Name' -
noteText -
partner_idMany2one → res.partnercomodel_name='res.partner'string='Partner' -
profile_idMany2one → account.asset.profilechange_default=Truecheck_company=Truecomodel_name='account.asset.profile'required=Truestring='Asset Profile' -
prorataBooleancompute='_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=Falsestore=Truestring='Prorata Temporis' -
purchase_valueMonetaryhelp='This amount represent the initial value of the asset.\nThe Depreciation Base is calculated as follows:\nPurchase Value - Salvage Value.'required=True -
salvage_valueMonetarycompute='_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=Falsestore=True -
stateSelectioncopy=Falsedefault='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=Trueselection=[('draft', 'Draft'), ('open', 'Running'), ('close', 'Close'), ('removed', 'Removed')]string='Status' -
use_leap_yearsBooleancompute='_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=Falsestore=True -
value_depreciatedMonetarycompute='_compute_depreciation'store=Truestring='Depreciated Value' -
value_residualMonetarycompute='_compute_depreciation'store=Truestring='Residual Value'
-
compute_depreciation_board(self) -
create(self, vals_list)@api.model_create_multi -
open_entries(self) -
remove(self) -
set_to_draft(self) -
unlink(self) -
validate(self) -
write(self, vals)
New fields (2)
-
date_endDatedefault=fields.Date.todayhelp='All depreciation lines prior to this date will be automatically posted'required=Truestring='Date' -
noteText
-
asset_compute(self) -
view_asset_moves(self)
New fields (6)
-
child_idsOne2many → account.asset.groupcheck_company=Truecomodel_name='account.asset.group'inverse_name='parent_id'string='Child Asset Groups' -
codeCharindex=True -
company_idMany2one → res.companycomodel_name='res.company'default=<expr>required=Truestring='Company' -
nameCharindex=Truerequired=Truesize=64 -
parent_idMany2one → account.asset.groupcheck_company=Truecomodel_name='account.asset.group'ondelete='restrict'string='Parent Asset Group' -
parent_pathCharindex=True
No public methods.
New fields (16)
-
amountMonetaryrequired=True -
asset_idMany2one → account.assetcheck_company=Truecomodel_name='account.asset'index=Trueondelete='cascade'required=Truestring='Asset' -
company_idMany2onerelated='asset_id.company_id'store=True -
currency_idMany2onerelated='asset_id.company_id.currency_id'store=Truestring='Company Currency' -
depreciated_valueMonetarycompute='_compute_values'store=Truestring='Amount Already Depreciated' -
depreciation_baseMonetaryrelated='asset_id.depreciation_base'string='Depreciation Base' -
init_entryBooleanhelp='Set this flag for entries of previous fiscal years for which Odoo has not generated accounting entries.'string='Initial Balance Entry' -
line_dateDaterequired=Truestring='Date' -
line_daysIntegerreadonly=Truestring='Days' -
move_checkBooleancompute='_compute_move_check'store=Truestring='Posted' -
move_idMany2one → account.movecheck_company=Truecomodel_name='account.move'readonly=Truestring='Depreciation Entry' -
nameCharreadonly=Truesize=64string='Depreciation Name' -
parent_stateSelectionrelated='asset_id.state'string='State of Asset' -
previous_idMany2one → account.asset.linecomodel_name='account.asset.line'readonly=Truestring='Previous Depreciation Line' -
remaining_valueMonetarycompute='_compute_values'store=Truestring='Next Period Depreciation' -
typeSelectiondefault='depreciate'readonly=Trueselection=[('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)
New fields (25)
-
account_asset_idMany2one → account.accountcheck_company=Truecomodel_name='account.account'required=Truestring='Asset Account' -
account_depreciation_idMany2one → account.accountcheck_company=Truecomodel_name='account.account'required=Truestring='Depreciation Account' -
account_expense_depreciation_idMany2one → account.accountcheck_company=Truecomodel_name='account.account'required=Truestring='Depr. Expense Account' -
account_min_value_idMany2one → account.accountcheck_company=Truecomodel_name='account.account'string='Min-Value Account' -
account_plus_value_idMany2one → account.accountcheck_company=Truecomodel_name='account.account'string='Plus-Value Account' -
account_residual_value_idMany2one → account.accountcheck_company=Truecomodel_name='account.account'string='Residual Value Account' -
activeBooleandefault=True -
allow_reversalBooleanhelp='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_itemBooleanhelp='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_idMany2one → res.companycomodel_name='res.company'default=<expr>required=Truestring='Company' -
days_calcBooleandefault=Falsehelp='Use number of days to calculate depreciation amount'string='Calculate by days' -
group_idsMany2many → account.asset.groupcheck_company=Truecolumn1='profile_id'column2='group_id'comodel_name='account.asset.group'relation='account_asset_profile_group_rel'string='Asset Groups' -
journal_idMany2one → account.journalcheck_company=Truecomodel_name='account.journal'domain="[('type', '=', 'general'), ('company_id', '=', company_id)]"required=Truestring='Journal' -
methodSelectiondefault='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=Trueselection=<expr>string='Computation Method' -
method_numberIntegerdefault=5help='The number of years needed to depreciate your asset'string='Number of Years' -
method_periodSelectiondefault='year'help='Period length for the depreciation accounting entries'required=Trueselection=<expr>string='Period Length' -
method_progress_factorFloatdefault=0.3string='Degressive Factor' -
method_timeSelectiondefault='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=Trueselection=<expr>string='Time Method' -
nameCharindex=Truerequired=Truesize=64 -
noteText -
open_assetBooleanhelp='Check this if you want to automatically confirm the assets of this profile when created by invoices.'string='Skip Draft State' -
prorataBooleancompute='_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=Falsestore=Truestring='Prorata Temporis' -
salvage_typeSelectionselection=[('fixed', 'Fixed'), ('percent', 'Percentage of Price')] -
salvage_valueFloatdigits='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_yearsBooleandefault=Falsehelp='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)@api.model_create_multi -
write(self, vals)
New fields (5)
-
company_idMany2one → res.companyrequired=Truestring='Company' args: 'res.company' -
date_completedDatetimereadonly=True args: 'Completion Date' -
date_triggerDatetimehelp='Date of the event triggering the need to recompute the Asset Tables.'readonly=True args: 'Trigger Date' -
reasonCharrequired=True -
stateSelectiondefault='open'readonly=Trueselection=[('open', 'Open'), ('done', 'Done')]
No public methods.
New fields (11)
-
account_min_value_idMany2one → account.accountcheck_company=Truecomodel_name='account.account'default=<expr>string='Min-Value Account' -
account_plus_value_idMany2one → account.accountcheck_company=Truecomodel_name='account.account'default=<expr>string='Plus-Value Account' -
account_residual_value_idMany2one → account.accountcheck_company=Truecomodel_name='account.account'default=<expr>string='Residual Value Account' -
account_sale_idMany2one → account.accountcheck_company=Truecomodel_name='account.account'default=<expr>string='Asset Sale Account' -
company_idMany2one → res.companycomodel_name='res.company'default=<expr>readonly=Truerequired=Truestring='Company' -
currency_idMany2onerelated='company_id.currency_id'string='Company Currency' -
date_removeDatedefault=fields.Date.todayhelp='Removal date must be after the last posted entry in case of early removal'required=Truestring='Asset Removal Date' -
force_dateDatestring='Force accounting date' -
noteTextargs: 'Notes' -
posting_regimeSelectiondefault=<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=Trueselection=<expr>string='Removal Entry Policy' -
sale_valueMonetarydefault=<expr>
-
remove(self)
New fields (1)
-
asset_countIntegercompute='_compute_asset_count'
-
action_post(self) -
action_view_assets(self) -
button_draft(self) -
unlink(self) -
write(self, vals)
New fields (2)
-
asset_idMany2one → account.assetcheck_company=Truecomodel_name='account.asset'copy=Falseondelete='restrict'string='Asset' -
asset_profile_idMany2one → account.asset.profilecomodel_name='account.asset.profile'compute='_compute_asset_profile'readonly=Falsestore=Truestring='Asset Profile'
-
create(self, vals_list)@api.model_create_multi -
write(self, vals)
New fields (0)
No new fields.
Public methods (3)-
acquisition_filter(wiz, asset)@staticmethod -
active_filter(wiz, asset)@staticmethod -
removal_filter(wiz, asset)@staticmethod
New fields (5)
-
asset_group_idMany2one → account.asset.groupcomodel_name='account.asset.group'default=<expr>string='Asset Group' -
company_idMany2one → res.companycomodel_name='res.company'default=<expr>required=Truestring='Company' -
date_fromDaterequired=Truestring='Start Date' -
date_toDaterequired=Truestring='End Date' -
draftBooleanstring='Include draft assets'
-
xls_export(self)
New fields (4)
-
date_reversalDatedefault=fields.Date.context_todayrequired=Truestring='Reversal date' -
journal_idMany2one → account.journalhelp='If empty, uses the journal of the journal entry to be reversed.'string='Use Specific Journal' args: 'account.journal' -
line_idMany2one → account.asset.linecomodel_name='account.asset.line'readonly=Truerequired=Truestring='Asset Line' -
reasonChar
-
default_get(self, fields)@api.model -
reverse_move(self)
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…