diff --git a/fusion_accounting_reports/__manifest__.py b/fusion_accounting_reports/__manifest__.py index f1a2ba28..7c0136e6 100644 --- a/fusion_accounting_reports/__manifest__.py +++ b/fusion_accounting_reports/__manifest__.py @@ -1,6 +1,6 @@ { 'name': 'Fusion Accounting Reports', - 'version': '19.0.1.0.23', + 'version': '19.0.1.0.24', 'category': 'Accounting/Accounting', 'summary': 'AI-augmented financial reports (P&L, balance sheet, trial balance, GL).', 'description': """ @@ -43,6 +43,9 @@ menu hides; the engine and AI tools remain available for the chat. 'fusion_accounting_reports/static/src/scss/reports.scss', 'fusion_accounting_reports/static/src/scss/dark_mode.scss', 'fusion_accounting_reports/static/src/services/reports_service.js', + 'fusion_accounting_reports/static/src/views/report_viewer/report_viewer.js', + 'fusion_accounting_reports/static/src/views/report_viewer/report_viewer.xml', + 'fusion_accounting_reports/static/src/views/report_viewer/report_viewer_view.js', ], }, 'installable': True, diff --git a/fusion_accounting_reports/static/src/views/report_viewer/report_viewer.js b/fusion_accounting_reports/static/src/views/report_viewer/report_viewer.js new file mode 100644 index 00000000..b99ec52b --- /dev/null +++ b/fusion_accounting_reports/static/src/views/report_viewer/report_viewer.js @@ -0,0 +1,47 @@ +/** @odoo-module **/ + +import { Component, useState, onWillStart } from "@odoo/owl"; +import { useService } from "@web/core/utils/hooks"; +import { ReportTable } from "../../components/report_table/report_table"; +import { PeriodFilter } from "../../components/period_filter/period_filter"; +import { DrillDownDialog } from "../../components/drill_down_dialog/drill_down_dialog"; +import { AiCommentaryPanel } from "../../components/ai_commentary_panel/ai_commentary_panel"; +import { AnomalyStrip } from "../../components/anomaly_strip/anomaly_strip"; + +export class ReportViewer extends Component { + static template = "fusion_accounting_reports.ReportViewer"; + static props = { "*": true }; + static components = { + ReportTable, PeriodFilter, DrillDownDialog, + AiCommentaryPanel, AnomalyStrip, + }; + + setup() { + this.reports = useService("fusion_reports"); + this.state = useState(this.reports.state); + + const ctx = this.props.action?.context || {}; + const reportType = ctx.default_report_type || 'pnl'; + const companyId = this.env.services.user?.context?.allowed_company_ids?.[0]; + + onWillStart(async () => { + await this.reports.loadAvailableReports(companyId); + const today = new Date(); + const year = today.getFullYear(); + await this.reports.runReport( + reportType, `${year}-01-01`, `${year}-12-31`, 'none'); + }); + } + + onDrillDown(accountId, label) { + this.reports.drillDown(accountId, label); + } + + onCloseDrill() { + this.reports.closeDrillDown(); + } + + async onGenerateCommentary() { + await this.reports.generateCommentary({ forceRegenerate: false }); + } +} diff --git a/fusion_accounting_reports/static/src/views/report_viewer/report_viewer.xml b/fusion_accounting_reports/static/src/views/report_viewer/report_viewer.xml new file mode 100644 index 00000000..3d90b445 --- /dev/null +++ b/fusion_accounting_reports/static/src/views/report_viewer/report_viewer.xml @@ -0,0 +1,41 @@ + + + + +
+
+
+

+ +

+
+ +
+
+
+ +
+
+ + + + + + + + + + +
+
+ +
diff --git a/fusion_accounting_reports/static/src/views/report_viewer/report_viewer_view.js b/fusion_accounting_reports/static/src/views/report_viewer/report_viewer_view.js new file mode 100644 index 00000000..30f17c6d --- /dev/null +++ b/fusion_accounting_reports/static/src/views/report_viewer/report_viewer_view.js @@ -0,0 +1,14 @@ +/** @odoo-module **/ + +import { registry } from "@web/core/registry"; +import { ReportViewer } from "./report_viewer"; + +export const fusionReportsView = { + type: "fusion_reports", + Controller: ReportViewer, + display_name: "Fusion Financial Reports", + icon: "fa-line-chart", + multiRecord: true, +}; + +registry.category("views").add("fusion_reports", fusionReportsView);