# -*- 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