44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
import qrcode
|
|
import base64
|
|
import logging
|
|
import tempfile
|
|
import os
|
|
import platform
|
|
import socket
|
|
import subprocess
|
|
from io import BytesIO
|
|
from odoo import models, fields, api
|
|
from odoo.exceptions import UserError
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
class MrpWorkorder(models.Model):
|
|
_name = 'mrp.workorder'
|
|
_inherit = ['mrp.workorder']
|
|
|
|
def _compute_state(self):
|
|
super(MrpWorkorder, self)._compute_state()
|
|
for workorder in self:
|
|
work_ids = workorder.production_id.workorder_ids.filtered(lambda w: w.routing_type == '装夹预调' or w.routing_type == '人工线下加工')
|
|
for wo in work_ids:
|
|
if wo.state == 'ready' and not wo.production_id.product_id.is_print_program:
|
|
# 触发打印程序
|
|
pdf_data = workorder.processing_drawing
|
|
if pdf_data:
|
|
try:
|
|
# 执行打印
|
|
printer = self.env['printing.printer'].get_default()
|
|
printer.print_document(report=None, content = pdf_data, doc_format='pdf')
|
|
|
|
wo.production_id.product_id.is_print_program = True
|
|
_logger.info(f"工单 {wo.name} 的PDF已成功打印")
|
|
|
|
except Exception as e:
|
|
_logger.error(f"工单 {wo.name} 的PDF打印失败: {str(e)}")
|
|
|
|
class ProductTemplate(models.Model):
|
|
_inherit = 'product.template'
|
|
|
|
is_print_program = fields.Boolean(string='是否打印程序', default=False)
|
|
|