reporting-engine/report_async/wizard/print_report_wizard.py

46 lines
1.3 KiB
Python
Raw Permalink Normal View History

2024-10-01 14:19:08 +00:00
# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)
from flectra import api, fields, models
class PrintReportWizard(models.TransientModel):
_name = "print.report.wizard"
_description = "Print Report Wizard"
reference = fields.Reference(
string="Document",
selection="_reference_models",
required=True,
)
action_report_id = fields.Many2one(
comodel_name="ir.actions.report",
string="Report Template",
required=True,
)
@api.model
def _reference_models(self):
excludes = ["res.company"]
models = self.env["ir.model"].search(
[
("state", "!=", "manual"),
("transient", "=", False),
("model", "not in", excludes),
]
)
return [(model.model, model.name) for model in models]
@api.onchange("reference")
def _onchange_reference(self):
self.ensure_one()
domain = [("id", "in", [])]
self.action_report_id = False
if self.reference:
domain = [("model", "=", self.reference._name)]
return {"domain": {"action_report_id": domain}}
def print_report(self):
self.ensure_one()
return self.action_report_id.report_action(self.reference, config=False)