Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化Rfid绑定工单
# Conflicts: # sf_manufacturing/models/mrp_workorder.py # sf_manufacturing/models/product_template.py # sf_manufacturing/views/mrp_workorder_view.xml
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import re
|
||||
|
||||
import logging
|
||||
import base64
|
||||
import urllib.parse
|
||||
@@ -823,25 +825,33 @@ class SfWorkOrderBarcodes(models.Model):
|
||||
workorder = self.env['mrp.workorder'].browse(self.ids)
|
||||
# workorder = self.env['mrp.workorder'].search(
|
||||
# [('routing_type', '=', '装夹预调'), ('production_id', '=', self.production_id.id)])
|
||||
# workorder_old = self.env['mrp.workorder'].search([('rfid_code', '=', barcode)])
|
||||
# if workorder_old:
|
||||
# raise UserError('该托盘已绑定工件,请先解除绑定!!!')
|
||||
if workorder:
|
||||
if workorder.routing_type == '装夹预调':
|
||||
stock_move_line = self.env['stock.move.line'].search([('lot_name', '=', barcode)])
|
||||
if stock_move_line.product_id.categ_type == '夹具':
|
||||
workorder.write({
|
||||
'tray_serial_number': stock_move_line.lot_name,
|
||||
'tray_product_id': stock_move_line.product_id.id,
|
||||
'tray_brand_id': stock_move_line.product_id.brand_id.id,
|
||||
'tray_type_id': stock_move_line.product_id.fixture_material_id.id,
|
||||
'tray_model_id': stock_move_line.product_id.fixture_model_id.id
|
||||
})
|
||||
workorder.button_start()
|
||||
# return {
|
||||
# 'type': 'ir.actions.act_window',
|
||||
# 'res_model': 'mrp.workorder',
|
||||
# 'view_mode': 'form',
|
||||
# 'domain': [('id', 'in', workorder.id)],
|
||||
# 'target': 'current'
|
||||
# }
|
||||
if workorder.state in ['progress', 'done']:
|
||||
work_state = {'progress': '进行中', 'done': '已完工'}
|
||||
raise UserError('该工单%s,不能重新绑定托盘' % work_state.get(workorder.state))
|
||||
lots = self.env['stock.lot'].sudo().search([('rfid', '=', barcode)])
|
||||
if lots:
|
||||
for lot in lots:
|
||||
if lot.product_id.categ_type == '夹具':
|
||||
val = {
|
||||
'tray_serial_number': lot.name,
|
||||
'tray_product_id': lot.product_id.id,
|
||||
'tray_brand_id': lot.product_id.brand_id.id,
|
||||
'tray_type_id': lot.product_id.fixture_material_id.id,
|
||||
'tray_model_id': lot.product_id.fixture_model_id.id,
|
||||
'rfid_code': barcode
|
||||
}
|
||||
workorder.write(val)
|
||||
self.write(val)
|
||||
workorder_rfid = self.env['mrp.workorder'].search(
|
||||
[('production_id', '=', workorder.production_id.id)])
|
||||
if workorder_rfid:
|
||||
for item in workorder_rfid:
|
||||
item.write({'rfid_code': barcode})
|
||||
else:
|
||||
embryo_stock_lot = self.env['stock.lot'].search([('name', '=', barcode)])
|
||||
if embryo_stock_lot:
|
||||
@@ -875,6 +885,56 @@ class SfWorkOrderBarcodes(models.Model):
|
||||
for item in workorder_rfid:
|
||||
if item.state == "progress":
|
||||
item.write({'rfid_code': barcode})
|
||||
raise UserError('该托盘信息不存在!!!')
|
||||
# stock_move_line = self.env['stock.move.line'].search([('lot_name', '=', barcode)])
|
||||
# if stock_move_line.product_id.categ_type == '夹具':
|
||||
# workorder.write({
|
||||
# 'tray_serial_number': stock_move_line.lot_name,
|
||||
# 'tray_product_id': stock_move_line.product_id.id,
|
||||
# 'tray_brand_id': stock_move_line.product_id.brand_id.id,
|
||||
# 'tray_type_id': stock_move_line.product_id.fixture_material_id.id,
|
||||
# 'tray_model_id': stock_move_line.product_id.fixture_model_id.id
|
||||
# })
|
||||
# workorder.button_start()
|
||||
# # return {
|
||||
# # 'type': 'ir.actions.act_window',
|
||||
# # 'res_model': 'mrp.workorder',
|
||||
# # 'view_mode': 'form',
|
||||
# # 'domain': [('id', 'in', workorder.id)],
|
||||
# # 'target': 'current'
|
||||
# # }
|
||||
# else:
|
||||
# embryo_stock_lot = self.env['stock.lot'].search([('name', '=', barcode)])
|
||||
# if embryo_stock_lot:
|
||||
# embryo_stock_move_line = self.env['stock.move.line'].search(
|
||||
# [('product_id', '=', embryo_stock_lot.product_id.id),
|
||||
# ('reference', '=', workorder.production_id.name),
|
||||
# ('lot_id', '=', embryo_stock_lot.id),
|
||||
# ('product_category_name', '=', '坯料')])
|
||||
# if embryo_stock_move_line:
|
||||
# bom_production = self.env['mrp.production'].search(
|
||||
# [('product_id', '=', embryo_stock_lot.product_id.id),
|
||||
# ('origin', '=', workorder.production_id.name)], limit=1, order='id asc')
|
||||
# workpiece_delivery = self.env['sf.workpiece.delivery'].search(
|
||||
# [('workorder_id', '=', workorder.id)], limit=1, order='id asc')
|
||||
# if workpiece_delivery:
|
||||
# embryo_workpiece_code = workpiece_delivery.workpiece_code
|
||||
# if bom_production:
|
||||
# if workpiece_delivery.workpiece_code and bom_production.name not in \
|
||||
# workpiece_delivery.workpiece_code:
|
||||
# embryo_workpiece_code = workpiece_delivery.workpiece_code + ',' + \
|
||||
# bom_production.name
|
||||
# if not workpiece_delivery.workpiece_code:
|
||||
# embryo_workpiece_code = bom_production.name
|
||||
# workpiece_delivery.write({'workpiece_code': embryo_workpiece_code})
|
||||
# else:
|
||||
# raise UserError('工件生产线不一致,请重新确认')
|
||||
# else:
|
||||
# workorder_rfid = self.env['mrp.workorder'].search(
|
||||
# [('production_id', '=', workorder.production_id.id)])
|
||||
# if workorder_rfid:
|
||||
# for item in workorder_rfid:
|
||||
# item.write({'rfid_code': barcode})
|
||||
|
||||
|
||||
class WorkPieceDelivery(models.Model):
|
||||
|
||||
@@ -6,11 +6,10 @@ import os
|
||||
from odoo import models, fields, api, _
|
||||
from odoo.exceptions import ValidationError
|
||||
from odoo.modules import get_resource_path
|
||||
from OCC.Extend.DataExchange import read_step_file
|
||||
from OCC.Extend.DataExchange import write_stl_file
|
||||
|
||||
|
||||
# from OCC.Extend.DataExchange import read_step_file
|
||||
# from OCC.Extend.DataExchange import write_stl_file
|
||||
|
||||
|
||||
class ResProductMo(models.Model):
|
||||
_inherit = 'product.template'
|
||||
@@ -107,7 +106,10 @@ class ResProductMo(models.Model):
|
||||
|
||||
@api.onchange('cutting_tool_model_id')
|
||||
def _onchange_cutting_tool_model_id(self):
|
||||
self.specification_id = False
|
||||
for item in self:
|
||||
if item:
|
||||
item.specification_id = False
|
||||
item.cutting_tool_chuck_id = item.cutting_tool_model_id.chuck_id
|
||||
|
||||
@api.onchange('cutting_tool_material_id')
|
||||
def _onchange_cutting_tool_material_id(self):
|
||||
@@ -310,7 +312,6 @@ class ResProductMo(models.Model):
|
||||
self.cutting_tool_is_safety_lock = self.specification_id.is_safe_lock
|
||||
self.cutting_tool_fit_nut_model = self.specification_id.nut
|
||||
self.cutting_tool_wrench = self.specification_id.spanner
|
||||
self.cutting_tool_chuck_id = self.specification_id.chuck_id.id
|
||||
self.cutting_tool_jump_accuracy = self.specification_id.diameter_slip_accuracy
|
||||
self.cutting_tool_taper_shank_model = self.specification_id.taper_shank_model
|
||||
self.cutting_tool_cooling_type = self.specification_id.cooling_model
|
||||
|
||||
@@ -266,6 +266,21 @@ class ProductionLot(models.Model):
|
||||
_name = 'stock.lot'
|
||||
_inherit = ['stock.lot', 'printing.utils']
|
||||
|
||||
rfid = fields.Char('Rfid', readonly=True)
|
||||
product_specification = fields.Char('规格', compute='_compute_product_specification', store=True)
|
||||
|
||||
@api.depends('product_id')
|
||||
def _compute_product_specification(self):
|
||||
for stock in self:
|
||||
if stock:
|
||||
if stock.product_id:
|
||||
if stock.product_id.categ_id.name in '刀具':
|
||||
stock.product_specification = stock.product_id.specification_id.name
|
||||
elif stock.product_id.categ_id.name in '夹具':
|
||||
stock.product_specification = stock.product_id.specification_fixture_id.name
|
||||
else:
|
||||
stock.product_specification = stock.product_id.default_code
|
||||
|
||||
@api.model
|
||||
def generate_lot_names1(self, display_name, first_lot, count):
|
||||
"""Generate `lot_names` from a string."""
|
||||
@@ -308,7 +323,7 @@ class ProductionLot(models.Model):
|
||||
if not last_serial:
|
||||
return "%s-%s%03d" % (product.cutting_tool_model_id.code[:-12], now, 1)
|
||||
else:
|
||||
return "%s-%s%03d" % (product.cutting_tool_model_id.code[:-12], now, int(last_serial.name[-3:]) + 2)
|
||||
return "%s-%s%03d" % (product.cutting_tool_model_id.code[:-12], now, int(last_serial.name[-3:]) + 1)
|
||||
else:
|
||||
raise ValidationError('该刀具物料产品的型号字段为空,请补充完整!!!')
|
||||
|
||||
@@ -363,7 +378,7 @@ class ProductionLot(models.Model):
|
||||
# port = 9100 # 可以根据实际情况修改
|
||||
|
||||
# 获取默认打印机配置
|
||||
printer_config = self.env['printer.configuration'].search([('model', '=', self._name)], limit=1)
|
||||
printer_config = self.env['printer.configuration'].sudo().search([('model', '=', self._name)], limit=1)
|
||||
if not printer_config:
|
||||
raise UserError('请先配置打印机')
|
||||
host = printer_config.printer_id.ip_address
|
||||
|
||||
Reference in New Issue
Block a user