[IMP] removed type, parent_id, parent_path, child_ids from account.asset & account.asset.profile

This commit is contained in:
Henrik Norlin
2019-08-26 21:28:27 +02:00
committed by Pedro M. Baeza
parent 0aa62d46d8
commit 8486c9c0ce
18 changed files with 211 additions and 175 deletions

View File

@@ -4,7 +4,7 @@
{
'name': 'Assets Management',
'version': '12.0.1.1.2',
'version': '12.0.1.2.0',
'license': 'AGPL-3',
'depends': [
'account',
@@ -20,6 +20,7 @@
'wizard/account_asset_remove.xml',
'views/account_account.xml',
'views/account_asset.xml',
'views/account_asset_group.xml',
'views/account_asset_profile.xml',
'views/res_config_settings.xml',
'views/account_invoice.xml',

View File

@@ -1,3 +1,10 @@
Done after the analysis:
NEW model account.asset.group
NEW field account.asset group_id
NEW field account.asset.profile group_id
account.asset date_start required
account.asset profile_id required
---Fields in module 'account_asset_management'---
account_asset / account.asset.asset / category_id (many2one) : DEL relation: account.asset.category, required
account_asset / account.asset.asset / currency_id (many2one) : DEL relation: res.currency, required, req_default: function
@@ -12,9 +19,7 @@ account_asset / account.asset.asset / method_period (integer) : selec
account_asset / account.asset.asset / method_period (integer) : type is now 'selection' ('integer')
account_asset / account.asset.asset / method_time (selection) : selection_keys is now 'function' ('['end', 'number']')
account_asset / account.asset.asset / state (selection) : selection_keys is now '['close', 'draft', 'open', 'removed']' ('['close', 'draft', 'open']')
account_asset / account.asset.asset / type (selection) : is now stored
account_asset / account.asset.asset / type (selection) : not related anymore
account_asset / account.asset.asset / type (selection) : selection_keys is now '['normal', 'view']' ('function')
account_asset / account.asset.asset / type (selection) : DEL required
account_asset / account.asset.asset / value (float) : DEL required
account_asset / account.asset.asset / value_residual (float) : is now stored
account_asset / account.asset.asset / website_message_ids (one2many): DEL relation: mail.message
@@ -42,13 +47,10 @@ account_asset / product.template / deferred_revenue_category_id (many2on
account_asset_management / account.account / asset_profile_id (many2one) : NEW relation: account.asset.profile
account_asset_management / account.asset / account_analytic_id (many2one): NEW relation: account.analytic.account
account_asset_management / account.asset / account_move_line_ids (one2many): NEW relation: account.move.line
account_asset_management / account.asset / child_ids (one2many) : NEW relation: account.asset
account_asset_management / account.asset / company_currency_id (many2one): NEW relation: res.currency, isrelated: related, stored
account_asset_management / account.asset / date_remove (date) : NEW
account_asset_management / account.asset / date_start (date) : NEW
account_asset_management / account.asset / depreciation_base (float) : NEW isfunction: function, stored
account_asset_management / account.asset / parent_id (many2one) : NEW relation: account.asset
account_asset_management / account.asset / parent_path (char) : NEW
account_asset_management / account.asset / profile_id (many2one) : NEW relation: account.asset.profile
account_asset_management / account.asset / purchase_value (float) : NEW required
account_asset_management / account.asset / value_depreciated (float) : NEW isfunction: function, stored
@@ -62,7 +64,6 @@ account_asset_management / account.asset.profile / account_plus_value_id (man
account_asset_management / account.asset.profile / account_residual_value_id (many2one): NEW relation: account.account
account_asset_management / account.asset.profile / asset_product_item (boolean) : NEW
account_asset_management / account.asset.profile / note (text) : NEW
account_asset_management / account.asset.profile / parent_id (many2one) : NEW relation: account.asset
account_asset_management / account.asset.recompute.trigger / company_id (many2one) : NEW relation: res.company, required
account_asset_management / account.asset.recompute.trigger / date_completed (datetime) : NEW
account_asset_management / account.asset.recompute.trigger / date_trigger (datetime) : NEW

View File

@@ -1,3 +1,11 @@
Done after the analysis:
NEW model account.asset.group
NEW field account.asset group_id
NEW field account.asset.profile group_id
account.asset date_start required
account.asset profile_id required
# TODO: account.asset of type 'view' (archived): set date_start & profile_id
---Fields in module 'account_asset_management'---
account_asset / account.asset.asset / category_id (many2one) : DEL relation: account.asset.category, required
# renamed to profile_id
@@ -23,9 +31,8 @@ account_asset / account.asset.asset / method_period (integer) : type
# TODO: LOG WARNING IF method_period_11 is other than (1, 3, 12)
account_asset / account.asset.asset / method_time (selection) : selection_keys is now 'function' ('['end', 'number']')
account_asset / account.asset.asset / state (selection) : selection_keys is now '['close', 'draft', 'open', 'removed']' ('['close', 'draft', 'open']')
account_asset / account.asset.asset / type (selection) : is now stored
account_asset / account.asset.asset / type (selection) : not related anymore
account_asset / account.asset.asset / type (selection) : selection_keys is now '['normal', 'view']' ('function')
account_asset / account.asset.asset / type (selection) : DEL required
# DEL
account_asset / account.asset.asset / value (float) : DEL required
# renamed to purchase_value
account_asset / account.asset.asset / value_residual (float) : is now stored
@@ -81,9 +88,6 @@ account_asset_management / account.asset / date_remove (date)
account_asset_management / account.asset / date_start (date) : NEW
# renamed from date
account_asset_management / account.asset / depreciation_base (float) : NEW isfunction: function, stored
account_asset_management / account.asset / parent_id (many2one) : NEW relation: account.asset
# get new view asset
account_asset_management / account.asset / parent_path (char) : NEW
account_asset_management / account.asset / profile_id (many2one) : NEW relation: account.asset.profile
# renamed from category_id
account_asset_management / account.asset / purchase_value (float) : NEW required
@@ -101,8 +105,6 @@ account_asset_management / account.asset.profile / account_plus_value_id (man
account_asset_management / account.asset.profile / account_residual_value_id (many2one): NEW relation: account.account
account_asset_management / account.asset.profile / asset_product_item (boolean) : NEW
account_asset_management / account.asset.profile / note (text) : NEW
account_asset_management / account.asset.profile / parent_id (many2one) : NEW relation: account.asset
# get new view asset
account_asset_management / account.asset.recompute.trigger / company_id (many2one) : NEW relation: res.company, required
account_asset_management / account.asset.recompute.trigger / date_completed (datetime) : NEW
account_asset_management / account.asset.recompute.trigger / date_trigger (datetime) : NEW

View File

@@ -5,14 +5,34 @@ import logging
logger = logging.getLogger('OpenUpgrade')
def create_view_asset(env):
for company in env['res.company'].search([]):
values = {
'company_id': company.id,
'name': 'ASSET VIEW',
'type': 'view',
}
env['account.asset'].create(values)
def create_asset_group(cr):
view_to_group = {}
cr.execute('''SELECT id, name, parent_id, company_id
FROM account_asset WHERE type = 'view';''')
for view in cr.fetchall():
sql = '''INSERT INTO account_asset_group (name, parent_id, company_id)
VALUES ('%s', %s, %s) returning id;''' % \
(view[1], view[2] or 'NULL', view[3])
cr.execute(sql)
view_id = view[0]
group_id = cr.fetchone()[0]
view_to_group[view_id] = group_id
return view_to_group
def update_asset_and_asset_profile(cr, view_to_group):
cr.execute('''UPDATE account_asset
SET active = false
WHERE type = 'view';''')
for view_id, group_id in view_to_group.items():
cr.execute('''UPDATE account_asset
SET group_id = %s
WHERE parent_id = %s;''' % (group_id, view_id))
cr.execute('''UPDATE account_asset_profile
SET group_id = %s
WHERE parent_id = %s;''' % (group_id, view_id))
def update_asset(cr):
@@ -22,8 +42,8 @@ def update_asset(cr):
p.account_analytic_id,
a.company_id
FROM account_asset a
LEFT JOIN account_asset_profile p ON a.profile_id = p.id
WHERE a.type = 'normal';''')
LEFT JOIN account_asset_profile p ON a.profile_id = p.id;
''')
for asset in cr.fetchall():
no_of_entries = asset[1]
months_between_entries = asset[2]
@@ -39,9 +59,6 @@ def update_asset(cr):
values['method_period'] = "'quarter'"
elif months_between_entries == 1:
values['method_period'] = "'month'"
cr.execute("""SELECT id FROM account_asset
WHERE type = 'view' and company_id = %s limit 1;""" % asset[4])
values['parent_id'] = cr.fetchall()[0][0]
vals = ['%s = %s' % (key, value) for key, value in values.items()]
sql = "UPDATE account_asset SET %s WHERE id = %s" % \
@@ -69,10 +86,6 @@ def update_asset_profile(cr):
values['method_period'] = "'quarter'"
elif months_between_entries == 1:
values['method_period'] = "'month'"
cr.execute("""SELECT id FROM account_asset
WHERE type = 'view' and company_id = %s
LIMIT 1;""" % profile[3])
values['parent_id'] = cr.fetchall()[0][0]
vals = ['{} = {}'.format(key, value) for key, value in values.items()]
sql = """UPDATE account_asset_profile
@@ -97,7 +110,16 @@ def update_move_line(cr):
@openupgrade.migrate()
def migrate(env, version):
cr = env.cr
create_view_asset(env)
update_asset(cr)
update_asset_profile(cr)
update_move_line(cr)
cr.execute('''SELECT column_name
FROM information_schema.columns
WHERE table_name = 'account_asset'
AND column_name = 'type';''')
if cr.fetchone():
# migrate from account_asset_management
view_to_group = create_asset_group(cr)
update_asset_and_asset_profile(cr, view_to_group)
else:
# migrate from account_asset
update_asset(cr)
update_asset_profile(cr)
update_move_line(cr)

View File

@@ -49,9 +49,18 @@ _field_renames = [
@openupgrade.migrate()
def migrate(env, version):
cr = env.cr
openupgrade.rename_models(cr, _model_renames1)
openupgrade.rename_tables(cr, _table_renames1)
openupgrade.rename_models(cr, _model_renames2)
openupgrade.rename_tables(cr, _table_renames2)
openupgrade.copy_columns(cr, _column_copies)
openupgrade.rename_fields(env, _field_renames)
cr.execute('''SELECT column_name
FROM information_schema.columns
WHERE table_name = 'account_asset'
AND column_name = 'type';''')
if cr.fetchone():
# migrate from account_asset_management
pass
else:
# migrate from account_asset
openupgrade.rename_models(cr, _model_renames1)
openupgrade.rename_tables(cr, _table_renames1)
openupgrade.rename_models(cr, _model_renames2)
openupgrade.rename_tables(cr, _table_renames2)
openupgrade.copy_columns(cr, _column_copies)
openupgrade.rename_fields(env, _field_renames)

View File

@@ -1,5 +1,6 @@
from . import account_account
from . import account_asset
from . import account_asset_group
from . import account_asset_profile
from . import account_asset_line
from . import account_asset_recompute_trigger

View File

@@ -28,7 +28,6 @@ class AccountAsset(models.Model):
_name = 'account.asset'
_description = 'Asset'
_order = 'date_start desc, code, name'
_parent_store = True
account_move_line_ids = fields.One2many(
comodel_name='account.move.line',
@@ -77,23 +76,17 @@ class AccountAsset(models.Model):
profile_id = fields.Many2one(
comodel_name='account.asset.profile',
string='Asset Profile',
change_default=True, readonly=True,
change_default=True,
readonly=True,
required=True,
states={'draft': [('readonly', False)]})
parent_id = fields.Many2one(
comodel_name='account.asset',
string='Parent Asset', readonly=True,
states={'draft': [('readonly', False)]},
domain=[('type', '=', 'view')],
ondelete='restrict',
index=True,
)
parent_path = fields.Char(index=True)
child_ids = fields.One2many(
comodel_name='account.asset',
inverse_name='parent_id',
string='Child Assets')
group_id = fields.Many2one(
comodel_name='account.asset.group',
string='Asset Group')
date_start = fields.Date(
string='Asset Start Date', readonly=True,
string='Asset Start Date',
readonly=True,
required=True,
states={'draft': [('readonly', False)]},
help="You should manually add depreciation lines "
"with the depreciations of previous fiscal years "
@@ -177,12 +170,6 @@ class AccountAsset(models.Model):
inverse_name='asset_id',
string='Depreciation Lines', copy=False,
readonly=True, states={'draft': [('readonly', False)]})
type = fields.Selection(
selection=[('view', 'View'),
('normal', 'Normal')],
string='Type',
required=True, readonly=True, default='normal',
states={'draft': [('readonly', False)]})
company_id = fields.Many2one(
comodel_name='res.company',
string='Company', required=True, readonly=True,
@@ -208,20 +195,18 @@ class AccountAsset(models.Model):
asset.move_line_check = True
break
@api.depends('purchase_value', 'salvage_value', 'type', 'method')
@api.depends('purchase_value', 'salvage_value', 'method')
@api.multi
def _compute_depreciation_base(self):
for asset in self:
if asset.type == 'view':
asset.depreciation_base = 0.0
elif asset.method in ['linear-limit', 'degr-limit']:
if asset.method in ['linear-limit', 'degr-limit']:
asset.depreciation_base = asset.purchase_value
else:
asset.depreciation_base = \
asset.purchase_value - asset.salvage_value
@api.multi
@api.depends('type', 'depreciation_base',
@api.depends('depreciation_base',
'depreciation_line_ids.type',
'depreciation_line_ids.amount',
'depreciation_line_ids.previous_id',
@@ -229,30 +214,17 @@ class AccountAsset(models.Model):
'depreciation_line_ids.move_check',)
def _compute_depreciation(self):
for asset in self:
if asset.type == 'normal':
lines = asset.depreciation_line_ids.filtered(
lambda l: l.type in ('depreciate', 'remove') and
(l.init_entry or l.move_check))
value_depreciated = sum([l.amount for l in lines])
residual = asset.depreciation_base - value_depreciated
depreciated = value_depreciated
else:
residual = 0.0
depreciated = 0.0
lines = asset.depreciation_line_ids.filtered(
lambda l: l.type in ('depreciate', 'remove') and
(l.init_entry or l.move_check))
value_depreciated = sum([l.amount for l in lines])
residual = asset.depreciation_base - value_depreciated
depreciated = value_depreciated
asset.update({
'value_residual': residual,
'value_depreciated': depreciated
})
@api.multi
@api.constrains('parent_id')
def _check_recursion(self, parent=None):
res = super()._check_recursion(parent=parent)
if not res:
raise UserError(
_("Error ! You can not create recursive assets."))
return res
@api.multi
@api.constrains('method', 'method_time')
def _check_method(self):
@@ -297,7 +269,6 @@ class AccountAsset(models.Model):
profile = self.profile_id
if profile:
self.update({
'parent_id': profile.parent_id,
'method': profile.method,
'method_number': profile.method_number,
'method_time': profile.method_time,
@@ -312,30 +283,15 @@ class AccountAsset(models.Model):
if self.method_time != 'year':
self.prorata = True
@api.onchange('type')
def _onchange_type(self):
if self.type == 'view':
self.update({
'date_start': False,
'profile_id': False,
'purchase_value': False,
'salvage_value': False,
})
if self.depreciation_line_ids:
self.depreciation_line_ids.unlink()
@api.model
def create(self, vals):
if vals.get('method_time') != 'year' and not vals.get('prorata'):
vals['prorata'] = True
if vals.get('type') == 'view':
vals['date_start'] = False
asset = super().create(vals)
if self.env.context.get('create_asset_from_move_line'):
# Trigger compute of depreciation_base
asset.salvage_value = 0.0
if asset.type == 'normal':
asset._create_first_asset_line()
asset._create_first_asset_line()
return asset
@api.multi
@@ -345,9 +301,7 @@ class AccountAsset(models.Model):
vals['prorata'] = True
res = super().write(vals)
for asset in self:
asset_type = vals.get('type') or asset.type
if asset_type == 'view' or \
self.env.context.get('asset_validate_from_write'):
if self.env.context.get('asset_validate_from_write'):
continue
asset._create_first_asset_line()
if asset.profile_id.open_asset and \
@@ -387,7 +341,7 @@ class AccountAsset(models.Model):
"posted depreciation lines."))
# update accounting entries linked to lines of type 'create'
amls = self.with_context(
allow_asset_removal=True, from_parent_object=True
allow_asset_removal=True
).mapped('account_move_line_ids')
amls.write({'asset_id': False})
return super().unlink()
@@ -419,8 +373,7 @@ class AccountAsset(models.Model):
@api.multi
def validate(self):
for asset in self:
if asset.type == 'normal' and asset.company_currency_id.is_zero(
asset.value_residual):
if asset.company_currency_id.is_zero(asset.value_residual):
asset.state = 'close'
else:
asset.state = 'open'

View File

@@ -0,0 +1,24 @@
# Copyright 2009-2018 Noviat
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class AccountAssetGroup(models.Model):
_name = 'account.asset.group'
_description = 'Asset Group'
_order = 'name'
name = fields.Char(string='Name', size=64, required=True, index=True)
company_id = fields.Many2one(
comodel_name='res.company',
string='Company', required=True,
default=lambda self: self._default_company_id())
parent_id = fields.Many2one(
comodel_name='account.asset.group',
string='Parent Asset Group',
ondelete='restrict')
@api.model
def _default_company_id(self):
return self.env['res.company']._company_default_get('account.asset')

View File

@@ -47,10 +47,9 @@ class AccountAssetProfile(models.Model):
comodel_name='res.company',
string='Company', required=True,
default=lambda self: self._default_company_id())
parent_id = fields.Many2one(
comodel_name='account.asset',
string='Parent Asset',
domain=[('type', '=', 'view')])
group_id = fields.Many2one(
comodel_name='account.asset.group',
string='Asset Group')
method = fields.Selection(
selection=lambda self: self._selection_method(),
string='Computation Method',

View File

@@ -131,8 +131,7 @@ class AccountInvoiceLine(models.Model):
asset_id = fields.Many2one(
comodel_name='account.asset',
string='Asset',
domain=[('type', '=', 'normal'),
('state', 'in', ['open', 'close'])],
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 "

View File

@@ -16,5 +16,12 @@
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])]</field>
</record>
<record id="account_asset_group_multi_company_rule" model="ir.rule">
<field name="name">Account Asset Group multi-company</field>
<field ref="model_account_asset_group" name="model_id"/>
<field eval="True" name="global"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])]</field>
</record>
</data>
</odoo>

View File

@@ -10,4 +10,6 @@ access_account_asset_line_user,account.asset.line,model_account_asset_line,accou
access_account_asset_line_manager,account.asset.line,model_account_asset_line,account.group_account_manager,1,1,1,1
access_account_asset_recompute_trigger_user,account.asset.recompute.trigger,model_account_asset_recompute_trigger,account.group_account_user,1,1,1,1
access_account_asset_recompute_trigger_manager,account.asset.recompute.trigger,model_account_asset_recompute_trigger,account.group_account_manager,1,1,1,1
access_account_asset_group_invoice,account.asset.group,model_account_asset_group,account.group_account_invoice,1,0,0,0
access_account_asset_group_user,account.asset.group,model_account_asset_group,account.group_account_user,1,0,0,0
access_account_asset_group_manager,account.asset.group,model_account_asset_group,account.group_account_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
10 access_account_asset_line_manager account.asset.line model_account_asset_line account.group_account_manager 1 1 1 1
11 access_account_asset_recompute_trigger_user account.asset.recompute.trigger model_account_asset_recompute_trigger account.group_account_user 1 1 1 1
12 access_account_asset_recompute_trigger_manager account.asset.recompute.trigger model_account_asset_recompute_trigger account.group_account_manager 1 1 1 1
13 access_account_asset_group_invoice account.asset.group model_account_asset_group account.group_account_invoice 1 0 0 0
14 access_account_asset_group_user account.asset.group model_account_asset_group account.group_account_user 1 0 0 0
15 access_account_asset_group_manager account.asset.group model_account_asset_group account.group_account_manager 1 1 1 1

View File

@@ -16,35 +16,9 @@
<field name="company_id" ref="base.main_company"/>
</record>
<!-- Type View Assets -->
<record id="account_asset_view_fa" model="account.asset">
<field name="type">view</field>
<field name="state">open</field>
<field name="name">Financial Assets</field>
<field name="purchase_value" eval="0.0"/>
</record>
<record id="account_asset_view_ict" model="account.asset">
<field name="type">view</field>
<field name="state">open</field>
<field name="name">ICT</field>
<field name="parent_id" ref="account_asset_view_fa"/>
<field name="purchase_value" eval="0.0"/>
</record>
<record id="account_asset_view_vehicle" model="account.asset">
<field name="type">view</field>
<field name="state">open</field>
<field name="name">Vehicles</field>
<field name="parent_id" ref="account_asset_view_fa"/>
<field name="purchase_value" eval="0.0"/>
</record>
<!-- Asset profiles -->
<record id="account_asset_profile_ict_3Y" model="account.asset.profile">
<field name="parent_id" ref="account_asset_view_ict"/>
<field name="account_expense_depreciation_id" ref="account.a_expense"/>
<field name="account_asset_id" ref="account.xfa"/>
<field name="account_depreciation_id" ref="account.xfa"/>
@@ -56,7 +30,6 @@
</record>
<record id="account_asset_profile_car_5Y" model="account.asset.profile">
<field name="parent_id" ref="account_asset_view_vehicle"/>
<field name="account_expense_depreciation_id" ref="account.a_expense"/>
<field name="account_asset_id" ref="account.xfa"/>
<field name="account_depreciation_id" ref="account.xfa"/>
@@ -70,7 +43,6 @@
<!-- Assets -->
<record id="account_asset_asset_ict0" model="account.asset">
<field name="parent_id" ref="account_asset_view_ict"/>
<field name="state">draft</field>
<field name="method_time">year</field>
<field name="method_number" eval="3"/>
@@ -83,7 +55,6 @@
</record>
<record id="account_asset_asset_vehicle0" model="account.asset">
<field name="parent_id" ref="account_asset_view_vehicle"/>
<field name="state">draft</field>
<field name="method_time">year</field>
<field name="method_number" eval="5"/>

View File

@@ -8,19 +8,17 @@
<form string="Asset">
<header>
<button name="validate" string="Confirm Asset" type="object" class="oe_highlight"
attrs="{'invisible': ['|', ('state', '!=', 'draft'), ('type', '=', 'view')]}"/>
attrs="{'invisible': [('state', '!=', 'draft')]}"/>
<button name="set_to_draft" states="open,close"
string="Set to Draft" type="object" groups="account.group_account_manager"/>
<button name="remove" string="Remove" type="object" groups="account.group_account_manager"
attrs="{'invisible':['|', ('method_time', '!=', 'year'), ('state', 'not in', ['open', 'close'])]}"
help="Asset removal."/>
<field name="state" widget="statusbar" statusbar_visible="draft,open,close,removed"
attrs="{'invisible': [('type', '=', 'view')]}"/>
<field name="state" widget="statusbar" statusbar_visible="draft,open,close,removed"/>
</header>
<sheet>
<div class="oe_button_box">
<button name="open_entries" string="Journal Entries" type="object" class="oe_stat_button" icon="fa-bars"
attrs="{'invisible': [('type', '=', 'view')]}"/>
<button name="open_entries" string="Journal Entries" type="object" class="oe_stat_button" icon="fa-bars"/>
</div>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
@@ -30,28 +28,21 @@
</div>
<group colspan="4" col="4">
<field name="code"/>
<field name="parent_id"
attrs="{'required': [('type', '=', 'normal')]}"/>
<field name="type"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
<field name="company_currency_id" groups="base.group_multi_currency" invisible="1"/>
<field name="move_line_check" invisible="1"/>
<newline/>
<field name="depreciation_base" widget="monetary" options="{'currency_field': 'company_currency_id'}"
attrs="{'invisible': [('type', '=', 'view')]}"/>
<field name="value_depreciated" widget="monetary" options="{'currency_field': 'company_currency_id'}"
attrs="{'invisible': [('type', '=', 'view')]}"/>
<field name="value_residual" widget="monetary" options="{'currency_field': 'company_currency_id'}"
attrs="{'invisible': [('type', '=', 'view')]}"/>
<field name="depreciation_base" widget="monetary" options="{'currency_field': 'company_currency_id'}"/>
<field name="value_depreciated" widget="monetary" options="{'currency_field': 'company_currency_id'}"/>
<field name="value_residual" widget="monetary" options="{'currency_field': 'company_currency_id'}"/>
</group>
<notebook colspan="4" attrs="{'invisible': [('type', '=', 'view')]}">
<notebook colspan="4">
<page string="General">
<group colspan="4" col="4">
<group>
<field name="purchase_value" widget="monetary" options="{'currency_field': 'currency_id'}"
attrs="{'readonly':['|', ('move_line_check', '=', True), ('state', '!=', 'draft')]}"/>
<field name="date_start"
attrs="{'readonly': [('state', '!=', 'draft')], 'required': [('type', '=', 'normal')]}"/>
<field name="date_start" attrs="{'readonly': [('state', '!=', 'draft')]}"/>
</group>
<group>
<field name="salvage_value" widget="monetary" options="{'currency_field': 'company_currency_id'}"
@@ -61,7 +52,8 @@
</group>
<separator string="Other Information" colspan="4"/>
<group colspan="4" col="4">
<field name="profile_id" attrs="{'required': [('type', '=', 'normal')]}"/>
<field name="profile_id"/>
<field name="group_id"/>
<field name="partner_id"/>
<field name="account_analytic_id" groups="analytic.group_analytic_accounting"/>
</group>
@@ -173,17 +165,16 @@
<field name="name">account.asset.tree</field>
<field name="model">account.asset</field>
<field name="arch" type="xml">
<tree string="Assets" decoration-info="type == 'view'">
<tree string="Assets">
<field name="name"/>
<field name="type" invisible="1"/>
<field name="code"/>
<field name="depreciation_base" attrs="{'invisible': [('type', '=', 'view')]}"/>
<field name="value_depreciated" attrs="{'invisible': [('type', '=', 'view')]}"/>
<field name="value_residual" attrs="{'invisible': [('type', '=', 'view')]}"/>
<field name="depreciation_base"/>
<field name="value_depreciated"/>
<field name="value_residual"/>
<field name="date_start"/>
<field name="date_remove"/>
<field name="profile_id"/>
<field name="state" attrs="{'invisible': [('type', '=', 'view')]}"/>
<field name="state"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
@@ -205,7 +196,6 @@
<field name="profile_id"/>
<field name="partner_id" filter_domain="[('partner_id', 'child_of', self)]"/>
<group expand="0" string="Group By...">
<filter string="Type" name="type" domain="" context="{'group_by': 'type'}"/>
<filter string="Profile" name="profile" domain="" context="{'group_by': 'profile_id'}"/>
</group>
</search>

View File

@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="account_asset_group_view_form" model="ir.ui.view">
<field name="name">account.asset.group.form</field>
<field name="model">account.asset.group</field>
<field name="arch" type="xml">
<form string="Asset Group">
<group>
<group>
<field name="name"/>
<field name="parent_id"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
</group>
</group>
</form>
</field>
</record>
<record id="account_asset_group_view_tree" model="ir.ui.view">
<field name="name">account.asset.group.tree</field>
<field name="model">account.asset.group</field>
<field name="arch" type="xml">
<tree string="Asset Group">
<field name="name"/>
<field name="parent_id"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<record id="account_asset_group_view_search" model="ir.ui.view">
<field name="name">account.asset.group.search</field>
<field name="model">account.asset.group</field>
<field name="arch" type="xml">
<search string="Search Asset Group">
<field name="name" string="Asset Group"/>
<field name="parent_id"/>
</search>
</field>
</record>
<record id="account_asset_group_action" model="ir.actions.act_window">
<field name="name">Asset Groups</field>
<field name="res_model">account.asset.group</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
</data>
</odoo>

View File

@@ -10,7 +10,7 @@
<group>
<group>
<field name="name"/>
<field name="parent_id" required="1"/>
<field name="group_id"/>
<field name="asset_product_item"/>
<field name="active"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>

View File

@@ -24,4 +24,7 @@
action="account_asset_profile_action"
parent="menu_finance_config_assets"/>
<menuitem id="account_asset_group_menu"
action="account_asset_group_action"
parent="menu_finance_config_assets"/>
</odoo>

View File

@@ -18,7 +18,7 @@ class AccountAssetCompute(models.TransientModel):
@api.multi
def asset_compute(self):
assets = self.env['account.asset'].search(
[('state', '=', 'open'), ('type', '=', 'normal')])
[('state', '=', 'open')])
created_move_ids, error_log = assets._compute_entries(
self.date_end, check_triggers=True)