# 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')])