mirror of
https://github.com/OCA/reporting-engine.git
synced 2025-02-16 16:30:38 +02:00
84 lines
2.5 KiB
Python
84 lines
2.5 KiB
Python
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class ReportLabelWizard(models.TransientModel):
|
|
_name = "report.label.wizard"
|
|
_description = "Report Label Wizard"
|
|
|
|
@api.model
|
|
def _default_line_ids(self):
|
|
"""Compute line_ids based on context"""
|
|
active_model = self.env.context.get("active_model")
|
|
active_ids = self.env.context.get("active_ids", [])
|
|
if not active_model or not active_ids:
|
|
return False
|
|
return [
|
|
(
|
|
0,
|
|
0,
|
|
{
|
|
"res_id": res_id,
|
|
"quantity": 1,
|
|
},
|
|
)
|
|
for res_id in active_ids
|
|
]
|
|
|
|
model_id = fields.Many2one(
|
|
"ir.model",
|
|
"Model",
|
|
required=True,
|
|
default=lambda self: self.env.context.get("res_model_id"),
|
|
)
|
|
label_paperformat_id = fields.Many2one(
|
|
"report.paperformat.label",
|
|
"Label Paper Format",
|
|
readonly=True,
|
|
required=True,
|
|
default=lambda self: self.env.context.get("label_paperformat_id"),
|
|
)
|
|
|
|
label_template_view_id = fields.Many2one(
|
|
string="Label QWeb Template",
|
|
comodel_name="ir.ui.view",
|
|
readonly=True,
|
|
required=True,
|
|
default=lambda self: self.env.context.get("label_template_view_id"),
|
|
)
|
|
offset = fields.Integer(
|
|
help="Number of labels to skip when printing",
|
|
)
|
|
line_ids = fields.One2many(
|
|
"report.label.wizard.line",
|
|
"wizard_id",
|
|
"Lines",
|
|
default=_default_line_ids,
|
|
required=True,
|
|
)
|
|
|
|
def _prepare_report_data(self):
|
|
self.ensure_one()
|
|
return {
|
|
"label_format": self.label_paperformat_id.read()[0],
|
|
"label_template": self.label_template_view_id.sudo().key,
|
|
"offset": self.offset,
|
|
"res_model": self.model_id.sudo().model,
|
|
"lines": [
|
|
{
|
|
"res_id": line.res_id,
|
|
"quantity": line.quantity,
|
|
}
|
|
for line in self.line_ids
|
|
],
|
|
}
|
|
|
|
def print_report(self):
|
|
self.ensure_one()
|
|
report = self.env.ref("report_label.report_label")
|
|
action = report.report_action(self, data=self._prepare_report_data())
|
|
action["context"] = {
|
|
"paperformat_id": self.label_paperformat_id.paperformat_id.id,
|
|
}
|
|
return action
|