199 lines
9.0 KiB
Python
199 lines
9.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
from odoo import fields, models, api
|
|
# from datetime import datetime
|
|
# from odoo.exceptions import ValidationError
|
|
|
|
|
|
# 刀具物料
|
|
class CuttingToolMaterial(models.Model):
|
|
_name = 'sf.cutting.tool.material'
|
|
_description = '刀具物料'
|
|
|
|
code = fields.Char('编码')
|
|
name = fields.Char('名称')
|
|
remark = fields.Char('备注')
|
|
active = fields.Boolean('有效', default=True)
|
|
|
|
|
|
# 功能刀具
|
|
class FunctionalCuttingTool(models.Model):
|
|
_name = 'sf.functional.cutting.tool'
|
|
_description = '功能刀具'
|
|
|
|
code = fields.Char('编码')
|
|
name = fields.Char('名称')
|
|
active = fields.Boolean('有效', default=True)
|
|
mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型')
|
|
mrs_cutting_tool_model_id = fields.Many2one('sf.cutting.tool.model', string='刀具型号')
|
|
|
|
# # 整体式刀具型号
|
|
# mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model', 'rel_integral_model_functional_sf',
|
|
# string='整体式刀具型号', domain=
|
|
# [('cutting_tool_type', '=', '整体式刀具')])
|
|
# # 刀片型号
|
|
# mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model', 'rel_blade_model_functional_sf',
|
|
# string='刀片型号', domain=
|
|
# [('cutting_tool_type', '=', '刀片')])
|
|
# # 刀杆型号
|
|
# mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model',
|
|
# 'rel_cutterbar_model_functional_sf',
|
|
# string='刀杆型号', domain=
|
|
# [('cutting_tool_type', '=', '刀杆')])
|
|
# # 刀盘型号
|
|
# mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model',
|
|
# 'rel_cutterpad_model_functional_sf',
|
|
# string='刀盘型号', domain=
|
|
# [('cutting_tool_type', '=', '刀盘')])
|
|
# # 刀柄型号
|
|
# mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model',
|
|
# 'rel_cutterhandle_model_functional_sf',
|
|
# string='刀柄型号',
|
|
# domain=
|
|
# [('cutting_tool_type', '=', '刀柄')])
|
|
# # 夹头型号
|
|
# mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model',
|
|
# 'rel_cutterhead_model_functional_sf',
|
|
# string='夹头型号', domain=
|
|
# [('cutting_tool_type', '=', '夹头')])
|
|
#
|
|
# diameter = fields.Float('直径(mm)')
|
|
# tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')],
|
|
# string='刀具等级')
|
|
# machining_accuracy = fields.Float('加工精度(mm)')
|
|
# tool_length = fields.Float('装刀长')
|
|
# blade_number = fields.Integer('刃数')
|
|
# integral_blade_length = fields.Float('整体刃长(mm)')
|
|
# effective_blade_length = fields.Float('有效刃长(mm)')
|
|
# max_life = fields.Float('最大寿命值')
|
|
# is_standard = fields.Boolean('是否标准刀')
|
|
# applicable_range = fields.Char('适用范围')
|
|
# image = fields.Binary('图片')
|
|
# active = fields.Boolean('有效', default=True)
|
|
#
|
|
# def _get_functional_tool_model_ids(self, functional_tool_model_code):
|
|
# functional_tool_model_ids = []
|
|
# for item in functional_tool_model_code:
|
|
# functional_tool_model = self.env['sf.cutting.tool.model'].search([('code', '=', item)])
|
|
# functional_tool_model_ids.append(functional_tool_model.id)
|
|
# return [(6, 0, functional_tool_model_ids)]
|
|
|
|
|
|
# 功能刀具类型
|
|
class FunctionalCuttingToolModel(models.Model):
|
|
_name = 'sf.functional.cutting.tool.model'
|
|
_description = '功能刀具类型'
|
|
|
|
name = fields.Char('名称', required=True)
|
|
code = fields.Char('编码', required=True)
|
|
remark = fields.Char('备注')
|
|
active = fields.Boolean('有效', default=True)
|
|
|
|
|
|
# 刀具型号
|
|
class CuttingToolModel(models.Model):
|
|
_name = 'sf.cutting.tool.model'
|
|
_description = '刀具型号'
|
|
|
|
name = fields.Char('名称')
|
|
code = fields.Char('编码')
|
|
cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', string='刀具物料')
|
|
cutting_tool_type = fields.Char(string="刀具物料类型", related='cutting_tool_material_id.name', store=True)
|
|
cutting_tool_type_id = fields.Many2one('sf.cutting.tool.type', string='刀具类型',
|
|
)
|
|
brand_id = fields.Many2one('sf.machine.brand', '品牌')
|
|
tool_length = fields.Integer('长度(mm)', size=6)
|
|
tool_width = fields.Integer('宽度(mm)', size=6)
|
|
tool_height = fields.Integer('高度(mm)', size=6)
|
|
tool_thickness = fields.Integer('厚度(mm)', size=6)
|
|
tool_weight = fields.Float('重量(kg)', size=4)
|
|
coating_material = fields.Char('涂层材质')
|
|
# 整体式刀具参数
|
|
total_length = fields.Float('总长度(mm)')
|
|
shank_length = fields.Float('柄部长度(mm)')
|
|
blade_length = fields.Float('刃部长度(mm)')
|
|
diameter = fields.Float('直径(mm)')
|
|
blade_number = fields.Integer('刃数')
|
|
front_angle = fields.Float('前角(°)')
|
|
rear_angle = fields.Float('后角(°)')
|
|
main_included_angle = fields.Float('主偏角(°)')
|
|
material_model_id = fields.Many2one('sf.materials.model', '材料型号')
|
|
nut = fields.Float('配对螺母(mm)')
|
|
# 适用夹头型号可以多选
|
|
chuck_ids = fields.Many2many(
|
|
'sf.cutting.tool.model',
|
|
relation='cutting_tool_model_handle_chuck_rel',
|
|
column1='model_id_1',
|
|
column2='model_id_2',
|
|
domain="[('cutting_tool_type', '=', '夹头')]",
|
|
string='适用夹头型号')
|
|
# 刀片参数
|
|
top_angle = fields.Float('顶角(°)')
|
|
jump_accuracy = fields.Float('径跳精度(um)')
|
|
working_hardness = fields.Char('加工硬度(hrc)')
|
|
cutter_bar_ids = fields.Many2many(
|
|
'sf.cutting.tool.model',
|
|
relation='cutting_tool_model_blade_cutter_bar_rel',
|
|
column1='model_id_1',
|
|
column2='model_id_2',
|
|
domain="[('cutting_tool_type', '=', '刀杆')]",
|
|
string='适用刀杆型号'
|
|
)
|
|
cutter_pad_ids = fields.Many2many(
|
|
'sf.cutting.tool.model',
|
|
relation='cutting_tool_model_blade_cutter_pad_rel',
|
|
column1='model_id_1',
|
|
column2='model_id_2',
|
|
domain="[('cutting_tool_type', '=', '刀盘')]",
|
|
string='适用刀盘型号' # 使用空列表作为默认值
|
|
)
|
|
# 刀杆/参数
|
|
blade_diameter = fields.Float('刃径(mm)')
|
|
blade_ids = fields.Many2many(
|
|
'sf.cutting.tool.model',
|
|
relation='cutting_tool_model_pad_blade_rel',
|
|
column1='model_id_1',
|
|
column2='model_id_2',
|
|
domain="[('cutting_tool_type', '=', '刀片')]",
|
|
string='适用刀片型号' # 使用空列表作为默认值
|
|
)
|
|
wrench = fields.Float('配对扳手(mm)')
|
|
screw = fields.Float('配备螺丝(mm)')
|
|
accuracy_level = fields.Char('精度等级')
|
|
# 刀柄参数
|
|
diameter_max = fields.Float('最大直径(mm)')
|
|
clamping_diameter = fields.Float('夹持直径(mm)')
|
|
flange_length = fields.Float('法兰柄长度(mm)')
|
|
flange_diameter = fields.Float('法兰直径(mm)')
|
|
# 夹头参数
|
|
outer_diameter = fields.Float('外径(mm)')
|
|
inner_diameter = fields.Float('内径(mm)')
|
|
handle_ids = fields.Many2many(
|
|
'sf.cutting.tool.model',
|
|
relation='cutting_tool_model_chuck_handle_rel',
|
|
column1='model_id_1',
|
|
column2='model_id_2',
|
|
domain="[('cutting_tool_type', '=', '刀柄')]",
|
|
string='适用刀柄型号'
|
|
)
|
|
active = fields.Boolean('有效', default=True)
|
|
|
|
# @api.model
|
|
# def create(self, vals):
|
|
# if vals.get('name', '/') == '/' or vals.get('name', '/') is False:
|
|
# vals['name'] = '/'
|
|
# obj = super(CuttingToolModel, self).create(vals)
|
|
# return obj
|
|
|
|
|
|
# 刀具类型
|
|
class CuttingToolType(models.Model):
|
|
_name = 'sf.cutting.tool.type'
|
|
_description = '刀具类型'
|
|
|
|
code = fields.Char('编码')
|
|
name = fields.Char('名称')
|
|
# 关联刀具物料
|
|
cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', '刀具物料')
|
|
remark = fields.Char('备注')
|
|
active = fields.Boolean('有效', default=True)
|