mirror of
https://github.com/OCA/account-financial-tools.git
synced 2025-02-02 12:47:26 +02:00
[MIG+FIX+IMP] account_asset_management: Rework migration scripts + make asset group m2m
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
{
|
||||
'name': 'Assets Management',
|
||||
'version': '12.0.1.2.0',
|
||||
'version': '12.0.2.0.0',
|
||||
'license': 'AGPL-3',
|
||||
'depends': [
|
||||
'account',
|
||||
|
||||
@@ -198,4 +198,4 @@ DEL ir.ui.view: account_asset.view_account_asset_search
|
||||
DEL ir.ui.view: account_asset.view_asset_asset_report_search
|
||||
DEL ir.ui.view: account_asset.view_asset_depreciation_confirmation_wizard
|
||||
DEL ir.ui.view: account_asset.view_invoice_asset_category
|
||||
DEL ir.ui.view: account_asset.view_product_template_form_inherit
|
||||
DEL ir.ui.view: account_asset.view_product_template_form_inherit
|
||||
@@ -0,0 +1,73 @@
|
||||
# Copyright 2019 Apps2GROW - Henrik Norlin
|
||||
# Copyright 2019 Tecnativa - Pedro M. Baeza
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
from openupgradelib import openupgrade
|
||||
from psycopg2 import sql
|
||||
|
||||
|
||||
def adjust_asset_values(env):
|
||||
"""Avoid method_time != 'year' when possible + adjust other values
|
||||
in assets and asset profiles.
|
||||
"""
|
||||
# Copy analytic account value
|
||||
openupgrade.logged_query(
|
||||
env.cr, """
|
||||
UPDATE account_asset aa
|
||||
SET account_analytic_id = aap.account_analytic_id
|
||||
FROm account_asset_profile aap
|
||||
WHERE aa.profile_id = aap.id""",
|
||||
)
|
||||
# Adjust method_time, method_number and method_period
|
||||
number = sql.Identifier(openupgrade.get_legacy_name('method_number'))
|
||||
period = sql.Identifier(openupgrade.get_legacy_name('method_period'))
|
||||
for table in ['account_asset_profile', 'account_asset']:
|
||||
table = sql.Identifier(table)
|
||||
openupgrade.logged_query(
|
||||
env.cr, sql.SQL("""
|
||||
UPDATE {table}
|
||||
SET method_time = 'year',
|
||||
method_number = ({number} * {period}) / 12
|
||||
WHERE MOD({number} * {period}, 12) = 0
|
||||
""").format(
|
||||
number=number,
|
||||
period=period,
|
||||
table=table,
|
||||
),
|
||||
)
|
||||
openupgrade.logged_query(
|
||||
env.cr, sql.SQL("""
|
||||
UPDATE {table}
|
||||
SET method_period = (CASE
|
||||
WHEN {period} = 1 THEN 'month'
|
||||
WHEN {period} = 3 THEN 'quarter'
|
||||
WHEN {period} = 12 THEN 'year'
|
||||
END)
|
||||
WHERE {period} IN (1, 3, 12)
|
||||
""").format(
|
||||
period=period,
|
||||
table=table,
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
def adjust_aml_values(env):
|
||||
openupgrade.logged_query(
|
||||
env.cr, """
|
||||
UPDATE account_move_line aml
|
||||
SET asset_id = aa.id,
|
||||
asset_profile_id = aa.profile_id
|
||||
FROM account_asset aa,
|
||||
account_asset_line aal
|
||||
WHERE aal.move_id = aml.move_id
|
||||
AND aa.id = aal.asset_id""",
|
||||
)
|
||||
|
||||
|
||||
@openupgrade.migrate()
|
||||
def migrate(env, version):
|
||||
copied_column = openupgrade.get_legacy_name('method_time')
|
||||
if not openupgrade.column_exists(env.cr, 'account_asset', copied_column):
|
||||
# We avoid this migration if `account_asset` was not installed in v11
|
||||
return
|
||||
adjust_asset_values(env)
|
||||
adjust_aml_values(env)
|
||||
@@ -0,0 +1,65 @@
|
||||
# Copyright 2019 Apps2GROW - Henrik Norlin
|
||||
# Copyright 2019 Tecnativa - Pedro M. Baeza
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
from openupgradelib import openupgrade
|
||||
|
||||
_model_renames = [
|
||||
('account.asset.category', 'account.asset.profile'),
|
||||
('account.asset.depreciation.line', 'account.asset.line'),
|
||||
('account.asset.asset', 'account.asset'),
|
||||
]
|
||||
|
||||
_table_renames = [
|
||||
(old.replace('.', '_'), new.replace('.', '_'))
|
||||
for (old, new) in _model_renames
|
||||
]
|
||||
|
||||
_column_copies = {
|
||||
'account_asset': [
|
||||
('method_number', None, None),
|
||||
('method_time', None, None),
|
||||
],
|
||||
'account_asset_profile': [
|
||||
('method_number', None, None),
|
||||
('method_time', None, None),
|
||||
],
|
||||
}
|
||||
|
||||
_column_renames = {
|
||||
'account_asset': [
|
||||
('method_period', None),
|
||||
],
|
||||
'account_asset_profile': [
|
||||
('method_period', None),
|
||||
],
|
||||
}
|
||||
|
||||
_field_renames = [
|
||||
('account.asset', 'account_asset', 'category_id', 'profile_id'),
|
||||
('account.asset', 'account_asset', 'currency_id', 'company_currency_id'),
|
||||
('account.asset', 'account_asset', 'date', 'date_start'),
|
||||
('account.asset', 'account_asset', 'value', 'purchase_value'),
|
||||
('account.asset.line', 'account_asset_line',
|
||||
'depreciation_date', 'line_date'),
|
||||
('account.asset.profile', 'account_asset_profile',
|
||||
'account_depreciation_expense_id', 'account_expense_depreciation_id'),
|
||||
('account.invoice.line', 'account_invoice_line',
|
||||
'asset_category_id', 'asset_profile_id'),
|
||||
]
|
||||
|
||||
|
||||
@openupgrade.migrate()
|
||||
def migrate(env, version):
|
||||
cr = env.cr
|
||||
if openupgrade.table_exists(cr, 'account_asset_asset'):
|
||||
# `account_asset` module was installed in v11
|
||||
if openupgrade.table_exists(cr, 'account_asset'):
|
||||
# `account_asset_management` module also installed in v11
|
||||
# TODO: Merge in existing tables assets if both module installed
|
||||
pass
|
||||
else:
|
||||
openupgrade.rename_models(cr, _model_renames)
|
||||
openupgrade.rename_tables(cr, _table_renames)
|
||||
openupgrade.copy_columns(cr, _column_copies)
|
||||
openupgrade.rename_columns(cr, _column_renames)
|
||||
openupgrade.rename_fields(env, _field_renames)
|
||||
@@ -1,125 +0,0 @@
|
||||
# Copyright 2019 Apps2GROW - Henrik Norlin
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
from openupgradelib import openupgrade
|
||||
import logging
|
||||
logger = logging.getLogger('OpenUpgrade')
|
||||
|
||||
|
||||
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):
|
||||
cr.execute('''SELECT a.id,
|
||||
a.openupgrade_legacy_12_0_method_number,
|
||||
a.openupgrade_legacy_12_0_method_period,
|
||||
p.account_analytic_id,
|
||||
a.company_id
|
||||
FROM account_asset a
|
||||
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]
|
||||
|
||||
values = {}
|
||||
# Analytic account
|
||||
values['account_analytic_id'] = asset[3] or 'NULL'
|
||||
# Number of years
|
||||
values['method_number'] = \
|
||||
int(no_of_entries * months_between_entries / 12)
|
||||
# Period: month / quarter / year (default: year)
|
||||
if months_between_entries == 3:
|
||||
values['method_period'] = "'quarter'"
|
||||
elif months_between_entries == 1:
|
||||
values['method_period'] = "'month'"
|
||||
|
||||
vals = ['%s = %s' % (key, value) for key, value in values.items()]
|
||||
sql = "UPDATE account_asset SET %s WHERE id = %s" % \
|
||||
(', '.join(vals), asset[0])
|
||||
logger.debug('update_asset: %s' % sql)
|
||||
cr.execute(sql)
|
||||
|
||||
|
||||
def update_asset_profile(cr):
|
||||
cr.execute('''SELECT id,
|
||||
openupgrade_legacy_12_0_method_number,
|
||||
openupgrade_legacy_12_0_method_period,
|
||||
company_id FROM account_asset_profile;''')
|
||||
for profile in cr.fetchall():
|
||||
|
||||
no_of_entries = profile[1]
|
||||
months_between_entries = profile[2]
|
||||
|
||||
values = {}
|
||||
# Number of years
|
||||
values['method_number'] = \
|
||||
int(no_of_entries * months_between_entries / 12)
|
||||
# Period: month / quarter / year (default: year)
|
||||
if months_between_entries == 3:
|
||||
values['method_period'] = "'quarter'"
|
||||
elif months_between_entries == 1:
|
||||
values['method_period'] = "'month'"
|
||||
|
||||
vals = ['{} = {}'.format(key, value) for key, value in values.items()]
|
||||
sql = """UPDATE account_asset_profile
|
||||
SET %s WHERE id = %s""" % (', '.join(vals), profile[0])
|
||||
logger.debug('update_asset_profile: %s' % sql)
|
||||
cr.execute(sql)
|
||||
|
||||
|
||||
def update_move_line(cr):
|
||||
cr.execute("""SELECT l.move_id, l.asset_id, a.profile_id
|
||||
FROM account_asset_line l
|
||||
LEFT JOIN account_asset a ON l.asset_id = a.id
|
||||
WHERE l.move_id IS NOT NULL;""")
|
||||
for line in cr.fetchall():
|
||||
sql = """UPDATE account_move_line
|
||||
SET asset_id = %s, asset_profile_id = %s
|
||||
WHERE move_id = %s""" % (line[1], line[2], line[0])
|
||||
logger.debug('update_move_line: %s' % sql)
|
||||
cr.execute(sql)
|
||||
|
||||
|
||||
@openupgrade.migrate()
|
||||
def migrate(env, version):
|
||||
cr = env.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)
|
||||
@@ -1,66 +0,0 @@
|
||||
# Copyright 2019 Apps2GROW - Henrik Norlin
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
from openupgradelib import openupgrade
|
||||
|
||||
_model_renames1 = [
|
||||
('account.asset.category', 'account.asset.profile'),
|
||||
('account.asset.depreciation.line', 'account.asset.line'),
|
||||
]
|
||||
|
||||
_table_renames1 = [
|
||||
(old.replace('.', '_'), new.replace('.', '_'))
|
||||
for (old, new) in _model_renames1
|
||||
]
|
||||
|
||||
_model_renames2 = [
|
||||
('account.asset.asset', 'account.asset'),
|
||||
]
|
||||
|
||||
_table_renames2 = [
|
||||
(old.replace('.', '_'), new.replace('.', '_'))
|
||||
for (old, new) in _model_renames2
|
||||
]
|
||||
|
||||
_column_copies = {
|
||||
'account_asset': [
|
||||
('method_number', None, None),
|
||||
('method_period', None, None),
|
||||
],
|
||||
'account_asset_profile': [
|
||||
('method_number', None, None),
|
||||
('method_period', None, None),
|
||||
],
|
||||
}
|
||||
|
||||
_field_renames = [
|
||||
('account.asset', 'account_asset', 'category_id', 'profile_id'),
|
||||
('account.asset', 'account_asset', 'currency_id', 'company_currency_id'),
|
||||
('account.asset', 'account_asset', 'date', 'date_start'),
|
||||
('account.asset', 'account_asset', 'value', 'purchase_value'),
|
||||
('account.asset.line', 'account_asset_line',
|
||||
'depreciation_date', 'line_date'),
|
||||
('account.asset.profile', 'account_asset_profile',
|
||||
'account_depreciation_expense_id', 'account_expense_depreciation_id'),
|
||||
('account.invoice.line', 'account_invoice_line',
|
||||
'asset_category_id', 'asset_profile_id'),
|
||||
]
|
||||
|
||||
|
||||
@openupgrade.migrate()
|
||||
def migrate(env, version):
|
||||
cr = env.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
|
||||
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)
|
||||
@@ -0,0 +1,85 @@
|
||||
# Copyright 2019 Apps2GROW - Henrik Norlin
|
||||
# Copyright 2019 Tecnativa - Pedro M. Baeza
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
from openupgradelib import openupgrade
|
||||
from psycopg2 import sql
|
||||
|
||||
|
||||
def create_asset_groups(cr):
|
||||
# Add a supporting column for indicating the source asset view
|
||||
origin_column = sql.Identifier(
|
||||
openupgrade.get_legacy_name('view_asset_id'))
|
||||
openupgrade.logged_query(
|
||||
cr, sql.SQL("ALTER TABLE account_asset_group ADD {} int4").format(
|
||||
origin_column,
|
||||
),
|
||||
)
|
||||
# Now fill new table recursively attending parents
|
||||
parent_column = sql.Identifier(openupgrade.get_legacy_name('parent_id'))
|
||||
parent_group_ids = ('NULL', )
|
||||
query_sql = sql.SQL("""
|
||||
INSERT INTO account_asset_group (
|
||||
name, code, company_id, parent_id, create_uid,
|
||||
create_date, write_date, write_uid, {origin_column}
|
||||
)
|
||||
SELECT va.name, va.code, va.company_id, aag2.id, va.create_uid,
|
||||
va.create_date, va.write_date, va.write_uid, va.id
|
||||
FROM {table} va
|
||||
LEFT JOIN account_asset_group aag2
|
||||
ON aag2.{origin_column} = va.{parent_column}
|
||||
WHERE {parent_column} {rest_sql}
|
||||
RETURNING id
|
||||
""")
|
||||
isnull = sql.SQL("IS NULL")
|
||||
inids = sql.SQL("IN %(ids)s")
|
||||
while parent_group_ids:
|
||||
query = query_sql.format(
|
||||
origin_column=origin_column,
|
||||
table=sql.Identifier(
|
||||
openupgrade.get_legacy_name('account_asset_view')
|
||||
),
|
||||
parent_column=parent_column,
|
||||
rest_sql=isnull if parent_group_ids == ('NULL', ) else inids
|
||||
)
|
||||
openupgrade.logged_query(cr, query, {'ids': parent_group_ids})
|
||||
parent_group_ids = tuple(x[0] for x in cr.fetchall())
|
||||
|
||||
|
||||
def update_asset_group_links(cr):
|
||||
parent_column = sql.Identifier(openupgrade.get_legacy_name('parent_id'))
|
||||
origin_column = sql.Identifier(
|
||||
openupgrade.get_legacy_name('view_asset_id'))
|
||||
openupgrade.logged_query(
|
||||
cr, sql.SQL("""
|
||||
INSERT INTO account_asset_profile_group_rel
|
||||
(profile_id, group_id)
|
||||
SELECT aap.id, aag.id
|
||||
FROM account_asset_profile aap
|
||||
JOIN account_asset_group aag
|
||||
ON aag.{origin_column} = aap.{parent_column}""").format(
|
||||
parent_column=parent_column,
|
||||
origin_column=origin_column,
|
||||
),
|
||||
)
|
||||
openupgrade.logged_query(
|
||||
cr, sql.SQL("""
|
||||
INSERT INTO account_asset_group_rel
|
||||
(asset_id, group_id)
|
||||
SELECT aa.id, aag.id
|
||||
FROM account_asset aa
|
||||
JOIN account_asset_group aag
|
||||
ON aag.{origin_column} = aa.{parent_column}""").format(
|
||||
parent_column=parent_column,
|
||||
origin_column=origin_column,
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@openupgrade.migrate()
|
||||
def migrate(env, version):
|
||||
column = openupgrade.get_legacy_name('parent_id')
|
||||
if openupgrade.column_exists(env.cr, 'account_asset', column):
|
||||
# if migrating directly from v11 `account_asset` module, there are no
|
||||
# view assets nor parents
|
||||
create_asset_groups(env.cr)
|
||||
update_asset_group_links(env.cr)
|
||||
@@ -0,0 +1,49 @@
|
||||
# Copyright 2019 Tecnativa - Pedro M. Baeza
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
from openupgradelib import openupgrade
|
||||
from psycopg2 import sql
|
||||
|
||||
|
||||
_column_renames = {
|
||||
'account_asset_profile': [
|
||||
('parent_id', None),
|
||||
],
|
||||
'account_asset': [
|
||||
('parent_id', None),
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
def move_view_assets(cr):
|
||||
"""Copy view assets to other table for preserving them, but outside of the
|
||||
main table, so remove them from there.
|
||||
"""
|
||||
temp_table = sql.Identifier(
|
||||
openupgrade.get_legacy_name('account_asset_view'))
|
||||
openupgrade.logged_query(
|
||||
cr, sql.SQL("""
|
||||
CREATE TABLE {} AS (
|
||||
SELECT * FROM account_asset
|
||||
WHERE type='view'
|
||||
)""").format(temp_table),
|
||||
)
|
||||
openupgrade.logged_query(cr, "DELETE FROM account_asset WHERE type='view'")
|
||||
|
||||
|
||||
@openupgrade.migrate()
|
||||
def migrate(env, version):
|
||||
if openupgrade.column_exists(env.cr, 'account_asset', 'parent_id'):
|
||||
# if migrating directly from v11 `account_asset` module, there are no
|
||||
# view assets nor parents
|
||||
openupgrade.rename_columns(env.cr, _column_renames)
|
||||
openupgrade.logged_query(
|
||||
env.cr, """
|
||||
ALTER TABLE account_asset
|
||||
DROP CONSTRAINT account_asset_parent_id_fkey""",
|
||||
)
|
||||
openupgrade.logged_query(
|
||||
env.cr, """
|
||||
ALTER TABLE account_asset_profile
|
||||
DROP CONSTRAINT account_asset_profile_parent_id_fkey""",
|
||||
)
|
||||
move_view_assets(env.cr)
|
||||
@@ -80,9 +80,12 @@ class AccountAsset(models.Model):
|
||||
readonly=True,
|
||||
required=True,
|
||||
states={'draft': [('readonly', False)]})
|
||||
group_id = fields.Many2one(
|
||||
group_ids = fields.Many2many(
|
||||
comodel_name='account.asset.group',
|
||||
string='Asset Group')
|
||||
relation="account_asset_group_rel",
|
||||
column1="asset_id",
|
||||
column2="group_id",
|
||||
string='Asset Groups')
|
||||
date_start = fields.Date(
|
||||
string='Asset Start Date',
|
||||
readonly=True,
|
||||
@@ -276,6 +279,7 @@ class AccountAsset(models.Model):
|
||||
'method_progress_factor': profile.method_progress_factor,
|
||||
'prorata': profile.prorata,
|
||||
'account_analytic_id': profile.account_analytic_id,
|
||||
'group_ids': profile.group_ids,
|
||||
})
|
||||
|
||||
@api.onchange('method_time')
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
# Copyright 2009-2018 Noviat
|
||||
# Copyright 2019 Tecnativa - Pedro M. Baeza
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import api, fields, models
|
||||
@@ -8,11 +9,15 @@ class AccountAssetGroup(models.Model):
|
||||
_name = 'account.asset.group'
|
||||
_description = 'Asset Group'
|
||||
_order = 'name'
|
||||
_parent_store = True
|
||||
|
||||
name = fields.Char(string='Name', size=64, required=True, index=True)
|
||||
code = fields.Char(index=True)
|
||||
parent_path = fields.Char(index=True)
|
||||
company_id = fields.Many2one(
|
||||
comodel_name='res.company',
|
||||
string='Company', required=True,
|
||||
string='Company',
|
||||
required=True,
|
||||
default=lambda self: self._default_company_id())
|
||||
parent_id = fields.Many2one(
|
||||
comodel_name='account.asset.group',
|
||||
|
||||
@@ -47,9 +47,12 @@ class AccountAssetProfile(models.Model):
|
||||
comodel_name='res.company',
|
||||
string='Company', required=True,
|
||||
default=lambda self: self._default_company_id())
|
||||
group_id = fields.Many2one(
|
||||
group_ids = fields.Many2many(
|
||||
comodel_name='account.asset.group',
|
||||
string='Asset Group')
|
||||
relation="account_asset_profile_group_rel",
|
||||
column1="profile_id",
|
||||
column2="group_id",
|
||||
string='Asset Groups')
|
||||
method = fields.Selection(
|
||||
selection=lambda self: self._selection_method(),
|
||||
string='Computation Method',
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
<separator string="Other Information" colspan="4"/>
|
||||
<group colspan="4" col="4">
|
||||
<field name="profile_id"/>
|
||||
<field name="group_id"/>
|
||||
<field name="group_ids" widget="many2many_tags"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="account_analytic_id" groups="analytic.group_analytic_accounting"/>
|
||||
</group>
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="parent_id"/>
|
||||
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
|
||||
</group>
|
||||
@@ -22,8 +23,9 @@
|
||||
<field name="name">account.asset.group.tree</field>
|
||||
<field name="model">account.asset.group</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Asset Group">
|
||||
<tree string="Asset Group" editable="bottom">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="parent_id"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
</tree>
|
||||
@@ -36,6 +38,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Asset Group">
|
||||
<field name="name" string="Asset Group"/>
|
||||
<field name="code" />
|
||||
<field name="parent_id"/>
|
||||
</search>
|
||||
</field>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="group_id"/>
|
||||
<field name="group_ids" widget="many2many_tags"/>
|
||||
<field name="asset_product_item"/>
|
||||
<field name="active"/>
|
||||
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
|
||||
|
||||
Reference in New Issue
Block a user