Files
Odoo-Modules/fusion_accounting_reports
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_reports

AI-augmented financial reports for Odoo 19 Community — a Fusion-native replacement for Enterprise's account_reports module.

What it does

  • CORE reports: Income Statement (P&L), Balance Sheet, Trial Balance, General Ledger (with drill-down to journal items)
  • AI augmentation: variance-based anomaly detection + LLM-generated commentary (Claude / GPT / local LM Studio / Ollama)
  • Wizards: period picker (common presets — MTD, QTD, YTD, last month, custom range) + XLSX export
  • Coexists with Enterprise's account_reports (Enterprise wins by default; the Fusion menu appears only when Enterprise is uninstalled — the engine and AI tools are always available via the AI chat)
  • Multi-currency aware via services/currency_conversion.py
  • Multi-company aware (per-company fusion.report overrides fall back to global definitions)

Quick start

# Install
odoo --addons-path=... -i fusion_accounting_reports

# Open the reports menu (when Enterprise's account_reports is NOT installed)
# Apps → Reports → Open Financial Report

Configuration

LLM commentary (optional)

For LM Studio / Ollama (local):

  • fusion_accounting.openai_base_url = http://host.docker.internal:1234/v1
  • fusion_accounting.openai_model = your local model name
  • fusion_accounting.openai_api_key = lm-studio (or anything non-empty)
  • fusion_accounting.provider.reports_commentary = openai

For OpenAI / Anthropic, set the corresponding API keys via the fusion_accounting_ai config screen — reports_commentary will route through whatever provider you choose.

If no provider is configured, commentary falls back to a deterministic templated summary (no LLM call).

Cron jobs

Two cron handlers live in models/fusion_reports_cron.py:

  • fusion_reports_commentary_refresh — daily, regenerates commentary for the most recently completed period
  • fusion_reports_mv_refresh — every 15 min, refreshes fusion.account.balance.mv

Public engine API

engine = env['fusion.report.engine']

# Income statement
result = engine.compute_pnl(period, comparison='previous_year')

# Balance sheet (point-in-time)
result = engine.compute_balance_sheet(date(2026, 12, 31))

# Trial balance
result = engine.compute_trial_balance(period)

# General ledger (journal items per account)
result = engine.compute_gl(period, account_ids=[1, 2, 3])

# Drill-down (one account, period)
items = engine.drill_down(account_id=1, period=period)

JSON-RPC endpoints

All under /fusion/reports/:

  • POST /fusion/reports/run — single entry-point (dispatches by report_type)
  • POST /fusion/reports/drill_down — journal items for an account+period
  • POST /fusion/reports/commentary — fetch/refresh LLM commentary
  • POST /fusion/reports/anomalies — flagged variances for a period
  • POST /fusion/reports/export_xlsx — XLSX bytes
  • POST /fusion/reports/export_pdf — PDF bytes (via wkhtmltopdf)
  • POST /fusion/reports/list_definitions — available fusion.report records
  • POST /fusion/reports/period_presets — date-range presets for the picker

Test counts

  • 130 logical tests, 0 failures, 0 errors
  • 6 performance benchmarks (tagged benchmark)
  • 1 local-LLM compat smoke (tagged local_llm, skips without LLM)
  • 5 OWL tour tests (tagged tour, skips without websocket-client)

See also

  • CLAUDE.md — agent context (architecture, conventions, perf baseline, Phase 2.5 backlog)
  • UPGRADE_NOTES.md — V19 anchor + migration strategy