Files
account-financial-tools/account_asset_management/migrations/12.0.1.0.0/pre-migration.py
2021-01-13 07:53:35 +00:00

110 lines
3.7 KiB
Python

# 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",
),
]
def handle_account_asset_disposal_migration(env):
"""Take care of potentially installed `account_asset_disposal` module.
In this phase we rename stuff for adapting to the new data structure.
"""
cr = env.cr
if not openupgrade.column_exists(cr, "account_asset", "disposal_move_id"):
return
openupgrade.copy_columns(cr, {"account_asset": [("state", None, None)]})
openupgrade.rename_columns(cr, {"account_asset": [("disposal_move_id", None)]})
openupgrade.map_values(
cr,
openupgrade.get_legacy_name("state"),
"state",
[("disposed", "removed")],
table="account_asset",
)
openupgrade.rename_fields(
env,
[
("account.asset", "account_asset", "disposal_date", "date_remove"),
(
"account.asset.profile",
"account_asset_profile",
"account_loss_id",
"account_residual_value_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)
handle_account_asset_disposal_migration(env)
if openupgrade.column_exists(cr, "account_asset", "analytic_account_id"):
# account_asset_analytic module in OCA/account_analytic
openupgrade.rename_fields(
env,
[
(
"account.asset",
"account_asset",
"analytic_account_id",
"account_analytic_id",
)
],
)