Adds a TransientModel wizard fusion.xlsx.export.wizard that lets users pick a report type, date range, and comparison mode, then runs the engine and produces an XLSX via xlsxwriter (in-memory). The wizard exposes a download field that becomes available after export finishes. Works on P&L, Balance Sheet, Trial Balance, and General Ledger. Comparison columns are written when the engine returns a comparison_period in the result. Also wires the controller's /fusion/reports/export_xlsx endpoint to drive the wizard and return base64-encoded XLSX bytes (replaces the not_implemented placeholder). Tests: 2 new (test_xlsx_export.py) + 1 controller test updated. Manifest declares xlsxwriter as an external_dependency. Made-with: Cursor
37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
"""Tests for XLSX export wizard."""
|
|
|
|
from datetime import date
|
|
from odoo.tests.common import TransactionCase, tagged
|
|
|
|
|
|
@tagged('post_install', '-at_install')
|
|
class TestXlsxExport(TransactionCase):
|
|
|
|
def test_export_pnl_produces_xlsx(self):
|
|
try:
|
|
import xlsxwriter # noqa: F401
|
|
except ImportError:
|
|
self.skipTest("xlsxwriter not installed")
|
|
wizard = self.env['fusion.xlsx.export.wizard'].create({
|
|
'report_type': 'pnl',
|
|
'date_from': date(2026, 1, 1),
|
|
'date_to': date(2026, 12, 31),
|
|
})
|
|
wizard.action_export()
|
|
self.assertEqual(wizard.state, 'done')
|
|
self.assertTrue(wizard.xlsx_file)
|
|
self.assertTrue(wizard.xlsx_filename.endswith('.xlsx'))
|
|
|
|
def test_export_balance_sheet(self):
|
|
try:
|
|
import xlsxwriter # noqa: F401
|
|
except ImportError:
|
|
self.skipTest("xlsxwriter not installed")
|
|
wizard = self.env['fusion.xlsx.export.wizard'].create({
|
|
'report_type': 'balance_sheet',
|
|
'date_from': date(2026, 1, 1),
|
|
'date_to': date(2026, 12, 31),
|
|
})
|
|
wizard.action_export()
|
|
self.assertEqual(wizard.state, 'done')
|