51 lines
1.8 KiB
Python
51 lines
1.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
|
|
from odoo import _, api, fields, models
|
|
from odoo.exceptions import UserError
|
|
|
|
|
|
class EquipmentLabelLayout(models.TransientModel):
|
|
_name = 'equipment.label.layout'
|
|
_description = 'Choose the sheet layout to print the equipment labels'
|
|
|
|
print_format = fields.Selection([
|
|
('single', 'Single Label'),
|
|
('a4', 'A4 Sheet (3 x 12)')], string="格式", default='single', required=True)
|
|
custom_quantity = fields.Integer('数量', default=1, required=True)
|
|
equipment_ids = fields.Many2many('maintenance.equipment')
|
|
extra_html = fields.Html('Extra Content', default='')
|
|
|
|
def _prepare_report_data(self):
|
|
if self.custom_quantity <= 0:
|
|
raise UserError('不能设置负数')
|
|
|
|
# Get layout grid
|
|
if self.print_format == 'single':
|
|
xml_id = 'yuthon_maintain.report_equipment_label_single'
|
|
elif self.print_format == 'a4':
|
|
xml_id = 'yuthon_maintain.report_equipment_labels_a4'
|
|
else:
|
|
xml_id = ''
|
|
|
|
if not self.equipment_ids:
|
|
raise UserError('没有设备选择')
|
|
|
|
# Build data to pass to the report
|
|
data = {
|
|
'active_model': 'maintenance.equipment',
|
|
'product_list': [p for p in self.equipment_ids.ids],
|
|
'layout_wizard': self.id,
|
|
}
|
|
return xml_id, data
|
|
|
|
def process(self):
|
|
self.ensure_one()
|
|
xml_id, data = self._prepare_report_data()
|
|
if not xml_id:
|
|
raise UserError(_('没有找到对应模板 %s ', self.print_format))
|
|
report_action = self.env.ref(xml_id).report_action(None, data=data, config=False)
|
|
report_action.update({'close_on_report_download': True})
|
|
return report_action
|