"""Migration wizard skeleton. Per-feature migration logic (account.asset -> fusion.asset, etc.) is added by each fusion sub-module that replaces an Enterprise feature, by extending this wizard via _inherit. Phase 0 ships the wizard with no migrations registered. Phase 1 will add the bank-rec verification check. Phase 6 will add asset migration, etc. """ from odoo import _, api, fields, models from ..models.ir_module_module import GUARDED_MODULES class FusionMigrationWizard(models.TransientModel): _name = "fusion.migration.wizard" _description = "Migrate from Odoo Enterprise to Fusion Accounting" enterprise_modules_detected = fields.Char( compute='_compute_detected', string="Enterprise Modules Detected", ) notes = fields.Text(default=lambda self: self._default_notes()) def _default_notes(self): return _( "This wizard migrates data from Odoo Enterprise accounting modules " "to Fusion Accounting tables. Run before uninstalling Enterprise. " "After a successful run, each migrated module is marked complete " "and the Enterprise uninstall safety guard will allow uninstall.\n\n" "Phase 0 of the roadmap ships this wizard as a shell. As Phase 1, " "Phase 5, Phase 6, etc. ship, each adds its own migration step here." ) @api.depends_context('uid') def _compute_detected(self): Mod = self.env['ir.module.module'].sudo() installed = Mod.search([ ('name', 'in', list(GUARDED_MODULES)), ('state', '=', 'installed'), ]) for w in self: w.enterprise_modules_detected = ', '.join(installed.mapped('name')) or _("None") def action_run_migration(self): """Stub: Phase 0 has no migrations to run. Sub-modules extend this method to perform their per-module migration, then set the corresponding fusion_accounting.migration..completed config param to True. """ return { 'type': 'ir.actions.client', 'tag': 'display_notification', 'params': { 'type': 'info', 'title': _("Nothing to migrate (yet)"), 'message': _( "Phase 0 ships the migration framework but no per-feature " "migrations are registered yet. Each fusion sub-module that " "replaces an Enterprise feature (Phase 1+) will register its " "own migration step here." ), }, }