User feedback: 'i like the odoo enterprise style reports, I hate our style.'
Replaces our custom 'o_fusion_reports' visual with a faithful adaptation
of Enterprise account_reports. Same .account_report root class, same
table semantics (line_name + line_cell + line_level_N), same border
treatment (1px gray-300 borders, 0.25rem radius, sticky thead), same
button hover behavior (gray-300 -> enterprise-action-color), same dense
0.8rem font-size + padded cells.
SCSS layout:
- reports.scss in web.assets_backend bundle (eager light)
- reports.dark.scss in web.assets_web_dark bundle (lazy dark mode)
- _variables.scss reduced to spacing/typography only -- colors use
Odoo's \$o-* SCSS vars so dark mode flips automatically via the
separate dark bundle
- old dark_mode.scss removed (was using non-Odoo [data-color-scheme]
selector that never matched anything)
QWeb templates rewritten to mirror Enterprise's structure:
- report_viewer.xml roots at .account_report with scroll container
- report_table.xml uses Enterprise's td.line_name + td.line_cell with
.wrapper > .content nesting; partner-grouped reports now actually
render their aging buckets (previously showed nothing)
- period_filter.xml is now a clean Bootstrap-styled inline filter bar
Kept Fusion-only components but restyled to fit:
- anomaly_strip uses Bootstrap alert-{danger,warning,info} colors
- ai_commentary_panel is a plain bordered panel, no gradients/emojis
- drill_down_dialog unchanged (already a Bootstrap modal)
Made-with: Cursor
98 lines
4.9 KiB
XML
98 lines
4.9 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<!--
|
|
One ir.actions.client per built-in report. tag="fusion_reports"
|
|
dispatches to the OWL ReportViewer (registered in
|
|
static/src/views/report_viewer/report_viewer_view.js).
|
|
|
|
The viewer reads ``default_report_type``, ``default_report_code``,
|
|
and ``default_comparison`` from the action context to pick which
|
|
fusion.report to render with which line_specs.
|
|
|
|
Why ir.actions.client and not ir.actions.act_window:
|
|
a custom OWL view type (view_mode='fusion_reports') would require
|
|
a placeholder ir.ui.view record per action plus a registered "view"
|
|
in the views registry; the standard act_window resolver also rejects
|
|
view_modes that have no corresponding ir.ui.view record. Client
|
|
actions are the V19-canonical pattern for record-less dashboards.
|
|
-->
|
|
|
|
<!-- ============================================================
|
|
CORE REPORTS (one per Fusion engine method)
|
|
============================================================ -->
|
|
|
|
<record id="action_fusion_report_pnl" model="ir.actions.client">
|
|
<field name="name">Profit and Loss</field>
|
|
<field name="tag">fusion_reports</field>
|
|
<field name="context">{'default_report_type': 'pnl', 'default_report_code': 'pnl'}</field>
|
|
</record>
|
|
|
|
<record id="action_fusion_report_balance_sheet" model="ir.actions.client">
|
|
<field name="name">Balance Sheet</field>
|
|
<field name="tag">fusion_reports</field>
|
|
<field name="context">{'default_report_type': 'balance_sheet', 'default_report_code': 'balance_sheet'}</field>
|
|
</record>
|
|
|
|
<record id="action_fusion_report_trial_balance" model="ir.actions.client">
|
|
<field name="name">Trial Balance</field>
|
|
<field name="tag">fusion_reports</field>
|
|
<field name="context">{'default_report_type': 'trial_balance', 'default_report_code': 'trial_balance'}</field>
|
|
</record>
|
|
|
|
<record id="action_fusion_report_general_ledger" model="ir.actions.client">
|
|
<field name="name">General Ledger</field>
|
|
<field name="tag">fusion_reports</field>
|
|
<field name="context">{'default_report_type': 'general_ledger', 'default_report_code': 'general_ledger'}</field>
|
|
</record>
|
|
|
|
<!-- ============================================================
|
|
SECONDARY PnL VARIANTS (engine.compute_pnl with code)
|
|
============================================================ -->
|
|
|
|
<record id="action_fusion_report_cash_flow" model="ir.actions.client">
|
|
<field name="name">Cash Flow Statement</field>
|
|
<field name="tag">fusion_reports</field>
|
|
<field name="context">{'default_report_type': 'pnl', 'default_report_code': 'cash_flow', 'default_comparison': 'previous_year'}</field>
|
|
</record>
|
|
|
|
<record id="action_fusion_report_executive_summary" model="ir.actions.client">
|
|
<field name="name">Executive Summary</field>
|
|
<field name="tag">fusion_reports</field>
|
|
<field name="context">{'default_report_type': 'pnl', 'default_report_code': 'executive_summary', 'default_comparison': 'previous_year'}</field>
|
|
</record>
|
|
|
|
<record id="action_fusion_report_annual_statements" model="ir.actions.client">
|
|
<field name="name">Annual Statements</field>
|
|
<field name="tag">fusion_reports</field>
|
|
<field name="context">{'default_report_type': 'pnl', 'default_report_code': 'annual_statements', 'default_comparison': 'previous_year'}</field>
|
|
</record>
|
|
|
|
<record id="action_fusion_report_tax_summary" model="ir.actions.client">
|
|
<field name="name">Tax Summary</field>
|
|
<field name="tag">fusion_reports</field>
|
|
<field name="context">{'default_report_type': 'trial_balance', 'default_report_code': 'tax_summary'}</field>
|
|
</record>
|
|
|
|
<!-- ============================================================
|
|
PARTNER-GROUPED REPORTS
|
|
============================================================ -->
|
|
|
|
<record id="action_fusion_report_aged_receivable" model="ir.actions.client">
|
|
<field name="name">Aged Receivable</field>
|
|
<field name="tag">fusion_reports</field>
|
|
<field name="context">{'default_report_type': 'aged_receivable', 'default_report_code': 'aged_receivable'}</field>
|
|
</record>
|
|
|
|
<record id="action_fusion_report_aged_payable" model="ir.actions.client">
|
|
<field name="name">Aged Payable</field>
|
|
<field name="tag">fusion_reports</field>
|
|
<field name="context">{'default_report_type': 'aged_payable', 'default_report_code': 'aged_payable'}</field>
|
|
</record>
|
|
|
|
<record id="action_fusion_report_partner_ledger" model="ir.actions.client">
|
|
<field name="name">Partner Ledger</field>
|
|
<field name="tag">fusion_reports</field>
|
|
<field name="context">{'default_report_type': 'partner_ledger', 'default_report_code': 'partner_ledger'}</field>
|
|
</record>
|
|
</odoo>
|