You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.3 KiB
43 lines
1.3 KiB
# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/)
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)
|
|
|
|
from odoo import fields, models, api
|
|
|
|
|
|
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}}
|
|
|
|
@api.multi
|
|
def print_report(self):
|
|
self.ensure_one()
|
|
return self.action_report_id.report_action(self.reference,
|
|
config=False)
|