User reported two UX problems after the Enterprise uninstall:
1. Each Fusion sub-module showed up as its own standalone app in the
launcher (Bank Reconciliation, Financial Reports, Asset Management,
Customer Follow-ups, Fusion AI). Should look like ONE Accounting app.
2. Clicking the 'Fusion Accounting' app still opened the migration
wizard even though Enterprise had been uninstalled and there was
nothing to migrate.
Fix:
- Move all Fusion sub-module roots under the Community account.menu_finance
hierarchy:
* Bank Reconciliation \u2192 Accounting > Bank Reconciliation
* Asset Management \u2192 Accounting > Asset Management
* Financial Reports \u2192 Reporting > Financial Reports
* Follow-ups \u2192 Customers > Follow-ups
* Fusion AI \u2192 Configuration > Fusion AI
* Migrate from Ent. \u2192 Configuration > Migrate from Enterprise
- Rename Community's 'Invoicing' top-level menu to 'Accounting' (what
Enterprise's accountant module did). Set the Fusion icon on it. This
rename lives in the meta-module so it only fires when the full suite
is installed.
- Add second computed group 'group_fusion_show_when_enterprise_present'
(inverse of the existing 'absent' group). Migration menus are gated
by this group, so they auto-hide once Enterprise is uninstalled.
- _fusion_recompute_coexistence_group now maintains both groups in lockstep.
- Meta-module now also depends on l10n_ca, hr_payroll, ocr, documents
(the Phase 6/7 sub-modules) for one-click full-suite install.
- Fusion AI menu's old parent ('accountant.menu_accounting') was deleted
with the Enterprise uninstall \u2014 reparented under Configuration.
Result: single 'Accounting' top-level menu containing the standard
V19 Community structure (Dashboard / Customers / Vendors / Accounting /
Reporting / Configuration), with all Fusion features slotted into the
appropriate sub-section. Verified live on westin-v19: 6 separate
Fusion top-level menus collapsed to 1; coexistence groups recomputed
(absent=10 users, present=0 users); 604/604 tests pass.
Version bump: all touched modules \u2192 19.0.1.1.0.
Made-with: Cursor
114 lines
8.3 KiB
Python
114 lines
8.3 KiB
Python
{
|
|
'name': 'Fusion Accounting — Bank Reconciliation',
|
|
'version': '19.0.1.1.0',
|
|
'category': 'Accounting/Accounting',
|
|
'sequence': 28,
|
|
'summary': 'Native V19 bank reconciliation widget with AI confidence scoring + behavioural learning.',
|
|
'description': """
|
|
Fusion Accounting — Bank Reconciliation
|
|
========================================
|
|
Replaces Odoo Enterprise's account_accountant bank-rec widget with a
|
|
native V19 OWL implementation reading/writing Community's
|
|
account.partial.reconcile tables.
|
|
|
|
Features:
|
|
- Strict mirror of all Enterprise UI components (zero functional loss)
|
|
- AI confidence badges with one-click Accept and ranked alternatives
|
|
- Behavioural learning from historical reconciliations
|
|
- Local LLM ready (Ollama, LM Studio) via OpenAI-compatible adapter
|
|
- Coexists with account_accountant (Enterprise wins by default)
|
|
|
|
Built by Nexa Systems Inc.
|
|
""",
|
|
'icon': '/fusion_accounting_bank_rec/static/description/icon.png',
|
|
'author': 'Nexa Systems Inc.',
|
|
'website': 'https://nexasystems.ca',
|
|
'maintainer': 'Nexa Systems Inc.',
|
|
'depends': ['fusion_accounting_core', 'fusion_accounting_migration'],
|
|
'external_dependencies': {
|
|
'python': ['hypothesis'],
|
|
},
|
|
'data': [
|
|
'security/ir.model.access.csv',
|
|
'data/cron.xml',
|
|
'wizards/auto_reconcile_wizard_views.xml',
|
|
'wizards/bulk_reconcile_wizard_views.xml',
|
|
'reports/migration_audit_report_views.xml',
|
|
'reports/migration_audit_report_action.xml',
|
|
'views/menu_views.xml',
|
|
],
|
|
'assets': {
|
|
'web.assets_backend': [
|
|
'fusion_accounting_bank_rec/static/src/scss/_variables.scss',
|
|
'fusion_accounting_bank_rec/static/src/scss/bank_reconciliation.scss',
|
|
'fusion_accounting_bank_rec/static/src/scss/ai_suggestion.scss',
|
|
'fusion_accounting_bank_rec/static/src/scss/dark_mode.scss',
|
|
'fusion_accounting_bank_rec/static/src/services/bank_reconciliation_service.js',
|
|
'fusion_accounting_bank_rec/static/src/views/kanban/bank_rec_kanban_controller.js',
|
|
'fusion_accounting_bank_rec/static/src/views/kanban/bank_rec_kanban_renderer.js',
|
|
'fusion_accounting_bank_rec/static/src/views/kanban/bank_rec_kanban_view.js',
|
|
'fusion_accounting_bank_rec/static/src/views/kanban/bank_rec_kanban.xml',
|
|
# OWL component mirror — Enterprise account_accountant bank-rec.
|
|
# Re-export shim so mirrored components can use the relative
|
|
# `../bank_reconciliation_service` import unchanged.
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/bank_reconciliation_service.js',
|
|
# Batch 1 (Task 30) — display components
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/statement_line/statement_line.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/statement_line/statement_line.xml',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/statement_summary/statement_summary.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/statement_summary/statement_summary.xml',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/line_info_pop_over/line_info_pop_over.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/line_info_pop_over/line_info_pop_over.xml',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/reconciled_line_name/reconciled_line_name.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/reconciled_line_name/reconciled_line_name.xml',
|
|
# Batch 2 (Task 31) — action + edit components
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/button/button.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/button/button.xml',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/button_list/button_list.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/button_list/button_list.xml',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/line_to_reconcile/line_to_reconcile.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/line_to_reconcile/line_to_reconcile.xml',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/list_view/list.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/list_view/list_view_many2one_multi_edit.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/list_view/list_view_many2one_multi_edit.xml',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/apply_amount/apply_amount.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/apply_amount/apply_amount.xml',
|
|
# Batch 3 (Task 32) — dialog components
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/bankrec_form_dialog/bankrec_form_dialog.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/bankrec_form_dialog/bankrec_form_dialog.xml',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/search_dialog/search_dialog.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/search_dialog/search_dialog.xml',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/search_dialog/search_dialog_list.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/search_dialog/search_dialog_list.xml',
|
|
# Batch 4 (Task 33) — auxiliary components
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/quick_create/quick_create.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/quick_create/quick_create.xml',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/chatter/chatter.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/file_uploader/file_uploader.js',
|
|
# Fusion-only (Task 34) — AI suggestion UI
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/ai_suggestion/ai_suggestion_strip.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/ai_suggestion/ai_suggestion_strip.xml',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/ai_suggestion/ai_alternatives_panel.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/ai_suggestion/ai_alternatives_panel.xml',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/ai_suggestion/ai_reasoning_tooltip.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/ai_suggestion/ai_reasoning_tooltip.xml',
|
|
# Fusion-only (Task 35) — batch action bar + reconcile model picker
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/batch_action_bar/batch_action_bar.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/batch_action_bar/batch_action_bar.xml',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/reconcile_model_picker/reconcile_model_picker.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/reconcile_model_picker/reconcile_model_picker.xml',
|
|
# Fusion-only (Task 36) — attachment strip + partner history panel
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/attachment_strip/attachment_strip.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/attachment_strip/attachment_strip.xml',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/partner_history_panel/partner_history_panel.js',
|
|
'fusion_accounting_bank_rec/static/src/components/bank_reconciliation/partner_history_panel/partner_history_panel.xml',
|
|
],
|
|
'web.assets_tests': [
|
|
'fusion_accounting_bank_rec/static/src/tours/bank_rec_tours.js',
|
|
],
|
|
},
|
|
'installable': True,
|
|
'application': False,
|
|
'license': 'OPL-1',
|
|
}
|