Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/刀具物料与夹具物料的反注册

# Conflicts:
#	sf_base/views/base_view.xml
This commit is contained in:
jinling.yang
2023-08-17 18:03:12 +08:00
16 changed files with 1038 additions and 1557 deletions

View File

@@ -64,7 +64,7 @@ class MachineTool(models.Model):
knife_type = fields.Selection( knife_type = fields.Selection(
[("BT40", "BT40"), ("BT30", "BT30")], [("BT40", "BT40"), ("BT30", "BT30")],
default="", string="刀把类型") default="", string="刀把类型")
number_of_knife_library = fields.Integer('刀库数量') number_of_knife_library = fields.Integer('刀库数量(把)')
rotate_speed = fields.Integer('转速') rotate_speed = fields.Integer('转速')
number_of_axles = fields.Selection( number_of_axles = fields.Selection(
[("三轴", "三轴"), ("四轴", "四轴"), ("五轴", "五轴")], [("三轴", "三轴"), ("四轴", "四轴"), ("五轴", "五轴")],
@@ -281,7 +281,7 @@ class MachineToolType(models.Model):
distance_min = fields.Char('主轴端面至工作台面距离MIN(mm)') distance_min = fields.Char('主轴端面至工作台面距离MIN(mm)')
distance_max = fields.Char('主轴端面至工作台面距离MIN(mm)') distance_max = fields.Char('主轴端面至工作台面距离MIN(mm)')
taper = fields.Char('主轴锥度(°)') taper = fields.Char('主轴锥度(°)')
torque = fields.Char('主轴点击扭矩(n/m)') torque = fields.Char('主轴电机扭矩(n/m)')
motor_power = fields.Char('主轴电机功率(kw)') motor_power = fields.Char('主轴电机功率(kw)')
tool_quality_max = fields.Char('刀具最大质量(kg)') tool_quality_max = fields.Char('刀具最大质量(kg)')
tool_long_max = fields.Char('刀具最大长度(mm)') tool_long_max = fields.Char('刀具最大长度(mm)')

View File

@@ -1,7 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from odoo import fields, models, api from odoo import fields, models, api
# from datetime import datetime # from datetime import datetime
# from odoo.exceptions import ValidationError # from odoo.exceptions import ValidationError
@@ -24,59 +22,60 @@ class FunctionalCuttingTool(models.Model):
code = fields.Char('编码') code = fields.Char('编码')
name = 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_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_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', # mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model', 'rel_integral_model_functional_sf',
string='整体式刀具型号', domain= # string='整体式刀具型号', domain=
[('mrs_cutting_tool_material_name', '=', '整体式刀具')]) # [('cutting_tool_type', '=', '整体式刀具')])
# 刀片型号 # # 刀片型号
mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model', 'rel_blade_model_functional_sf', # mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model', 'rel_blade_model_functional_sf',
string='刀片型号', domain= # string='刀片型号', domain=
[('mrs_cutting_tool_material_name', '=', '刀片')]) # [('cutting_tool_type', '=', '刀片')])
# 刀杆型号 # # 刀杆型号
mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model', # mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model',
'rel_cutterbar_model_functional_sf', # 'rel_cutterbar_model_functional_sf',
string='刀杆型号', domain= # string='刀杆型号', domain=
[('mrs_cutting_tool_material_name', '=', '刀杆')]) # [('cutting_tool_type', '=', '刀杆')])
# 刀盘型号 # # 刀盘型号
mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model', # mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model',
'rel_cutterpad_model_functional_sf', # 'rel_cutterpad_model_functional_sf',
string='刀盘型号', domain= # string='刀盘型号', domain=
[('mrs_cutting_tool_material_name', '=', '刀盘')]) # [('cutting_tool_type', '=', '刀盘')])
# 刀柄型号 # # 刀柄型号
mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model', # mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model',
'rel_cutterhandle_model_functional_sf', # 'rel_cutterhandle_model_functional_sf',
string='刀柄型号', # string='刀柄型号',
domain= # domain=
[('mrs_cutting_tool_material_name', '=', '刀柄')]) # [('cutting_tool_type', '=', '刀柄')])
# 夹头型号 # # 夹头型号
mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model', # mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model',
'rel_cutterhead_model_functional_sf', # 'rel_cutterhead_model_functional_sf',
string='夹头型号', domain= # string='夹头型号', domain=
[('mrs_cutting_tool_material_name', '=', '夹头')]) # [('cutting_tool_type', '=', '夹头')])
#
diameter = fields.Float('直径(mm)') # diameter = fields.Float('直径(mm)')
tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')], # tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')],
string='刀具等级') # string='刀具等级')
machining_accuracy = fields.Float('加工精度(mm)') # machining_accuracy = fields.Float('加工精度(mm)')
tool_length = fields.Float('装刀长') # tool_length = fields.Float('装刀长')
blade_number = fields.Integer('刃数') # blade_number = fields.Integer('刃数')
integral_blade_length = fields.Float('整体刃长(mm)') # integral_blade_length = fields.Float('整体刃长(mm)')
effective_blade_length = fields.Float('有效刃长(mm)') # effective_blade_length = fields.Float('有效刃长(mm)')
max_life = fields.Float('最大寿命值') # max_life = fields.Float('最大寿命值')
is_standard = fields.Boolean('是否标准刀') # is_standard = fields.Boolean('是否标准刀')
applicable_range = fields.Char('适用范围') # applicable_range = fields.Char('适用范围')
image = fields.Binary('图片') # image = fields.Binary('图片')
active = fields.Boolean('有效', default=True) # active = fields.Boolean('有效', default=True)
#
def _get_functional_tool_model_ids(self, functional_tool_model_code): # def _get_functional_tool_model_ids(self, functional_tool_model_code):
functional_tool_model_ids = [] # functional_tool_model_ids = []
for item in functional_tool_model_code: # for item in functional_tool_model_code:
functional_tool_model = self.env['sf.cutting.tool.model'].search([('code', '=', item)]) # functional_tool_model = self.env['sf.cutting.tool.model'].search([('code', '=', item)])
functional_tool_model_ids.append(functional_tool_model.id) # functional_tool_model_ids.append(functional_tool_model.id)
return [(6, 0, functional_tool_model_ids)] # return [(6, 0, functional_tool_model_ids)]
# 功能刀具类型 # 功能刀具类型
@@ -97,217 +96,93 @@ class CuttingToolModel(models.Model):
name = fields.Char('名称') name = fields.Char('名称')
code = fields.Char('编码') code = fields.Char('编码')
mrs_machine_brand_id = fields.Many2one('sf.machine.brand', '品牌') cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', string='刀具物料')
mrs_materials_model_id = fields.Many2one('sf.materials.model', '材料型号') 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='刀具类型',
mrs_cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', '刀具物料', required=True) )
cutting_tool_material_type = fields.Char(related='mrs_cutting_tool_material_id.name', string='刀具物料类型', brand_id = fields.Many2one('sf.machine.brand', '品牌')
store=True) tool_length = fields.Integer('长度(mm)', size=6)
# 关联刀具物料名称 tool_width = fields.Integer('宽度(mm)', size=6)
mrs_cutting_tool_material_name = fields.Char(related='mrs_cutting_tool_material_id.name', string='刀具物料名称', tool_height = fields.Integer('高度(mm)', size=6)
store=True) tool_thickness = fields.Integer('厚度(mm)', size=6)
# 关联刀具类型 tool_weight = fields.Float('重量(kg)', size=4)
mrs_cutting_tool_type_id = fields.Many2one( coating_material = fields.Char('涂层材质')
'sf.cutting.tool.type', '刀具类型', # 整体式刀具参数
domain="[('mrs_cutting_tool_material_id.name', '=', mrs_cutting_tool_material_name)]", required=True) total_length = fields.Float('总长度(mm)')
shank_length = fields.Float('柄部长度(mm)')
# 整体式刀具特有字段 blade_length = fields.Float('刃部长度(mm)')
integral_code = fields.Char('整体式刀具编码') diameter = fields.Float('直径(mm)')
integral_accuracy = fields.Float('精度(μm)') blade_number = fields.Integer('刃数')
integral_hardness = fields.Float('加工硬度(HRC)') front_angle = fields.Float('前角(°)')
integral_coating_material = fields.Char('涂层材质') rear_angle = fields.Float('后角(°)')
integral_total_length = fields.Float('总长度(mm)') main_included_angle = fields.Float('主偏角(°)')
integral_shank_length = fields.Float('柄部长度(mm)') material_model_id = fields.Many2one('sf.materials.model', '材料型号')
integral_blade_length = fields.Float('刃部长度(mm)') nut = fields.Float('配对螺母(mm)')
integral_diameter = fields.Float('直径(mm)') # 适用夹头型号可以多选
integral_blade_number = fields.Integer('刃数') chuck_ids = fields.Many2many(
integral_front_angle = fields.Float('前角(°)')
integral_rear_angle = fields.Float('后角(°)')
integral_main_included_angle = fields.Float('主偏角(°)')
integral_nut = fields.Float('配对螺母(mm)')
integral_scope = fields.Char('适用范围')
# 刀片特有字段
blade_code = fields.Char('刀片编码')
blade_coating_material = fields.Char('涂层材质')
blade_length = fields.Float('长度L(mm)')
blade_width = fields.Float('宽度D(mm)')
blade_height = fields.Float('高度T(mm)')
blade_top_angle = fields.Float('顶角(°)')
blade_front_angle = fields.Float('前角(°)')
blade_rear_angle = fields.Float('后角(°)')
blade_main_included_angle = fields.Float('主偏角(°)')
blade_r_angle = fields.Float('R角(°)')
blade_hardness = fields.Char('加工硬度')
blade_accuracy = fields.Char('精度等级')
blade_radius = fields.Float('刀尖半径(mm)')
blade_nut = fields.Float('配对螺母(mm)')
mrs_cutting_tool_model_blade_cutter_bar_ids = fields.Many2many(
'sf.cutting.tool.model', 'sf.cutting.tool.model',
relation='sf_cutting_tool_model_blade_cutter_bar_rel', relation='cutting_tool_model_handle_chuck_rel',
column1='model_id_1', column1='model_id_1',
column2='model_id_2', column2='model_id_2',
domain="[('mrs_cutting_tool_material_id.name', '=', '刀杆')]", domain="[('cutting_tool_type', '=', '夹头')]",
string='适用刀杆型号', string='适用夹头型号')
default=lambda self: [], # 使用空列表作为默认值 # 刀片参数
) top_angle = fields.Float('顶角(°)')
mrs_cutting_tool_model_blade_cutter_pad_ids = fields.Many2many( jump_accuracy = fields.Float('径跳精度(um)')
working_hardness = fields.Char('加工硬度(hrc)')
cutter_bar_ids = fields.Many2many(
'sf.cutting.tool.model', 'sf.cutting.tool.model',
relation='sf_cutting_tool_model_blade_cutter_pad_rel', relation='cutting_tool_model_blade_cutter_bar_rel',
column1='model_id_1', column1='model_id_1',
column2='model_id_2', column2='model_id_2',
domain="[('mrs_cutting_tool_material_id.name', '=', '')]", domain="[('cutting_tool_type', '=', '')]",
string='适用刀型号', string='适用刀型号'
default=lambda self: [], # 使用空列表作为默认值
) )
cutter_pad_ids = fields.Many2many(
# 刀杆特有字段
bar_code = fields.Char('刀杆编码')
bar_c_diameter = fields.Float('C柄径(mm)')
bar_total_length = fields.Float('L总长(mm)')
bar_blade_number = fields.Integer('刃数')
bar_d_diameter = fields.Float('D刃径(mm)')
mrs_cutting_tool_model_bar_blade_ids = fields.Many2many(
'sf.cutting.tool.model', 'sf.cutting.tool.model',
relation='sf_cutting_tool_model_bar_blade_rel', relation='cutting_tool_model_blade_cutter_pad_rel',
column1='model_id_1', column1='model_id_1',
column2='model_id_2', column2='model_id_2',
domain="[('mrs_cutting_tool_material_id.name', '=', '')]", domain="[('cutting_tool_type', '=', '')]",
string='适用刀型号', string='适用刀型号' # 使用空列表作为默认值
default=lambda self: [], # 使用空列表作为默认值
) )
bar_wrench = fields.Float('配对扳手(mm)') # 刀杆/参数
bar_screw = fields.Float('配备螺丝(mm)') blade_diameter = fields.Float('刃径(mm)')
bar_radius = fields.Float('刀尖圆角半径') blade_ids = fields.Many2many(
bar_accuracy = fields.Char('精度等级')
bar_hardness = fields.Char('硬度(°)')
bar_scope = fields.Char('适用范围')
# 刀盘特有字段
pad_code = fields.Char('刀盘编码')
pad_c_diameter = fields.Float('C柄径(mm)')
pad_total_length = fields.Float('L总长(mm)')
pad_blade_number = fields.Integer('刃数')
pad_d_diameter = fields.Float('D刃径(mm)')
mrs_cutting_tool_model_pad_blade_ids = fields.Many2many(
'sf.cutting.tool.model', 'sf.cutting.tool.model',
relation='sf_cutting_tool_model_pad_blade_rel', relation='cutting_tool_model_pad_blade_rel',
column1='model_id_1', column1='model_id_1',
column2='model_id_2', column2='model_id_2',
domain="[('mrs_cutting_tool_material_id.name', '=', '刀片')]", domain="[('cutting_tool_type', '=', '刀片')]",
string='适用刀片型号', string='适用刀片型号' # 使用空列表作为默认值
default=lambda self: [], # 使用空列表作为默认值
) )
pad_wrench = fields.Float('配对扳手(mm)') wrench = fields.Float('配对扳手(mm)')
pad_screw = fields.Float('配备螺丝(mm)') screw = fields.Float('配备螺丝(mm)')
pad_radius = fields.Float('刀尖圆角半径') accuracy_level = fields.Char('精度等级')
pad_accuracy = fields.Char('精度等级') # 刀柄参数
pad_hardness = fields.Char('硬度(°)') diameter_max = fields.Float('最大直径(mm)')
pad_scope = fields.Char('适用范围') clamping_diameter = fields.Float('夹持直径(mm)')
flange_length = fields.Float('法兰柄长度(mm)')
# 刀柄特有字段 flange_diameter = fields.Float('法兰直径(mm)')
handle_code = fields.Char('刀柄编码') # 夹头参数
# 柄长L(mm)、法兰柄长L1(mm)、法兰直径D1(mm) outer_diameter = fields.Float('外径(mm)')
handle_length = fields.Float('柄长L(mm)') inner_diameter = fields.Float('内径(mm)')
handle_diameter = fields.Float('直径D(mm)') handle_ids = fields.Many2many(
handle_flange_length = fields.Float('法兰柄长L1(mm)')
handle_flange_diameter = fields.Float('法兰直径D1(mm)')
# 夹持直径min、夹持直径max、径跳精度、最大转速n/min、3D模型图
handle_clamping_diameter_min = fields.Float('夹持直径min')
handle_clamping_diameter_max = fields.Float('夹持直径max')
handle_jump_accuracy = fields.Float('径跳精度')
handle_max_speed = fields.Float('最大转速n/min')
handle_weight = fields.Float('重量(kg)')
handle_body_accuracy = fields.Float('本体精度(mm)')
handle_nut = fields.Float('配对螺母(mm)')
mrs_cutting_tool_model_handle_chuck_model_ids = fields.Many2many(
'sf.cutting.tool.model', 'sf.cutting.tool.model',
relation='sf_cutting_tool_model_handle_chuck_rel', relation='cutting_tool_model_chuck_handle_rel',
column1='model_id_1', column1='model_id_1',
column2='model_id_2', column2='model_id_2',
domain="[('mrs_cutting_tool_material_id.name', '=', '夹头')]", domain="[('cutting_tool_type', '=', '刀柄')]",
string='适用夹头型号', string='适用刀柄型号'
) )
handle_clamping_range = fields.Float('夹持范围(mm)') active = fields.Boolean('有效', default=True)
handle_detection_accuracy = fields.Float('检测精度')
handle_detection_hardness = fields.Char('检测硬度')
handle_standard_speed = fields.Float('标准转速')
# 夹头特有字段 # @api.model
chuck_code = fields.Char('夹头编码') # def create(self, vals):
chuck_accuracy = fields.Float('精度(mm)') # if vals.get('name', '/') == '/' or vals.get('name', '/') is False:
# 夹持直径min、夹持直径max、3D模型图 # vals['name'] = '/'
chuck_clamping_diameter_min = fields.Float('夹持直径min') # obj = super(CuttingToolModel, self).create(vals)
chuck_clamping_diameter_max = fields.Float('夹持直径max') # return obj
chuck_diameter = fields.Float('外径(mm)')
chuck_inner_diameter = fields.Float('内径(mm)')
chuck_height = fields.Float('高度(mm)')
chuck_nut = fields.Float('配对螺母(mm)')
mrs_cutting_tool_model_chuck_handle_model_ids = fields.Many2many(
'sf.cutting.tool.model',
relation='sf_cutting_tool_model_chuck_handle_rel',
column1='model_id_1',
column2='model_id_2',
domain="[('mrs_cutting_tool_material_id.name', '=', '刀柄')]",
string='适用刀柄型号',
default=lambda self: [], # 使用空列表作为默认值
)
chuck_clamping_range = fields.Float('夹持范围(mm)')
chuck_feature = fields.Char('特性')
image = fields.Binary('图片')
three_d_model = fields.Many2one('ir.attachment', '3D模型')
hide_integral = fields.Boolean(compute='_compute_hide_model_number', default=False, string='隐藏整体式刀具')
hide_blade = fields.Boolean(compute='_compute_hide_model_number', default=False, string='隐藏刀片')
hide_cutter_bar = fields.Boolean(compute='_compute_hide_model_number', default=False, string='隐藏刀杆')
hide_cutter_pad = fields.Boolean(compute='_compute_hide_model_number', default=False, string='隐藏刀盘')
hide_handler = fields.Boolean(compute='_compute_hide_model_number', default=False, string='隐藏刀柄')
hide_chuck = fields.Boolean(compute='_compute_hide_model_number', default=False, string='隐藏夹头')
hide_model = fields.Boolean(compute='_compute_hide_model_number', default=True, string='隐藏型号')
image_is_visible = fields.Boolean(compute='_compute_image_is_visible', default=True, string='隐藏图片')
active = fields.Boolean(default=True, string='有效')
@api.depends('mrs_cutting_tool_material_id')
def _compute_image_is_visible(self):
for record in self:
record.image_is_visible = not (record.hide_handler or record.hide_chuck)
@api.depends('mrs_cutting_tool_material_id')
def _compute_hide_model_number(self):
"""
根据刀具物料类型,显示不同的字段
"""
for record in self:
record.hide_integral = False
record.hide_blade = False
record.hide_cutter_bar = False
record.hide_cutter_pad = False
record.hide_handler = False
record.hide_chuck = False
record.hide_model = True
if record.mrs_cutting_tool_material_id and record.mrs_cutting_tool_material_id.name == '整体式刀具':
record.hide_model = False
record.hide_integral = True
elif record.mrs_cutting_tool_material_id and record.mrs_cutting_tool_material_id.name == '刀片':
record.hide_model = False
record.hide_blade = True
elif record.mrs_cutting_tool_material_id and record.mrs_cutting_tool_material_id.name == '刀杆':
record.hide_model = False
record.hide_cutter_bar = True
elif record.mrs_cutting_tool_material_id and record.mrs_cutting_tool_material_id.name == '刀盘':
record.hide_model = False
record.hide_cutter_pad = True
elif record.mrs_cutting_tool_material_id and record.mrs_cutting_tool_material_id.name == '刀柄':
record.hide_model = False
record.hide_handler = True
elif record.mrs_cutting_tool_material_id and record.mrs_cutting_tool_material_id.name == '夹头':
record.hide_model = False
record.hide_chuck = True
else:
record.hide_model = True
# 刀具类型 # 刀具类型
@@ -318,18 +193,6 @@ class CuttingToolType(models.Model):
code = fields.Char('编码') code = fields.Char('编码')
name = fields.Char('名称') name = fields.Char('名称')
# 关联刀具物料 # 关联刀具物料
mrs_cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', '刀具物料') cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', '刀具物料')
# 整体式刀具类型特有字段
integral_tool_type_code = fields.Char('整体式刀具类型编码')
# 刀片类型特有字段
blade_type_code = fields.Char('刀片类型编码')
# 刀杆类型特有字段
bar_type_code = fields.Char('刀杆类型编码')
# 刀盘类型特有字段
pad_type_code = fields.Char('刀盘类型编码')
# 刀柄类型特有字段
handle_type_code = fields.Char('刀柄类型编码')
# 夹头类型特有字段
chuck_type_code = fields.Char('夹头类型编码')
remark = fields.Char('备注') remark = fields.Char('备注')
active = fields.Boolean('有效', default=True)

View File

@@ -6,3 +6,10 @@
margin-right: 0px !important; margin-right: 0px !important;
white-space: nowrap; white-space: nowrap;
} }
.o_form_label.o_field_invalid::after {
content: '*' !important;
color: red !important;
padding: 0 4px !important;
vertical-align: top !important;
font-size: 1.5rem !important;
}

View File

@@ -11,9 +11,9 @@
<field name="name" string="模糊搜索" <field name="name" string="模糊搜索"
filter_domain="['|',('name', 'ilike', self),('code', 'ilike', self)]"/> filter_domain="['|',('name', 'ilike', self),('code', 'ilike', self)]"/>
<filter name="filter_active" string="已归档" domain="[('active','=',False)]"/> <filter name="filter_active" string="已归档" domain="[('active','=',False)]"/>
<!-- <searchpanel>--> <!-- <searchpanel>-->
<!-- <field name="tag_ids" icon="fa-filter"/>--> <!-- <field name="tag_ids" icon="fa-filter"/>-->
<!-- </searchpanel>--> <!-- </searchpanel>-->
</search> </search>
</field> </field>
</record> </record>
@@ -109,7 +109,11 @@
</div> </div>
<group> <group>
<group> <group>
<field name="name" required="1" string="名称"/> <label for="name"/>
<h1>
<field name="name" string="设备名称" placeholder="e.g. LED Monitor"/>
</h1>
<field name="code" force_save="1" readonly="1"/>
<field name="brand_id" required="1" <field name="brand_id" required="1"
domain="[('tag_ids', '=', '机床')]" domain="[('tag_ids', '=', '机床')]"
options="{'no_create': True}"/> options="{'no_create': True}"/>
@@ -194,7 +198,7 @@
</group> </group>
<group string="主轴"> <group string="主轴">
<field name="taper" required="1"/> <field name="taper" required="1"/>
<field name="rotate_speed" string="主轴转速(min)" required="1" <field name="rotate_speed" string="主轴转速(r/min)" required="1"
options="{'format': false}"/> options="{'format': false}"/>
<field name="heightened_way" required="1"/> <field name="heightened_way" required="1"/>
<field name="torque" required="1"/> <field name="torque" required="1"/>
@@ -219,11 +223,11 @@
<div class="test_model"> <div class="test_model">
<label for="tool_diameter_min" string="最小(min)"/> <label for="tool_diameter_min" string="最小(min)"/>
<field name="tool_diameter_min" class="o_address_zip" required="1" <field name="tool_diameter_min" class="o_address_zip" required="1"
options="{'format': false}"/> options="{'format': false}"/>Φ
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
<label for="tool_diameter_max" string="最大(max)"/> <label for="tool_diameter_max" string="最大(max)"/>
<field name="tool_diameter_max" class="o_address_zip" required="1" <field name="tool_diameter_max" class="o_address_zip" required="1"
options="{'format': false}"/> options="{'format': false}"/>Φ
</div> </div>
<field name="tool_quality_max" required="1"/> <field name="tool_quality_max" required="1"/>
</group> </group>
@@ -359,21 +363,38 @@
</h1> </h1>
</div> </div>
<group string="基本信息"> <group string="基本信息">
<!-- <group>-->
<!-- <field name="brand_id"-->
<!-- required="1"-->
<!-- domain="[('tag_ids', '=', '机床')]"-->
<!-- options="{'no_create': True}"/>-->
<!-- </group>-->
<group> <group>
<field name="brand_id" <field name="name" required="1" string="设备名称" placeholder="e.g. LED Monitor"/>
required="1"
domain="[('tag_ids', '=', '机床')]"
options="{'no_create': True}"/>
</group>
<group>
<field name="name" required="1"/>
<field name="type_id" required="1" options="{'no_create': True}" <field name="type_id" required="1" options="{'no_create': True}"
domain="[('brand_id', '=', brand_id)]" domain="[('brand_id', '=', brand_id)]"
attrs="{'invisible': [('brand_id','=',False)]}"/> attrs="{'invisible': [('brand_id','=',False)]}"/>
</group> </group>
<!-- <div class="oe_title">-->
<group> <!-- <label for="name"/>-->
<field name="code" readonly="1" string="行业编码" force_save="1"/> <!-- <h1><field name="name" string="设备名称" placeholder="e.g. LED Monitor"/></h1>-->
<!-- </div>-->
<group string="基本信息">
<group>
<field name="MTcode" string="编码"/>
<field name="brand_id"
required="1"
domain="[('tag_ids', '=', '机床')]"
options="{'no_create': True}"/>
</group>
<group>
<field name="type_id" required="1" options="{'no_create': True}"
domain="[('brand_id', '=', brand_id)]"
attrs="{'invisible': [('brand_id','=',False)]}"/>
</group>
<group>
<field name="code" readonly="1" string="行业编码" force_save="1"/>
</group>
</group> </group>
</group> </group>
<notebook> <notebook>

View File

@@ -187,7 +187,6 @@
<group> <group>
<group> <group>
<field name="name" string="名称"/> <field name="name" string="名称"/>
<field name="brand_id" options="{'no_create': True}"/>
<field name="fixture_material_id" options="{'no_create': True}"/> <field name="fixture_material_id" options="{'no_create': True}"/>
<field name="fixture_material_type" invisible="1"/> <field name="fixture_material_type" invisible="1"/>
<field name="multi_mounting_type_id" options="{'no_create': True}"/> <field name="multi_mounting_type_id" options="{'no_create': True}"/>
@@ -200,9 +199,10 @@
</group> </group>
<notebook> <notebook>
<page string="参数" <page string="参数"
attrs='{"invisible": [("fixture_material_type","not in",("气动托盘","转接板(锁板)托盘","磁吸托盘","虎钳托盘","零点卡盘"))]}'> attrs='{"invisible": [("fixture_material_type","not in",("气动夹具","转接板(锁板)夹具","磁吸夹具","虎钳夹具","零点卡盘"))]}'>
<group> <group>
<group> <group>
<field name="brand_id" options="{'no_create': True}"/>
<label for="length" string="尺寸(mm)"/> <label for="length" string="尺寸(mm)"/>
<div class="test_model"> <div class="test_model">
<label for="length" string="长"/> <label for="length" string="长"/>
@@ -220,16 +220,16 @@
<field name="weight"></field> <field name="weight"></field>
<field name="materials_model_id" options="{'no_create': True}"/> <field name="materials_model_id" options="{'no_create': True}"/>
<field name="clamping_way" <field name="clamping_way"
attrs='{"invisible": [("fixture_material_type","not in",("气动托盘","磁吸托盘","虎钳托盘"))]}'/> attrs='{"invisible": [("fixture_material_type","not in",("气动夹具","磁吸夹具","虎钳夹具"))]}'/>
<field name="port_type" <field name="port_type"
attrs='{"invisible": [("fixture_material_type","not in",("气动托盘","磁吸托盘","虎钳托盘"))]}'/> attrs='{"invisible": [("fixture_material_type","not in",("气动夹具","磁吸夹具","虎钳夹具"))]}'/>
<field name="through_hole_size" <field name="through_hole_size"
attrs='{"invisible": [("fixture_material_type","!=",("转接板(锁板)托盘"))]}'/> attrs='{"invisible": [("fixture_material_type","!=",("转接板(锁板)夹具"))]}'/>
<field name="screw_size" <field name="screw_size"
attrs='{"invisible": [("fixture_material_type","!=",("转接板(锁板)托盘"))]}'/> attrs='{"invisible": [("fixture_material_type","!=",("转接板(锁板)夹具"))]}'/>
<field name="driving_way" <field name="driving_way"
attrs='{"invisible": [("fixture_material_type","not in",("虎钳托盘","零点卡盘"))]}'/> attrs='{"invisible": [("fixture_material_type","not in",("虎钳夹具","零点卡盘"))]}'/>
<field name="apply_machine_tool_type_ids" widget="many2many_tags" <field name="apply_machine_tool_type_ids" widget="many2many_tags" options="{'no_create': True}"
attrs='{"invisible": [("fixture_material_type","!=",("零点卡盘"))]}'/> attrs='{"invisible": [("fixture_material_type","!=",("零点卡盘"))]}'/>
</group> </group>
<group> <group>
@@ -240,20 +240,20 @@
<label for="clamp_workpiece_length_max" string="长"/> <label for="clamp_workpiece_length_max" string="长"/>
<field name="clamp_workpiece_length_max" class="o_address_zip" <field name="clamp_workpiece_length_max" class="o_address_zip"
options="{'format': false}" options="{'format': false}"
attrs="{'required': [('fixture_material_type', 'in',('气动托盘','转接板(锁板)托盘','磁吸托盘','虎钳托盘'))]}"/> attrs="{'required': [('fixture_material_type', 'in',('气动夹具','转接板(锁板)夹具','磁吸夹具','虎钳夹具'))]}"/>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
<label for="clamp_workpiece_width_max" string="宽"/> <label for="clamp_workpiece_width_max" string="宽"/>
<field name="clamp_workpiece_width_max" class="o_address_zip" <field name="clamp_workpiece_width_max" class="o_address_zip"
options="{'format': false}" options="{'format': false}"
attrs="{'required': [('fixture_material_type', 'in',('气动托盘','转接板(锁板)托盘','磁吸托盘','虎钳托盘'))]}"/> attrs="{'required': [('fixture_material_type', 'in',('气动夹具','转接板(锁板)夹具','磁吸夹具','虎钳夹具'))]}"/>
<span>&amp;nbsp;</span> <span>&amp;nbsp;</span>
<label for="clamp_workpiece_height_max" string="高"/> <label for="clamp_workpiece_height_max" string="高"/>
<field name="clamp_workpiece_height_max" class="o_address_zip" <field name="clamp_workpiece_height_max" class="o_address_zip"
options="{'format': false}" options="{'format': false}"
attrs="{'required': [('fixture_material_type', 'in',('气动托盘','转接板(锁板)托盘','磁吸托盘','虎钳托盘'))]}"/> attrs="{'required': [('fixture_material_type', 'in',('气动夹具','转接板(锁板)夹具','磁吸夹具','虎钳夹具'))]}"/>
</div> </div>
<field name="clamp_workpiece_diameter_max" string="夹持工件最大直径(mm)" <field name="clamp_workpiece_diameter_max" string="夹持工件最大直径(mm)"
attrs="{'invisible': [('fixture_material_type','=','零点卡盘')],'required': [('fixture_material_type', 'in',('气动托盘','转接板(锁板)托盘','磁吸托盘','虎钳托盘'))]}"/> attrs="{'invisible': [('fixture_material_type','=','零点卡盘')],'required': [('fixture_material_type', 'in',('气动夹具','转接板(锁板)夹具','磁吸夹具','虎钳夹具'))]}"/>
<field name="maximum_carrying_weight"></field> <field name="maximum_carrying_weight"></field>
<field name="maximum_clamping_force"></field> <field name="maximum_clamping_force"></field>
</group> </group>

View File

@@ -58,13 +58,13 @@
<field name="code"/> <field name="code"/>
<field name="name" string="名称"/> <field name="name" string="名称"/>
<field name="mrs_cutting_tool_type_id"/> <field name="mrs_cutting_tool_type_id"/>
<field name="mrs_cutting_tool_integral_model_ids" optional="hide"/> <!-- <field name="mrs_cutting_tool_integral_model_ids" optional="hide"/>-->
<field name="mrs_cutting_tool_blade_model_ids" optional="hide"/> <!-- <field name="mrs_cutting_tool_blade_model_ids" optional="hide"/>-->
<field name="mrs_cutting_tool_cutterbar_model_ids" optional="hide"/> <!-- <field name="mrs_cutting_tool_cutterbar_model_ids" optional="hide"/>-->
<field name="mrs_cutting_tool_cutterpad_model_ids" optional="hide"/> <!-- <field name="mrs_cutting_tool_cutterpad_model_ids" optional="hide"/>-->
<field name="mrs_cutting_tool_cutterhandle_model_ids" optional="hide"/> <!-- <field name="mrs_cutting_tool_cutterhandle_model_ids" optional="hide"/>-->
<field name="mrs_cutting_tool_cutterhead_model_ids" optional="hide"/> <!-- <field name="mrs_cutting_tool_cutterhead_model_ids" optional="hide"/>-->
<field name="image" widget='image'/> <!-- <field name="image" widget='image'/>-->
</tree> </tree>
</field> </field>
</record> </record>
@@ -85,50 +85,50 @@
<field name="mrs_cutting_tool_model_id" <field name="mrs_cutting_tool_model_id"
options="{'no_create': True, 'no_quick_create': True}" options="{'no_create': True, 'no_quick_create': True}"
attrs="{'invisible': True}"/> attrs="{'invisible': True}"/>
<field name="mrs_cutting_tool_integral_model_ids" <!-- <field name="mrs_cutting_tool_integral_model_ids"-->
options="{'no_create': True, 'no_quick_create': True}" <!-- options="{'no_create': True, 'no_quick_create': True}"-->
widget="many2many_tags"/> <!-- widget="many2many_tags"/>-->
<field name="mrs_cutting_tool_blade_model_ids" <!-- <field name="mrs_cutting_tool_blade_model_ids"-->
options="{'no_create': True, 'no_quick_create': True}" <!-- options="{'no_create': True, 'no_quick_create': True}"-->
widget="many2many_tags"/> <!-- widget="many2many_tags"/>-->
<field name="mrs_cutting_tool_cutterbar_model_ids" <!-- <field name="mrs_cutting_tool_cutterbar_model_ids"-->
options="{'no_create': True, 'no_quick_create': True}" <!-- options="{'no_create': True, 'no_quick_create': True}"-->
widget="many2many_tags"/> <!-- widget="many2many_tags"/>-->
<field name="mrs_cutting_tool_cutterpad_model_ids" <!-- <field name="mrs_cutting_tool_cutterpad_model_ids"-->
options="{'no_create': True, 'no_quick_create': True}" <!-- options="{'no_create': True, 'no_quick_create': True}"-->
widget="many2many_tags"/> <!-- widget="many2many_tags"/>-->
<field name="mrs_cutting_tool_cutterhandle_model_ids" <!-- <field name="mrs_cutting_tool_cutterhandle_model_ids"-->
options="{'no_create': True, 'no_quick_create': True}" <!-- options="{'no_create': True, 'no_quick_create': True}"-->
widget="many2many_tags"/> <!-- widget="many2many_tags"/>-->
<field name="mrs_cutting_tool_cutterhead_model_ids" <!-- <field name="mrs_cutting_tool_cutterhead_model_ids"-->
options="{'no_create': True, 'no_quick_create': True}" <!-- options="{'no_create': True, 'no_quick_create': True}"-->
widget="many2many_tags"/> <!-- widget="many2many_tags"/>-->
</group>
<group>
<field name="image" nolabel="1" widget="image"/>
</group> </group>
<!-- <group>-->
<!-- <field name="image" nolabel="1" widget="image"/>-->
<!-- </group>-->
</group> </group>
<group string='参数信息'> <!-- <group string='参数信息'>-->
<group> <!-- <group>-->
<field name="diameter"/> <!-- <field name="diameter"/>-->
<field name="tool_grade"/> <!-- <field name="tool_grade"/>-->
<field name="machining_accuracy"/> <!-- <field name="machining_accuracy"/>-->
<field name="tool_length"/> <!-- <field name="tool_length"/>-->
<field name="blade_number"/> <!-- <field name="blade_number"/>-->
</group> <!-- </group>-->
<group> <!-- <group>-->
<field name="integral_blade_length"/> <!-- <field name="integral_blade_length"/>-->
<field name="effective_blade_length"/> <!-- <field name="effective_blade_length"/>-->
<field name="max_life"/> <!-- <field name="max_life"/>-->
<field name="is_standard"/> <!-- <field name="is_standard"/>-->
</group> <!-- </group>-->
</group> <!-- </group>-->
<group string='其他信息'> <!-- <group string='其他信息'>-->
<group> <!-- <group>-->
<field name="applicable_range"/> <!-- <field name="applicable_range"/>-->
</group> <!-- </group>-->
</group> <!-- </group>-->
</group> </group>
</sheet> </sheet>
</form> </form>
@@ -201,8 +201,7 @@
<tree string="刀具型号" edit="0" delete="0" create="0"> <tree string="刀具型号" edit="0" delete="0" create="0">
<field name="code"/> <field name="code"/>
<field name="name" string="名称"/> <field name="name" string="名称"/>
<field name="mrs_cutting_tool_material_id"/> <field name="cutting_tool_material_id"/>
<field name="image" widget='image'/>
</tree> </tree>
</field> </field>
</record> </record>
@@ -220,214 +219,101 @@
</div> </div>
<group> <group>
<group> <group>
<field name="name"/> <field name="name" string="名称"/>
<field name="cutting_tool_material_type" invisible="1"/> <field name="cutting_tool_material_id"
<field name="mrs_cutting_tool_material_id"
options="{'no_create': True, 'no_quick_create': True}"/>
<field name="mrs_machine_brand_id"
options="{'no_create': True, 'no_quick_create': True}"/>
<field name="mrs_materials_model_id"
options="{'no_create': True, 'no_quick_create': True}"/>
<field name="mrs_cutting_tool_type_id"
options="{'no_create': True, 'no_quick_create': True}"/> options="{'no_create': True, 'no_quick_create': True}"/>
<field name="cutting_tool_type" invisible="1"/>
</group> </group>
<group> <!-- <group>-->
<field name="image" nolabel="1" widget="image"/> <!-- <field name="image" nolabel="1" widget="image"/>-->
</group> <!-- </group>-->
</group> </group>
<notebook> <notebook>
<page string="参数" <page string="参数"
attrs="{'invisible': [('cutting_tool_material_type', '=', False)]}"> attrs="{'invisible': [('cutting_tool_type', '=', False)]}">
<group> <group>
<!--整体式刀具-->
<group> <group>
<field name="hide_integral" invisible="1"/> <field name="brand_id"/>
<field name="hide_blade" invisible="1"/> <field name="cutting_tool_type_id" />
<field name="hide_cutter_bar" invisible="1"/> <field name="material_model_id"/>
<field name="hide_cutter_pad" invisible="1"/> <field name="total_length"
<field name="hide_handler" invisible="1"/> attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀柄'))]}"/>
<field name="hide_chuck" invisible="1"/> <field name="shank_length"
<field name="mrs_cutting_tool_material_name" invisible="1"/> attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
<field name="integral_total_length"
attrs="{'invisible': [('hide_integral', '=', False)], 'required': [('hide_integral', '!=', False)]}"/>
<field name="integral_shank_length"
attrs="{'invisible': [('hide_integral', '=', False)], 'required': [('hide_integral', '!=', False)]}"/>
<field name="integral_blade_length"
attrs="{'invisible': [('hide_integral', '=', False)], 'required': [('hide_integral', '!=', False)]}"/>
<field name="integral_diameter"
attrs="{'invisible': [('hide_integral', '=', False)], 'required': [('hide_integral', '!=', False)]}"/>
<field name="integral_blade_number"
attrs="{'invisible': [('hide_integral', '=', False)], 'required': [('hide_integral', '!=', False)]}"/>
<field name="integral_accuracy"
attrs="{'invisible': [('hide_integral', '=', False)], 'required': [('hide_integral', '!=', False)]}"/>
<field name="integral_hardness"
attrs="{'invisible': [('hide_integral', '=', False)], 'required': [('hide_integral', '!=', False)]}"/>
<field name="blade_length" <field name="blade_length"
attrs="{'invisible': [('hide_blade', '=', False)], 'required': [('hide_blade', '!=', False)]}"/> attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
<field name="blade_width" <!--刀片-->
attrs="{'invisible': [('hide_blade', '=', False)], 'required': [('hide_blade', '!=', False)]}"/> <label for="tool_length" string="尺寸(mm)"
<field name="blade_height" attrs='{"invisible": [("cutting_tool_type","not in",("刀片","刀杆","刀盘"))]}'/>
attrs="{'invisible': [('hide_blade', '=', False)], 'required': [('hide_blade', '!=', False)]}"/> <div class="test_model"
<field name="blade_top_angle" attrs='{"invisible": [("cutting_tool_type","not in",("刀片","刀杆","刀盘"))]}'>
attrs="{'invisible': [('hide_blade', '=', False)], 'required': [('hide_blade', '!=', False)]}"/> <label for="tool_length" string="长"/>
<field name="blade_front_angle" <field name="tool_length" class="o_address_zip"
attrs="{'invisible': [('hide_blade', '=', False)], 'required': [('hide_blade', '!=', False)]}"/> options="{'format': false}"/>
<field name="blade_rear_angle" <label for="tool_width" string="宽"/>
attrs="{'invisible': [('hide_blade', '=', False)], 'required': [('hide_blade', '!=', False)]}"/> <field name="tool_width" class="o_address_zip"
options="{'format': false}"/>
<field name="bar_c_diameter" <label for="tool_thickness" string="厚"/>
attrs="{'invisible': [('hide_cutter_bar', '=', False)], 'required': [('hide_cutter_bar', '!=', False)]}"/> <field name="tool_thickness" class="o_address_zip"
<field name="bar_total_length" options="{'format': false}"/>
attrs="{'invisible': [('hide_cutter_bar', '=', False)], 'required': [('hide_cutter_bar', '!=', False)]}"/> </div>
<field name="bar_blade_number" <field name="diameter"
attrs="{'invisible': [('hide_cutter_bar', '=', False)], 'required': [('hide_cutter_bar', '!=', False)]}"/> attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片','刀杆','刀盘'))]}"/>
<field name="bar_d_diameter" <field name="blade_diameter"
attrs="{'invisible': [('hide_cutter_bar', '=', False)], 'required': [('hide_cutter_bar', '!=', False)]}"/> attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))]}"/>
<field name="bar_wrench" <field name="blade_number"
attrs="{'invisible': [('hide_cutter_bar', '=', False)], 'required': [('hide_cutter_bar', '!=', False)]}"/> attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片','刀杆','刀盘'))]}"/>
<field name="diameter_max"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')]}"/>
<field name="pad_c_diameter" <field name="flange_length"
attrs="{'invisible': [('hide_cutter_pad', '=', False)], 'required': [('hide_cutter_pad', '!=', False)]}"/> attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')]}"/>
<field name="pad_total_length" <field name="flange_diameter"
attrs="{'invisible': [('hide_cutter_pad', '=', False)], 'required': [('hide_cutter_pad', '!=', False)]}"/> attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')]}"/>
<field name="pad_blade_number" <!--夹头-->
attrs="{'invisible': [('hide_cutter_pad', '=', False)], 'required': [('hide_cutter_pad', '!=', False)]}"/> <field name="outer_diameter"
<field name="pad_d_diameter" attrs='{"invisible": [("cutting_tool_type","!=","夹头")]}'/>
attrs="{'invisible': [('hide_cutter_pad', '=', False)], 'required': [('hide_cutter_pad', '!=', False)]}"/> <field name="inner_diameter"
<field name="pad_wrench" attrs='{"invisible": [("cutting_tool_type","!=","夹头")]}'/>
attrs="{'invisible': [('hide_cutter_pad', '=', False)], 'required': [('hide_cutter_pad', '!=', False)]}"/> <field name="tool_height"
attrs='{"invisible": [("cutting_tool_type","!=","夹头")]}'/>
<field name="tool_weight"
<field name="handle_length" attrs='{"invisible": [("cutting_tool_type","not in",("夹头","刀柄"))]}'/>
attrs="{'invisible': [('hide_handler', '=', False)], 'required': [('hide_handler', '!=', False)]}"/> <field name="clamping_diameter"
<field name="handle_flange_length" attrs="{'invisible': [('cutting_tool_type', 'not in', ('夹头','刀柄'))]}"/>
attrs="{'invisible': [('hide_handler', '=', False)], 'required': [('hide_handler', '!=', False)]}"/> <field name="cutter_bar_ids" widget="many2many_tags"
<field name="handle_flange_diameter" attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}"/>
attrs="{'invisible': [('hide_handler', '=', False)], 'required': [('hide_handler', '!=', False)]}"/> <field name="cutter_pad_ids" widget="many2many_tags"
<field name="handle_weight" attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}"/>
attrs="{'invisible': [('hide_handler', '=', False)], 'required': [('hide_handler', '!=', False)]}"/> <field name="blade_ids" widget="many2many_tags"
<field name="handle_body_accuracy" attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))]}"/>
attrs="{'invisible': [('hide_handler', '=', False)], 'required': [('hide_handler', '!=', False)]}"/> <field name="chuck_ids" widget="many2many_tags"
<field name="handle_clamping_diameter_min" attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘','刀柄','整体式刀具'))]}"/>
attrs="{'invisible': [('hide_handler', '=', False)], 'required': [('hide_handler', '!=', False)]}"/> <field name="handle_ids" widget="many2many_tags"
<field name="handle_clamping_diameter_max" attrs="{'invisible': [('cutting_tool_type', 'not in', ('夹头'))]}"/>
attrs="{'invisible': [('hide_handler', '=', False)], 'required': [('hide_handler', '!=', False)]}"/>
<field name="chuck_accuracy"
attrs="{'invisible': [('hide_chuck', '=', False)], 'required': [('hide_chuck', '!=', False)]}"/>
<field name="chuck_diameter"
attrs="{'invisible': [('hide_chuck', '=', False)], 'required': [('hide_chuck', '!=', False)]}"/>
<field name="chuck_inner_diameter"
attrs="{'invisible': [('hide_chuck', '=', False)], 'required': [('hide_chuck', '!=', False)]}"/>
<field name="chuck_height"
attrs="{'invisible': [('hide_chuck', '=', False)], 'required': [('hide_chuck', '!=', False)]}"/>
</group> </group>
<group> <group>
<field name="jump_accuracy"
<field name="integral_front_angle" attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')]}"/>
attrs="{'invisible': [('hide_integral', '=', False)], 'required': [('hide_integral', '!=', False)]}"/> <field name="front_angle"
<field name="integral_rear_angle" attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}"/>
attrs="{'invisible': [('hide_integral', '=', False)], 'required': [('hide_integral', '!=', False)]}"/> <field name="top_angle"
<field name="integral_main_included_angle" attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}"/>
attrs="{'invisible': [('hide_integral', '=', False)], 'required': [('hide_integral', '!=', False)]}"/> <field name="rear_angle"
<field name="integral_coating_material" attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}"/>
attrs="{'invisible': [('hide_integral', '=', False)], 'required': [('hide_integral', '!=', False)]}"/> <field name="main_included_angle"
<field name="integral_nut" attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}"/>
attrs="{'invisible': [('hide_integral', '=', False)], 'required': [('hide_integral', '!=', False)]}"/> <field name="coating_material"
<field name="integral_scope" attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}"/>
attrs="{'invisible': [('hide_integral', '=', False)], 'required': [('hide_integral', '!=', False)]}"/> <field name="accuracy_level"
attrs="{'invisible': [('cutting_tool_type', '=', '刀柄')]}"/>
<field name="working_hardness"/>
<field name="blade_main_included_angle" <field name="wrench"
attrs="{'invisible': [('hide_blade', '=', False)], 'required': [('hide_blade', '!=', False)]}"/> attrs="{'invisible': [('cutting_tool_type', 'not in', ('夹头','刀柄','刀杆','刀盘' ))]}"/>
<field name="blade_r_angle" <field name="screw"
attrs="{'invisible': [('hide_blade', '=', False)], 'required': [('hide_blade', '!=', False)]}"/> attrs="{'invisible': [('cutting_tool_type', 'not in', ('夹头','刀柄'))]}"/>
<field name="blade_coating_material" <field name="nut"
attrs="{'invisible': [('hide_blade', '=', False)], 'required': [('hide_blade', '!=', False)]}"/> attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}"/>
<field name="blade_hardness"
attrs="{'invisible': [('hide_blade', '=', False)], 'required': [('hide_blade', '!=', False)]}"/>
<field name="blade_radius"
attrs="{'invisible': [('hide_blade', '=', False)], 'required': [('hide_blade', '!=', False)]}"/>
<field name="blade_nut"
attrs="{'invisible': [('hide_blade', '=', False)], 'required': [('hide_blade', '!=', False)]}"/>
<field name="bar_screw"
attrs="{'invisible': [('hide_cutter_bar', '=', False)], 'required': [('hide_cutter_bar', '!=', False)]}"/>
<field name="bar_radius"
attrs="{'invisible': [('hide_cutter_bar', '=', False)], 'required': [('hide_cutter_bar', '!=', False)]}"/>
<field name="bar_hardness"
attrs="{'invisible': [('hide_cutter_bar', '=', False)], 'required': [('hide_cutter_bar', '!=', False)]}"/>
<field name="bar_scope"
attrs="{'invisible': [('hide_cutter_bar', '=', False)], 'required': [('hide_cutter_bar', '!=', False)]}"/>
<field name="pad_screw"
attrs="{'invisible': [('hide_cutter_pad', '=', False)], 'required': [('hide_cutter_pad', '!=', False)]}"/>
<field name="pad_radius"
attrs="{'invisible': [('hide_cutter_pad', '=', False)], 'required': [('hide_cutter_pad', '!=', False)]}"/>
<field name="pad_accuracy"
attrs="{'invisible': [('hide_cutter_pad', '=', False)], 'required': [('hide_cutter_pad', '!=', False)]}"/>
<field name="pad_hardness"
attrs="{'invisible': [('hide_cutter_pad', '=', False)], 'required': [('hide_cutter_pad', '!=', False)]}"/>
<field name="pad_scope"
attrs="{'invisible': [('hide_cutter_pad', '=', False)], 'required': [('hide_cutter_pad', '!=', False)]}"/>
<field name="handle_nut"
attrs="{'invisible': [('hide_handler', '=', False)], 'required': [('hide_handler', '!=', False)]}"/>
<field name="handle_clamping_range"
attrs="{'invisible': [('hide_handler', '=', False)], 'required': [('hide_handler', '!=', False)]}"/>
<field name="handle_detection_accuracy"
attrs="{'invisible': [('hide_handler', '=', False)], 'required': [('hide_handler', '!=', False)]}"/>
<field name="handle_detection_hardness"
attrs="{'invisible': [('hide_handler', '=', False)], 'required': [('hide_handler', '!=', False)]}"/>
<field name="handle_standard_speed"
attrs="{'invisible': [('hide_handler', '=', False)], 'required': [('hide_handler', '!=', False)]}"/>
<field name="handle_jump_accuracy"
attrs="{'invisible': [('hide_handler', '=', False)], 'required': [('hide_handler', '!=', False)]}"/>
<field name="handle_max_speed"
attrs="{'invisible': [('hide_handler', '=', False)], 'required': [('hide_handler', '!=', False)]}"/>
<field name="chuck_nut"
attrs="{'invisible': [('hide_chuck', '=', False)], 'required': [('hide_chuck', '!=', False)]}"/>
<field name="chuck_clamping_range"
attrs="{'invisible': [('hide_chuck', '=', False)], 'required': [('hide_chuck', '!=', False)]}"/>
<field name="chuck_feature"
attrs="{'invisible': [('hide_chuck', '=', False)], 'required': [('hide_chuck', '!=', False)]}"/>
</group>
<group string='其他信息'>
<group>
<field name="mrs_cutting_tool_model_blade_cutter_bar_ids"
widget="many2many_tags"
options="{'no_create': True, 'no_quick_create': True}"
attrs="{'invisible': [('hide_blade', '=', False)]}"/>
<field name="mrs_cutting_tool_model_bar_blade_ids" widget="many2many_tags"
options="{'no_create': True, 'no_quick_create': True}"
attrs="{'invisible': [('hide_cutter_bar', '=', False)]}"/>
<field name="mrs_cutting_tool_model_pad_blade_ids" widget="many2many_tags"
options="{'no_create': True, 'no_quick_create': True}"
attrs="{'invisible': [('hide_cutter_pad', '=', False)]}"/>
<field name="mrs_cutting_tool_model_handle_chuck_model_ids"
widget="many2many_tags"
options="{'no_create': True, 'no_quick_create': True}"
attrs="{'invisible': [('hide_handler', '=', False)]}"/>
<field name="mrs_cutting_tool_model_chuck_handle_model_ids"
widget="many2many_tags"
options="{'no_create': True, 'no_quick_create': True}"
attrs="{'invisible': [('hide_chuck', '=', False)]}"/>
</group>
<group>
<field name="mrs_cutting_tool_model_blade_cutter_pad_ids"
widget="many2many_tags"
options="{'no_create': True, 'no_quick_create': True}"
attrs="{'invisible': [('hide_blade', '=', False)]}"/>
</group>
</group> </group>
</group> </group>
</page> </page>
@@ -447,7 +333,7 @@
<field name="code" string="编码搜索" filter_domain="[('code','ilike',self)]"/> <field name="code" string="编码搜索" filter_domain="[('code','ilike',self)]"/>
<filter name="filter_active" string="已归档" domain="[('active','=',False)]"/> <filter name="filter_active" string="已归档" domain="[('active','=',False)]"/>
<searchpanel class="account_root"> <searchpanel class="account_root">
<field name="mrs_cutting_tool_material_id" icon="fa-filter"/> <field name="cutting_tool_material_id" icon="fa-filter"/>
</searchpanel> </searchpanel>
</search> </search>
</field> </field>
@@ -462,7 +348,7 @@
<tree string="刀具类型" create="0" edit="0" delete="0"> <tree string="刀具类型" create="0" edit="0" delete="0">
<field name="code"/> <field name="code"/>
<field name="name" string="名称"/> <field name="name" string="名称"/>
<field name="mrs_cutting_tool_material_id"/> <field name="cutting_tool_material_id"/>
<field name="remark"/> <field name="remark"/>
</tree> </tree>
</field> </field>
@@ -497,8 +383,9 @@
<search string="刀具类型"> <search string="刀具类型">
<field name="name" string="名称搜索" filter_domain="[('name','ilike',self)]"/> <field name="name" string="名称搜索" filter_domain="[('name','ilike',self)]"/>
<field name="code" string="编码搜索" filter_domain="[('code','ilike',self)]"/> <field name="code" string="编码搜索" filter_domain="[('code','ilike',self)]"/>
<filter name="filter_active" string="已归档" domain="[('active','=',False)]"/>
<searchpanel class="account_root"> <searchpanel class="account_root">
<field name="mrs_cutting_tool_material_id" icon="fa-filter"/> <field name="cutting_tool_material_id" icon="fa-filter"/>
</searchpanel> </searchpanel>
</search> </search>
</field> </field>

View File

@@ -30,7 +30,7 @@
<field name="cutting_tool_material_id" attrs="{'invisible': [('categ_type', '!=', '刀具')]}"/> <field name="cutting_tool_material_id" attrs="{'invisible': [('categ_type', '!=', '刀具')]}"/>
<field name="cutting_tool_model_id" <field name="cutting_tool_model_id"
attrs="{'invisible': [('categ_type', '!=', '刀具')]}" attrs="{'invisible': [('categ_type', '!=', '刀具')]}"
domain="[('mrs_cutting_tool_material_id','=',cutting_tool_material_id)]"/> domain="[('cutting_tool_material_id','=',cutting_tool_material_id)]"/>
<field name="fixture_material_id" attrs="{'invisible': [('categ_type', '!=', '夹具')]}"/> <field name="fixture_material_id" attrs="{'invisible': [('categ_type', '!=', '夹具')]}"/>
<field name="fixture_model_id" string="型号" <field name="fixture_model_id" string="型号"
attrs="{'invisible': [('categ_type', '!=', '夹具')]}" attrs="{'invisible': [('categ_type', '!=', '夹具')]}"
@@ -79,154 +79,100 @@
<page string="刀具物料参数" attrs="{'invisible': [('categ_type', '!=', '刀具')]}"> <page string="刀具物料参数" attrs="{'invisible': [('categ_type', '!=', '刀具')]}">
<group> <group>
<!--整体式刀具--> <!--整体式刀具-->
<group attrs="{'invisible': ['|','|',('cutting_tool_model_id','=',False),('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '整体式刀具')]}"> <group attrs="{'invisible': [('categ_type', '!=', '刀具')]}">
<field name="brand_id" <field name="brand_id" options="{'no_create': True}"/>
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'required': [('cutting_tool_type', '=', '整体式刀具')]}"/> <field name="materials_type_id" options="{'no_create': True}"/>
<field name="cutting_tool_total_length"/> <field name="cutting_tool_type_id" options="{'no_create': True}"/>
<field name="cutting_tool_shank_length"/> <field name="cutting_tool_total_length"
<field name="cutting_tool_blade_length"/> attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀柄'))]}"/>
<field name="cutting_tool_diameter"/> <field name="cutting_tool_shank_length"
<field name="cutting_tool_nut"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/> attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
<field name="cutting_tool_blade_number" <field name="cutting_tool_blade_length"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/> attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
</group> <!--刀片-->
<group attrs="{'invisible': ['|','|',('cutting_tool_model_id','=',False),('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '整体式刀具')]}"> <label for="tool_length" string="尺寸(mm)"
<field name="cutting_tool_material_model_id" attrs='{"invisible": [("cutting_tool_type","not in",("刀片","刀杆","刀盘"))]}'/>
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'required': [('cutting_tool_type', '=', '整体式刀具')]}"/> <div class="test_model"
<field name="cutting_tool_front_angle" attrs='{"invisible": [("cutting_tool_type","not in",("刀片","刀杆","刀盘"))]}'>
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/> <label for="tool_length" string="长"/>
<field name="cutting_tool_rear_angle" <field name="tool_length" class="o_address_zip"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/> options="{'format': false}"/>
<field name="cutting_tool_main_included_angle" <label for="tool_width" string="宽"/>
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/> <field name="tool_width" class="o_address_zip"
</group> options="{'format': false}"/>
<group attrs="{'invisible': ['|',('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '整体式刀具')]}"> <label for="tool_thickness" string="厚"/>
<field name="cutting_tool_chuck_model_ids" widget="many2many_tags" <field name="tool_thickness" class="o_address_zip"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')],'required': [('cutting_tool_type', '=', '整体式刀具')]}"/> options="{'format': false}"/>
<field name="cutting_tool_scope"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"/>
</group>
<!--刀片-->
<group attrs="{'invisible': ['|','|',('cutting_tool_model_id','=',False),('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '刀片')]}">
<field name="brand_id"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'required': [('cutting_tool_type', '=', '刀片')]}"/>
<field name="cutting_tool_top_angle"/>
<field name="cutting_tool_front_angle"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')]}"/>
<field name="cutting_tool_rear_angle"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')]}"/>
<field name="cutting_tool_main_included_angle"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')]}"/>
<field name="cutting_tool_r_angle"/>
<field name="cutting_tool_working_hardness"
attrs="{'required': [('cutting_tool_type', '=', '刀片')]}"/>
</group>
<group attrs="{'invisible': ['|','|',('cutting_tool_model_id','=',False),('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '刀片')]}">
<field name="cutting_tool_material_model_id"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')],'required': [('cutting_tool_type', '=', '刀片')]}"/>
<label for="tool_length" string="尺寸(mm)"/>
<div class="o_address_format">
<label for="tool_length" string="长度L"/>
<field name="tool_length" class="o_address_zip"/>
<label for="tool_width" string="宽度D"/>
<field name="tool_width" class="o_address_zip"/>
<label for="tool_height" string="高度T"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')]}"/>
<field name="tool_height" class="o_address_zip"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')]}"/>
</div> </div>
<field name="cutting_tool_radius"/> <field name="cutting_tool_diameter"
<field name="cutting_tool_nut" attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片','刀杆','刀盘'))]}"/>
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')]}"/> <field name="cutting_tool_blade_diameter"
<field name="cutting_tool_cutter_bar_ids" widget="many2many_tags"/> attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))]}"/>
<field name="cutting_tool_cutter_pad_ids" widget="many2many_tags"/>
</group>
<!--刀杆/刀盘-->
<group attrs="{'invisible': ['|','|',('cutting_tool_model_id','=',False),('categ_type', '!=', '刀具'),('cutting_tool_type', 'not in', ['刀杆','刀盘'])]}">
<field name="brand_id"
attrs="{'invisible': [('cutting_tool_type', 'not in', ['刀杆','刀盘'])],'required': [('cutting_tool_type', 'not in', ['刀杆','刀盘'])]}"/>
<field name="cutting_tool_c_diameter"/>
<field name="cutting_tool_d_diameter"/>
<field name="cutting_tool_l_total_length"/>
<field name="cutting_tool_wrench"/>
<field name="cutting_tool_screw"/>
<field name="cutting_tool_blade_ids" widget="many2many_tags"/>
<field name="cutting_tool_scope"
attrs="{'invisible': [('cutting_tool_type', 'not in', ['刀杆','刀盘'])]}"/>
</group>
<group attrs="{'invisible': ['|','|',('cutting_tool_model_id','=',False),('categ_type', '!=', '刀具'),('cutting_tool_type', 'not in', ['刀杆','刀盘'])]}">
<field name="cutting_tool_material_model_id"
attrs="{'invisible': [('cutting_tool_type', 'not in', ['刀杆','刀盘'])],'required': [('cutting_tool_type', 'not in', ['刀杆','刀盘'])]}"/>
<field name="cutting_tool_rounded_corner"/>
<field name="cutting_tool_accuracy_level"/>
<field name="cutting_tool_blade_number" <field name="cutting_tool_blade_number"
attrs="{'invisible': [('cutting_tool_type', 'not in', ['刀杆','刀盘'])]}"/> attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片','刀杆','刀盘'))]}"/>
<field name="cutting_tool_hardness"/> <field name="cutting_tool_diameter_max"
</group>
<!--刀柄-->
<group attrs="{'invisible': ['|','|',('cutting_tool_model_id','=',False),('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '刀柄')]}">
<field name="brand_id"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')],'required': [('cutting_tool_type', '=', '刀柄')]}"/>
<field name="cutting_tool_handle_length"/>
<field name="cutting_tool_length1"/>
<field name="cutting_tool_diameter1"/>
<field name="cutting_tool_body_accuracy"/>
<field name="cutting_tool_nut"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')]}"/> attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')]}"/>
<field name="cutting_tool_clamping_range" <field name="cutting_tool_flange_length"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')]}"/> attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')]}"/>
<field name="tool_weight"/> <field name="cutting_tool_flange_diameter"
<field name="cutting_tool_chuck_model_ids" widget="many2many_tags" attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')]}"/>
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')],'required': [('cutting_tool_type', '=', '刀柄')]}"/> <!--夹头-->
<field name="cutting_tool_outer_diameter"
attrs='{"invisible": [("cutting_tool_type","!=","夹头")]}'/>
<field name="cutting_tool_inner_diameter"
attrs='{"invisible": [("cutting_tool_type","!=","夹头")]}'/>
<field name="tool_height" attrs='{"invisible": [("cutting_tool_type","!=","夹头")]}'/>
<field name="tool_weight"
attrs='{"invisible": [("cutting_tool_type","not in",("夹头","刀柄"))]}'/>
<field name="cutting_tool_clamping_diameter"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('夹头','刀柄'))]}"/>
<field name="cutting_tool_cutter_bar_ids" widget="many2many_tags"
options="{'no_create': True}"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}"/>
<field name="cutting_tool_cutter_pad_ids" widget="many2many_tags"
options="{'no_create': True}"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}"/>
<field name="cutting_tool_blade_ids" widget="many2many_tags"
options="{'no_create': True}"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))]}"/>
<field name="cutting_tool_chuck_ids" widget="many2many_tags"
options="{'no_create': True}"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘','刀柄','整体式刀具'))]}"/>
<field name="cutting_tool_handle_ids" widget="many2many_tags"
options="{'no_create': True}"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('夹头'))]}"/>
</group> </group>
<group attrs="{'invisible':['|','|',('cutting_tool_model_id','=',False),('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '刀柄')]}"> <group attrs="{'invisible': [('categ_type', '!=', '刀具')]}">
<field name="cutting_tool_material_model_id" <field name="cutting_tool_jump_accuracy"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')],'required': [('cutting_tool_type', '=', '刀柄')]}"/> attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')]}"/>
<field name="cutting_tool_detection_accuracy"/> <field name="cutting_tool_front_angle"
<field name="cutting_tool_detection_hardness"/> attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}"/>
<field name="cutting_tool_standard_speed"/> <field name="cutting_tool_top_angle"
</group> attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}"/>
<!--夹头--> <field name="cutting_tool_rear_angle"
<group attrs="{'invisible': ['|','|',('cutting_tool_model_id','=',False),('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '夹头')]}"> attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}"/>
<field name="brand_id" <field name="cutting_tool_main_included_angle"
attrs="{'invisible': [('cutting_tool_type', '!=', '夹头')],'required': [('cutting_tool_type', '=', '夹头')]}"/> attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}"/>
<field name="cutting_tool_outer_diameter"/> <field name="coating_material"
<field name="cutting_tool_inner_diameter"/> attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}"/>
<field name="cutting_tool_accuracy"/> <field name="cutting_tool_accuracy_level"
attrs="{'invisible': [('cutting_tool_type', '=', '刀柄')]}"/>
<field name="cutting_tool_working_hardness"/>
<field name="cutting_tool_wrench"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('夹头','刀柄','刀杆','刀盘' ))]}"/>
<field name="cutting_tool_screw"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('夹头','刀柄'))]}"/>
<field name="cutting_tool_nut" <field name="cutting_tool_nut"
attrs="{'invisible': [('cutting_tool_type', '!=', '夹头')]}"/> attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}"/>
<field name="cutting_tool_clamping_range"
attrs="{'invisible': [('cutting_tool_type', '!=', '夹头')]}"/>
<field name="cutting_tool_handle_model_ids" widget="many2many_tags"
attrs="{'invisible': [('cutting_tool_type', '!=', '夹头')]}"/>
</group>
<group attrs="{'invisible': ['|','|',('cutting_tool_model_id','=',False),('categ_type', '!=', '刀具'),('cutting_tool_type', '!=', '夹头')]}">
<field name="cutting_tool_material_model_id"
attrs="{'invisible': [('cutting_tool_type', '!=', '夹头')],'required': [('cutting_tool_type', '=', '夹头')]}"/>
<field name="tool_height" string="高度[mm]"
attrs="{'invisible': [('cutting_tool_type', '!=', '夹头')]}"/>
<field name="cutting_tool_feature"/>
</group> </group>
</group> </group>
</page> </page>
<page string="夹具物料参数" attrs="{'invisible': [('categ_type', '!=', '夹具')]}"> <page string="夹具物料参数" attrs="{'invisible': [('categ_type', '!=', '夹具')]}">
<group> <group attrs='{"invisible": [("fixture_material_type","not in",("气动夹具","转接板(锁板)夹具","磁吸夹具","虎钳夹具","零点卡盘"))]}'>
<group attrs='{"invisible": ["|",("fixture_model_id", "=", False),("fixture_material_type","not in",("气动托盘","转接板(锁板)托盘","磁吸托盘","虎钳托盘","零点卡盘"))]}'> <group>
<field name="brand_id"/> <field name="brand_id"/>
<field name="fixture_multi_mounting_type_id"/> <field name="fixture_multi_mounting_type_id" options="{'no_create': True}"
</group> attrs="{'required': [('categ_type', '=', '夹具')]}"/>
<group>
<field name="fixture_model_file" widget="Viewer3D" string="模型" readonly="1"
force_save="1"
attrs="{'invisible': [('fixture_model_file', '=', False)]}"/>
</group>
</group>
<group string="参数"
attrs='{"invisible": ["|",("fixture_model_id", "=", False),("fixture_material_type","not in",("气动托盘","转接板(锁板)托盘","磁吸托盘","虎钳托盘","零点卡盘"))]}'>
<group>
<label for="tool_length" string="尺寸(mm)"/> <label for="tool_length" string="尺寸(mm)"/>
<div class="o_address_format"> <div class="o_address_format">
<label for="tool_length" string="长"/> <label for="tool_length" string="长"/>
@@ -249,36 +195,37 @@
<label for="fixture_clamp_workpiece_length_max" string="长"/> <label for="fixture_clamp_workpiece_length_max" string="长"/>
<field name="fixture_clamp_workpiece_length_max" class="o_address_zip" <field name="fixture_clamp_workpiece_length_max" class="o_address_zip"
options="{'format': false}" options="{'format': false}"
attrs="{'required': [('fixture_material_type', 'in',('气动托盘','转接板(锁板)托盘','磁吸托盘','虎钳托盘'))]}"/> attrs="{'required': [('fixture_material_type', 'in',('气动夹具','转接板(锁板)夹具','磁吸夹具','虎钳夹具'))]}"/>
<!-- <span>&amp;nbsp;</span>--> <!-- <span>&amp;nbsp;</span>-->
<label for="fixture_clamp_workpiece_width_max" string="宽"/> <label for="fixture_clamp_workpiece_width_max" string="宽"/>
<field name="fixture_clamp_workpiece_width_max" class="o_address_zip" <field name="fixture_clamp_workpiece_width_max" class="o_address_zip"
options="{'format': false}" options="{'format': false}"
attrs="{'required': [('fixture_material_type', 'in',('气动托盘','转接板(锁板)托盘','磁吸托盘','虎钳托盘'))]}"/> attrs="{'required': [('fixture_material_type', 'in',('气动夹具','转接板(锁板)夹具','磁吸夹具','虎钳夹具'))]}"/>
<!-- <span>&amp;nbsp;</span>--> <!-- <span>&amp;nbsp;</span>-->
<label for="fixture_clamp_workpiece_height_max" string="高"/> <label for="fixture_clamp_workpiece_height_max" string="高"/>
<field name="fixture_clamp_workpiece_height_max" class="o_address_zip" <field name="fixture_clamp_workpiece_height_max" class="o_address_zip"
options="{'format': false}" options="{'format': false}"
attrs="{'required': [('fixture_material_type', 'in',('气动托盘','转接板(锁板)托盘','磁吸托盘','虎钳托盘'))]}"/> attrs="{'required': [('fixture_material_type', 'in',('气动托盘','转接板(锁板)夹具','磁吸夹具','虎钳夹具'))]}"/>
</div> </div>
<field name="fixture_clamp_workpiece_diameter_max" <field name="fixture_clamp_workpiece_diameter_max"
attrs="{'invisible': [('fixture_material_type','=','零点卡盘')],'required': [('fixture_material_type', 'in',('气动托盘','转接板(锁板)托盘','磁吸托盘','虎钳托盘'))]}"/> attrs="{'invisible': [('fixture_material_type','=','零点卡盘')],'required': [('fixture_material_type', 'in',('气动夹具','转接板(锁板)夹具','磁吸夹具','虎钳夹具'))]}"/>
<field name="fixture_maximum_carrying_weight"></field> <field name="fixture_maximum_carrying_weight"></field>
<field name="fixture_maximum_clamping_force"></field> <field name="fixture_maximum_clamping_force"></field>
</group> </group>
<group> <group>
<field name="materials_type_id"/> <field name="materials_type_id" options="{'no_create': True}"/>
<field name="fixture_clamping_way" <field name="fixture_clamping_way"
attrs='{"invisible": [("fixture_material_type","not in",("气动托盘","磁吸托盘","虎钳托盘"))]}'/> attrs='{"invisible": [("fixture_material_type","not in",("气动夹具","磁吸夹具","虎钳夹具"))]}'/>
<field name="fixture_port_type" <field name="fixture_port_type"
attrs='{"invisible": [("fixture_material_type","not in",("气动托盘","磁吸托盘","虎钳托盘"))]}'/> attrs='{"invisible": [("fixture_material_type","not in",("气动夹具","磁吸夹具","虎钳夹具"))]}'/>
<field name="fixture_through_hole_size" <field name="fixture_through_hole_size"
attrs='{"invisible": [("fixture_material_type","!=",("转接板(锁板)托盘"))]}'/> attrs='{"invisible": [("fixture_material_type","!=",("转接板(锁板)夹具"))]}'/>
<field name="fixture_screw_size" <field name="fixture_screw_size"
attrs='{"invisible": [("fixture_material_type","!=",("转接板(锁板)托盘"))]}'/> attrs='{"invisible": [("fixture_material_type","!=",("转接板(锁板)夹具"))]}'/>
<field name="fixture_driving_way" <field name="fixture_driving_way"
attrs='{"invisible": [("fixture_material_type","not in",("虎钳托盘","零点卡盘"))]}'/> attrs='{"invisible": [("fixture_material_type","not in",("虎钳夹具","零点卡盘"))]}'/>
<field name="fixture_apply_machine_tool_type_ids" <field name="fixture_apply_machine_tool_type_ids" options="{'no_create': True}"
widget="many2many_tags"
attrs='{"invisible": [("fixture_material_type","!=",("零点卡盘"))]}'/> attrs='{"invisible": [("fixture_material_type","!=",("零点卡盘"))]}'/>
</group> </group>
</group> </group>

View File

@@ -72,7 +72,7 @@ class SfMaintenanceEquipment(models.Model):
knife_type = fields.Selection( knife_type = fields.Selection(
[("BT40", "BT40"), ("BT30", "BT30")], [("BT40", "BT40"), ("BT30", "BT30")],
default="", string="刀把类型") default="", string="刀把类型")
number_of_knife_library = fields.Integer('刀库数量') number_of_knife_library = fields.Integer('刀库数量(把)')
rotate_speed = fields.Integer('转速') rotate_speed = fields.Integer('转速')
number_of_axles = fields.Selection( number_of_axles = fields.Selection(
[("三轴", "三轴"), ("四轴", "四轴"), ("五轴", "五轴")], [("三轴", "三轴"), ("四轴", "四轴"), ("五轴", "五轴")],
@@ -116,7 +116,7 @@ class SfMaintenanceEquipment(models.Model):
distance_min = fields.Char('主轴端面至工作台面距离MIN(mm)') distance_min = fields.Char('主轴端面至工作台面距离MIN(mm)')
distance_max = fields.Char('主轴端面至工作台面距离MIN(mm)') distance_max = fields.Char('主轴端面至工作台面距离MIN(mm)')
taper = fields.Char('主轴锥度(°)') taper = fields.Char('主轴锥度(°)')
torque = fields.Char('主轴点击扭矩(n/m)') torque = fields.Char('主轴电机扭矩(n/m)')
motor_power = fields.Char('主轴电机功率(kw)') motor_power = fields.Char('主轴电机功率(kw)')
tool_quality_max = fields.Char('刀具最大质量(kg)') tool_quality_max = fields.Char('刀具最大质量(kg)')
tool_long_max = fields.Char('刀具最大长度(mm)') tool_long_max = fields.Char('刀具最大长度(mm)')

View File

@@ -111,7 +111,7 @@
</group> </group>
<group string="主轴"> <group string="主轴">
<field name="taper" required="1"/> <field name="taper" required="1"/>
<field name="rotate_speed" string="主轴转速(min)" required="1" <field name="rotate_speed" string="主轴转速(min/s)" required="1"
options="{'format': false}"/> options="{'format': false}"/>
<field name="heightened_way" required="1"/> <field name="heightened_way" required="1"/>
<field name="torque" required="1"/> <field name="torque" required="1"/>

View File

@@ -44,13 +44,16 @@ class ResProductMo(models.Model):
cutting_tool_model_id = fields.Many2one('sf.cutting.tool.model', string='型号', cutting_tool_model_id = fields.Many2one('sf.cutting.tool.model', string='型号',
) )
cutting_tool_type_id = fields.Many2one('sf.cutting.tool.type', string='刀具类型',
domain="[('cutting_tool_material_id.name', '=', cutting_tool_type)]")
brand_id = fields.Many2one('sf.machine.brand', '品牌') brand_id = fields.Many2one('sf.machine.brand', '品牌')
tool_length = fields.Integer('长度L(mm)', size=6) tool_length = fields.Integer('长度(mm)', size=6)
tool_width = fields.Integer('宽度D(mm)', size=6) tool_width = fields.Integer('宽度(mm)', size=6)
tool_height = fields.Integer('高度T(mm)', size=6) tool_height = fields.Integer('高度(mm)', size=6)
tool_thickness = fields.Integer('厚度(mm)', size=6)
tool_weight = fields.Float('重量(kg)', size=4) tool_weight = fields.Float('重量(kg)', size=4)
coating_material = fields.Char('涂层材') coating_material = fields.Char('涂层材')
# 整体式刀具参数 # 整体式刀具参数
cutting_tool_total_length = fields.Float('总长度(mm)') cutting_tool_total_length = fields.Float('总长度(mm)')
cutting_tool_shank_length = fields.Float('柄部长度(mm)') cutting_tool_shank_length = fields.Float('柄部长度(mm)')
@@ -60,28 +63,26 @@ class ResProductMo(models.Model):
cutting_tool_front_angle = fields.Float('前角(°)') cutting_tool_front_angle = fields.Float('前角(°)')
cutting_tool_rear_angle = fields.Float('后角(°)') cutting_tool_rear_angle = fields.Float('后角(°)')
cutting_tool_main_included_angle = fields.Float('主偏角(°)') cutting_tool_main_included_angle = fields.Float('主偏角(°)')
cutting_tool_material_model_id = fields.Many2one('sf.materials.model', '材料型号') # cutting_tool_material_model_id = fields.Many2one('sf.materials.model', '材料型号')
cutting_tool_nut = fields.Float('配对螺母(mm)') cutting_tool_nut = fields.Float('配对螺母(mm)')
# 适用夹头型号可以多选 # 适用夹头型号可以多选
cutting_tool_chuck_model_ids = fields.Many2many( cutting_tool_chuck_ids = fields.Many2many(
'sf.cutting.tool.model', 'sf.cutting.tool.model',
relation='product_cutting_tool_model_handle_chuck_rel', relation='product_cutting_tool_model_handle_chuck_rel',
column1='model_id_1', column1='model_id_1',
column2='model_id_2', column2='model_id_2',
domain="[('mrs_cutting_tool_material_id.name', '=', '夹头')]", domain="[('cutting_tool_type', '=', '夹头')]",
string='适用夹头型号') string='适用夹头型号')
cutting_tool_scope = fields.Char('适用范围')
# 刀片参数 # 刀片参数
cutting_tool_top_angle = fields.Float('顶角(°)') cutting_tool_top_angle = fields.Float('顶角(°)')
cutting_tool_r_angle = fields.Float('R角(°)') cutting_tool_jump_accuracy = fields.Float('径跳精度(um)')
cutting_tool_working_hardness = fields.Char('加工硬度') cutting_tool_working_hardness = fields.Char('加工硬度(hrc)')
cutting_tool_cutter_bar_ids = fields.Many2many( cutting_tool_cutter_bar_ids = fields.Many2many(
'sf.cutting.tool.model', 'sf.cutting.tool.model',
relation='product_cutting_tool_model_blade_cutter_bar_rel', relation='product_cutting_tool_model_blade_cutter_bar_rel',
column1='model_id_1', column1='model_id_1',
column2='model_id_2', column2='model_id_2',
domain="[('mrs_cutting_tool_material_id.name', '=', '刀杆')]", domain="[('cutting_tool_type', '=', '刀杆')]",
string='适用刀杆型号' string='适用刀杆型号'
) )
cutting_tool_cutter_pad_ids = fields.Many2many( cutting_tool_cutter_pad_ids = fields.Many2many(
@@ -89,50 +90,38 @@ class ResProductMo(models.Model):
relation='product_cutting_tool_model_blade_cutter_pad_rel', relation='product_cutting_tool_model_blade_cutter_pad_rel',
column1='model_id_1', column1='model_id_1',
column2='model_id_2', column2='model_id_2',
domain="[('mrs_cutting_tool_material_id.name', '=', '刀盘')]", domain="[('cutting_tool_type', '=', '刀盘')]",
string='适用刀盘型号' # 使用空列表作为默认值 string='适用刀盘型号' # 使用空列表作为默认值
) )
cutting_tool_radius = fields.Float('刀尖半径(mm)')
# 刀杆/参数 # 刀杆/参数
cutting_tool_c_diameter = fields.Float('C柄径(mm)') cutting_tool_blade_diameter = fields.Float('径(mm)')
cutting_tool_l_total_length = fields.Float('L总长(mm)')
cutting_tool_d_diameter = fields.Float('D刃径(mm)')
cutting_tool_blade_ids = fields.Many2many( cutting_tool_blade_ids = fields.Many2many(
'sf.cutting.tool.model', 'sf.cutting.tool.model',
relation='product_cutting_tool_model_pad_blade_rel', relation='product_cutting_tool_model_pad_blade_rel',
column1='model_id_1', column1='model_id_1',
column2='model_id_2', column2='model_id_2',
domain="[('mrs_cutting_tool_material_id.name', '=', '刀片')]", domain="[('cutting_tool_type', '=', '刀片')]",
string='适用刀片型号' # 使用空列表作为默认值 string='适用刀片型号' # 使用空列表作为默认值
) )
cutting_tool_wrench = fields.Float('配对扳手(mm)') cutting_tool_wrench = fields.Float('配对扳手(mm)')
cutting_tool_screw = fields.Float('配备螺丝(mm)') cutting_tool_screw = fields.Float('配备螺丝(mm)')
cutting_tool_accuracy_level = fields.Char('精度等级') cutting_tool_accuracy_level = fields.Char('精度等级')
cutting_tool_rounded_corner = fields.Float('刀尖圆角半径(mm)')
cutting_tool_hardness = fields.Char('硬度(°)')
# 刀柄参数 # 刀柄参数
cutting_tool_handle_length = fields.Float('L(mm)') cutting_tool_diameter_max = fields.Float('最大直径(mm)')
cutting_tool_length1 = fields.Float('L1(mm)') cutting_tool_clamping_diameter = fields.Float('夹持直径(mm)')
cutting_tool_diameter1 = fields.Float('D1(mm)') cutting_tool_flange_length = fields.Float('法兰柄长度(mm)')
cutting_tool_flange_diameter = fields.Float('法兰直径(mm)')
cutting_tool_body_accuracy = fields.Float('本体精度(mm)')
cutting_tool_clamping_range = fields.Float('夹持范围(mm)')
cutting_tool_detection_accuracy = fields.Float('检测精度')
cutting_tool_detection_hardness = fields.Float('检测硬度')
cutting_tool_standard_speed = fields.Float('标准转速')
# 夹头参数 # 夹头参数
cutting_tool_accuracy = fields.Float('精度(mm)')
cutting_tool_outer_diameter = fields.Float('外径(mm)') cutting_tool_outer_diameter = fields.Float('外径(mm)')
cutting_tool_inner_diameter = fields.Float('内径(mm)') cutting_tool_inner_diameter = fields.Float('内径(mm)')
cutting_tool_handle_model_ids = fields.Many2many( cutting_tool_handle_ids = fields.Many2many(
'sf.cutting.tool.model', 'sf.cutting.tool.model',
relation='product_cutting_tool_model_chuck_handle_rel', relation='product_cutting_tool_model_chuck_handle_rel',
column1='model_id_1', column1='model_id_1',
column2='model_id_2', column2='model_id_2',
domain="[('mrs_cutting_tool_material_id.name', '=', '刀柄')]", domain="[('cutting_tool_type', '=', '刀柄')]",
string='适用刀柄型号' string='适用刀柄型号'
) )
cutting_tool_feature = fields.Char('特性')
# 夹具参数 # 夹具参数
fixture_material_id = fields.Many2one('sf.fixture.material', string="夹具物料") fixture_material_id = fields.Many2one('sf.fixture.material', string="夹具物料")
fixture_model_id = fields.Many2one('sf.fixture.model', string="夹具型号") fixture_model_id = fields.Many2one('sf.fixture.model', string="夹具型号")
@@ -153,7 +142,8 @@ class ResProductMo(models.Model):
fixture_through_hole_size = fields.Integer(string="过孔大小(mm)", size=6) fixture_through_hole_size = fields.Integer(string="过孔大小(mm)", size=6)
fixture_screw_size = fields.Integer(string="螺牙大小(mm)", size=6) fixture_screw_size = fields.Integer(string="螺牙大小(mm)", size=6)
# 注册状态 # 注册状态
register_state = fields.Selection([('未注册', '未注册'), ('已注册', '已注册'),('注册失败','注册失败')], string='注册状态', default='未注册') register_state = fields.Selection([('未注册', '未注册'), ('已注册', '已注册'), ('注册失败', '注册失败')],
string='注册状态', default='未注册')
industry_code = fields.Char('行业编码', readonly=True) industry_code = fields.Char('行业编码', readonly=True)
def _json_apply_machine_tool_type_item_code(self, item): def _json_apply_machine_tool_type_item_code(self, item):
@@ -162,6 +152,36 @@ class ResProductMo(models.Model):
code_arr.append(i.code) code_arr.append(i.code)
return code_arr return code_arr
def _json_chuck_item_code(self, item):
code_arr = []
for i in item.product_id.cutting_tool_chuck_ids:
code_arr.append(i.code)
return code_arr
def _json_cutter_bar_item_code(self, item):
code_arr = []
for i in item.product_id.cutting_tool_cutter_bar_ids:
code_arr.append(i.code)
return code_arr
def _json_cutter_pad_item_code(self, item):
code_arr = []
for i in item.product_id.cutting_tool_cutter_pad_ids:
code_arr.append(i.code)
return code_arr
def _json_blade_item_code(self, item):
code_arr = []
for i in item.product_id.cutting_tool_blade_ids:
code_arr.append(i.code)
return code_arr
def _json_handle_item_code(self, item):
code_arr = []
for i in item.product_id.cutting_tool_handle_ids:
code_arr.append(i.code)
return code_arr
def _get_ids(self, param): def _get_ids(self, param):
type_ids = [] type_ids = []
if not param: if not param:
@@ -180,7 +200,7 @@ class ResProductMo(models.Model):
@api.onchange('cutting_tool_material_id') @api.onchange('cutting_tool_material_id')
def _onchange_cutting_tool_material_id(self): def _onchange_cutting_tool_material_id(self):
for item in self: for item in self:
if item.cutting_tool_material_id.id != item.cutting_tool_model_id.mrs_cutting_tool_material_id.id: if item.cutting_tool_material_id.id != item.cutting_tool_model_id.cutting_tool_material_id.id:
item.cutting_tool_model_id = False item.cutting_tool_model_id = False
@api.onchange('fixture_material_id') @api.onchange('fixture_material_id')
@@ -192,7 +212,7 @@ class ResProductMo(models.Model):
@api.onchange('fixture_model_id') @api.onchange('fixture_model_id')
def _onchange_fixture_model_id(self): def _onchange_fixture_model_id(self):
for item in self: for item in self:
if self.fixture_material_type in ['气动托盘', '转接板(锁板)托盘', '磁吸托盘', '虎钳托盘', '零点卡盘']: if self.fixture_material_type in ['气动夹具', '转接板(锁板)夹具', '磁吸夹具', '虎钳夹具', '零点卡盘']:
item.brand_id = item.fixture_model_id.brand_id.id item.brand_id = item.fixture_model_id.brand_id.id
item.fixture_multi_mounting_type_id = item.fixture_model_id.multi_mounting_type_id.id item.fixture_multi_mounting_type_id = item.fixture_model_id.multi_mounting_type_id.id
item.fixture_model_file = item.fixture_model_id.model_file item.fixture_model_file = item.fixture_model_id.model_file
@@ -203,162 +223,100 @@ class ResProductMo(models.Model):
item.materials_type_id = item.fixture_model_id.materials_model_id.id item.materials_type_id = item.fixture_model_id.materials_model_id.id
item.fixture_maximum_carrying_weight = item.fixture_model_id.maximum_carrying_weight item.fixture_maximum_carrying_weight = item.fixture_model_id.maximum_carrying_weight
item.fixture_maximum_clamping_force = item.fixture_model_id.maximum_clamping_force item.fixture_maximum_clamping_force = item.fixture_model_id.maximum_clamping_force
if self.fixture_material_type in ['零点卡盘', '转接板(锁板)托盘']: if self.fixture_material_type in ['零点卡盘', '转接板(锁板)夹具']:
item.fixture_clamping_way = item.fixture_model_id.clamping_way item.fixture_clamping_way = item.fixture_model_id.clamping_way
item.fixture_port_type = item.fixture_model_id.port_type item.fixture_port_type = item.fixture_model_id.port_type
if self.fixture_material_type in ['气动托盘', '转接板(锁板)托盘', '磁吸托盘']: if self.fixture_material_type in ['气动夹具', '转接板(锁板)夹具', '磁吸夹具']:
item.fixture_driving_way = item.fixture_model_id.driving_way item.fixture_driving_way = item.fixture_model_id.driving_way
if self.fixture_material_type in ['气动托盘', '磁吸托盘', '虎钳托盘', '零点卡盘']: if self.fixture_material_type in ['气动夹具', '磁吸夹具', '虎钳夹具', '零点卡盘']:
item.fixture_through_hole_size = item.fixture_model_id.through_hole_size item.fixture_through_hole_size = item.fixture_model_id.through_hole_size
item.fixture_screw_size = item.fixture_model_id.screw_size item.fixture_screw_size = item.fixture_model_id.screw_size
if self.fixture_material_type in ['气动托盘', '转接板(锁板)托盘', '磁吸托盘', '虎钳托盘']: if self.fixture_material_type in ['气动夹具', '转接板(锁板)夹具', '磁吸夹具', '虎钳夹具']:
item.fixture_clamp_workpiece_length_max = item.fixture_model_id.clamp_workpiece_length_max item.fixture_clamp_workpiece_length_max = item.fixture_model_id.clamp_workpiece_length_max
item.fixture_clamp_workpiece_width_max = item.fixture_model_id.clamp_workpiece_width_max item.fixture_clamp_workpiece_width_max = item.fixture_model_id.clamp_workpiece_width_max
item.fixture_clamp_workpiece_height_max = item.fixture_model_id.clamp_workpiece_height_max item.fixture_clamp_workpiece_height_max = item.fixture_model_id.clamp_workpiece_height_max
item.fixture_clamp_workpiece_diameter_max = item.fixture_model_id.clamp_workpiece_diameter_max item.fixture_clamp_workpiece_diameter_max = item.fixture_model_id.clamp_workpiece_diameter_max
item.fixture_apply_machine_tool_type_ids = self._get_ids(item.fixture_model_id.apply_machine_tool_type_ids) item.fixture_apply_machine_tool_type_ids = self._get_ids(
item.fixture_model_id.apply_machine_tool_type_ids)
@api.onchange('cutting_tool_model_id') @api.onchange('cutting_tool_model_id')
def _onchange_cutting_tool_model_id(self): def _onchange_cutting_tool_model_id(self):
for item in self: for item in self:
if self.cutting_tool_type == '整体式刀具': if self.cutting_tool_type is not False:
item.brand_id = item.cutting_tool_model_id.mrs_machine_brand_id.id item.brand_id = item.cutting_tool_model_id.brand_id.id
item.cutting_tool_total_length = item.cutting_tool_model_id.integral_total_length item.cutting_tool_type_id = item.cutting_tool_model_id.cutting_tool_type_id.id
item.cutting_tool_shank_length = item.cutting_tool_model_id.integral_shank_length item.tool_length = item.cutting_tool_model_id.tool_length
item.cutting_tool_blade_length = item.cutting_tool_model_id.integral_blade_length item.tool_width = item.cutting_tool_model_id.tool_width
item.cutting_tool_diameter = item.cutting_tool_model_id.integral_diameter item.tool_height = item.cutting_tool_model_id.tool_height
item.cutting_tool_nut = item.cutting_tool_model_id.integral_nut item.tool_thickness = item.cutting_tool_model_id.tool_thickness
item.cutting_tool_blade_number = item.cutting_tool_model_id.integral_blade_number item.tool_weight = item.cutting_tool_model_id.tool_weight
item.cutting_tool_material_model_id = item.cutting_tool_model_id.mrs_materials_model_id.id item.coating_material = item.cutting_tool_model_id.coating_material
item.cutting_tool_front_angle = item.cutting_tool_model_id.integral_front_angle item.cutting_tool_total_length = item.cutting_tool_model_id.total_length
item.cutting_tool_rear_angle = item.cutting_tool_model_id.integral_rear_angle item.cutting_tool_shank_length = item.cutting_tool_model_id.shank_length
item.cutting_tool_main_included_angle = item.cutting_tool_model_id.integral_main_included_angle item.cutting_tool_blade_length = item.cutting_tool_model_id.blade_length
item.cutting_tool_chuck_model_ids = self._get_ids( item.cutting_tool_diameter = item.cutting_tool_model_id.diameter
item.cutting_tool_model_id.mrs_cutting_tool_model_handle_chuck_model_ids) item.cutting_tool_blade_number = item.cutting_tool_model_id.blade_number
item.cutting_tool_scope = item.cutting_tool_model_id.integral_scope item.cutting_tool_front_angle = item.cutting_tool_model_id.front_angle
item.image_1920 = '' if not item.cutting_tool_model_id.image else item.cutting_tool_model_id.image item.cutting_tool_rear_angle = item.cutting_tool_model_id.rear_angle
elif self.cutting_tool_type == '刀片': item.cutting_tool_main_included_angle = item.cutting_tool_model_id.main_included_angle
item.brand_id = item.cutting_tool_model_id.mrs_machine_brand_id.id item.materials_type_id = item.cutting_tool_model_id.material_model_id.id
item.cutting_tool_top_angle = item.cutting_tool_model_id.blade_top_angle item.cutting_tool_nut = item.cutting_tool_model_id.nut
item.cutting_tool_front_angle = item.cutting_tool_model_id.blade_front_angle item.cutting_tool_top_angle = item.cutting_tool_model_id.top_angle
item.cutting_tool_rear_angle = item.cutting_tool_model_id.blade_rear_angle item.cutting_tool_jump_accuracy = item.cutting_tool_model_id.jump_accuracy
item.cutting_tool_main_included_angle = item.cutting_tool_model_id.blade_main_included_angle item.cutting_tool_working_hardness = item.cutting_tool_model_id.working_hardness
item.cutting_tool_r_angle = item.cutting_tool_model_id.blade_r_angle item.cutting_tool_blade_diameter = item.cutting_tool_model_id.blade_diameter
item.cutting_tool_working_hardness = item.cutting_tool_model_id.blade_hardness item.cutting_tool_wrench = item.cutting_tool_model_id.wrench
item.cutting_tool_material_model_id = item.cutting_tool_model_id.mrs_materials_model_id.id item.cutting_tool_screw = item.cutting_tool_model_id.screw
item.tool_length = item.cutting_tool_model_id.blade_length item.cutting_tool_accuracy_level = item.cutting_tool_model_id.accuracy_level
item.tool_width = item.cutting_tool_model_id.blade_width item.cutting_tool_diameter_max = item.cutting_tool_model_id.diameter_max
item.tool_height = item.cutting_tool_model_id.blade_height item.cutting_tool_clamping_diameter = item.cutting_tool_model_id.clamping_diameter
item.cutting_tool_radius = item.cutting_tool_model_id.blade_radius item.cutting_tool_flange_length = item.cutting_tool_model_id.flange_length
item.cutting_tool_nut = item.cutting_tool_model_id.blade_nut item.cutting_tool_flange_diameter = item.cutting_tool_model_id.flange_diameter
item.cutting_tool_cutter_bar_ids = self._get_ids( item.cutting_tool_outer_diameter = item.cutting_tool_model_id.outer_diameter
item.cutting_tool_model_id.mrs_cutting_tool_model_blade_cutter_bar_ids) item.cutting_tool_inner_diameter = item.cutting_tool_model_id.inner_diameter
item.cutting_tool_cutter_pad_ids = self._get_ids( item.cutting_tool_chuck_ids = self._get_ids(item.cutting_tool_model_id.chuck_ids)
item.cutting_tool_model_id.mrs_cutting_tool_model_blade_cutter_pad_ids) item.cutting_tool_cutter_bar_ids = self._get_ids(item.cutting_tool_model_id.cutter_bar_ids)
item.image_1920 = '' if not item.cutting_tool_model_id.image else item.cutting_tool_model_id.image item.cutting_tool_cutter_pad_ids = self._get_ids(item.cutting_tool_model_id.cutter_pad_ids)
elif self.cutting_tool_type == '刀杆': item.cutting_tool_blade_ids = self._get_ids(item.cutting_tool_model_id.blade_ids)
item.brand_id = item.cutting_tool_model_id.mrs_machine_brand_id.id item.cutting_tool_handle_ids = self._get_ids(item.cutting_tool_model_id.handle_ids)
item.cutting_tool_c_diameter = item.cutting_tool_model_id.bar_c_diameter
item.cutting_tool_d_diameter = item.cutting_tool_model_id.bar_d_diameter
item.cutting_tool_l_total_length = item.cutting_tool_model_id.bar_total_length
item.cutting_tool_wrench = item.cutting_tool_model_id.bar_wrench
item.cutting_tool_screw = item.cutting_tool_model_id.bar_screw
item.cutting_tool_blade_ids = self._get_ids(
item.cutting_tool_model_id.mrs_cutting_tool_model_pad_blade_ids)
item.cutting_tool_scope = item.cutting_tool_model_id.bar_scope
item.cutting_tool_material_model_id = item.cutting_tool_model_id.mrs_materials_model_id.id
item.cutting_tool_rounded_corner = item.cutting_tool_model_id.bar_radius
item.cutting_tool_accuracy_level = item.cutting_tool_model_id.bar_accuracy
item.cutting_tool_blade_number = item.cutting_tool_model_id.bar_blade_number
item.cutting_tool_hardness = item.cutting_tool_model_id.bar_hardness
item.image_1920 = '' if not item.cutting_tool_model_id.image else item.cutting_tool_model_id.image
elif self.cutting_tool_type == '刀盘':
item.brand_id = item.cutting_tool_model_id.mrs_machine_brand_id.id
item.cutting_tool_c_diameter = item.cutting_tool_model_id.pad_c_diameter
item.cutting_tool_d_diameter = item.cutting_tool_model_id.pad_d_diameter
item.cutting_tool_l_total_length = item.cutting_tool_model_id.pad_total_length
item.cutting_tool_wrench = item.cutting_tool_model_id.pad_wrench
item.cutting_tool_screw = item.cutting_tool_model_id.pad_screw
item.cutting_tool_blade_ids = self._get_ids(
item.cutting_tool_model_id.mrs_cutting_tool_model_pad_blade_ids)
item.cutting_tool_scope = item.cutting_tool_model_id.pad_scope
item.cutting_tool_material_model_id = item.cutting_tool_model_id.mrs_materials_model_id.id
item.cutting_tool_rounded_corner = item.cutting_tool_model_id.pad_radius
item.cutting_tool_accuracy_level = item.cutting_tool_model_id.pad_accuracy
item.cutting_tool_blade_number = item.cutting_tool_model_id.pad_blade_number
item.cutting_tool_hardness = item.cutting_tool_model_id.pad_hardness
item.image_1920 = '' if not item.cutting_tool_model_id.image else item.cutting_tool_model_id.image
elif self.cutting_tool_type == '刀柄':
item.brand_id = item.cutting_tool_model_id.mrs_machine_brand_id.id
item.cutting_tool_handle_length = item.cutting_tool_model_id.handle_length
item.cutting_tool_length1 = item.cutting_tool_model_id.handle_length
item.cutting_tool_diameter1 = item.cutting_tool_model_id.handle_diameter
item.cutting_tool_body_accuracy = item.cutting_tool_model_id.handle_body_accuracy
item.cutting_tool_nut = item.cutting_tool_model_id.handle_nut
item.cutting_tool_clamping_range = item.cutting_tool_model_id.handle_clamping_range
item.tool_weight = item.cutting_tool_model_id.handle_weight
item.cutting_tool_material_model_id = item.cutting_tool_model_id.mrs_materials_model_id.id
item.cutting_tool_chuck_model_ids = self._get_ids(
item.cutting_tool_model_id.mrs_cutting_tool_model_handle_chuck_model_ids)
item.cutting_tool_detection_accuracy = item.cutting_tool_model_id.handle_detection_accuracy
item.cutting_tool_detection_hardness = item.cutting_tool_model_id.handle_detection_hardness
item.cutting_tool_standard_speed = item.cutting_tool_model_id.handle_standard_speed
item.image_1920 = '' if not item.cutting_tool_model_id.image else item.cutting_tool_model_id.image
elif self.cutting_tool_type == '夹头':
item.brand_id = item.cutting_tool_model_id.mrs_machine_brand_id.id
item.cutting_tool_outer_diameter = item.cutting_tool_model_id.chuck_diameter
item.cutting_tool_inner_diameter = item.cutting_tool_model_id.chuck_inner_diameter
item.cutting_tool_accuracy = item.cutting_tool_model_id.chuck_accuracy
item.cutting_tool_nut = item.cutting_tool_model_id.chuck_nut
item.cutting_tool_clamping_range = item.cutting_tool_model_id.chuck_clamping_range
item.cutting_tool_handle_model_ids = self._get_ids(
item.cutting_tool_model_id.mrs_cutting_tool_model_chuck_handle_model_ids)
item.cutting_tool_material_model_id = item.cutting_tool_model_id.mrs_materials_model_id.id
item.tool_height = item.cutting_tool_model_id.chuck_height
item.cutting_tool_feature = item.cutting_tool_model_id.chuck_feature
item.image_1920 = '' if not item.cutting_tool_model_id.image else item.cutting_tool_model_id.image
else: else:
item.brand_id = False item.brand_id = False
item.cutting_tool_type_id = False
item.brand_id = False
item.tool_length = False
item.tool_width = False
item.tool_height = False
item.tool_thickness = False
item.tool_weight = False
item.coating_material = False
item.cutting_tool_total_length = False item.cutting_tool_total_length = False
item.cutting_tool_shank_length = False item.cutting_tool_shank_length = False
item.cutting_tool_blade_length = False item.cutting_tool_blade_length = False
item.cutting_tool_diameter = False item.cutting_tool_diameter = False
item.cutting_tool_nut = False
item.cutting_tool_blade_number = False item.cutting_tool_blade_number = False
item.cutting_tool_material_model_id = False
item.cutting_tool_front_angle = False item.cutting_tool_front_angle = False
item.cutting_tool_rear_angle = False item.cutting_tool_rear_angle = False
item.cutting_tool_main_included_angle = False item.cutting_tool_main_included_angle = False
item.cutting_tool_chuck_model_ids = False item.materials_type_id = False
item.cutting_tool_scope = False item.cutting_tool_nut = False
item.cutting_tool_top_angle = False item.cutting_tool_top_angle = False
item.cutting_tool_r_angle = False item.cutting_tool_jump_accuracy = False
item.cutting_tool_working_hardness = False item.cutting_tool_working_hardness = False
item.tool_length = False item.cutting_tool_blade_diameter = False
item.tool_width = False
item.tool_height = False
item.cutting_tool_radius = False
item.cutting_tool_cutter_bar_ids = False
item.cutting_tool_cutter_pad_ids = False
item.cutting_tool_c_diameter = False
item.cutting_tool_d_diameter = False
item.cutting_tool_l_total_length = False
item.cutting_tool_wrench = False item.cutting_tool_wrench = False
item.cutting_tool_screw = False item.cutting_tool_screw = False
item.cutting_tool_blade_ids = False
item.cutting_tool_rounded_corner = False
item.cutting_tool_accuracy_level = False item.cutting_tool_accuracy_level = False
item.cutting_tool_hardness = False item.cutting_tool_diameter_max = False
item.cutting_tool_handle_length = False item.cutting_tool_clamping_diameter = False
item.cutting_tool_length1 = False item.cutting_tool_flange_length = False
item.cutting_tool_diameter1 = False item.cutting_tool_flange_diameter = False
item.cutting_tool_body_accuracy = False item.cutting_tool_outer_diameter = False
item.cutting_tool_clamping_range = False item.cutting_tool_inner_diameter = False
item.tool_weight = False item.cutting_tool_chuck_ids = False
item.cutting_tool_detection_accuracy = False item.cutting_tool_cutter_bar_ids = False
item.cutting_tool_detection_hardness = False item.cutting_tool_cutter_pad_ids = False
item.cutting_tool_standard_speed = False item.cutting_tool_blade_ids = False
item.image_1920 = False item.cutting_tool_handle_ids = False
class ResMrpBomMo(models.Model): class ResMrpBomMo(models.Model):

View File

@@ -285,9 +285,11 @@ class StockPicking(models.Model):
res = super().button_validate() res = super().button_validate()
# 采购单验证(夹具) # 采购单验证(夹具)
for item in self.move_ids_without_package: for item in self.move_ids_without_package:
if item.product_id.categ_type == '夹具': if item.quantity_done > 0:
if item.quantity_done > 0: if item.product_id.categ_type == '夹具':
item._register_fixture() item._register_fixture()
elif item.product_id.categ_type == '刀具':
item._register_cutting_tool()
return res return res
# 创建 外协出库入单 # 创建 外协出库入单
@@ -401,4 +403,72 @@ class ReStockMove(models.Model):
except Exception as e: except Exception as e:
raise UserError("注册夹具到云端失败,请联系管理员!") raise UserError("注册夹具到云端失败,请联系管理员!")
# 将采购到的刀具注册到Cloud
def _register_cutting_tool(self):
create_url = '/api/factory_cutting_tool_material/create'
config = self.env['res.config.settings'].get_values()
headers = Common.get_headers(self, config['token'], config['sf_secret_key'])
strurl = config['sf_url'] + create_url
for item in self:
val = {
'token': config['token'],
'name': item.product_id.name,
'brand_code': self.env['sf.machine.brand'].search([('id', '=', item.product_id.brand_id.id)]).code,
'cutting_tool_material_code': self.env['sf.cutting.tool.material'].search(
[('id', '=', item.product_id.cutting_tool_material_id.id)]).code,
'cutting_tool_type_code': self.env['sf.cutting.tool.type'].search(
[('id', '=', item.product_id.cutting_tool_type_id.id)]).code,
'material_model_code': self.env['sf.materials.model'].search(
[('id', '=', item.product_id.materials_type_id.id)]).materials_no,
'tool_length': item.product_id.tool_length,
'tool_width': item.product_id.tool_width,
'tool_height': item.product_id.tool_height,
'tool_thickness': item.product_id.tool_thickness,
'tool_weight': item.product_id.tool_weight,
'coating_material': item.product_id.coating_material,
'amount': int(item.quantity_done),
# 'model_file': '' if not item.product_id.fixture_model_file else base64.b64encode(
# item.product_id.fixture_model_file).decode(
# 'utf-8'),
'total_length': item.product_id.cutting_tool_total_length,
'shank_length': item.product_id.cutting_tool_shank_length,
'blade_length': item.product_id.cutting_tool_blade_length,
'diameter': item.product_id.cutting_tool_diameter,
'blade_number': item.product_id.cutting_tool_blade_number,
'front_angle': item.product_id.cutting_tool_front_angle,
'rear_angle': item.product_id.cutting_tool_rear_angle,
'main_included_angle': item.product_id.cutting_tool_main_included_angle,
'chuck_codes': self.env['product.template']._json_chuck_item_code(item),
'cutter_bar_codes': self.env['product.template']._json_cutter_bar_item_code(item),
'cutter_pad_codes': self.env['product.template']._json_cutter_pad_item_code(item),
'blade_codes': self.env['product.template']._json_blade_item_code(item),
'handle_codes': self.env['product.template']._json_handle_item_code(item),
'nut': item.product_id.cutting_tool_nut,
'top_angle': item.product_id.cutting_tool_top_angle,
'jump_accuracy': item.product_id.cutting_tool_jump_accuracy,
'working_hardness': item.product_id.cutting_tool_working_hardness,
'blade_diameter': item.product_id.cutting_tool_blade_diameter,
'wrench': item.product_id.cutting_tool_wrench,
'screw': item.product_id.cutting_tool_screw,
'accuracy_level': item.product_id.cutting_tool_accuracy_level,
'diameter_max': item.product_id.cutting_tool_diameter_max,
'clamping_diameter': item.product_id.cutting_tool_clamping_diameter,
'flange_length': item.product_id.cutting_tool_flange_length,
'flange_diameter': item.product_id.cutting_tool_flange_diameter,
'outer_diameter': item.product_id.cutting_tool_outer_diameter,
'inner_diameter': item.product_id.cutting_tool_inner_diameter,
}
try:
if item.product_id.industry_code:
val['industry_code'] = item.product_id.industry_code
ret = requests.post(strurl, json={}, data=val, headers=headers)
ret = ret.json()
if ret['status'] == 200:
if not item.product_id.industry_code:
item.product_id.write({'register_state': '已注册', 'industry_code': ret['industry_code']})
else:
item.product_id.write({'register_state': '已注册'})
else:
item.product_id.write({'register_state': '注册失败'})
except Exception as e:
raise UserError("注册刀具到云端失败,请联系管理员!")

View File

@@ -132,6 +132,40 @@
<field name="doall" eval="False"/> <field name="doall" eval="False"/>
</record> </record>
<record model="ir.cron" id="sf_cutting_tool_material">
<field name="name">同步刀具物料</field>
<field name="model_id" ref="model_sf_cutting_tool_material"/>
<field name="state">code</field>
<field name="code">model.sync_cutting_tool_material()</field>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False"/>
</record>
<record model="ir.cron" id="sf_cutting_tool_type">
<field name="name">同步刀具类型</field>
<field name="model_id" ref="model_sf_cutting_tool_type"/>
<field name="state">code</field>
<field name="code">model.sync_tool_type()</field>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False"/>
</record>
<record model="ir.cron" id="sf_cutting_tool_model">
<field name="name">同步刀具型号</field>
<field name="model_id" ref="model_sf_cutting_tool_model"/>
<field name="state">code</field>
<field name="code">model.sync_tool_model()</field>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False"/>
</record>
<record model="ir.cron" id="sf_cron15"> <record model="ir.cron" id="sf_cron15">
<field name="name">同步功能刀具型号</field> <field name="name">同步功能刀具型号</field>
<field name="model_id" ref="model_sf_functional_cutting_tool"/> <field name="model_id" ref="model_sf_functional_cutting_tool"/>
@@ -166,7 +200,7 @@
</record> </record>
<record model="ir.cron" id="sf_multi_mounting_type"> <record model="ir.cron" id="sf_multi_mounting_type">
<field name="name">同步联装类型列表</field> <field name="name">同步联装类型</field>
<field name="model_id" ref="model_sf_multi_mounting_type"/> <field name="model_id" ref="model_sf_multi_mounting_type"/>
<field name="state">code</field> <field name="state">code</field>
<field name="code">model.sync_multi_mounting_type()</field> <field name="code">model.sync_multi_mounting_type()</field>

View File

@@ -1835,35 +1835,24 @@ class SfToolType(models.Model):
_logger.info('result:%s' % result) _logger.info('result:%s' % result)
for item in result['mrs_cutting_tool_type_yesterday_list']: for item in result['mrs_cutting_tool_type_yesterday_list']:
if item: if item:
brand = self.env['sf.cutting.tool.type'].search( cutting_tool_type = self.env['sf.cutting.tool.type'].search(
[("code", '=', item['code'])]) [("code", '=', item['code'])])
if not brand: if not cutting_tool_type:
self.env['sf.cutting.tool.type'].create({ self.env['sf.cutting.tool.type'].create({
"name": item['name'], "name": item['name'],
"code": item['code'], "code": item['code'],
"mrs_cutting_tool_material_id": self.env['sf.cutting.tool.material'].search( "cutting_tool_material_id": self.env['sf.cutting.tool.material'].search(
[("code", '=', item['mrs_cutting_tool_material_id'])]).id, [("code", '=', item['cutting_tool_material_code'])]).id,
"integral_tool_type_code": item['integral_tool_type_code'],
"blade_type_code": item['blade_type_code'],
"bar_type_code": item['bar_type_code'],
"pad_type_code": item['pad_type_code'],
"handle_type_code": item['handle_type_code'],
"chuck_type_code": item['chuck_type_code'],
"remark": item['remark'], "remark": item['remark'],
"active": item['active'],
}) })
else: else:
brand.write({ cutting_tool_type.write({
"name": item['name'], "name": item['name'],
"code": item['code'], "cutting_tool_material_id": self.env['sf.cutting.tool.material'].search(
"mrs_cutting_tool_material_id": self.env['sf.cutting.tool.material'].search( [("code", '=', item['cutting_tool_material_code'])]).id,
[("code", '=', item['mrs_cutting_tool_material_id'])]).id,
"integral_tool_type_code": item['integral_tool_type_code'],
"blade_type_code": item['blade_type_code'],
"bar_type_code": item['bar_type_code'],
"pad_type_code": item['pad_type_code'],
"handle_type_code": item['handle_type_code'],
"chuck_type_code": item['chuck_type_code'],
"remark": item['remark'], "remark": item['remark'],
"active": item['active'],
}) })
else: else:
@@ -1884,35 +1873,24 @@ class SfToolType(models.Model):
_logger.info('result:%s' % result) _logger.info('result:%s' % result)
for item in result['mrs_cutting_tool_type_all_list']: for item in result['mrs_cutting_tool_type_all_list']:
if item: if item:
brand = self.env['sf.cutting.tool.type'].search( cutting_tool_type = self.env['sf.cutting.tool.type'].search(
[("code", '=', item['code'])]) [("code", '=', item['code'])])
if not brand: if not cutting_tool_type:
self.env['sf.cutting.tool.type'].create({ self.env['sf.cutting.tool.type'].create({
"name": item['name'], "name": item['name'],
"code": item['code'], "code": item['code'],
"mrs_cutting_tool_material_id": self.env['sf.cutting.tool.material'].search( "cutting_tool_material_id": self.env['sf.cutting.tool.material'].search(
[("code", '=', item['mrs_cutting_tool_material_id'])]).id, [("code", '=', item['cutting_tool_material_code'])]).id,
"integral_tool_type_code": item['integral_tool_type_code'],
"blade_type_code": item['blade_type_code'],
"bar_type_code": item['bar_type_code'],
"pad_type_code": item['pad_type_code'],
"handle_type_code": item['handle_type_code'],
"chuck_type_code": item['chuck_type_code'],
"remark": item['remark'], "remark": item['remark'],
"active": item['active'],
}) })
else: else:
brand.write({ cutting_tool_type.write({
"name": item['name'], "name": item['name'],
"code": item['code'], "cutting_tool_material_id": self.env['sf.cutting.tool.material'].search(
"mrs_cutting_tool_material_id": self.env['sf.cutting.tool.material'].search( [("code", '=', item['cutting_tool_material_code'])]).id,
[("code", '=', item['mrs_cutting_tool_material_id'])]).id,
"integral_tool_type_code": item['integral_tool_type_code'],
"blade_type_code": item['blade_type_code'],
"bar_type_code": item['bar_type_code'],
"pad_type_code": item['pad_type_code'],
"handle_type_code": item['handle_type_code'],
"chuck_type_code": item['chuck_type_code'],
"remark": item['remark'], "remark": item['remark'],
"active": item['active'],
}) })
else: else:
@@ -1940,276 +1918,124 @@ class SfToolModel(models.Model):
if result['status'] == 1: if result['status'] == 1:
_logger.info('result:%s' % result) _logger.info('result:%s' % result)
for item in result['mrs_cutting_tool_model_yesterday_list']: for item in result['mrs_cutting_tool_model_yesterday_list']:
mrs_cutting_tool_model_blade_cutter_bar_ids_list = [] cutting_tool_model = self.search(
if item.get('mrs_cutting_tool_model_blade_cutter_bar_ids'): [("code", '=', item['code'])])
for mrs_cutting_tool_model_blade_cutter_bar_id in item[ if not cutting_tool_model:
'mrs_cutting_tool_model_blade_cutter_bar_ids']: self.env['sf.cutting.tool.model'].create({
mrs_cutting_tool_model_blade_cutter_bar_ids_list.append( "name": item['name'],
self.env['sf.cutting.tool.model'].search( "code": item['code'],
[("code", '=', mrs_cutting_tool_model_blade_cutter_bar_id)]).id) "brand_id": self.env['sf.machine.brand'].search(
mrs_cutting_tool_model_blade_cutter_pad_ids_list = [] [("code", '=', item['brand_code'])]).id,
if item.get('mrs_cutting_tool_model_blade_cutter_pad_ids'): "material_model_id": self.env['sf.materials.model'].search(
for mrs_cutting_tool_model_blade_cutter_pad_id in item[ [("materials_no", '=', item['material_model_code'])]).id,
'mrs_cutting_tool_model_blade_cutter_pad_ids']: "cutting_tool_material_id": self.env['sf.cutting.tool.material'].search(
mrs_cutting_tool_model_blade_cutter_pad_ids_list.append( [("code", '=', item['cutting_tool_material_code'])]).id,
self.env['sf.cutting.tool.model'].search( "cutting_tool_type_id": self.env['sf.cutting.tool.type'].search(
[("code", '=', mrs_cutting_tool_model_blade_cutter_pad_id)]).id) [("code", '=', item['cutting_tool_type_code'])]).id,
mrs_cutting_tool_model_bar_blade_ids_list = [] "tool_length": item['tool_length'],
if item.get('mrs_cutting_tool_model_bar_blade_ids'): "tool_width": item['tool_width'],
for mrs_cutting_tool_model_bar_blade_id in item['mrs_cutting_tool_model_bar_blade_ids']: "tool_height": item['tool_height'],
mrs_cutting_tool_model_bar_blade_ids_list.append(self.env['sf.cutting.tool.model'].search( "tool_thickness": item['tool_thickness'],
[("code", '=', mrs_cutting_tool_model_bar_blade_id)]).id) "tool_weight": item['tool_weight'],
mrs_cutting_tool_model_pad_blade_ids_list = [] "coating_material": item['coating_material'],
if item.get('mrs_cutting_tool_model_pad_blade_ids'): "total_length": item['total_length'],
for mrs_cutting_tool_model_pad_blade_id in item['mrs_cutting_tool_model_pad_blade_ids']: "shank_length": item['shank_length'],
mrs_cutting_tool_model_pad_blade_ids_list.append(self.env['sf.cutting.tool.model'].search( "blade_length": item['blade_length'],
[("code", '=', mrs_cutting_tool_model_pad_blade_id)]).id) "front_angle": item['front_angle'],
mrs_cutting_tool_model_handle_chuck_model_ids_list = [] "rear_angle": item['rear_angle'],
if item.get('mrs_cutting_tool_model_handle_chuck_model_ids'): "main_included_angle": item['main_included_angle'],
for mrs_cutting_tool_model_handle_chuck_model_id in item[ "nut": item['nut'],
'mrs_cutting_tool_model_handle_chuck_model_ids']: "top_angle": item['top_angle'],
mrs_cutting_tool_model_handle_chuck_model_ids_list.append( "jump_accuracy": item['jump_accuracy'],
self.env['sf.cutting.tool.model'].search( "working_hardness": item['working_hardness'],
[("code", '=', mrs_cutting_tool_model_handle_chuck_model_id)]).id) "blade_diameter": item['blade_diameter'],
mrs_cutting_tool_model_chuck_handle_model_ids_list = [] "wrench": item['wrench'],
if item.get('mrs_cutting_tool_model_chuck_handle_model_ids'): "screw": item['screw'],
for mrs_cutting_tool_model_chuck_handle_model_id in item[ "accuracy_level": item['accuracy_level'],
'mrs_cutting_tool_model_chuck_handle_model_ids']: "diameter_max": item['diameter_max'],
mrs_cutting_tool_model_chuck_handle_model_ids_list.append( "clamping_diameter": item['clamping_diameter'],
self.env['sf.cutting.tool.model'].search( "flange_length": item['flange_length'],
[("code", '=', mrs_cutting_tool_model_chuck_handle_model_id)]).id) 'chuck_ids': [(6, 0, [])] if not item.get('chuck_codes') else
if item: self.env['mrs.cutting.tool.dynamic.model'].sudo()._get_cutting_tool_model_ids(
brand = self.env['sf.cutting.tool.model'].search( item['chuck_codes']),
[("code", '=', item['code'])]) 'cutter_bar_ids': [(6, 0, [])] if not item.get('cutter_bar_codes') else
if item.get('image'): self.env['mrs.cutting.tool.dynamic.model'].sudo()._get_cutting_tool_model_ids(
image = base64.b64decode(item['image']) item['cutter_bar_codes']),
else: 'cutter_pad_ids': [(6, 0, [])] if not item.get('cutter_pad_codes') else
image = '' self.env['mrs.cutting.tool.dynamic.model'].sudo()._get_cutting_tool_model_ids(
if not brand: item['cutter_pad_codes']),
new_record = self.env['sf.cutting.tool.model'].create({ 'blade_ids': [(6, 0, [])] if not item.get('blade_codes') else
"name": item['name'], self.env['mrs.cutting.tool.dynamic.model'].sudo()._get_cutting_tool_model_ids(
"code": item['code'], item['blade_codes']),
"mrs_machine_brand_id": self.env['sf.machine.brand'].search( 'handle_ids': [(6, 0, [])] if not item.get('handle_codes') else
[("code", '=', item['mrs_machine_brand_id'])]).id, self.env['mrs.cutting.tool.dynamic.model'].sudo()._get_cutting_tool_model_ids(
"mrs_materials_model_id": self.env['sf.materials.model'].search( item['handle_codes']),
[("materials_no", '=', item['mrs_materials_model_id'])]).id, "flange_diameter": item['flange_diameter'],
"mrs_cutting_tool_material_id": self.env['sf.cutting.tool.material'].search( "outer_diameter": item['outer_diameter'],
[("code", '=', item['mrs_cutting_tool_material_id'])]).id, "inner_diameter": item['inner_diameter'],
"mrs_cutting_tool_material_name": item['mrs_cutting_tool_material_name'], "active": item['active'],
"mrs_cutting_tool_type_id": self.env['sf.cutting.tool.type'].search( })
[("code", '=', item['mrs_cutting_tool_type_id'])]).id, else:
"integral_code": item['integral_code'], cutting_tool_model.write({
"integral_total_length": item['integral_total_length'], "name": item['name'],
"integral_shank_length": item['integral_shank_length'], "code": item['code'],
"integral_blade_length": item['integral_blade_length'], "brand_id": self.env['sf.machine.brand'].search(
"integral_diameter": item['integral_diameter'], [("code", '=', item['brand_code'])]).id,
"integral_blade_number": item['integral_blade_number'], "material_model_id": self.env['sf.materials.model'].search(
"integral_front_angle": item['integral_front_angle'], [("materials_no", '=', item['material_model_code'])]).id,
"integral_rear_angle": item['integral_rear_angle'], "cutting_tool_material_id": self.env['sf.cutting.tool.material'].search(
"integral_main_included_angle": item['integral_main_included_angle'], [("code", '=', item['cutting_tool_material_code'])]).id,
"integral_nut": item['integral_nut'], "cutting_tool_type_id": self.env['sf.cutting.tool.type'].search(
"integral_scope": item['integral_scope'], [("code", '=', item['cutting_tool_type_code'])]).id,
"blade_code": item['blade_code'], "tool_length": item['tool_length'],
"blade_length": item['blade_length'], "tool_width": item['tool_width'],
"blade_width": item['blade_width'], "tool_height": item['tool_height'],
"blade_height": item['blade_height'], "tool_thickness": item['tool_thickness'],
"blade_top_angle": item['blade_top_angle'], "tool_weight": item['tool_weight'],
"blade_front_angle": item['blade_front_angle'], "coating_material": item['coating_material'],
"blade_rear_angle": item['blade_rear_angle'], "total_length": item['total_length'],
"blade_main_included_angle": item['blade_main_included_angle'], "shank_length": item['shank_length'],
"blade_r_angle": item['blade_r_angle'], "blade_length": item['blade_length'],
"blade_hardness": item['blade_hardness'], "front_angle": item['front_angle'],
"blade_radius": item['blade_radius'], "rear_angle": item['rear_angle'],
"blade_nut": item['blade_nut'], "main_included_angle": item['main_included_angle'],
"mrs_cutting_tool_model_blade_cutter_bar_ids": "nut": item['nut'],
mrs_cutting_tool_model_blade_cutter_bar_ids_list, "top_angle": item['top_angle'],
"mrs_cutting_tool_model_blade_cutter_pad_ids": "jump_accuracy": item['jump_accuracy'],
mrs_cutting_tool_model_blade_cutter_pad_ids_list, "working_hardness": item['working_hardness'],
"bar_code": item['bar_code'], "blade_diameter": item['blade_diameter'],
"bar_c_diameter": item['bar_c_diameter'], "wrench": item['wrench'],
"bar_total_length": item['bar_total_length'], "screw": item['screw'],
"bar_blade_number": item['bar_blade_number'], "accuracy_level": item['accuracy_level'],
"bar_d_diameter": item['bar_d_diameter'], "diameter_max": item['diameter_max'],
"mrs_cutting_tool_model_bar_blade_ids": mrs_cutting_tool_model_bar_blade_ids_list, "clamping_diameter": item['clamping_diameter'],
"bar_wrench": item['bar_wrench'], "flange_length": item['flange_length'],
"bar_screw": item['bar_screw'], 'chuck_ids': [(6, 0, [])] if not item.get('chuck_codes') else
"bar_radius": item['bar_radius'], self.env['mrs.cutting.tool.dynamic.model'].sudo()._get_cutting_tool_model_ids(
"bar_accuracy": item['bar_accuracy'], item['chuck_codes']),
"bar_hardness": item['bar_hardness'], 'cutter_bar_ids': [(6, 0, [])] if not item.get('cutter_bar_codes') else
"bar_scope": item['bar_scope'], self.env['mrs.cutting.tool.dynamic.model'].sudo()._get_cutting_tool_model_ids(
"pad_code": item['pad_code'], item['cutter_bar_codes']),
"pad_c_diameter": item['pad_c_diameter'], 'cutter_pad_ids': [(6, 0, [])] if not item.get('cutter_pad_codes') else
"pad_total_length": item['pad_total_length'], self.env['mrs.cutting.tool.dynamic.model'].sudo()._get_cutting_tool_model_ids(
"pad_blade_number": item['pad_blade_number'], item['cutter_pad_codes']),
"pad_d_diameter": item['pad_d_diameter'], 'blade_ids': [(6, 0, [])] if not item.get('blade_codes') else
"mrs_cutting_tool_model_pad_blade_ids": mrs_cutting_tool_model_pad_blade_ids_list, self.env['mrs.cutting.tool.dynamic.model'].sudo()._get_cutting_tool_model_ids(
"pad_wrench": item['pad_wrench'], item['blade_codes']),
"pad_screw": item['pad_screw'], 'handle_ids': [(6, 0, [])] if not item.get('handle_codes') else
"pad_radius": item['pad_radius'], self.env['mrs.cutting.tool.dynamic.model'].sudo()._get_cutting_tool_model_ids(
"pad_accuracy": item['pad_accuracy'], item['handle_codes']),
"pad_hardness": item['pad_hardness'], "flange_diameter": item['flange_diameter'],
"pad_scope": item['pad_scope'], "outer_diameter": item['outer_diameter'],
"handle_code": item['handle_code'], "inner_diameter": item['inner_diameter'],
"handle_length": item['handle_length'], "active": item['active'],
"handle_diameter": item['handle_diameter'], })
"handle_flange_length": item['handle_flange_length'], print('同步所有刀柄类型列表成功')
"handle_flange_diameter": item['handle_flange_diameter'],
"handle_clamping_diameter_min": item['handle_clamping_diameter_min'],
"handle_clamping_diameter_max": item['handle_clamping_diameter_max'],
"handle_jump_accuracy": item['handle_jump_accuracy'],
"handle_max_speed": item['handle_max_speed'],
"handle_weight": item['handle_weight'],
"handle_body_accuracy": item['handle_body_accuracy'],
"handle_nut": item['handle_nut'],
"mrs_cutting_tool_model_handle_chuck_model_ids": [
(6, 0, mrs_cutting_tool_model_handle_chuck_model_ids_list)],
"handle_clamping_range": item['handle_clamping_range'],
"handle_detection_accuracy": item['handle_detection_accuracy'],
"handle_detection_hardness": item['handle_detection_hardness'],
"handle_standard_speed": item['handle_standard_speed'],
"chuck_code": item['chuck_code'],
"chuck_accuracy": item['chuck_accuracy'],
"chuck_diameter": item['chuck_diameter'],
"chuck_inner_diameter": item['chuck_inner_diameter'],
"chuck_height": item['chuck_height'],
"chuck_nut": item['chuck_nut'],
"mrs_cutting_tool_model_chuck_handle_model_ids":
mrs_cutting_tool_model_chuck_handle_model_ids_list,
"chuck_clamping_range": item['chuck_clamping_range'],
"chuck_feature": item['chuck_feature'],
"image": image,
"hide_integral": item['hide_integral'],
"hide_blade": item['hide_blade'],
"hide_cutter_bar": item['hide_cutter_bar'],
"hide_cutter_pad": item['hide_cutter_pad'],
"hide_handler": item['hide_handler'],
"hide_chuck": item['hide_chuck'],
"hide_model": item['hide_model'],
})
new_record.write({
'mrs_cutting_tool_model_handle_chuck_model_ids': [
(6, 0, [new_record.id] * len(mrs_cutting_tool_model_handle_chuck_model_ids_list))],
})
# many2many_commands = [(0, 0, {'model_id_1': new_record.id, 'model_id_2': related_record_id}) for
# related_record_id in mrs_cutting_tool_model_handle_chuck_model_ids_list]
# new_record.write({
# 'mrs_cutting_tool_model_handle_chuck_model_ids': many2many_commands,
# })
else:
brand.write({
"name": item['name'],
"code": item['code'],
"mrs_machine_brand_id": self.env['sf.machine.brand'].search(
[("code", '=', item['mrs_machine_brand_id'])]).id,
"mrs_materials_model_id": self.env['sf.materials.model'].search(
[("materials_no", '=', item['mrs_materials_model_id'])]).id,
"mrs_cutting_tool_material_id": self.env['sf.cutting.tool.material'].search(
[("code", '=', item['mrs_cutting_tool_material_id'])]).id,
"mrs_cutting_tool_material_name": item['mrs_cutting_tool_material_name'],
"mrs_cutting_tool_type_id": self.env['sf.cutting.tool.type'].search(
[("code", '=', item['mrs_cutting_tool_type_id'])]).id,
"integral_code": item['integral_code'],
"integral_total_length": item['integral_total_length'],
"integral_shank_length": item['integral_shank_length'],
"integral_blade_length": item['integral_blade_length'],
"integral_diameter": item['integral_diameter'],
"integral_blade_number": item['integral_blade_number'],
"integral_front_angle": item['integral_front_angle'],
"integral_rear_angle": item['integral_rear_angle'],
"integral_main_included_angle": item['integral_main_included_angle'],
"integral_nut": item['integral_nut'],
"integral_scope": item['integral_scope'],
"blade_code": item['blade_code'],
"blade_length": item['blade_length'],
"blade_width": item['blade_width'],
"blade_height": item['blade_height'],
"blade_top_angle": item['blade_top_angle'],
"blade_front_angle": item['blade_front_angle'],
"blade_rear_angle": item['blade_rear_angle'],
"blade_main_included_angle": item['blade_main_included_angle'],
"blade_r_angle": item['blade_r_angle'],
"blade_hardness": item['blade_hardness'],
"blade_radius": item['blade_radius'],
"blade_nut": item['blade_nut'],
"mrs_cutting_tool_model_blade_cutter_bar_ids":
mrs_cutting_tool_model_blade_cutter_bar_ids_list,
"mrs_cutting_tool_model_blade_cutter_pad_ids":
mrs_cutting_tool_model_blade_cutter_pad_ids_list,
"bar_code": item['bar_code'],
"bar_c_diameter": item['bar_c_diameter'],
"bar_total_length": item['bar_total_length'],
"bar_blade_number": item['bar_blade_number'],
"bar_d_diameter": item['bar_d_diameter'],
"mrs_cutting_tool_model_bar_blade_ids": mrs_cutting_tool_model_bar_blade_ids_list,
"bar_wrench": item['bar_wrench'],
"bar_screw": item['bar_screw'],
"bar_radius": item['bar_radius'],
"bar_accuracy": item['bar_accuracy'],
"bar_hardness": item['bar_hardness'],
"bar_scope": item['bar_scope'],
"pad_code": item['pad_code'],
"pad_c_diameter": item['pad_c_diameter'],
"pad_total_length": item['pad_total_length'],
"pad_blade_number": item['pad_blade_number'],
"pad_d_diameter": item['pad_d_diameter'],
"mrs_cutting_tool_model_pad_blade_ids": mrs_cutting_tool_model_pad_blade_ids_list,
"pad_wrench": item['pad_wrench'],
"pad_screw": item['pad_screw'],
"pad_radius": item['pad_radius'],
"pad_accuracy": item['pad_accuracy'],
"pad_hardness": item['pad_hardness'],
"pad_scope": item['pad_scope'],
"handle_code": item['handle_code'],
"handle_length": item['handle_length'],
"handle_diameter": item['handle_diameter'],
"handle_flange_length": item['handle_flange_length'],
"handle_flange_diameter": item['handle_flange_diameter'],
"handle_clamping_diameter_min": item['handle_clamping_diameter_min'],
"handle_clamping_diameter_max": item['handle_clamping_diameter_max'],
"handle_jump_accuracy": item['handle_jump_accuracy'],
"handle_max_speed": item['handle_max_speed'],
"handle_weight": item['handle_weight'],
"handle_body_accuracy": item['handle_body_accuracy'],
"handle_nut": item['handle_nut'],
"mrs_cutting_tool_model_handle_chuck_model_ids": [
(6, 0, mrs_cutting_tool_model_handle_chuck_model_ids_list)],
"handle_clamping_range": item['handle_clamping_range'],
"handle_detection_accuracy": item['handle_detection_accuracy'],
"handle_detection_hardness": item['handle_detection_hardness'],
"handle_standard_speed": item['handle_standard_speed'],
"chuck_code": item['chuck_code'],
"chuck_accuracy": item['chuck_accuracy'],
"chuck_diameter": item['chuck_diameter'],
"chuck_inner_diameter": item['chuck_inner_diameter'],
"chuck_height": item['chuck_height'],
"chuck_nut": item['chuck_nut'],
"mrs_cutting_tool_model_chuck_handle_model_ids":
mrs_cutting_tool_model_chuck_handle_model_ids_list,
"chuck_clamping_range": item['chuck_clamping_range'],
"chuck_feature": item['chuck_feature'],
"image": image,
"hide_integral": item['hide_integral'],
"hide_blade": item['hide_blade'],
"hide_cutter_bar": item['hide_cutter_bar'],
"hide_cutter_pad": item['hide_cutter_pad'],
"hide_handler": item['hide_handler'],
"hide_chuck": item['hide_chuck'],
"hide_model": item['hide_model'],
})
brand.write({
'mrs_cutting_tool_model_handle_chuck_model_ids': [
(6, 0, [brand.id] * len(mrs_cutting_tool_model_handle_chuck_model_ids_list))],
})
# many2many_commands = [(0, 0, {'model_id_1': brand.id, 'model_id_2': related_record_id}) for
# related_record_id in mrs_cutting_tool_model_handle_chuck_model_ids_list]
# brand.write({
# 'mrs_cutting_tool_model_handle_chuck_model_ids': many2many_commands,
# })
print('同步所有刀柄类型列表成功')
else: else:
raise ValidationError("认证未通过") raise ValidationError("认证未通过")
# 同步所有刀具型号列表
# 同步所有刀具型号列表
def sync_all_tool_model(self): def sync_all_tool_model(self):
sf_sync_config = self.env['res.config.settings'].get_values() sf_sync_config = self.env['res.config.settings'].get_values()
token = sf_sync_config['token'] token = sf_sync_config['token']
@@ -2224,266 +2050,118 @@ class SfToolModel(models.Model):
if result['status'] == 1: if result['status'] == 1:
_logger.info('result:%s' % result) _logger.info('result:%s' % result)
for item in result['mrs_cutting_tool_model_all_list']: for item in result['mrs_cutting_tool_model_all_list']:
mrs_cutting_tool_model_blade_cutter_bar_ids_list = [] cutting_tool_model = self.search(
if item.get('mrs_cutting_tool_model_blade_cutter_bar_ids'): [("code", '=', item['code'])])
for mrs_cutting_tool_model_blade_cutter_bar_id in item[ if not cutting_tool_model:
'mrs_cutting_tool_model_blade_cutter_bar_ids']: self.env['sf.cutting.tool.model'].create({
mrs_cutting_tool_model_blade_cutter_bar_ids_list.append( "name": item['name'],
self.env['sf.cutting.tool.model'].search( "code": item['code'],
[("code", '=', mrs_cutting_tool_model_blade_cutter_bar_id)]).id) "brand_id": self.env['sf.machine.brand'].search(
mrs_cutting_tool_model_blade_cutter_pad_ids_list = [] [("code", '=', item['brand_code'])]).id,
if item.get('mrs_cutting_tool_model_blade_cutter_pad_ids'): "material_model_id": self.env['sf.materials.model'].search(
for mrs_cutting_tool_model_blade_cutter_pad_id in item[ [("materials_no", '=', item['material_model_code'])]).id,
'mrs_cutting_tool_model_blade_cutter_pad_ids']: "cutting_tool_material_id": self.env['sf.cutting.tool.material'].search(
mrs_cutting_tool_model_blade_cutter_pad_ids_list.append( [("code", '=', item['cutting_tool_material_code'])]).id,
self.env['sf.cutting.tool.model'].search( "cutting_tool_type_id": self.env['sf.cutting.tool.type'].search(
[("code", '=', mrs_cutting_tool_model_blade_cutter_pad_id)]).id) [("code", '=', item['cutting_tool_type_code'])]).id,
mrs_cutting_tool_model_bar_blade_ids_list = [] "tool_length": item['tool_length'],
if item.get('mrs_cutting_tool_model_bar_blade_ids'): "tool_width": item['tool_width'],
for mrs_cutting_tool_model_bar_blade_id in item['mrs_cutting_tool_model_bar_blade_ids']: "tool_height": item['tool_height'],
mrs_cutting_tool_model_bar_blade_ids_list.append(self.env['sf.cutting.tool.model'].search( "tool_thickness": item['tool_thickness'],
[("code", '=', mrs_cutting_tool_model_bar_blade_id)]).id) "tool_weight": item['tool_weight'],
mrs_cutting_tool_model_pad_blade_ids_list = [] "coating_material": item['coating_material'],
if item.get('mrs_cutting_tool_model_pad_blade_ids'): "total_length": item['total_length'],
for mrs_cutting_tool_model_pad_blade_id in item['mrs_cutting_tool_model_pad_blade_ids']: "shank_length": item['shank_length'],
mrs_cutting_tool_model_pad_blade_ids_list.append(self.env['sf.cutting.tool.model'].search( "blade_length": item['blade_length'],
[("code", '=', mrs_cutting_tool_model_pad_blade_id)]).id) "front_angle": item['front_angle'],
mrs_cutting_tool_model_handle_chuck_model_ids_list = [] "rear_angle": item['rear_angle'],
if item.get('mrs_cutting_tool_model_handle_chuck_model_ids'): "main_included_angle": item['main_included_angle'],
for mrs_cutting_tool_model_handle_chuck_model_id in item[ "nut": item['nut'],
'mrs_cutting_tool_model_handle_chuck_model_ids']: "top_angle": item['top_angle'],
mrs_cutting_tool_model_handle_chuck_model_ids_list.append( "jump_accuracy": item['jump_accuracy'],
self.env['sf.cutting.tool.model'].search( "working_hardness": item['working_hardness'],
[("code", '=', mrs_cutting_tool_model_handle_chuck_model_id)]).id) "blade_diameter": item['blade_diameter'],
mrs_cutting_tool_model_chuck_handle_model_ids_list = [] "wrench": item['wrench'],
if item.get('mrs_cutting_tool_model_chuck_handle_model_ids'): "screw": item['screw'],
for mrs_cutting_tool_model_chuck_handle_model_id in item[ "accuracy_level": item['accuracy_level'],
'mrs_cutting_tool_model_chuck_handle_model_ids']: "diameter_max": item['diameter_max'],
mrs_cutting_tool_model_chuck_handle_model_ids_list.append( "clamping_diameter": item['clamping_diameter'],
self.env['sf.cutting.tool.model'].search( "flange_length": item['flange_length'],
[("code", '=', mrs_cutting_tool_model_chuck_handle_model_id)]).id) 'chuck_ids': [(6, 0, [])] if not item.get('chuck_codes') else
if item: self.env['mrs.cutting.tool.dynamic.model'].sudo()._get_cutting_tool_model_ids(
brand = self.env['sf.cutting.tool.model'].search( item['chuck_codes']),
[("code", '=', item['code'])]) 'cutter_bar_ids': [(6, 0, [])] if not item.get('cutter_bar_codes') else
if item.get('image'): self.env['mrs.cutting.tool.dynamic.model'].sudo()._get_cutting_tool_model_ids(
image = base64.b64decode(item['image']) item['cutter_bar_codes']),
else: 'cutter_pad_ids': [(6, 0, [])] if not item.get('cutter_pad_codes') else
image = '' self.env['mrs.cutting.tool.dynamic.model'].sudo()._get_cutting_tool_model_ids(
if not brand: item['cutter_pad_codes']),
new_record = self.env['sf.cutting.tool.model'].create({ 'blade_ids': [(6, 0, [])] if not item.get('blade_codes') else
"name": item['name'], self.env['mrs.cutting.tool.dynamic.model'].sudo()._get_cutting_tool_model_ids(
"code": item['code'], item['blade_codes']),
"mrs_machine_brand_id": self.env['sf.machine.brand'].search( 'handle_ids': [(6, 0, [])] if not item.get('handle_codes') else
[("code", '=', item['mrs_machine_brand_id'])]).id, self.env['mrs.cutting.tool.dynamic.model'].sudo()._get_cutting_tool_model_ids(
"mrs_materials_model_id": self.env['sf.materials.model'].search( item['handle_codes']),
[("materials_no", '=', item['mrs_materials_model_id'])]).id, "flange_diameter": item['flange_diameter'],
"mrs_cutting_tool_material_id": self.env['sf.cutting.tool.material'].search( "outer_diameter": item['outer_diameter'],
[("code", '=', item['mrs_cutting_tool_material_id'])]).id, "inner_diameter": item['inner_diameter'],
"mrs_cutting_tool_material_name": item['mrs_cutting_tool_material_name'], "active": item['active'],
"mrs_cutting_tool_type_id": self.env['sf.cutting.tool.type'].search( })
[("code", '=', item['mrs_cutting_tool_type_id'])]).id, else:
"integral_code": item['integral_code'], cutting_tool_model.write({
"integral_total_length": item['integral_total_length'], "name": item['name'],
"integral_shank_length": item['integral_shank_length'], "code": item['code'],
"integral_blade_length": item['integral_blade_length'], "brand_id": self.env['sf.machine.brand'].search(
"integral_diameter": item['integral_diameter'], [("code", '=', item['brand_code'])]).id,
"integral_blade_number": item['integral_blade_number'], "material_model_id": self.env['sf.materials.model'].search(
"integral_front_angle": item['integral_front_angle'], [("materials_no", '=', item['material_model_code'])]).id,
"integral_rear_angle": item['integral_rear_angle'], "cutting_tool_material_id": self.env['sf.cutting.tool.material'].search(
"integral_main_included_angle": item['integral_main_included_angle'], [("code", '=', item['cutting_tool_material_code'])]).id,
"integral_nut": item['integral_nut'], "cutting_tool_type_id": self.env['sf.cutting.tool.type'].search(
"integral_scope": item['integral_scope'], [("code", '=', item['cutting_tool_type_code'])]).id,
"blade_code": item['blade_code'], "tool_length": item['tool_length'],
"blade_length": item['blade_length'], "tool_width": item['tool_width'],
"blade_width": item['blade_width'], "tool_height": item['tool_height'],
"blade_height": item['blade_height'], "tool_thickness": item['tool_thickness'],
"blade_top_angle": item['blade_top_angle'], "tool_weight": item['tool_weight'],
"blade_front_angle": item['blade_front_angle'], "coating_material": item['coating_material'],
"blade_rear_angle": item['blade_rear_angle'], "total_length": item['total_length'],
"blade_main_included_angle": item['blade_main_included_angle'], "shank_length": item['shank_length'],
"blade_r_angle": item['blade_r_angle'], "blade_length": item['blade_length'],
"blade_hardness": item['blade_hardness'], "front_angle": item['front_angle'],
"blade_radius": item['blade_radius'], "rear_angle": item['rear_angle'],
"blade_nut": item['blade_nut'], "main_included_angle": item['main_included_angle'],
"mrs_cutting_tool_model_blade_cutter_bar_ids": "nut": item['nut'],
mrs_cutting_tool_model_blade_cutter_bar_ids_list, "top_angle": item['top_angle'],
"mrs_cutting_tool_model_blade_cutter_pad_ids": "jump_accuracy": item['jump_accuracy'],
mrs_cutting_tool_model_blade_cutter_pad_ids_list, "working_hardness": item['working_hardness'],
"bar_code": item['bar_code'], "blade_diameter": item['blade_diameter'],
"bar_c_diameter": item['bar_c_diameter'], "wrench": item['wrench'],
"bar_total_length": item['bar_total_length'], "screw": item['screw'],
"bar_blade_number": item['bar_blade_number'], "accuracy_level": item['accuracy_level'],
"bar_d_diameter": item['bar_d_diameter'], "diameter_max": item['diameter_max'],
"mrs_cutting_tool_model_bar_blade_ids": mrs_cutting_tool_model_bar_blade_ids_list, "clamping_diameter": item['clamping_diameter'],
"bar_wrench": item['bar_wrench'], "flange_length": item['flange_length'],
"bar_screw": item['bar_screw'], 'chuck_ids': [(6, 0, [])] if not item.get('chuck_codes') else
"bar_radius": item['bar_radius'], self.env['mrs.cutting.tool.dynamic.model'].sudo()._get_cutting_tool_model_ids(
"bar_accuracy": item['bar_accuracy'], item['chuck_codes']),
"bar_hardness": item['bar_hardness'], 'cutter_bar_ids': [(6, 0, [])] if not item.get('cutter_bar_codes') else
"bar_scope": item['bar_scope'], self.env['mrs.cutting.tool.dynamic.model'].sudo()._get_cutting_tool_model_ids(
"pad_code": item['pad_code'], item['cutter_bar_codes']),
"pad_c_diameter": item['pad_c_diameter'], 'cutter_pad_ids': [(6, 0, [])] if not item.get('cutter_pad_codes') else
"pad_total_length": item['pad_total_length'], self.env['mrs.cutting.tool.dynamic.model'].sudo()._get_cutting_tool_model_ids(
"pad_blade_number": item['pad_blade_number'], item['cutter_pad_codes']),
"pad_d_diameter": item['pad_d_diameter'], 'blade_ids': [(6, 0, [])] if not item.get('blade_codes') else
"mrs_cutting_tool_model_pad_blade_ids": mrs_cutting_tool_model_pad_blade_ids_list, self.env['mrs.cutting.tool.dynamic.model'].sudo()._get_cutting_tool_model_ids(
"pad_wrench": item['pad_wrench'], item['blade_codes']),
"pad_screw": item['pad_screw'], 'handle_ids': [(6, 0, [])] if not item.get('handle_codes') else
"pad_radius": item['pad_radius'], self.env['mrs.cutting.tool.dynamic.model'].sudo()._get_cutting_tool_model_ids(
"pad_accuracy": item['pad_accuracy'], item['handle_codes']),
"pad_hardness": item['pad_hardness'], "flange_diameter": item['flange_diameter'],
"pad_scope": item['pad_scope'], "outer_diameter": item['outer_diameter'],
"handle_code": item['handle_code'], "inner_diameter": item['inner_diameter'],
"handle_length": item['handle_length'], "active": item['active'],
"handle_diameter": item['handle_diameter'], })
"handle_flange_length": item['handle_flange_length'],
"handle_flange_diameter": item['handle_flange_diameter'],
"handle_clamping_diameter_min": item['handle_clamping_diameter_min'],
"handle_clamping_diameter_max": item['handle_clamping_diameter_max'],
"handle_jump_accuracy": item['handle_jump_accuracy'],
"handle_max_speed": item['handle_max_speed'],
"handle_weight": item['handle_weight'],
"handle_body_accuracy": item['handle_body_accuracy'],
"handle_nut": item['handle_nut'],
# "mrs_cutting_tool_model_handle_chuck_model_ids": [(6, 0, mrs_cutting_tool_model_handle_chuck_model_ids_list)],
"handle_clamping_range": item['handle_clamping_range'],
"handle_detection_accuracy": item['handle_detection_accuracy'],
"handle_detection_hardness": item['handle_detection_hardness'],
"handle_standard_speed": item['handle_standard_speed'],
"chuck_code": item['chuck_code'],
"chuck_accuracy": item['chuck_accuracy'],
"chuck_diameter": item['chuck_diameter'],
"chuck_inner_diameter": item['chuck_inner_diameter'],
"chuck_height": item['chuck_height'],
"chuck_nut": item['chuck_nut'],
"mrs_cutting_tool_model_chuck_handle_model_ids":
mrs_cutting_tool_model_chuck_handle_model_ids_list,
"chuck_clamping_range": item['chuck_clamping_range'],
"chuck_feature": item['chuck_feature'],
"image": image,
"hide_integral": item['hide_integral'],
"hide_blade": item['hide_blade'],
"hide_cutter_bar": item['hide_cutter_bar'],
"hide_cutter_pad": item['hide_cutter_pad'],
"hide_handler": item['hide_handler'],
"hide_chuck": item['hide_chuck'],
"hide_model": item['hide_model'],
})
new_record.write({
'mrs_cutting_tool_model_handle_chuck_model_ids': [
(6, 0, [new_record.id] * len(mrs_cutting_tool_model_handle_chuck_model_ids_list))],
})
else:
brand.write({
"name": item['name'],
"code": item['code'],
"mrs_machine_brand_id": self.env['sf.machine.brand'].search(
[("code", '=', item['mrs_machine_brand_id'])]).id,
"mrs_materials_model_id": self.env['sf.materials.model'].search(
[("materials_no", '=', item['mrs_materials_model_id'])]).id,
"mrs_cutting_tool_material_id": self.env['sf.cutting.tool.material'].search(
[("code", '=', item['mrs_cutting_tool_material_id'])]).id,
"mrs_cutting_tool_material_name": item['mrs_cutting_tool_material_name'],
"mrs_cutting_tool_type_id": self.env['sf.cutting.tool.type'].search(
[("code", '=', item['mrs_cutting_tool_type_id'])]).id,
"integral_code": item['integral_code'],
"integral_total_length": item['integral_total_length'],
"integral_shank_length": item['integral_shank_length'],
"integral_blade_length": item['integral_blade_length'],
"integral_diameter": item['integral_diameter'],
"integral_blade_number": item['integral_blade_number'],
"integral_front_angle": item['integral_front_angle'],
"integral_rear_angle": item['integral_rear_angle'],
"integral_main_included_angle": item['integral_main_included_angle'],
"integral_nut": item['integral_nut'],
"integral_scope": item['integral_scope'],
"blade_code": item['blade_code'],
"blade_length": item['blade_length'],
"blade_width": item['blade_width'],
"blade_height": item['blade_height'],
"blade_top_angle": item['blade_top_angle'],
"blade_front_angle": item['blade_front_angle'],
"blade_rear_angle": item['blade_rear_angle'],
"blade_main_included_angle": item['blade_main_included_angle'],
"blade_r_angle": item['blade_r_angle'],
"blade_hardness": item['blade_hardness'],
"blade_radius": item['blade_radius'],
"blade_nut": item['blade_nut'],
"mrs_cutting_tool_model_blade_cutter_bar_ids":
mrs_cutting_tool_model_blade_cutter_bar_ids_list,
"mrs_cutting_tool_model_blade_cutter_pad_ids":
mrs_cutting_tool_model_blade_cutter_pad_ids_list,
"bar_code": item['bar_code'],
"bar_c_diameter": item['bar_c_diameter'],
"bar_total_length": item['bar_total_length'],
"bar_blade_number": item['bar_blade_number'],
"bar_d_diameter": item['bar_d_diameter'],
"mrs_cutting_tool_model_bar_blade_ids": mrs_cutting_tool_model_bar_blade_ids_list,
"bar_wrench": item['bar_wrench'],
"bar_screw": item['bar_screw'],
"bar_radius": item['bar_radius'],
"bar_accuracy": item['bar_accuracy'],
"bar_hardness": item['bar_hardness'],
"bar_scope": item['bar_scope'],
"pad_code": item['pad_code'],
"pad_c_diameter": item['pad_c_diameter'],
"pad_total_length": item['pad_total_length'],
"pad_blade_number": item['pad_blade_number'],
"pad_d_diameter": item['pad_d_diameter'],
"mrs_cutting_tool_model_pad_blade_ids": mrs_cutting_tool_model_pad_blade_ids_list,
"pad_wrench": item['pad_wrench'],
"pad_screw": item['pad_screw'],
"pad_radius": item['pad_radius'],
"pad_accuracy": item['pad_accuracy'],
"pad_hardness": item['pad_hardness'],
"pad_scope": item['pad_scope'],
"handle_code": item['handle_code'],
"handle_length": item['handle_length'],
"handle_diameter": item['handle_diameter'],
"handle_flange_length": item['handle_flange_length'],
"handle_flange_diameter": item['handle_flange_diameter'],
"handle_clamping_diameter_min": item['handle_clamping_diameter_min'],
"handle_clamping_diameter_max": item['handle_clamping_diameter_max'],
"handle_jump_accuracy": item['handle_jump_accuracy'],
"handle_max_speed": item['handle_max_speed'],
"handle_weight": item['handle_weight'],
"handle_body_accuracy": item['handle_body_accuracy'],
"handle_nut": item['handle_nut'],
"mrs_cutting_tool_model_handle_chuck_model_ids": [
(6, 0, mrs_cutting_tool_model_handle_chuck_model_ids_list)],
"handle_clamping_range": item['handle_clamping_range'],
"handle_detection_accuracy": item['handle_detection_accuracy'],
"handle_detection_hardness": item['handle_detection_hardness'],
"handle_standard_speed": item['handle_standard_speed'],
"chuck_code": item['chuck_code'],
"chuck_accuracy": item['chuck_accuracy'],
"chuck_diameter": item['chuck_diameter'],
"chuck_inner_diameter": item['chuck_inner_diameter'],
"chuck_height": item['chuck_height'],
"chuck_nut": item['chuck_nut'],
"mrs_cutting_tool_model_chuck_handle_model_ids":
mrs_cutting_tool_model_chuck_handle_model_ids_list,
"chuck_clamping_range": item['chuck_clamping_range'],
"chuck_feature": item['chuck_feature'],
"image": image,
"hide_integral": item['hide_integral'],
"hide_blade": item['hide_blade'],
"hide_cutter_bar": item['hide_cutter_bar'],
"hide_cutter_pad": item['hide_cutter_pad'],
"hide_handler": item['hide_handler'],
"hide_chuck": item['hide_chuck'],
"hide_model": item['hide_model'],
})
brand.write({
'mrs_cutting_tool_model_handle_chuck_model_ids': [
(6, 0, [brand.id] * len(mrs_cutting_tool_model_handle_chuck_model_ids_list))],
})
# many2many_commands = [(0, 0, {'model_id_1': brand.id, 'model_id_2': related_record_id}) for
# related_record_id in mrs_cutting_tool_model_handle_chuck_model_ids_list]
# brand.write({
# 'mrs_cutting_tool_model_handle_chuck_model_ids': many2many_commands,
# })
print('同步所有刀具型号列表成功') print('同步所有刀具型号列表成功')
else: else:
raise ValidationError("认证未通过") raise ValidationError("认证未通过")

View File

@@ -12,12 +12,12 @@ class FunctionalCuttingToolEntity(models.Model):
_name = 'sf.functional.cutting.tool.entity' _name = 'sf.functional.cutting.tool.entity'
_description = '功能刀具列表' _description = '功能刀具列表'
code = fields.Char('编码') code = fields.Char('编码')
name = fields.Char('名称') name = fields.Char('名称')
mrs_cutting_tool_model_id = fields.Many2one('sf.cutting.tool.model', string='刀具型号') mrs_cutting_tool_model_id = fields.Many2one('sf.cutting.tool.model', string='刀具型号')
mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型',tracking=True, mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', tracking=True,
group_expand='_read_group_mrs_cutting_tool_type_ids') group_expand='_read_group_mrs_cutting_tool_type_ids')
@api.model @api.model
def _read_group_mrs_cutting_tool_type_ids(self, categories, domain, order): def _read_group_mrs_cutting_tool_type_ids(self, categories, domain, order):
mrs_cutting_tool_type_ids = categories._search([], order=order, access_rights_uid=SUPERUSER_ID) mrs_cutting_tool_type_ids = categories._search([], order=order, access_rights_uid=SUPERUSER_ID)
@@ -27,31 +27,31 @@ class FunctionalCuttingToolEntity(models.Model):
mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_cutting_tool_entity_id', 'sf_functional_cutting_tool_entity_id',
string='整体式刀具型号', domain= string='整体式刀具型号', domain=
[('mrs_cutting_tool_material_name', '=', '整体式刀具')]) [('cutting_tool_type', '=', '整体式刀具')])
# 刀片型号 # 刀片型号
mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model', 'sf_functional_cutting_tool_entity_id', mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model', 'sf_functional_cutting_tool_entity_id',
string='刀片型号', domain= string='刀片型号', domain=
[('mrs_cutting_tool_material_name', '=', '刀片')]) [('cutting_tool_type', '=', '刀片')])
# 刀杆型号 # 刀杆型号
mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_cutting_tool_entity_id', 'sf_functional_cutting_tool_entity_id',
string='刀杆型号', domain= string='刀杆型号', domain=
[('mrs_cutting_tool_material_name', '=', '刀杆')]) [('cutting_tool_type', '=', '刀杆')])
# 刀盘型号 # 刀盘型号
mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_cutting_tool_entity_id', 'sf_functional_cutting_tool_entity_id',
string='刀盘型号', domain= string='刀盘型号', domain=
[('mrs_cutting_tool_material_name', '=', '刀盘')]) [('cutting_tool_type', '=', '刀盘')])
# 刀柄型号 # 刀柄型号
mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_cutting_tool_entity_id', 'sf_functional_cutting_tool_entity_id',
string='刀柄型号', domain= string='刀柄型号', domain=
[('mrs_cutting_tool_material_name', '=', '刀柄')]) [('cutting_tool_type', '=', '刀柄')])
# 夹头型号 # 夹头型号
mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_cutting_tool_entity_id', 'sf_functional_cutting_tool_entity_id',
string='夹头型号', domain= string='夹头型号', domain=
[('mrs_cutting_tool_material_name', '=', '夹头')]) [('cutting_tool_type', '=', '夹头')])
diameter = fields.Float('直径(mm)') diameter = fields.Float('直径(mm)')
tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')], tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')],
@@ -87,31 +87,32 @@ class FunctionalCuttingToolEntityCache(models.Model):
mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_cutting_tool_entity_cache_id', 'sf_functional_cutting_tool_entity_cache_id',
string='整体式刀具型号', domain= string='整体式刀具型号', domain=
[('mrs_cutting_tool_material_name', '=', '整体式刀具')]) [('cutting_tool_type', '=', '整体式刀具')])
# 刀片型号 # 刀片型号
mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model', 'sf_functional_cutting_tool_entity_cache_id', mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_cutting_tool_entity_cache_id',
string='刀片型号', domain= string='刀片型号', domain=
[('mrs_cutting_tool_material_name', '=', '刀片')]) [('cutting_tool_type', '=', '刀片')])
# 刀杆型号 # 刀杆型号
mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_cutting_tool_entity_cache_id', 'sf_functional_cutting_tool_entity_cache_id',
string='刀杆型号', domain= string='刀杆型号', domain=
[('mrs_cutting_tool_material_name', '=', '刀杆')]) [('cutting_tool_type', '=', '刀杆')])
# 刀盘型号 # 刀盘型号
mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_cutting_tool_entity_cache_id', 'sf_functional_cutting_tool_entity_cache_id',
string='刀盘型号', domain= string='刀盘型号', domain=
[('mrs_cutting_tool_material_name', '=', '刀盘')]) [('cutting_tool_type', '=', '刀盘')])
# 刀柄型号 # 刀柄型号
mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_cutting_tool_entity_cache_id', 'sf_functional_cutting_tool_entity_cache_id',
string='刀柄型号', domain= string='刀柄型号', domain=
[('mrs_cutting_tool_material_name', '=', '刀柄')]) [('cutting_tool_type', '=', '刀柄')])
# 夹头型号 # 夹头型号
mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_cutting_tool_entity_cache_id', 'sf_functional_cutting_tool_entity_cache_id',
string='夹头型号', domain= string='夹头型号', domain=
[('mrs_cutting_tool_material_name', '=', '夹头')]) [('cutting_tool_type', '=', '夹头')])
diameter = fields.Float('直径(mm)') diameter = fields.Float('直径(mm)')
tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')], tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')],
@@ -131,78 +132,83 @@ class FunctionalToolWarning(models.Model):
_name = 'sf.functional.tool.warning' _name = 'sf.functional.tool.warning'
_description = '功能刀具预警' _description = '功能刀具预警'
functional_cutting_tool_id = fields.Many2one('sf.functional.cutting.tool.entity', '功能刀具', readonly=True) functional_cutting_tool_id = fields.Many2one('sf.functional.cutting.tool.entity', '功能刀具', readonly=True)
functional_tool_assembly_id = fields.Many2one('sf.functional.tool.assembly', '功能刀具组装', readonly=True) functional_tool_assembly_id = fields.Many2one('sf.functional.tool.assembly', '功能刀具组装', readonly=True)
code = fields.Char('编码', readonly=True, related='functional_cutting_tool_id.code') code = fields.Char('编码', readonly=True, related='functional_cutting_tool_id.code')
name = fields.Char('名称', invisible=True, readonly=True, related='functional_cutting_tool_id.name') name = fields.Char('名称', invisible=True, readonly=True, related='functional_cutting_tool_id.name')
mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=True, mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=True,
related='functional_cutting_tool_id.mrs_cutting_tool_type_id') related='functional_cutting_tool_id.mrs_cutting_tool_type_id')
# 整体式刀具型号 # 整体式刀具型号
mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id', 'sf_functional_tool_warning_id',
string='整体式刀具型号', readonly=True, string='整体式刀具型号', readonly=True,
domain= [('mrs_cutting_tool_material_name', '=', '整体式刀具')], domain=[
('cutting_tool_type', '=', '整体式刀具')],
related='functional_cutting_tool_id.mrs_cutting_tool_integral_model_ids') related='functional_cutting_tool_id.mrs_cutting_tool_integral_model_ids')
# 刀片型号 # 刀片型号
mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id', 'sf_functional_tool_warning_id',
string='刀片型号', readonly=True, string='刀片型号', readonly=True,
domain= [('mrs_cutting_tool_material_name', '=', '刀片')], domain=[('cutting_tool_type', '=', '刀片')],
related='functional_cutting_tool_id.mrs_cutting_tool_blade_model_ids') related='functional_cutting_tool_id.mrs_cutting_tool_blade_model_ids')
# 刀杆型号 # 刀杆型号
mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id', 'sf_functional_tool_warning_id',
string='刀杆型号', readonly=True, string='刀杆型号', readonly=True,
domain= [('mrs_cutting_tool_material_name', '=', '刀杆')], domain=[('cutting_tool_type', '=', '刀杆')],
related='functional_cutting_tool_id.mrs_cutting_tool_cutterbar_model_ids') related='functional_cutting_tool_id.mrs_cutting_tool_cutterbar_model_ids')
# 刀盘型号 # 刀盘型号
mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id', 'sf_functional_tool_warning_id',
string='刀盘型号', readonly=True, string='刀盘型号', readonly=True,
domain=[('mrs_cutting_tool_material_name', '=', '刀盘')], domain=[('cutting_tool_type', '=', '刀盘')],
related='functional_cutting_tool_id.mrs_cutting_tool_cutterpad_model_ids') related='functional_cutting_tool_id.mrs_cutting_tool_cutterpad_model_ids')
# 刀柄型号 # 刀柄型号
mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id', 'sf_functional_tool_warning_id',
string='刀柄型号', readonly=True, string='刀柄型号', readonly=True,
domain=[('mrs_cutting_tool_material_name', '=', '刀柄')], domain=[('cutting_tool_type', '=', '刀柄')],
related='functional_cutting_tool_id.mrs_cutting_tool_cutterhandle_model_ids') related='functional_cutting_tool_id.mrs_cutting_tool_cutterhandle_model_ids')
# 夹头型号 # 夹头型号
mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id', 'sf_functional_tool_warning_id',
string='夹头型号', readonly=True, string='夹头型号', readonly=True,
domain=[('mrs_cutting_tool_material_name', '=', '夹头')], domain=[('cutting_tool_type', '=', '夹头')],
related='functional_cutting_tool_id.mrs_cutting_tool_cutterhead_model_ids') related='functional_cutting_tool_id.mrs_cutting_tool_cutterhead_model_ids')
diameter = fields.Float('直径(mm)', readonly=True, related='functional_cutting_tool_id.diameter') diameter = fields.Float('直径(mm)', readonly=True, related='functional_cutting_tool_id.diameter')
tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')], tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')],
string='刀具等级', readonly=True, related='functional_cutting_tool_id.tool_grade') string='刀具等级', readonly=True, related='functional_cutting_tool_id.tool_grade')
machining_accuracy = fields.Float('加工精度(mm)', readonly=True, related='functional_cutting_tool_id.machining_accuracy') machining_accuracy = fields.Float('加工精度(mm)', readonly=True,
related='functional_cutting_tool_id.machining_accuracy')
tool_length = fields.Float('装刀长', readonly=True, related='functional_cutting_tool_id.tool_length') tool_length = fields.Float('装刀长', readonly=True, related='functional_cutting_tool_id.tool_length')
blade_number = fields.Integer('刃数', readonly=True, related='functional_cutting_tool_id.blade_number') blade_number = fields.Integer('刃数', readonly=True, related='functional_cutting_tool_id.blade_number')
integral_blade_length = fields.Float('整体刃长(mm)', readonly=True, related='functional_cutting_tool_id.integral_blade_length') integral_blade_length = fields.Float('整体刃长(mm)', readonly=True,
effective_blade_length = fields.Float('有效刃长(mm)', readonly=True, related='functional_cutting_tool_id.effective_blade_length') related='functional_cutting_tool_id.integral_blade_length')
effective_blade_length = fields.Float('有效刃长(mm)', readonly=True,
related='functional_cutting_tool_id.effective_blade_length')
max_life = fields.Float('最大寿命值', readonly=True, related='functional_cutting_tool_id.max_life') max_life = fields.Float('最大寿命值', readonly=True, related='functional_cutting_tool_id.max_life')
is_standard = fields.Boolean('是否标准刀', readonly=True, related='functional_cutting_tool_id.is_standard') is_standard = fields.Boolean('是否标准刀', readonly=True, related='functional_cutting_tool_id.is_standard')
applicable_range = fields.Char('适用范围', readonly=True, related='functional_cutting_tool_id.applicable_range') applicable_range = fields.Char('适用范围', readonly=True, related='functional_cutting_tool_id.applicable_range')
image = fields.Binary('图片', readonly=True, related='functional_cutting_tool_id.image') image = fields.Binary('图片', readonly=True, related='functional_cutting_tool_id.image')
# 功能刀具预警 特有字段 # 功能刀具预警 特有字段
install_tool_time = fields.Datetime("装刀时间", readonly=True,related='functional_tool_assembly_id.tool_loading_time') install_tool_time = fields.Datetime("装刀时间", readonly=True,
outbound_time = fields.Datetime('出库时间', readonly=True,related='functional_tool_assembly_id.receive_time') related='functional_tool_assembly_id.tool_loading_time')
outbound_time = fields.Datetime('出库时间', readonly=True, related='functional_tool_assembly_id.receive_time')
on_board_time = fields.Datetime('上机时间', readonly=False) on_board_time = fields.Datetime('上机时间', readonly=False)
machine_table_name_id = fields.Many2one('maintenance.equipment', string='机床名称', readonly=True, tracking=True, machine_table_name_id = fields.Many2one('maintenance.equipment', string='机床名称', readonly=True, tracking=True,
group_expand='_read_group_machine_table_name_ids') group_expand='_read_group_machine_table_name_ids')
@api.model @api.model
def _read_group_machine_table_name_ids(self, categories, domain, order): def _read_group_machine_table_name_ids(self, categories, domain, order):
machine_table_name_ids = categories._search([], order=order, access_rights_uid=SUPERUSER_ID) machine_table_name_ids = categories._search([], order=order, access_rights_uid=SUPERUSER_ID)
return categories.browse(machine_table_name_ids) return categories.browse(machine_table_name_ids)
machine_tool_code = fields.Char('机台号', readonly=True,related='functional_tool_assembly_id.machine_tool_code') machine_tool_code = fields.Char('机台号', readonly=True, related='functional_tool_assembly_id.machine_tool_code')
cutting_tool_code = fields.Char('刀位号', readonly=True,related='functional_tool_assembly_id.cutter_spacing_code') cutting_tool_code = fields.Char('刀位号', readonly=True, related='functional_tool_assembly_id.cutter_spacing_code')
idle_time = fields.Char('闲置时长', readonly=False) idle_time = fields.Char('闲置时长', readonly=False)
alarm_value = fields.Char('报警值', readonly=False) alarm_value = fields.Char('报警值', readonly=False)
used_value = fields.Char('已使用值', readonly=False) used_value = fields.Char('已使用值', readonly=False)
@@ -224,7 +230,8 @@ class RealTimeDistributionOfFunctionalTools(models.Model):
functional_cutting_tool_id = fields.Many2one('sf.functional.cutting.tool.entity', '功能刀具', readonly=True) functional_cutting_tool_id = fields.Many2one('sf.functional.cutting.tool.entity', '功能刀具', readonly=True)
mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=True, mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=True,
tracking=True, group_expand='_read_mrs_cutting_tool_type_ids',store=True, tracking=True, group_expand='_read_mrs_cutting_tool_type_ids',
store=True,
compute='_compute_functional_cutting_tool_id') compute='_compute_functional_cutting_tool_id')
@api.model @api.model
@@ -248,37 +255,37 @@ class RealTimeDistributionOfFunctionalTools(models.Model):
'sf_functional_tool_warning_id', 'sf_functional_tool_warning_id',
string='整体式刀具型号', readonly=True, string='整体式刀具型号', readonly=True,
domain=[ domain=[
('mrs_cutting_tool_material_name', '=', '整体式刀具')], ('cutting_tool_type', '=', '整体式刀具')],
related='functional_cutting_tool_id.mrs_cutting_tool_integral_model_ids') related='functional_cutting_tool_id.mrs_cutting_tool_integral_model_ids')
# 刀片型号 # 刀片型号
mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id', 'sf_functional_tool_warning_id',
string='刀片型号', readonly=True, string='刀片型号', readonly=True,
domain=[('mrs_cutting_tool_material_name', '=', '刀片')], domain=[('cutting_tool_type', '=', '刀片')],
related='functional_cutting_tool_id.mrs_cutting_tool_blade_model_ids') related='functional_cutting_tool_id.mrs_cutting_tool_blade_model_ids')
# 刀杆型号 # 刀杆型号
mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id', 'sf_functional_tool_warning_id',
string='刀杆型号', readonly=True, string='刀杆型号', readonly=True,
domain=[('mrs_cutting_tool_material_name', '=', '刀杆')], domain=[('cutting_tool_type', '=', '刀杆')],
related='functional_cutting_tool_id.mrs_cutting_tool_cutterbar_model_ids') related='functional_cutting_tool_id.mrs_cutting_tool_cutterbar_model_ids')
# 刀盘型号 # 刀盘型号
mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id', 'sf_functional_tool_warning_id',
string='刀盘型号', readonly=True, string='刀盘型号', readonly=True,
domain=[('mrs_cutting_tool_material_name', '=', '刀盘')], domain=[('cutting_tool_type', '=', '刀盘')],
related='functional_cutting_tool_id.mrs_cutting_tool_cutterpad_model_ids') related='functional_cutting_tool_id.mrs_cutting_tool_cutterpad_model_ids')
# 刀柄型号 # 刀柄型号
mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id', 'sf_functional_tool_warning_id',
string='刀柄型号', readonly=True, string='刀柄型号', readonly=True,
domain=[('mrs_cutting_tool_material_name', '=', '刀柄')], domain=[('cutting_tool_type', '=', '刀柄')],
related='functional_cutting_tool_id.mrs_cutting_tool_cutterhandle_model_ids') related='functional_cutting_tool_id.mrs_cutting_tool_cutterhandle_model_ids')
# 夹头型号 # 夹头型号
mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id', 'sf_functional_tool_warning_id',
string='夹头型号', readonly=True, string='夹头型号', readonly=True,
domain=[('mrs_cutting_tool_material_name', '=', '夹头')], domain=[('cutting_tool_type', '=', '夹头')],
related='functional_cutting_tool_id.mrs_cutting_tool_cutterhead_model_ids') related='functional_cutting_tool_id.mrs_cutting_tool_cutterhead_model_ids')
diameter = fields.Float('直径(mm)', readonly=True, related='functional_cutting_tool_id.diameter') diameter = fields.Float('直径(mm)', readonly=True, related='functional_cutting_tool_id.diameter')
@@ -328,7 +335,6 @@ class RealTimeDistributionOfFunctionalTools(models.Model):
self.total = record.tool_stock_total + record.return_total self.total = record.tool_stock_total + record.return_total
class InboundAndOutboundRecordsOfFunctionalTools(models.Model): class InboundAndOutboundRecordsOfFunctionalTools(models.Model):
_name = 'sf.inbound.and.outbound.records.of.functional.tools' _name = 'sf.inbound.and.outbound.records.of.functional.tools'
_description = '功能刀具出入库记录' _description = '功能刀具出入库记录'
@@ -358,37 +364,37 @@ class InboundAndOutboundRecordsOfFunctionalTools(models.Model):
'sf_functional_tool_warning_id', 'sf_functional_tool_warning_id',
string='整体式刀具型号', readonly=True, string='整体式刀具型号', readonly=True,
domain=[ domain=[
('mrs_cutting_tool_material_name', '=', '整体式刀具')], ('cutting_tool_type', '=', '整体式刀具')],
related='functional_cutting_tool_id.mrs_cutting_tool_integral_model_ids') related='functional_cutting_tool_id.mrs_cutting_tool_integral_model_ids')
# 刀片型号 # 刀片型号
mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id', 'sf_functional_tool_warning_id',
string='刀片型号', readonly=True, string='刀片型号', readonly=True,
domain=[('mrs_cutting_tool_material_name', '=', '刀片')], domain=[('cutting_tool_type', '=', '刀片')],
related='functional_cutting_tool_id.mrs_cutting_tool_blade_model_ids') related='functional_cutting_tool_id.mrs_cutting_tool_blade_model_ids')
# 刀杆型号 # 刀杆型号
mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id', 'sf_functional_tool_warning_id',
string='刀杆型号', readonly=True, string='刀杆型号', readonly=True,
domain=[('mrs_cutting_tool_material_name', '=', '刀杆')], domain=[('cutting_tool_type', '=', '刀杆')],
related='functional_cutting_tool_id.mrs_cutting_tool_cutterbar_model_ids') related='functional_cutting_tool_id.mrs_cutting_tool_cutterbar_model_ids')
# 刀盘型号 # 刀盘型号
mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id', 'sf_functional_tool_warning_id',
string='刀盘型号', readonly=True, string='刀盘型号', readonly=True,
domain=[('mrs_cutting_tool_material_name', '=', '刀盘')], domain=[('cutting_tool_type', '=', '刀盘')],
related='functional_cutting_tool_id.mrs_cutting_tool_cutterpad_model_ids') related='functional_cutting_tool_id.mrs_cutting_tool_cutterpad_model_ids')
# 刀柄型号 # 刀柄型号
mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id', 'sf_functional_tool_warning_id',
string='刀柄型号', readonly=True, string='刀柄型号', readonly=True,
domain=[('mrs_cutting_tool_material_name', '=', '刀柄')], domain=[('cutting_tool_type', '=', '刀柄')],
related='functional_cutting_tool_id.mrs_cutting_tool_cutterhandle_model_ids') related='functional_cutting_tool_id.mrs_cutting_tool_cutterhandle_model_ids')
# 夹头型号 # 夹头型号
mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model', mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_warning_id', 'sf_functional_tool_warning_id',
string='夹头型号', readonly=True, string='夹头型号', readonly=True,
domain=[('mrs_cutting_tool_material_name', '=', '夹头')], domain=[('cutting_tool_type', '=', '夹头')],
related='functional_cutting_tool_id.mrs_cutting_tool_cutterhead_model_ids') related='functional_cutting_tool_id.mrs_cutting_tool_cutterhead_model_ids')
diameter = fields.Float('直径(mm)', readonly=True, related='functional_cutting_tool_id.diameter') diameter = fields.Float('直径(mm)', readonly=True, related='functional_cutting_tool_id.diameter')
@@ -420,7 +426,8 @@ class InboundAndOutboundRecordsOfFunctionalTools(models.Model):
reason_application = fields.Char(string='申请原因', readonly=False) reason_application = fields.Char(string='申请原因', readonly=False)
applicant = fields.Char(string='申请人', readonly=False) applicant = fields.Char(string='申请人', readonly=False)
inbound_and_outbound_records_ids = fields.One2many('sf.inbound.and.outbound.records','inbound_and_outbound_tools_id', string='出入库记录') inbound_and_outbound_records_ids = fields.One2many('sf.inbound.and.outbound.records',
'inbound_and_outbound_tools_id', string='出入库记录')
remark = fields.Char(string='备注/说明', readonly=False) remark = fields.Char(string='备注/说明', readonly=False)
@@ -430,7 +437,8 @@ class InboundAndOutboundRecords(models.Model):
_description = '出入库记录' _description = '出入库记录'
_order = 'id DESC' _order = 'id DESC'
inbound_and_outbound_tools_id = fields.Many2one('sf.inbound.and.outbound.records.of.functional.tools',string='功能刀具出入库记录') inbound_and_outbound_tools_id = fields.Many2one('sf.inbound.and.outbound.records.of.functional.tools',
string='功能刀具出入库记录')
name = fields.Char(string='出入库记录') name = fields.Char(string='出入库记录')
tool_state = fields.Selection([('0', '领用出库'), ('1', '归还入库')], string="出入库类别", readonly=False) tool_state = fields.Selection([('0', '领用出库'), ('1', '归还入库')], string="出入库类别", readonly=False)
@@ -454,13 +462,16 @@ class MachineTableToolChangingApply(models.Model):
# string='换刀需求信息', # string='换刀需求信息',
# attrs="{'invisible': 1}") # attrs="{'invisible': 1}")
name = fields.Many2one('maintenance.equipment', string='CNC机床', readonly=False,tracking=True, group_expand='_read_group_names') name = fields.Many2one('maintenance.equipment', string='CNC机床', readonly=False, tracking=True,
machine_table_type_id = fields.Many2one('sf.machine_tool.category', string='机床类型', readonly=True, compute='_compute_name') group_expand='_read_group_names')
machine_table_type_id = fields.Many2one('sf.machine_tool.category', string='机床类型', readonly=True,
compute='_compute_name')
machine_tool_code = fields.Char(string='机台号', attrs="{'invisible': 1}", readonly=True, compute='_compute_name') machine_tool_code = fields.Char(string='机台号', attrs="{'invisible': 1}", readonly=True, compute='_compute_name')
cutter_spacing_code = fields.Char(string='刀位号', readonly=False) cutter_spacing_code = fields.Char(string='刀位号', readonly=False)
functional_tool_code = fields.Char(string='功能刀具编码', readonly=True, compute='_compute_functional_tool_name_id') functional_tool_code = fields.Char(string='功能刀具编码', readonly=True, compute='_compute_functional_tool_name_id')
functional_tool_name_id = fields.Many2one('sf.functional.cutting.tool', string='功能刀具名称', readonly=False) functional_tool_name_id = fields.Many2one('sf.functional.cutting.tool', string='功能刀具名称', readonly=False)
functional_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model',string='功能刀具类型', readonly=True, compute='_compute_functional_tool_name_id') functional_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=True,
compute='_compute_functional_tool_name_id')
diameter = fields.Char(string='直径', readonly=False) diameter = fields.Char(string='直径', readonly=False)
coarse_middle_thin = fields.Selection([("1", ""), ('2', ''), ('3', '')], string='粗/中/精', readonly=False) coarse_middle_thin = fields.Selection([("1", ""), ('2', ''), ('3', '')], string='粗/中/精', readonly=False)
hilt_name = fields.Char(string='刀柄名称', readonly=False) hilt_name = fields.Char(string='刀柄名称', readonly=False)
@@ -468,11 +479,13 @@ class MachineTableToolChangingApply(models.Model):
max_lifetime_value = fields.Char(string='最大寿命值', readonly=False) max_lifetime_value = fields.Char(string='最大寿命值', readonly=False)
alarm_value = fields.Char(string='报警值', readonly=False) alarm_value = fields.Char(string='报警值', readonly=False)
used_value = fields.Char(string='已使用值', readonly=False) used_value = fields.Char(string='已使用值', readonly=False)
functional_tool_status = fields.Selection([('正常', '正常'), ('异常', '异常')], string='功能刀具状态', default='正常', readonly=False) functional_tool_status = fields.Selection([('正常', '正常'), ('异常', '异常')], string='功能刀具状态',
default='正常', readonly=False)
replacement_tool_code = fields.Char(string='待换功能刀具编码', readonly=True) replacement_tool_code = fields.Char(string='待换功能刀具编码', readonly=True)
replacement_tool_name_id = fields.Many2one('sf.functional.cutting.tool', string='待换功能刀具名称', readonly=True) replacement_tool_name_id = fields.Many2one('sf.functional.cutting.tool', string='待换功能刀具名称', readonly=True)
replacement_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='待换功能刀具类型', readonly=True) replacement_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='待换功能刀具类型',
readonly=True)
replacement_tool_coarse_middle_thin = fields.Selection([("1", ""), ('2', ''), ('3', '')], replacement_tool_coarse_middle_thin = fields.Selection([("1", ""), ('2', ''), ('3', '')],
string='粗/中/精', readonly=True) string='粗/中/精', readonly=True)
new_former = fields.Selection([('0', ''), ('1', '')], string='新/旧', readonly=True) new_former = fields.Selection([('0', ''), ('1', '')], string='新/旧', readonly=True)
@@ -512,19 +525,19 @@ class MachineTableToolChangingApply(models.Model):
""" """
# 更新数据到机台换刀申请界面 # 更新数据到机台换刀申请界面
# todo 自动换刀申请条件需补充完善 # todo 自动换刀申请条件需补充完善
if(self.functional_tool_status == '异常'): if (self.functional_tool_status == '异常'):
self.env['sf.machine.table.tool.changing.apply'].search([ self.env['sf.machine.table.tool.changing.apply'].search([
('name', '=', self.name.id)]).write({ ('name', '=', self.name.id)]).write({
'replacement_tool_code': self.functional_tool_code, 'replacement_tool_code': self.functional_tool_code,
'replacement_tool_name_id': self.functional_tool_name_id.id, 'replacement_tool_name_id': self.functional_tool_name_id.id,
'replacement_tool_type_id': self.functional_tool_type_id.id, 'replacement_tool_type_id': self.functional_tool_type_id.id,
'replacement_tool_coarse_middle_thin': self.coarse_middle_thin, 'replacement_tool_coarse_middle_thin': self.coarse_middle_thin,
'new_former': '0', 'new_former': '0',
'applicant': '自动申请', 'applicant': '自动申请',
'used_tool_time': fields.Datetime.now(), 'used_tool_time': fields.Datetime.now(),
'reason_for_applying': '功能刀具状态异常', 'reason_for_applying': '功能刀具状态异常',
'remark': None, 'remark': None,
'status': '1' 'status': '1'
}) })
# 新建组装任务 # 新建组装任务
@@ -542,9 +555,7 @@ class MachineTableToolChangingApply(models.Model):
'cutter_spacing_code': self.cutter_spacing_code, 'cutter_spacing_code': self.cutter_spacing_code,
}) })
def new_assembly_task(self, vals):
def new_assembly_task(self,vals):
""" """
新建组装任务 新建组装任务
:param vals: :param vals:
@@ -557,7 +568,6 @@ class MachineTableToolChangingApply(models.Model):
self.env['sf.functional.tool.assembly'].create(vals) self.env['sf.functional.tool.assembly'].create(vals)
def revocation_1(self): def revocation_1(self):
""" """
换刀申请撤回按键 换刀申请撤回按键
@@ -583,7 +593,6 @@ class MachineTableToolChangingApply(models.Model):
'sf_functional_tool_assembly_id': None, 'sf_functional_tool_assembly_id': None,
}) })
def revocation_2(self): def revocation_2(self):
""" """
转移撤回按键 转移撤回按键
@@ -615,7 +624,8 @@ class CAMWorkOrderProgramKnifePlan(models.Model):
functional_tool_code = fields.Char(string='功能刀具编码', readonly=False) functional_tool_code = fields.Char(string='功能刀具编码', readonly=False)
functional_tool_name_id = fields.Many2one('sf.functional.cutting.tool', string='功能刀具名称', readonly=False) functional_tool_name_id = fields.Many2one('sf.functional.cutting.tool', string='功能刀具名称', readonly=False)
functional_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=False) functional_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=False)
machine_table_name_id = fields.Many2one('maintenance.equipment', string='机床名称', readonly=False, tracking=True, group_expand='_read_group_machine_table_name_ids') machine_table_name_id = fields.Many2one('maintenance.equipment', string='机床名称', readonly=False, tracking=True,
group_expand='_read_group_machine_table_name_ids')
@api.model @api.model
def _read_group_machine_table_name_ids(self, categories, domain, order): def _read_group_machine_table_name_ids(self, categories, domain, order):
@@ -628,9 +638,11 @@ class CAMWorkOrderProgramKnifePlan(models.Model):
clearance_length = fields.Char(string='避空长', readonly=False) clearance_length = fields.Char(string='避空长', readonly=False)
tool_included_angle = fields.Char(string='刀尖角R角', readonly=False) tool_included_angle = fields.Char(string='刀尖角R角', readonly=False)
L_D = fields.Char(string='L/D', readonly=False) L_D = fields.Char(string='L/D', readonly=False)
coarse_middle_thin = fields.Selection([("1", ""), ('2', ''), ('3', '')], string='粗/中/精', readonly=False, default='2') coarse_middle_thin = fields.Selection([("1", ""), ('2', ''), ('3', '')], string='粗/中/精', readonly=False,
default='2')
required_cutting_time = fields.Char(string='需切削时长', readonly=False) required_cutting_time = fields.Char(string='需切削时长', readonly=False)
whether_standard_tool = fields.Selection([('1', ''), ('0', '')],string='是否标准刀', readonly=False, default='1') whether_standard_tool = fields.Selection([('1', ''), ('0', '')], string='是否标准刀', readonly=False,
default='1')
need_knife_time = fields.Datetime(string='需要用刀时间', readonly=False) need_knife_time = fields.Datetime(string='需要用刀时间', readonly=False)
plan_execute_status = fields.Selection([('0', '待下发'), ('1', '执行中'), ('2', '已完成')], plan_execute_status = fields.Selection([('0', '待下发'), ('1', '执行中'), ('2', '已完成')],
string='计划执行状态', default='0', readonly=False) string='计划执行状态', default='0', readonly=False)
@@ -703,11 +715,11 @@ class FunctionalToolAssembly(models.Model):
_description = '功能刀具组装' _description = '功能刀具组装'
_order = 'use_tool_time asc' _order = 'use_tool_time asc'
functional_tool_code = fields.Char(string='功能刀具编码', readonly=True) functional_tool_code = fields.Char(string='功能刀具编码', readonly=True)
name = fields.Many2one('sf.functional.cutting.tool', string='功能刀具名称', readonly=True) name = fields.Many2one('sf.functional.cutting.tool', string='功能刀具名称', readonly=True)
functional_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=True, functional_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=True,
tracking=True, group_expand='_read_group_functional_tool_type_ids') tracking=True, group_expand='_read_group_functional_tool_type_ids')
@api.model @api.model
def _read_group_functional_tool_type_ids(self, categories, domain, order): def _read_group_functional_tool_type_ids(self, categories, domain, order):
"""读取分组自定义以便在看板视图中显示所有的类别,即使它们为空""" """读取分组自定义以便在看板视图中显示所有的类别,即使它们为空"""
@@ -721,43 +733,44 @@ class FunctionalToolAssembly(models.Model):
# 整体式刀具型号 # 整体式刀具型号
mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model', 'sf_functional_tool_assembly_id', mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model', 'sf_functional_tool_assembly_id',
string='整体式刀具型号', readonly=True, domain= string='整体式刀具型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '整体式刀具')]) [('cutting_tool_type', '=', '整体式刀具')])
integral_code = fields.Char('整体式刀具序列号', readonly=True) integral_code = fields.Char('整体式刀具序列号', readonly=True)
integral_name = fields.Char('整体式刀具名称', readonly=True) integral_name = fields.Char('整体式刀具名称', readonly=True)
sf_tool_brand_id_1 = fields.Many2one('sf.machine.brand', '整体式刀具品牌', readonly=True) sf_tool_brand_id_1 = fields.Many2one('sf.machine.brand', '整体式刀具品牌', readonly=True)
# 刀片型号 # 刀片型号
mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model', 'sf_functional_tool_assembly_id', mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model', 'sf_functional_tool_assembly_id',
string='刀片型号', readonly=True, domain= string='刀片型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '刀片')]) [('cutting_tool_type', '=', '刀片')])
blade_code = fields.Char('刀片序列号', readonly=True) blade_code = fields.Char('刀片序列号', readonly=True)
blade_name = fields.Char('刀片名称', readonly=True) blade_name = fields.Char('刀片名称', readonly=True)
sf_tool_brand_id_2 = fields.Many2one('sf.machine.brand', '刀片品牌', readonly=True) sf_tool_brand_id_2 = fields.Many2one('sf.machine.brand', '刀片品牌', readonly=True)
# 刀杆型号 # 刀杆型号
mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model', 'sf_functional_tool_assembly_id', mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model', 'sf_functional_tool_assembly_id',
string='刀杆型号', readonly=True, domain= string='刀杆型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '刀杆')]) [('cutting_tool_type', '=', '刀杆')])
bar_code = fields.Char('刀杆序列号', readonly=True) bar_code = fields.Char('刀杆序列号', readonly=True)
bar_name = fields.Char('刀杆名称', readonly=True) bar_name = fields.Char('刀杆名称', readonly=True)
sf_tool_brand_id_3 = fields.Many2one('sf.machine.brand', '刀杆品牌', readonly=True) sf_tool_brand_id_3 = fields.Many2one('sf.machine.brand', '刀杆品牌', readonly=True)
# 刀盘型号 # 刀盘型号
mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model', 'sf_functional_tool_assembly_id', mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model', 'sf_functional_tool_assembly_id',
string='刀盘型号', readonly=True, domain= string='刀盘型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '刀盘')]) [('cutting_tool_type', '=', '刀盘')])
pad_code = fields.Char('刀盘序列号', readonly=True) pad_code = fields.Char('刀盘序列号', readonly=True)
pad_name = fields.Char('刀盘名称', readonly=True) pad_name = fields.Char('刀盘名称', readonly=True)
sf_tool_brand_id_4 = fields.Many2one('sf.machine.brand', '刀盘品牌', readonly=True) sf_tool_brand_id_4 = fields.Many2one('sf.machine.brand', '刀盘品牌', readonly=True)
# 刀柄型号 # 刀柄型号
mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model', 'sf_functional_tool_assembly_id', mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model',
'sf_functional_tool_assembly_id',
string='刀柄型号', readonly=True, domain= string='刀柄型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '刀柄')]) [('cutting_tool_type', '=', '刀柄')])
handle_code = fields.Char('刀柄序列号', readonly=True) handle_code = fields.Char('刀柄序列号', readonly=True)
handle_name = fields.Char('刀柄名称', readonly=True) handle_name = fields.Char('刀柄名称', readonly=True)
sf_tool_brand_id_5 = fields.Many2one('sf.machine.brand', '刀柄品牌', readonly=True) sf_tool_brand_id_5 = fields.Many2one('sf.machine.brand', '刀柄品牌', readonly=True)
# 夹头型号 # 夹头型号
mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model', 'sf_functional_tool_assembly_id', mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model', 'sf_functional_tool_assembly_id',
string='夹头型号', readonly=True, domain= string='夹头型号', readonly=True, domain=
[('mrs_cutting_tool_material_name', '=', '夹头')]) [('cutting_tool_type', '=', '夹头')])
chuck_code = fields.Char('夹头序列号', readonly=True) chuck_code = fields.Char('夹头序列号', readonly=True)
chuck_name = fields.Char('夹头名称', readonly=True) chuck_name = fields.Char('夹头名称', readonly=True)
sf_tool_brand_id_6 = fields.Many2one('sf.machine.brand', '夹头品牌', readonly=True) sf_tool_brand_id_6 = fields.Many2one('sf.machine.brand', '夹头品牌', readonly=True)
@@ -774,7 +787,8 @@ class FunctionalToolAssembly(models.Model):
applicant = fields.Char(string='申请人', readonly=True) applicant = fields.Char(string='申请人', readonly=True)
reason_for_applying = fields.Char(string='申请原因', readonly=True) reason_for_applying = fields.Char(string='申请原因', readonly=True)
apply_time = fields.Datetime(string='申请时间', default=fields.Datetime.now(), readonly=True) apply_time = fields.Datetime(string='申请时间', default=fields.Datetime.now(), readonly=True)
assemble_status = fields.Selection([('0', '待组装'), ('1', '已组装'), ('2', '已出库')],string='组装状态', default='0', readonly=True) assemble_status = fields.Selection([('0', '待组装'), ('1', '已组装'), ('2', '已出库')], string='组装状态',
default='0', readonly=True)
use_tool_time = fields.Datetime(string='用刀时间', readonly=True) use_tool_time = fields.Datetime(string='用刀时间', readonly=True)
production_line_name_id = fields.Many2one('sf.production.line', string='产线名称', readonly=False) production_line_name_id = fields.Many2one('sf.production.line', string='产线名称', readonly=False)
machine_tool_name_id = fields.Many2one('maintenance.equipment', string='机床名称', readonly=True) machine_tool_name_id = fields.Many2one('maintenance.equipment', string='机床名称', readonly=True)
@@ -789,7 +803,8 @@ class FunctionalToolAssembly(models.Model):
check_box_1 = fields.Boolean(string='复选框', default=False, readonly=False) check_box_1 = fields.Boolean(string='复选框', default=False, readonly=False)
sf_machine_table_tool_changing_apply_id = fields.Many2one('sf.machine.table.tool.changing.apply', '机床换刀申请') sf_machine_table_tool_changing_apply_id = fields.Many2one('sf.machine.table.tool.changing.apply', '机床换刀申请')
sf_cam_work_order_program_knife_plan_id = fields.Many2one('sf.cam.work.order.program.knife.plan', 'CAM工单程序用刀计划') sf_cam_work_order_program_knife_plan_id = fields.Many2one('sf.cam.work.order.program.knife.plan',
'CAM工单程序用刀计划')
def open_sf_cam_work_order_program_knife_plan(self): def open_sf_cam_work_order_program_knife_plan(self):
""" """
@@ -860,7 +875,6 @@ class FunctionalToolAssembly(models.Model):
self.env['sf.functional.cutting.tool.entity.cache'].search([ self.env['sf.functional.cutting.tool.entity.cache'].search([
('code', '=', self.functional_tool_code)]).unlink() ('code', '=', self.functional_tool_code)]).unlink()
# # 删除功能刀具预警、实时分布、出入库记录的新记录 # # 删除功能刀具预警、实时分布、出入库记录的新记录
# self.env['sf.functional.tool.warning'].search([ # self.env['sf.functional.tool.warning'].search([
# ('code', '=', self.functional_tool_code)]).unlink() # ('code', '=', self.functional_tool_code)]).unlink()
@@ -907,11 +921,10 @@ class FunctionalToolAssembly(models.Model):
'cut_length': None, 'cut_length': None,
'cut_number': None, 'cut_number': None,
'assemble_status': '0', 'assemble_status': '0',
'tool_loading_person':None, 'tool_loading_person': None,
'tool_loading_time':None 'tool_loading_time': None
}) })
def show_popup(self): def show_popup(self):
""" """
单个功能刀具出库 单个功能刀具出库
@@ -919,26 +932,27 @@ class FunctionalToolAssembly(models.Model):
""" """
self.env['sf.delivery.of.cargo.from.storage'].search([]).unlink() self.env['sf.delivery.of.cargo.from.storage'].search([]).unlink()
vals = self.env['sf.functional.tool.assembly'].search([('check_box_1', '=', True),('assemble_status', '=', '1')]) vals = self.env['sf.functional.tool.assembly'].search(
[('check_box_1', '=', True), ('assemble_status', '=', '1')])
if vals: if vals:
for val in vals: for val in vals:
self.env['sf.delivery.of.cargo.from.storage'].create({ self.env['sf.delivery.of.cargo.from.storage'].create({
'functional_tool_code': val.functional_tool_code, 'functional_tool_code': val.functional_tool_code,
'name': val.name.id, 'name': val.name.id,
'functional_tool_type_id': val.functional_tool_type_id.id, 'functional_tool_type_id': val.functional_tool_type_id.id,
'production_line_name_id': val.production_line_name_id.id, 'production_line_name_id': val.production_line_name_id.id,
'machine_tool_code': val.machine_tool_code, 'machine_tool_code': val.machine_tool_code,
'receive_person': val.receive_person, 'receive_person': val.receive_person,
'receive_time': val.receive_time}) 'receive_time': val.receive_time})
else: else:
self.env['sf.delivery.of.cargo.from.storage'].create({ self.env['sf.delivery.of.cargo.from.storage'].create({
'functional_tool_code': self.functional_tool_code, 'functional_tool_code': self.functional_tool_code,
'name': self.name.id, 'name': self.name.id,
'functional_tool_type_id': self.functional_tool_type_id.id, 'functional_tool_type_id': self.functional_tool_type_id.id,
'production_line_name_id': self.production_line_name_id.id, 'production_line_name_id': self.production_line_name_id.id,
'machine_tool_code': self.machine_tool_code, 'machine_tool_code': self.machine_tool_code,
'receive_person': self.receive_person, 'receive_person': self.receive_person,
'receive_time': self.receive_time}) 'receive_time': self.receive_time})
return { return {
'type': 'ir.actions.act_window', 'type': 'ir.actions.act_window',

View File

@@ -13,10 +13,11 @@ class SfToolMaterialSearch(models.Model):
# 关联刀具类型 # 关联刀具类型
mrs_cutting_tool_type_id = fields.Many2one( mrs_cutting_tool_type_id = fields.Many2one(
'sf.cutting.tool.type', '刀具类型', 'sf.cutting.tool.type', '刀具类型',
domain="[('mrs_cutting_tool_material_id.name', '=', mrs_cutting_tool_material_name)]") domain="[('cutting_tool_material_id.name', '=', cutting_tool_material_name)]")
# 关联刀具物料名称 # 关联刀具物料名称
mrs_cutting_tool_material_name = fields.Char(related='mrs_cutting_tool_material_id.name', string='刀具物料名称', mrs_cutting_tool_material_name = fields.Char(related='mrs_cutting_tool_material_id.name', string='刀具物料名称',
store=True) store=True)
cutting_tool_type = fields.Char(related='mrs_cutting_tool_material_id.name', string='刀具物料类型', store=True)
mrs_machine_brand_id = fields.Many2one('sf.machine.brand', '品牌') mrs_machine_brand_id = fields.Many2one('sf.machine.brand', '品牌')
# 关联刀具型号 # 关联刀具型号
# mrs_cutting_tool_model_id = fields.Many2one('sf.cutting.tool.model', '刀具型号') # mrs_cutting_tool_model_id = fields.Many2one('sf.cutting.tool.model', '刀具型号')
@@ -57,7 +58,7 @@ class SfToolMaterialSearch(models.Model):
relation='sf_tool_material_search_blade_cutter_bar_rel', relation='sf_tool_material_search_blade_cutter_bar_rel',
column1='model_id_1', column1='model_id_1',
column2='model_id_2', column2='model_id_2',
domain="[('mrs_cutting_tool_material_id.name', '=', '刀杆')]", domain="[('cutting_tool_type', '=', '刀杆')]",
string='适用刀杆型号', string='适用刀杆型号',
default=lambda self: [], # 使用空列表作为默认值 default=lambda self: [], # 使用空列表作为默认值
) )
@@ -66,7 +67,7 @@ class SfToolMaterialSearch(models.Model):
relation='sf_tool_material_search_blade_cutter_pad_rel', relation='sf_tool_material_search_blade_cutter_pad_rel',
column1='model_id_1', column1='model_id_1',
column2='model_id_2', column2='model_id_2',
domain="[('mrs_cutting_tool_material_id.name', '=', '刀盘')]", domain="[('cutting_tool_type', '=', '刀盘')]",
string='适用刀盘型号', string='适用刀盘型号',
default=lambda self: [], # 使用空列表作为默认值 default=lambda self: [], # 使用空列表作为默认值
) )
@@ -99,7 +100,7 @@ class SfToolMaterialSearch(models.Model):
relation='sf_tool_material_search_bar_blade_rel', relation='sf_tool_material_search_bar_blade_rel',
column1='model_id_1', column1='model_id_1',
column2='model_id_2', column2='model_id_2',
domain="[('mrs_cutting_tool_material_id.name', '=', '刀片')]", domain="[('cutting_tool_type', '=', '刀片')]",
string='适用刀片型号' string='适用刀片型号'
) )
bar_wrench = fields.Float('配对扳手(mm)') bar_wrench = fields.Float('配对扳手(mm)')
@@ -121,7 +122,7 @@ class SfToolMaterialSearch(models.Model):
relation='sf_tool_material_search_pad_blade_rel', relation='sf_tool_material_search_pad_blade_rel',
column1='model_id_1', column1='model_id_1',
column2='model_id_2', column2='model_id_2',
domain="[('mrs_cutting_tool_material_id.name', '=', '刀片')]", domain="[('cutting_tool_type', '=', '刀片')]",
string='适用刀片型号' string='适用刀片型号'
) )
pad_wrench = fields.Float('配对扳手(mm)') pad_wrench = fields.Float('配对扳手(mm)')
@@ -151,7 +152,7 @@ class SfToolMaterialSearch(models.Model):
relation='sf_tool_material_search_handle_chuck_rel', relation='sf_tool_material_search_handle_chuck_rel',
column1='model_id_1', column1='model_id_1',
column2='model_id_2', column2='model_id_2',
domain="[('mrs_cutting_tool_material_id.name', '=', '夹头')]", domain="[('cutting_tool_type', '=', '夹头')]",
string='适用夹头型号' string='适用夹头型号'
) )
handle_clamping_range = fields.Float('夹持范围(mm)') handle_clamping_range = fields.Float('夹持范围(mm)')
@@ -175,7 +176,7 @@ class SfToolMaterialSearch(models.Model):
relation='sf_tool_material_search_chuck_handle_rel', relation='sf_tool_material_search_chuck_handle_rel',
column1='model_id_1', column1='model_id_1',
column2='model_id_2', column2='model_id_2',
domain="[('mrs_cutting_tool_material_id.name', '=', '刀柄')]", domain="[('cutting_tool_type', '=', '刀柄')]",
string='适用刀柄型号' string='适用刀柄型号'
) )
chuck_clamping_range = fields.Float('夹持范围(mm)') chuck_clamping_range = fields.Float('夹持范围(mm)')

View File

@@ -11,11 +11,11 @@
<field name="name"/> <field name="name"/>
<field name="mrs_cutting_tool_type_id"/> <field name="mrs_cutting_tool_type_id"/>
<field name="mrs_machine_brand_id"/> <field name="mrs_machine_brand_id"/>
<!-- <field name="mrs_cutting_tool_model_id"/> --> <!-- <field name="mrs_cutting_tool_model_id"/> -->
<field name="mrs_materials_model_id"/> <field name="mrs_materials_model_id"/>
<field name="mrs_cutting_tool_material_id"/> <field name="mrs_cutting_tool_material_id"/>
<!-- <field name="blade_code" optional="hide"/> --> <!-- <field name="blade_code" optional="hide"/> -->
<field name="blade_length" optional="hide"/> <field name="blade_length" optional="hide"/>
<field name="blade_width" optional="hide"/> <field name="blade_width" optional="hide"/>
<field name="blade_height" optional="hide"/> <field name="blade_height" optional="hide"/>
@@ -32,7 +32,7 @@
<field name="mrs_cutting_tool_model_blade_cutter_pad_ids" optional="hide"/> <field name="mrs_cutting_tool_model_blade_cutter_pad_ids" optional="hide"/>
<field name="mrs_cutting_tool_model_blade_cutter_bar_ids" optional="hide"/> <field name="mrs_cutting_tool_model_blade_cutter_bar_ids" optional="hide"/>
<!-- <field name="integral_code" readonly="1"/> --> <!-- <field name="integral_code" readonly="1"/> -->
<field name="integral_total_length" optional="hide"/> <field name="integral_total_length" optional="hide"/>
<field name="integral_shank_length" optional="hide"/> <field name="integral_shank_length" optional="hide"/>
<field name="integral_blade_length" optional="hide"/> <field name="integral_blade_length" optional="hide"/>
@@ -47,7 +47,7 @@
<field name="integral_nut" optional="hide"/> <field name="integral_nut" optional="hide"/>
<field name="integral_scope" optional="hide"/> <field name="integral_scope" optional="hide"/>
<!-- <field name="bar_code" readonly="1"/> --> <!-- <field name="bar_code" readonly="1"/> -->
<field name="bar_c_diameter" optional="hide"/> <field name="bar_c_diameter" optional="hide"/>
<field name="bar_total_length" optional="hide"/> <field name="bar_total_length" optional="hide"/>
<field name="bar_blade_number" optional="hide"/> <field name="bar_blade_number" optional="hide"/>
@@ -60,7 +60,7 @@
<field name="bar_hardness" optional="hide"/> <field name="bar_hardness" optional="hide"/>
<field name="bar_scope" optional="hide"/> <field name="bar_scope" optional="hide"/>
<!-- <field name="pad_code" readonly="1"/> --> <!-- <field name="pad_code" readonly="1"/> -->
<field name="pad_c_diameter" optional="hide"/> <field name="pad_c_diameter" optional="hide"/>
<field name="pad_total_length" optional="hide"/> <field name="pad_total_length" optional="hide"/>
<field name="pad_blade_number" optional="hide"/> <field name="pad_blade_number" optional="hide"/>
@@ -73,7 +73,7 @@
<field name="pad_hardness" optional="hide"/> <field name="pad_hardness" optional="hide"/>
<field name="pad_scope" optional="hide"/> <field name="pad_scope" optional="hide"/>
<!-- <field name="handle_code" readonly="1"/> --> <!-- <field name="handle_code" readonly="1"/> -->
<field name="handle_length" optional="hide"/> <field name="handle_length" optional="hide"/>
<field name="handle_diameter" optional="hide"/> <field name="handle_diameter" optional="hide"/>
<field name="handle_flange_length" optional="hide"/> <field name="handle_flange_length" optional="hide"/>
@@ -85,13 +85,14 @@
<field name="handle_weight" optional="hide"/> <field name="handle_weight" optional="hide"/>
<field name="handle_body_accuracy" optional="hide"/> <field name="handle_body_accuracy" optional="hide"/>
<field name="handle_nut" optional="hide"/> <field name="handle_nut" optional="hide"/>
<field name="mrs_cutting_tool_model_handle_chuck_model_ids" widget="many2many_tags" optional="hide"/> <field name="mrs_cutting_tool_model_handle_chuck_model_ids" widget="many2many_tags"
optional="hide"/>
<field name="handle_clamping_range" optional="hide"/> <field name="handle_clamping_range" optional="hide"/>
<field name="handle_detection_accuracy" optional="hide"/> <field name="handle_detection_accuracy" optional="hide"/>
<field name="handle_detection_hardness" optional="hide"/> <field name="handle_detection_hardness" optional="hide"/>
<field name="handle_standard_speed" optional="hide"/> <field name="handle_standard_speed" optional="hide"/>
<!-- <field name="chuck_code" readonly="1"/> --> <!-- <field name="chuck_code" readonly="1"/> -->
<field name="chuck_accuracy" optional="hide"/> <field name="chuck_accuracy" optional="hide"/>
<field name="chuck_clamping_diameter_min" optional="hide"/> <field name="chuck_clamping_diameter_min" optional="hide"/>
<field name="chuck_clamping_diameter_max" optional="hide"/> <field name="chuck_clamping_diameter_max" optional="hide"/>
@@ -99,7 +100,8 @@
<field name="chuck_inner_diameter" optional="hide"/> <field name="chuck_inner_diameter" optional="hide"/>
<field name="chuck_height" optional="hide"/> <field name="chuck_height" optional="hide"/>
<field name="chuck_nut" optional="hide"/> <field name="chuck_nut" optional="hide"/>
<field name="mrs_cutting_tool_model_chuck_handle_model_ids" widget="many2many_tags" optional="hide"/> <field name="mrs_cutting_tool_model_chuck_handle_model_ids" widget="many2many_tags"
optional="hide"/>
<field name="chuck_clamping_range" optional="hide"/> <field name="chuck_clamping_range" optional="hide"/>
<field name="chuck_feature" optional="hide"/> <field name="chuck_feature" optional="hide"/>
<field name="image" widget="image" optional="hide"/> <field name="image" widget="image" optional="hide"/>
@@ -132,7 +134,7 @@
<field name="name"/> <field name="name"/>
<field name="mrs_cutting_tool_type_id"/> <field name="mrs_cutting_tool_type_id"/>
<field name="mrs_machine_brand_id"/> <field name="mrs_machine_brand_id"/>
<!-- <field name="mrs_cutting_tool_model_id"/> --> <!-- <field name="mrs_cutting_tool_model_id"/> -->
<field name="mrs_materials_model_id"/> <field name="mrs_materials_model_id"/>
<field name="mrs_cutting_tool_material_id"/> <field name="mrs_cutting_tool_material_id"/>
</group> </group>
@@ -157,8 +159,9 @@
</group> </group>
<group> <group>
<field name="cutting_tool_material_name" invisible="True"/> <field name="cutting_tool_material_name" invisible="True"/>
<field name="cutting_tool_type" invisible="True"/>
</group> </group>
<group string="刀片信息" attrs="{'invisible': [('cutting_tool_material_name','!=','刀片')]}"> <group string="刀片信息" attrs="{'invisible': [('cutting_tool_type','!=','刀片')]}">
<group> <group>
<field name="blade_code" invisible="True"/> <field name="blade_code" invisible="True"/>
<field name="blade_length"/> <field name="blade_length"/>
@@ -181,7 +184,7 @@
</group> </group>
</group> </group>
<group string="整体式刀具信息" attrs="{'invisible': [('cutting_tool_material_name','!=','整体式刀具')]}"> <group string="整体式刀具信息" attrs="{'invisible': [('cutting_tool_type','!=','整体式刀具')]}">
<group> <group>
<field name="integral_code" invisible="True"/> <field name="integral_code" invisible="True"/>
<field name="integral_total_length"/> <field name="integral_total_length"/>
@@ -202,7 +205,7 @@
</group> </group>
</group> </group>
<group string="刀杆信息" attrs="{'invisible': [('cutting_tool_material_name','!=','刀杆')]}"> <group string="刀杆信息" attrs="{'invisible': [('cutting_tool_type','!=','刀杆')]}">
<group> <group>
<field name="bar_code" invisible="True"/> <field name="bar_code" invisible="True"/>
<field name="bar_c_diameter"/> <field name="bar_c_diameter"/>
@@ -221,7 +224,7 @@
</group> </group>
</group> </group>
<group string="刀盘信息" attrs="{'invisible': [('cutting_tool_material_name','!=','刀盘')]}"> <group string="刀盘信息" attrs="{'invisible': [('cutting_tool_type','!=','刀盘')]}">
<group> <group>
<field name="pad_code" invisible="True"/> <field name="pad_code" invisible="True"/>
<field name="pad_c_diameter"/> <field name="pad_c_diameter"/>
@@ -240,7 +243,7 @@
</group> </group>
</group> </group>
<group string="刀柄信息" attrs="{'invisible': [('cutting_tool_material_name','!=','刀柄')]}"> <group string="刀柄信息" attrs="{'invisible': [('cutting_tool_type','!=','刀柄')]}">
<group> <group>
<field name="handle_code" invisible="True"/> <field name="handle_code" invisible="True"/>
<field name="handle_diameter"/> <field name="handle_diameter"/>
@@ -263,7 +266,7 @@
</group> </group>
</group> </group>
<group string="夹头信息" attrs="{'invisible': [('cutting_tool_material_name','!=','夹头')]}"> <group string="夹头信息" attrs="{'invisible': [('cutting_tool_type','!=','夹头')]}">
<group> <group>
<field name="chuck_code" invisible="True"/> <field name="chuck_code" invisible="True"/>
<field name="chuck_clamping_diameter_min"/> <field name="chuck_clamping_diameter_min"/>
@@ -287,8 +290,6 @@
</record> </record>
<!-- 刀具物料搜索 --> <!-- 刀具物料搜索 -->
<record id="search_sf_tool_material_search" model="ir.ui.view"> <record id="search_sf_tool_material_search" model="ir.ui.view">
<field name="name">sf.tool.material.search.search</field> <field name="name">sf.tool.material.search.search</field>
@@ -310,11 +311,11 @@
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
</record> </record>
<menuitem <menuitem
sequence="20" sequence="20"
name="刀具物料查询" name="刀具物料查询"
id="menu_sf_tool_material_search" id="menu_sf_tool_material_search"
action="action_sf_tool_material_search" action="action_sf_tool_material_search"
parent="menu_sf_tool_manage" parent="menu_sf_tool_manage"
/> />
</data> </data>
</odoo> </odoo>