# Conflicts:
#	sf_manufacturing/models/mrp_workorder.py
This commit is contained in:
gqh
2022-11-30 14:43:37 +08:00
5 changed files with 116 additions and 67 deletions

View File

@@ -6,8 +6,13 @@ import logging
from datetime import datetime
from dateutil.relativedelta import relativedelta
from odoo import api, fields, models, SUPERUSER_ID, _
<<<<<<< HEAD
from odoo.exceptions import ValidationError
from odoo.addons.sf_base.commons.common import Common
=======
from odoo.addons.sf_base.commons.common import Common
from odoo.exceptions import UserError
>>>>>>> b2d1e9ce8c5d8965ed09c3fbd6de543708223487
class ResMrpWorkOrder(models.Model):
@@ -97,6 +102,7 @@ class ResMrpWorkOrder(models.Model):
print("(%.2f,%.2f)" % (x, y))
self.material_center_point = ("(%.2f,%.2f,%.2f)" % (x, y, z))
self.X_deviation_angle = jdz
return self.material_center_point
def json_workorder_str(self, k, production, route):
workorders_values_str = [0, '', {
@@ -139,9 +145,9 @@ class ResMrpWorkOrder(models.Model):
values = self.env['sf.tray'].search([("code", "=", self.tray_code)])
if values:
if values.state == "占用":
raise ValidationError('该托盘已占用')
raise UserError('该托盘已占用')
if values.state == "报损":
raise ValidationError('该托盘已损坏')
raise UserError('该托盘已损坏')
else:
values.update({
'workorder_id': self,
@@ -149,7 +155,26 @@ class ResMrpWorkOrder(models.Model):
'state': '占用',
})
else:
raise ValidationError('该托盘编码已失效')
raise UserError('该托盘编码已失效')
else:
return ""
def gettray_auto(self, barcode):
if barcode != False:
values = self.env['sf.tray'].search([("code", "=", barcode)])
if values:
if values.state == "占用":
raise UserError('该托盘已占用')
if values.state == "报损":
raise UserError('该托盘已损坏')
else:
values.update({
'workorder_id': self,
'production_id': self.production_id,
'state': '占用',
})
else:
raise UserError('该托盘编码已失效')
else:
return ""
@@ -206,7 +231,8 @@ class ResMrpWorkOrder(models.Model):
# cnc程序获取
def fetchCNC(self):
cnc = self.env['mrp.workorder'].search([('routing_type', '=', 'CNC加工')], limit=1)
cnc = self.env['mrp.workorder'].search(
[('routing_type', '=', 'CNC加工'), ('production_id', '=', self.production_id.id)], limit=1)
res = {'model_code': cnc.product_id.barcode, 'production_no': self.production_id.name,
'machine_tool_code': cnc.workcenter_id.machine_tool_id.code,
'material_code': cnc.env['sf.production.materials'].search(
@@ -302,36 +328,52 @@ class CNCprocessing(models.Model):
_description = "CNC加工"
cnc_id = fields.Many2one('ir.attachment')
FNo = fields.Char(string="序号")
FPGName = fields.Char(string="程序名")
FKnifeName = fields.Char(string="刀具名称")
FDNo = fields.Char(string="刀号")
FWorkType = fields.Char(string="加工类型")
FXY = fields.Char(string="余量_X/Y")
FZ = fields.Char(string="余量_Z")
FJGSD = fields.Char(string="加工深度(Z)")
FSCCD = fields.Char(string="刀具伸出长度")
FDJSpec = fields.Char(string="刀柄型号")
FJGDate = fields.Datetime(string="预计加工时间")
FComment = fields.Char(string="备注")
sequence_number = fields.Char('序号')
program_name = fields.Char('程序名')
cutting_tool_name = fields.Char('刀具名称')
cutting_tool_no = fields.Char('刀号')
processing_type = fields.Char('加工类型')
margin_x_y = fields.Char('余量_X/Y')
margin_z = fields.Char('余量_Z')
depth_of_processing_z = fields.Char('加工深度(Z)')
cutting_tool_extension_length = fields.Char('刀具伸出长度')
cutting_tool_handle_type = fields.Char('刀柄型号')
estimated_processing_time = fields.Char('预计加工时间')
remark = fields.Text('备注')
workorder_id = fields.Many2one('mrp.workorder', string="工单")
# mrs下发编程单创建CNC加工
def CNCprocessing_create(self, obj):
workorder = self.env['mrp.workorder'].search([('production_id', '=', obj['manufacturing_order_no']),
workorder = self.env['mrp.workorder'].search([('production_id.name', '=', obj['manufacturing_order_no']),
('processing_panel', '=', obj['processing_panel']),
('routing_type', '=', 'CNC加工')])
self.env['sf.cnc.processing'].create({
'workorder_id': workorder.id,
'FNo': obj['sequence_number'],
'FPGName': obj['program_name'],
'FKnifeName': obj['cutting_tool_name'],
'FDNo': obj['cutting_tool_no'],
'FWorkType': obj['processing_type'],
'FXY': obj['margin_x_y'],
'FZ': obj['margin_z'],
'FJGSD': obj['depth_of_processing_z'],
'FSCCD': obj['cutting_tool_extension_length'],
'FDJSpec': obj['cutting_tool_handle_type'],
'sequence_number': obj['sequence_number'],
'program_name': obj['program_name'],
'cutting_tool_name': obj['cutting_tool_name'],
'cutting_tool_no': obj['cutting_tool_no'],
'processing_type': obj['processing_type'],
'margin_x_y': obj['margin_x_y'],
'margin_z': obj['margin_z'],
'depth_of_processing_z': obj['depth_of_processing_z'],
'cutting_tool_extension_length': obj['cutting_tool_extension_length'],
'cutting_tool_handle_type': obj['cutting_tool_handle_type'],
'remark': obj['remark']
# 'FJGDate': obj['']
})
class SfWorkOrderBarcodes(models.Model):
"""
智能工厂工单处扫码绑定托盘
"""
_name = "mrp.workorder"
_inherit = ["mrp.workorder", "barcodes.barcode_events_mixin"]
def on_barcode_scanned(self, barcode):
tray_code = self.env['sf.tray'].search([('code', '=', barcode)])
self.tray_code = tray_code.code
workorder = self.env['mrp.workorder'].browse(self.ids)
workorder.gettray_auto(barcode)