Files
Odoo-Modules/fusion_accounting_core
gsinghpal 867b5f71a1
Some checks failed
fusion_accounting CI / test (fusion_accounting_ai) (push) Has been cancelled
fusion_accounting CI / test (fusion_accounting_core) (push) Has been cancelled
fusion_accounting CI / test (fusion_accounting_migration) (push) Has been cancelled
fix(fusion_accounting): unified Accounting menu under one root, hide migration when Enterprise gone
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
2026-04-20 01:04:49 -04:00
..

Fusion Accounting Core

Foundation module for the Fusion Accounting suite.

What it does

  • Defines three security groups: Fusion Accounting User / Manager / Administrator
  • Auto-promotes Odoo account.group_account_user -> Fusion User and account.group_account_manager -> Fusion Admin
  • Declares schema-preservation fields on account.move and account.reconcile.model so that Enterprise extension fields (deferred revenue links, signing user, etc.) survive an Enterprise uninstall
  • Exposes the helper env['ir.module.module']._fusion_is_enterprise_accounting_installed()

Install

This module never installs alone. Install fusion_accounting (the meta-module) or any of the feature sub-modules — they all depend on fusion_accounting_core.

Uninstall

Uninstalling fusion_accounting_core will remove the security groups and the schema-preservation fields. If Enterprise is also installed, uninstalling fusion_accounting_core will cause Odoo to consider the deferred / signing fields owned only by Enterprise — which is the original Enterprise-only state (no data loss, just back to Enterprise-controlled schema).

Troubleshooting

If users are missing the "Fusion Accounting" privilege section in user settings after install, the implied_ids mechanism only fires for newly-added users. Backfill existing users via SQL:

INSERT INTO res_groups_users_rel (gid, uid)
SELECT g.res_id, gu.uid
FROM res_groups_users_rel gu
JOIN ir_model_data g ON g.module = 'fusion_accounting_core' AND g.name = 'group_fusion_accounting_user'
JOIN ir_model_data ag ON ag.module = 'account' AND ag.name = 'group_account_user' AND gu.gid = ag.res_id
ON CONFLICT DO NOTHING;