1、新增功能刀具移动历史,新增功能刀具入库到线边刀库
This commit is contained in:
@@ -41,7 +41,9 @@ class FunctionalCuttingToolEntity(models.Model):
|
||||
used_value = fields.Integer(string='已使用值(min)', readonly=True)
|
||||
functional_tool_status = fields.Selection([('正常', '正常'), ('报警', '报警'), ('已拆除', '已拆除')],
|
||||
string='状态', store=True, default='正常')
|
||||
current_location_id = fields.Many2one('stock.location', string='当前位置', readonly=True)
|
||||
current_location_id = fields.Many2one('stock.location', string='当前位置', compute='_compute_current_location_id',
|
||||
store=True)
|
||||
current_shelf_location_id = fields.Many2one('sf.shelf.location', string='当前货位', readonly=True)
|
||||
current_location = fields.Selection(
|
||||
[('组装后', '组装后'), ('刀具房', '刀具房'), ('线边刀库', '线边刀库'), ('机内刀库', '机内刀库')],
|
||||
string='位置', compute='_compute_current_location_id', store=True)
|
||||
@@ -60,7 +62,10 @@ class FunctionalCuttingToolEntity(models.Model):
|
||||
if quant_id.inventory_quantity_auto_apply > 0:
|
||||
record.current_location_id = quant_id.location_id
|
||||
if quant_id.location_id.name == '制造前':
|
||||
record.current_location = '机内刀库'
|
||||
if not record.current_shelf_location_id:
|
||||
record.current_location = '机内刀库'
|
||||
else:
|
||||
record.current_location = '线边刀库'
|
||||
else:
|
||||
record.current_location = quant_id.location_id.name
|
||||
if record.current_location_id:
|
||||
@@ -75,48 +80,6 @@ class FunctionalCuttingToolEntity(models.Model):
|
||||
record.line_edge_knife_library_num = 0
|
||||
record.machine_knife_library_num = 0
|
||||
|
||||
def tool_in_out_stock_location(self, location_id):
|
||||
for item in self:
|
||||
if item:
|
||||
pass
|
||||
else:
|
||||
if location_id.product_sn_id:
|
||||
tool = self.env['sf.functional.cutting.tool.entity'].search(
|
||||
['barcode_id', '=', location_id.product_sn_id.id])
|
||||
if tool.current_location == '线边刀库':
|
||||
pass
|
||||
|
||||
def create_stock_move(self):
|
||||
# 创建库存移动记录
|
||||
stock_move_id = self.env['stock.move'].sudo().create({
|
||||
'name': name,
|
||||
'product_id': self.barcode_id.product_id.id,
|
||||
'location_id': location_inventory_id.id,
|
||||
'location_dest_id': stock_location_id.id,
|
||||
'product_uom_qty': 1.00,
|
||||
'state': 'done'
|
||||
})
|
||||
|
||||
# 创建移动历史记录
|
||||
stock_move_line_id = self.env['stock.move.line'].sudo().create({
|
||||
'product_id': self.barcode_id.product_id.id,
|
||||
'functional_tool_name_id': functional_tool_assembly_id,
|
||||
'lot_id': self.id,
|
||||
'move_id': stock_move_id.id,
|
||||
'install_tool_time': fields.Datetime.now(),
|
||||
'qty_done': 1.0,
|
||||
'state': 'done',
|
||||
'functional_tool_type_id': False if not obj else obj.functional_tool_type_id.id,
|
||||
'diameter': None if not obj else obj.after_assembly_functional_tool_diameter,
|
||||
'knife_tip_r_angle': None if not obj else obj.after_assembly_knife_tip_r_angle,
|
||||
'code': '' if not obj else obj.code,
|
||||
'rfid': '' if not obj else obj.rfid,
|
||||
'functional_tool_name': '' if not obj else obj.after_assembly_functional_tool_name,
|
||||
'tool_groups_id': False if not tool_groups_id else tool_groups_id.id
|
||||
})
|
||||
return stock_move_id, stock_move_line_id
|
||||
|
||||
|
||||
def get_location_num(self):
|
||||
"""
|
||||
计算库存位置数量
|
||||
@@ -133,6 +96,73 @@ class FunctionalCuttingToolEntity(models.Model):
|
||||
elif "机内刀库" in obj.current_location:
|
||||
obj.machine_knife_library_num = 1
|
||||
|
||||
def tool_in_out_stock_location(self, location_id):
|
||||
tool_room_id = self.env['stock.location'].search([('name', '=', '刀具房')])
|
||||
pre_manufacturing_id = self.env['stock.location'].search([('name', '=', '制造前')])
|
||||
for item in self:
|
||||
# 中控反馈该位置有刀
|
||||
if item:
|
||||
# 系统该位置有刀
|
||||
if location_id.product_sn_id:
|
||||
# 中控反馈和系统中,该位置是同一把刀
|
||||
if item.barcode_id == location_id.product_sn_id:
|
||||
return True
|
||||
# 中控反馈和系统中,该位置不是同一把刀
|
||||
else:
|
||||
# 原刀从线边出库
|
||||
item.tool_in_out_stock_location_1(location_id, tool_room_id)
|
||||
# 新刀入库到线边
|
||||
item.create_stock_move(pre_manufacturing_id, location_id)
|
||||
item.current_location_id = tool_room_id.id
|
||||
item.current_shelf_location_id = location_id.id
|
||||
|
||||
# 中控反馈该位置没有刀
|
||||
else:
|
||||
# 系统该位置有刀
|
||||
if location_id.product_sn_id:
|
||||
item.tool_in_out_stock_location_1(location_id, tool_room_id)
|
||||
|
||||
def tool_in_out_stock_location_1(self, location_id, tool_room_id):
|
||||
tool = self.env['sf.functional.cutting.tool.entity'].search(
|
||||
[('barcode_id', '=', location_id.product_sn_id.id)])
|
||||
if tool.current_location == '线边刀库':
|
||||
tool.create_stock_move(tool_room_id, False)
|
||||
# 修改功能刀具的当前位置
|
||||
tool.current_location_id = tool_room_id.id
|
||||
tool.current_shelf_location_id = False
|
||||
|
||||
def create_stock_move(self, location_dest_id, destination_location_id):
|
||||
|
||||
# 创建库存移动记录
|
||||
stock_move_id = self.env['stock.move'].sudo().create({
|
||||
'name': '/',
|
||||
'product_id': self.barcode_id.product_id.id,
|
||||
'location_id': self.current_location_id.id,
|
||||
'location_dest_id': location_dest_id.id,
|
||||
'product_uom_qty': 1.00,
|
||||
'state': 'done'
|
||||
})
|
||||
|
||||
# 创建移动历史记录
|
||||
stock_move_line_id = self.env['stock.move.line'].sudo().create({
|
||||
'product_id': self.barcode_id.product_id.id,
|
||||
'lot_id': self.barcode_id.id,
|
||||
'move_id': stock_move_id.id,
|
||||
'current_location_id': False if not self.current_shelf_location_id else self.current_shelf_location_id.id,
|
||||
'destination_location_id': False if not destination_location_id else destination_location_id.id,
|
||||
'install_tool_time': fields.Datetime.now(),
|
||||
'qty_done': 1.0,
|
||||
'state': 'done',
|
||||
'functional_tool_type_id': self.sf_cutting_tool_type_id.id,
|
||||
'diameter': self.functional_tool_diameter,
|
||||
'knife_tip_r_angle': self.knife_tip_r_angle,
|
||||
'code': self.code,
|
||||
'rfid': self.rfid,
|
||||
'functional_tool_name': self.name,
|
||||
'tool_groups_id': self.tool_groups_id.id
|
||||
})
|
||||
return stock_move_id, stock_move_line_id
|
||||
|
||||
@api.model
|
||||
def _read_group_mrs_cutting_tool_type_id(self, categories, domain, order):
|
||||
mrs_cutting_tool_type_ids = categories._search([], order=order, access_rights_uid=SUPERUSER_ID)
|
||||
@@ -234,12 +264,14 @@ class FunctionalCuttingToolEntity(models.Model):
|
||||
机床当前刀库实时信息接口,功能刀具出库
|
||||
"""
|
||||
# 获取位置对象
|
||||
location_inventory_id = self.current_location_id
|
||||
stock_location_id = self.env['stock.location'].search([('name', '=', '制造前')])
|
||||
# 创建功能刀具该批次/序列号 库存移动和移动历史
|
||||
self.barcode_id.create_stock_quant(location_inventory_id, stock_location_id,
|
||||
self.functional_tool_name_id.id, '机床装刀', self.functional_tool_name_id,
|
||||
self.functional_tool_name_id.tool_groups_id)
|
||||
self.create_stock_move(stock_location_id, False)
|
||||
self.current_location_id = stock_location_id.id
|
||||
self.current_shelf_location_id = False
|
||||
# self.barcode_id.create_stock_quant(location_inventory_id, stock_location_id,
|
||||
# self.functional_tool_name_id.id, '机床装刀', self.functional_tool_name_id,
|
||||
# self.functional_tool_name_id.tool_groups_id)
|
||||
|
||||
# ==========刀具组接口==========
|
||||
# def _register_functional_tool_groups(self, obj):
|
||||
|
||||
@@ -76,6 +76,8 @@ class SfMaintenanceEquipment(models.Model):
|
||||
functional_tool_id = self.env['sf.functional.cutting.tool.entity'].sudo().search(
|
||||
[('rfid', '=', data['RfidCode'])])
|
||||
if functional_tool_id:
|
||||
if len(functional_tool_id) > 1:
|
||||
functional_tool_id = functional_tool_id[-1]
|
||||
# 查询该功能刀具是否已经装在机床内其他位置,如果是就删除
|
||||
equipment_tools = self.env['maintenance.equipment.tool'].sudo().search(
|
||||
[('functional_tool_name_id', '=', functional_tool_id.id), ('code', '!=', tool_id)])
|
||||
@@ -97,8 +99,9 @@ class SfMaintenanceEquipment(models.Model):
|
||||
'functional_tool_name_id': functional_tool_id.id,
|
||||
'tool_install_time': time
|
||||
})
|
||||
if functional_tool_id.current_location_id.name != '制造前':
|
||||
# 对功能刀具进行出库到生产线
|
||||
if (functional_tool_id.current_location_id.name != '制造前' or
|
||||
functional_tool_id.current_shelf_location_id):
|
||||
# 对功能刀具进行移动到生产线
|
||||
functional_tool_id.tool_inventory_displacement_out()
|
||||
functional_tool_id.write({
|
||||
'max_lifetime_value': data['MaxLife'],
|
||||
@@ -106,9 +109,9 @@ class SfMaintenanceEquipment(models.Model):
|
||||
'functional_tool_status': tool_install_time.get(data['State'])
|
||||
})
|
||||
else:
|
||||
raise ValidationError('获取的【%s】设备不存在!!!' % data['DeviceId'])
|
||||
logging.info('获取的【%s】设备不存在!!!' % data['DeviceId'])
|
||||
else:
|
||||
raise ValidationError('没有获取到刀具库信息!!!')
|
||||
logging.info('没有获取到【%s】设备的刀具库信息!!!' % self.name)
|
||||
|
||||
|
||||
class StockLot(models.Model):
|
||||
|
||||
Reference in New Issue
Block a user