diff --git a/sf_manufacturing/models/product_template.py b/sf_manufacturing/models/product_template.py index b18ab04c..6329dd9e 100644 --- a/sf_manufacturing/models/product_template.py +++ b/sf_manufacturing/models/product_template.py @@ -42,8 +42,11 @@ class ResProductMo(models.Model): product_model_type_id = fields.Many2one('sf.model.type', string='产品模型类型') embryo_model_type_id = fields.Many2one('sf.model.type', string='坯料模型类型') materials_id = fields.Many2one('sf.production.materials', string='材料') - materials_type_id = fields.Many2one('sf.materials.model', string='材料型号', + # materials_type_id = fields.Many2one('sf.materials.model', string='材料型号', + # domain="[('materials_id', '=', materials_id)]") + materials_type_id = fields.Many2one(related='cutting_tool_model_id.material_model_id', string='材料型号', domain="[('materials_id', '=', materials_id)]") + # cutting_tool_model_id.material_model_id server_product_process_parameters_id = fields.Many2one('sf.production.process.parameter', string='表面工艺参数(服务产品)') model_process_parameters_ids = fields.Many2many('sf.production.process.parameter', 'process_parameter_rel', @@ -55,43 +58,102 @@ class ResProductMo(models.Model): cutting_tool_model_id = fields.Many2one('sf.cutting_tool.standard.library', string='型号名称') specification_id = fields.Many2one('sf.tool.materials.basic.parameters', string='物料号') - cutting_tool_type_id = fields.Many2one('sf.cutting.tool.type', string='类型', + # cutting_tool_type_id = fields.Many2one('sf.cutting.tool.type', string='类型', + # domain="[('cutting_tool_material_id.name', '=', cutting_tool_type)]") + cutting_tool_type_id = fields.Many2one(related='cutting_tool_model_id.cutting_tool_type_id', string='类型', domain="[('cutting_tool_material_id.name', '=', cutting_tool_type)]") - - brand_id = fields.Many2one('sf.machine.brand', '品牌') - - tool_length = fields.Float('长度(mm)') - tool_width = fields.Float('宽度(mm)') + # brand_id = fields.Many2one('sf.machine.brand', '品牌') + brand_id = fields.Many2one(related='cutting_tool_model_id.brand_id', string='品牌') + # cutting_tool_model_id.brand_id + # tool_length = fields.Float('长度(mm)') + tool_length = fields.Float(related='specification_id.length', string='长度(mm)') + # specification_id.length + # tool_width = fields.Float('宽度(mm)') + tool_width = fields.Float(related='specification_id.width', string='宽度(mm)') + # specification_id.width tool_height = fields.Float('高度(mm)') - tool_thickness = fields.Float('厚度(mm)') - tool_weight = fields.Float('重量(kg)') - tool_hardness = fields.Integer('硬度(hrc)') - coating_material = fields.Char('涂层材质') + # tool_thickness = fields.Float('厚度(mm)') + tool_thickness = fields.Float(related='specification_id.thickness', string='厚度(mm)') + # specification_id.thickness + # tool_weight = fields.Float('重量(kg)') + tool_weight = fields.Float(related='specification_id.weight', string='重量(kg)') + # specification_id.weight + # tool_hardness = fields.Integer('硬度(hrc)') + tool_hardness = fields.Integer(related='cutting_tool_model_id.tool_hardness', string='硬度(hrc)') + # cutting_tool_model_id.tool_hardness + # coating_material = fields.Char('涂层材质') + coating_material = fields.Char(related='cutting_tool_model_id.coating_material', string='涂层材质') + # cutting_tool_model_id.coating_material # 整体式刀具特有字段 - cutting_tool_total_length = fields.Float('总长度(mm)', digits=(6, 1)) - cutting_tool_shank_length = fields.Float('柄部长度(mm)', digits=(6, 1)) - cutting_tool_blade_length = fields.Float('刃部长度(mm)') - cutting_tool_blade_number = fields.Selection( - [('0', '0'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8')], - string='刃数(个)', default='0') + # cutting_tool_total_length = fields.Float('总长度(mm)', digits=(6, 1)) + cutting_tool_total_length = fields.Float(related='specification_id.total_length', string='总长度(mm)', digits=(6, 1)) + # specification_id.total_length + # cutting_tool_shank_length = fields.Float('柄部长度(mm)', digits=(6, 1)) + cutting_tool_shank_length = fields.Float(related='specification_id.handle_length', string='柄部长度(mm)', + digits=(6, 1)) + # specification_id.handle_length + # cutting_tool_blade_length = fields.Float('刃部长度(mm)') + cutting_tool_blade_length = fields.Float(related='specification_id.blade_length', string='刃部长度(mm)') + # specification_id.blade_length + # cutting_tool_blade_number = fields.Selection( + # [('0', '0'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8')], + # string='刃数(个)', default='0') + cutting_tool_blade_number = fields.Selection(related='specification_id.blade_number', string='刃数(个)') + # specification_id.blade_number # 整体式刀具新增字段 - cutting_tool_neck_length = fields.Float('颈部长度(mm)', digits=(6, 1)) - cutting_tool_neck_diameter = fields.Float('颈部直径(mm)', digits=(6, 1)) - cutting_tool_shank_diameter = fields.Float('柄部直径(mm)', digits=(6, 1)) - cutting_tool_blade_tip_diameter = fields.Float('刀尖直径(mm)', digits=(6, 1)) - cutting_tool_blade_tip_taper = fields.Integer('刀尖锥度(°)') - cutting_tool_blade_helix_angle = fields.Integer('刃部螺旋角(°)') - cutting_tool_blade_type = fields.Char('刃部类型') - cutting_tool_pitch = fields.Float('牙距(mm)') - cutting_tool_blade_width = fields.Float('刃部宽度(mm)') - cutting_tool_blade_depth = fields.Float('刃部深度(mm)') + # cutting_tool_neck_length = fields.Float('颈部长度(mm)', digits=(6, 1)) + cutting_tool_neck_length = fields.Float(related='specification_id.neck_length', string='颈部长度(mm)', digits=(6, 1)) + # specification_id.neck_length + # cutting_tool_neck_diameter = fields.Float('颈部直径(mm)', digits=(6, 1)) + cutting_tool_neck_diameter = fields.Float(related='specification_id.neck_diameter', string='颈部直径(mm)', + digits=(6, 1)) + # specification_id.neck_diameter + # cutting_tool_shank_diameter = fields.Float('柄部直径(mm)', digits=(6, 1)) + cutting_tool_shank_diameter = fields.Float(related='specification_id.handle_diameter', string='柄部直径(mm)', digits=(6, 1)) + # specification_id.handle_diameter + # cutting_tool_blade_tip_diameter = fields.Float('刀尖直径(mm)', digits=(6, 1)) + cutting_tool_blade_tip_diameter = fields.Float(related='specification_id.blade_tip_diameter', string='刀尖直径(mm)', + digits=(6, 1)) + # specification_id.blade_tip_diameter + # cutting_tool_blade_tip_taper = fields.Integer('刀尖锥度(°)') + cutting_tool_blade_tip_taper = fields.Integer(related='specification_id.blade_tip_taper', string='刀尖锥度(°)') + # specification_id.blade_tip_taper + # cutting_tool_blade_helix_angle = fields.Integer('刃部螺旋角(°)') + cutting_tool_blade_helix_angle = fields.Integer(related='specification_id.blade_helix_angle', string='刃部螺旋角(°)') + # specification_id.blade_helix_angle + # cutting_tool_blade_type = fields.Char('刃部类型') + cutting_tool_blade_type = fields.Char(related='cutting_tool_model_id.blade_type', string='刃部类型') + # cutting_tool_pitch = fields.Float('牙距(mm)') + cutting_tool_pitch = fields.Float(related='specification_id.pitch', string='牙距(mm)') + # specification_id.pitch + # cutting_tool_blade_width = fields.Float('刃部宽度(mm)') + cutting_tool_blade_width = fields.Float(related='specification_id.blade_width', string='刃部宽度(mm)') + # specification_id.blade_width + # cutting_tool_blade_depth = fields.Float('刃部深度(mm)') + cutting_tool_blade_depth = fields.Float(related='specification_id.blade_depth', string='刃部深度(mm)') + # specification_id.blade_depth cutting_tool_cut_depth = fields.Float('切削深度(mm)') - cutting_tool_cut_depth_max = fields.Float('最大切削深度(mm)') - cutting_tool_coarse_medium_fine = fields.Selection([('粗', '粗'), ('中', '中'), ('精', '精')], '粗/中/精') - cutting_tool_run_out_accuracy_max = fields.Float('端跳精度max', digits=(6, 1)) - cutting_tool_run_out_accuracy_min = fields.Float('端跳精度min', digits=(6, 1)) - cutting_tool_blade_tip_working_size = fields.Char('刀尖倒角度(°)', size=20) - cutting_tool_blade_tip_r_size = fields.Float('刀尖R角(mm)') + # cutting_tool_cut_depth_max = fields.Float('最大切削深度(mm)') + cutting_tool_cut_depth_max = fields.Float(related='specification_id.cut_depth_max', string='最大切削深度(mm)') + # specification_id.cut_depth_max + # cutting_tool_coarse_medium_fine = fields.Selection([('粗', '粗'), ('中', '中'), ('精', '精')], '粗/中/精') + cutting_tool_coarse_medium_fine = fields.Selection(related='cutting_tool_model_id.integral_coarse_medium_fine', string='粗/中/精') + # cutting_tool_model_id.integral_coarse_medium_fine + # cutting_tool_run_out_accuracy_max = fields.Float('端跳精度max', digits=(6, 1)) + cutting_tool_run_out_accuracy_max = fields.Char(related='cutting_tool_model_id.integral_run_out_accuracy_max', string='端跳精度max', digits=(6, 1)) + # cutting_tool_model_id.integral_run_out_accuracy_max + # cutting_tool_run_out_accuracy_min = fields.Float('端跳精度min', digits=(6, 1)) + cutting_tool_run_out_accuracy_min = fields.Char(related='cutting_tool_model_id.integral_run_out_accuracy_min', + string='端跳精度min', digits=(6, 1)) + # cutting_tool_model_id.integral_run_out_accuracy_min + # cutting_tool_blade_tip_working_size = fields.Char('刀尖倒角度(°)', size=20) + cutting_tool_blade_tip_working_size = fields.Char(related='specification_id.blade_tip_working_size', + string='刀尖倒角度(°)', size=20) + # specification_id.blade_tip_working_size + # cutting_tool_blade_tip_r_size = fields.Float('刀尖R角(mm)') + cutting_tool_blade_tip_r_size = fields.Float(related='specification_id.tip_r_size', + string='刀尖R角(mm)') + # specification_id.tip_r_size fit_blade_shape_id = fields.Many2one('maintenance.equipment.image', '适配刀片形状', domain=[('type', '=', '刀片形状')]) suitable_machining_method_ids = fields.Many2many('maintenance.equipment.image', @@ -429,44 +491,97 @@ class ResProductMo(models.Model): # if not self.cutting_direction_ids: # raise ValidationError("请选择走刀方向") - cutting_speed_ids = fields.One2many('sf.cutting.speed', 'product_template_id', string='切削速度Vc') + # cutting_speed_ids = fields.One2many('sf.cutting.speed', 'product_template_id', string='切削速度Vc') + cutting_speed_ids = fields.One2many(related='cutting_tool_model_id.cutting_speed_ids', + string='切削速度Vc') + # cutting_tool_model_id.cutting_speed_ids feed_per_tooth_ids = fields.One2many('sf.feed.per.tooth', 'product_template_id', string='每齿走刀量fz') cutting_tool_diameter = fields.Float('刀具直径(mm)') - cutting_tool_rear_angle = fields.Integer('后角(°)') - cutting_tool_main_included_angle = fields.Integer('主偏角(°)') + # cutting_tool_rear_angle = fields.Integer('后角(°)') + cutting_tool_rear_angle = fields.Integer(related='specification_id.relief_angle', + string='后角(°)') + # specification_id.relief_angle + # cutting_tool_main_included_angle = fields.Integer('主偏角(°)') + cutting_tool_main_included_angle = fields.Integer(related='specification_id.main_included_angle', + string='主偏角(°)') + # specification_id.main_included_angle # 适用夹头型号可以多选 cutting_tool_chuck_id = fields.Many2one( 'sf.cutting_tool.standard.library', domain="[('cutting_tool_type', '=', '夹头')]", string='适用夹头型号') # 刀片参数 - cutting_tool_cut_blade_length = fields.Float('切削刃长(mm)') - cutting_tool_blade_tip_circular_arc_radius = fields.Char('刀尖圆弧半径(mm)', size=20) - cutting_tool_top_angle = fields.Integer('顶角(°)') - cutting_tool_inscribed_circle_diameter = fields.Float('内接圆直径(mm)') - cutting_tool_install_aperture_diameter = fields.Float('安装孔直径(mm)') - cutting_tool_chip_breaker_groove = fields.Selection([('无', '无'), ('单面', '单面'), ('双面', '双面')], - string='有无断屑槽') - cutting_tool_chip_breaker_type_code = fields.Char('断屑槽型代号') - cutting_tool_bladed_teeth_model = fields.Selection( - [('无', '无'), ('V牙型', 'V牙型'), ('米制全牙型', '米制全牙型'), ('美制全牙型', '美制全牙型'), - ('惠氏全牙型', '惠氏全牙型'), ('BSPT全牙型', 'BSPT全牙型'), ('NPT全牙型', 'NPT全牙型'), - ('UNJ全牙型', 'UNJ全牙型'), ('DIN405圆牙型', 'DIN405圆牙型'), ('ACME梯形', 'ACME梯形'), - ('石油管螺纹刀片', '石油管螺纹刀片'), ('矮牙ACME梯形', '矮牙ACME梯形'), - ('Trapeze30° 103', 'Trapeze30° 103')], string='刀片牙型', default='无') - cutting_tool_blade_blade_number = fields.Selection( - [('0', '0'), ('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), - ('7', '7'), ('8', '8'), ('9', '9'), ('10', '10')], - string='刀片的刃数(个)') + # cutting_tool_cut_blade_length = fields.Float('切削刃长(mm)') + cutting_tool_cut_blade_length = fields.Float(related='specification_id.cutting_blade_length', + string='切削刃长(mm)') + # specification_id.cutting_blade_length + # cutting_tool_blade_tip_circular_arc_radius = fields.Char('刀尖圆弧半径(mm)', size=20) + cutting_tool_blade_tip_circular_arc_radius = fields.Char(related='specification_id.blade_tip_circular_arc_radius', + string='刀尖圆弧半径(mm)') + # specification_id.blade_tip_circular_arc_radius + # cutting_tool_top_angle = fields.Integer('顶角(°)') + cutting_tool_top_angle = fields.Integer(related='specification_id.top_angle', + string='顶角(°)') + # specification_id.top_angle + # cutting_tool_inscribed_circle_diameter = fields.Float('内接圆直径(mm)') + cutting_tool_inscribed_circle_diameter = fields.Float(related='specification_id.inscribed_circle_diameter', + string='内接圆直径(mm)') + # specification_id.inscribed_circle_diameter + # cutting_tool_install_aperture_diameter = fields.Float('安装孔直径(mm)') + cutting_tool_install_aperture_diameter = fields.Float(related='specification_id.install_aperture_diameter', + string='安装孔直径(mm)') + # specification_id.install_aperture_diameter + # cutting_tool_chip_breaker_groove = fields.Selection([('无', '无'), ('单面', '单面'), ('双面', '双面')], + # string='有无断屑槽') + cutting_tool_chip_breaker_groove = fields.Selection(related='specification_id.chip_breaker_groove', + string='有无断屑槽') + # specification_id.chip_breaker_groove + # cutting_tool_chip_breaker_type_code = fields.Char('断屑槽型代号') + cutting_tool_chip_breaker_type_code = fields.Char(related='specification_id.chip_breaker_type_code', + string='断屑槽型代号') + # specification_id.chip_breaker_type_code + # cutting_tool_bladed_teeth_model = fields.Selection( + # [('无', '无'), ('V牙型', 'V牙型'), ('米制全牙型', '米制全牙型'), ('美制全牙型', '美制全牙型'), + # ('惠氏全牙型', '惠氏全牙型'), ('BSPT全牙型', 'BSPT全牙型'), ('NPT全牙型', 'NPT全牙型'), + # ('UNJ全牙型', 'UNJ全牙型'), ('DIN405圆牙型', 'DIN405圆牙型'), ('ACME梯形', 'ACME梯形'), + # ('石油管螺纹刀片', '石油管螺纹刀片'), ('矮牙ACME梯形', '矮牙ACME梯形'), + # ('Trapeze30° 103', 'Trapeze30° 103')], string='刀片牙型', default='无') + cutting_tool_bladed_teeth_model = fields.Selection(related='specification_id.blade_teeth_model', + string='断屑槽型代号') + # specification_id.blade_teeth_model + # cutting_tool_blade_blade_number = fields.Selection( + # [('0', '0'), ('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), + # ('7', '7'), ('8', '8'), ('9', '9'), ('10', '10')], + # string='刀片的刃数(个)') + cutting_tool_blade_blade_number = fields.Selection(related='specification_id.blade_blade_number', + string='刀片的刃数(个)') + # specification_id.blade_blade_number - cutting_tool_thread_model = fields.Selection([('无', '无'), ('外螺纹', '外螺纹'), ('内螺纹', '内螺纹')], - string='螺纹类型') - cutting_tool_thread_num = fields.Float('每英寸螺纹数(tpi)') - cutting_tool_blade_tip_height_tolerance = fields.Char('刀尖高度公差(mm)', size=20) - cutting_tool_inscribed_circle_tolerance = fields.Char('内接圆公差(mm)', size=20) - cutting_tool_thickness_tolerance = fields.Char('厚度公差(mm)', size=20) - - cutting_tool_jump_accuracy = fields.Char('径跳精度(mm)') + # cutting_tool_thread_model = fields.Selection([('无', '无'), ('外螺纹', '外螺纹'), ('内螺纹', '内螺纹')], + # string='螺纹类型') + cutting_tool_thread_model = fields.Selection(related='specification_id.thread_model', + string='螺纹类型') + # specification_id.thread_model + # cutting_tool_thread_num = fields.Float('每英寸螺纹数(tpi)') + cutting_tool_thread_num = fields.Float(related='specification_id.thread_num', + string='每英寸螺纹数(tpi)') + # specification_id.thread_num + # cutting_tool_blade_tip_height_tolerance = fields.Char('刀尖高度公差(mm)', size=20) + cutting_tool_blade_tip_height_tolerance = fields.Char(related='specification_id.blade_tip_height_tolerance', + string='刀尖高度公差(mm)') + # specification_id.blade_tip_height_tolerance + # cutting_tool_inscribed_circle_tolerance = fields.Char('内接圆公差(mm)', size=20) + cutting_tool_inscribed_circle_tolerance = fields.Char(related='specification_id.inscribed_circle_tolerance', + string='内接圆公差(mm)') + # specification_id.inscribed_circle_tolerance + # cutting_tool_thickness_tolerance = fields.Char('厚度公差(mm)', size=20) + cutting_tool_thickness_tolerance = fields.Char(related='specification_id.thickness_tolerance', + string='厚度公差(mm)') + # specification_id.thickness_tolerance + # cutting_tool_jump_accuracy = fields.Char('径跳精度(mm)') + cutting_tool_jump_accuracy = fields.Char(related='specification_id.run_out_accuracy', + string='径跳精度(mm)') + # specification_id.run_out_accuracy cutting_tool_working_hardness = fields.Integer('加工硬度(hrc)') cutting_tool_cutter_bar_ids = fields.Many2many( 'sf.cutting_tool.standard.library', @@ -485,55 +600,153 @@ class ResProductMo(models.Model): string='适用刀盘型号' # 使用空列表作为默认值 ) # 刀杆/参数 - cutting_tool_knife_head_height = fields.Float('刀头高度(mm)') - cutting_tool_knife_head_width = fields.Float('刀头宽度(mm)') - cutting_tool_knife_head_length = fields.Float('刀头长度(mm)') - cutting_tool_blade_diameter = fields.Float('刃径/刃部直径(mm)') - cutting_tool_cutter_arbor_diameter = fields.Float('刀杆直径(mm)') - cutting_tool_min_machining_aperture = fields.Integer('最小加工孔径(mm)') - cutting_tool_install_blade_tip_num = fields.Integer('可装刀片数/齿数(个)') - cutting_tool_installing_structure = fields.Char('安装结构', size=20) - cutting_tool_blade_id = fields.Many2one( - 'sf.cutting_tool.standard.library', - domain="[('cutting_tool_type', '=', '刀片')]", - string='适用刀片型号' # 使用空列表作为默认值 - ) - cutting_tool_tool_shim = fields.Char('适配刀垫型号', size=50) - cutting_tool_cotter_pin = fields.Char('适配销钉型号', size=50) - cutting_tool_pressing_plate = fields.Char('适配压板型号', size=50) - cutting_tool_screw = fields.Char('适配螺钉型号', size=50) - cutting_tool_wrench = fields.Char('适配扳手型号') - cutting_tool_is_cooling_hole = fields.Boolean('有无冷却孔', default=False) - cutting_tool_locating_slot_code = fields.Char('定位槽代号', size=20) + # cutting_tool_knife_head_height = fields.Float('刀头高度(mm)') + cutting_tool_knife_head_height = fields.Float(related='specification_id.knife_head_height', + string='刀头高度(mm)') + # specification_id.knife_head_height + # cutting_tool_knife_head_width = fields.Float('刀头宽度(mm)') + cutting_tool_knife_head_width = fields.Float(related='specification_id.knife_head_width', + string='刀头宽度(mm)') + # cutting_tool_knife_head_length = fields.Float('刀头长度(mm)') + cutting_tool_knife_head_length = fields.Float(related='specification_id.knife_head_length', + string='刀头长度(mm)') + # cutting_tool_blade_diameter = fields.Float('刃径/刃部直径(mm)') + cutting_tool_blade_diameter = fields.Float(related='specification_id.blade_diameter', + string='刃径/刃部直径(mm)') + # specification_id.blade_diameter + # cutting_tool_cutter_arbor_diameter = fields.Float('刀杆直径(mm)') + cutting_tool_cutter_arbor_diameter = fields.Float(related='specification_id.cutter_arbor_diameter', + string='刀杆直径(mm)') + # specification_id.cutter_arbor_diameter + # cutting_tool_min_machining_aperture = fields.Integer('最小加工孔径(mm)') + cutting_tool_min_machining_aperture = fields.Integer(related='specification_id.min_machining_aperture', + string='最小加工孔径(mm)') + # specification_id.min_machining_aperture + # cutting_tool_install_blade_tip_num = fields.Integer('可装刀片数/齿数(个)') + cutting_tool_install_blade_tip_num = fields.Integer(related='specification_id.install_blade_tip_num', + string='可装刀片数/齿数(个)') + # specification_id.install_blade_tip_num + # cutting_tool_installing_structure = fields.Char('安装结构', size=20) + cutting_tool_installing_structure = fields.Char(related='specification_id.installing_structure', + string='安装结构') + # specification_id.installing_structure + # cutting_tool_blade_id = fields.Many2one( + # 'sf.cutting_tool.standard.library', + # domain="[('cutting_tool_type', '=', '刀片')]", + # string='适用刀片型号' # 使用空列表作为默认值 + # ) + cutting_tool_blade_id = fields.Many2one(related='specification_id.blade_id', + domain="[('cutting_tool_type', '=', '刀片')]", + string='适用刀片型号') + # specification_id.blade_id + # cutting_tool_tool_shim = fields.Char('适配刀垫型号', size=50) + cutting_tool_tool_shim = fields.Char(related='specification_id.tool_shim', + string='适配刀垫型号') + # specification_id.tool_shim + # cutting_tool_cotter_pin = fields.Char('适配销钉型号', size=50) + cutting_tool_cotter_pin = fields.Char(related='specification_id.cotter_pin', + string='适配销钉型号') + # cutting_tool_pressing_plate = fields.Char('适配压板型号', size=50) + cutting_tool_pressing_plate = fields.Char(related='specification_id.pressing_plate', + string='适配压板型号') + # cutting_tool_screw = fields.Char('适配螺钉型号', size=50) + cutting_tool_screw = fields.Char(related='specification_id.screw', + string='适配螺钉型号') + # specification_id.screw + # cutting_tool_wrench = fields.Char('适配扳手型号') + cutting_tool_wrench = fields.Char(related='specification_id.spanner', + string='适配扳手型号') + # specification_id.spanner + # cutting_tool_is_cooling_hole = fields.Boolean('有无冷却孔', default=False) + cutting_tool_is_cooling_hole = fields.Boolean(related='specification_id.is_cooling_hole', + string='有无冷却孔') + # specification_id.is_cooling_hole + # cutting_tool_locating_slot_code = fields.Char('定位槽代号', size=20) + cutting_tool_locating_slot_code = fields.Char(related='specification_id.locating_slot_code', + string='定位槽代号') + # specification_id.locating_slot_code # 刀盘参数 - cutting_tool_cutter_head_diameter = fields.Float('刀盘直径(mm)') - cutting_tool_interface_diameter = fields.Float('接口直径(mm)') - + # cutting_tool_cutter_head_diameter = fields.Float('刀盘直径(mm)') + cutting_tool_cutter_head_diameter = fields.Float(related='specification_id.cutter_head_diameter', + string='刀盘直径(mm)') + # specification_id.cutter_head_diameter + # cutting_tool_interface_diameter = fields.Float('接口直径(mm)') + cutting_tool_interface_diameter = fields.Float(related='specification_id.interface_diameter', + string='接口直径(mm)') + # specification_id.interface_diameter # 刀柄参数 - cutting_tool_clamping_diameter_max = fields.Float('最大夹持直径') - cutting_tool_clamping_diameter_min = fields.Float('最小夹持直径') - cutting_tool_flange_length = fields.Float('法兰柄长(mm)') - cutting_tool_flange_diameter = fields.Float('法兰直径(mm)') - cutting_tool_is_safety_lock = fields.Boolean('有无安全锁', default=False) - cutting_tool_is_high_speed_cutting = fields.Boolean('可高速切削', default=False) - cutting_tool_change_time = fields.Integer('换刀时间(s)') - cutting_tool_clamping_way = fields.Char('夹持方式') - cutting_tool_fit_chuck_size = fields.Char('适配夹头尺寸') - cutting_tool_taper_shank_model = fields.Char('锥柄型号') + # cutting_tool_clamping_diameter_max = fields.Float('最大夹持直径') + cutting_tool_clamping_diameter_max = fields.Float(related='specification_id.max_clamping_diameter', + string='最大夹持直径') + # specification_id.max_clamping_diameter + # cutting_tool_clamping_diameter_min = fields.Float('最小夹持直径') + cutting_tool_clamping_diameter_min = fields.Float(related='specification_id.min_clamping_diameter', + string='最小夹持直径') + # specification_id.min_clamping_diameter + # cutting_tool_flange_length = fields.Float('法兰柄长(mm)') + cutting_tool_flange_length = fields.Float(related='specification_id.flange_shank_length', + string='法兰柄长(mm)') + # cutting_tool_flange_diameter = fields.Float('法兰直径(mm)') + cutting_tool_flange_diameter = fields.Float(related='specification_id.flange_diameter', + string='法兰直径(mm)') + # cutting_tool_is_safety_lock = fields.Boolean('有无安全锁', default=False) + cutting_tool_is_safety_lock = fields.Boolean(related='specification_id.is_safe_lock', + string='有无安全锁') + # cutting_tool_is_high_speed_cutting = fields.Boolean('可高速切削', default=False) + cutting_tool_is_high_speed_cutting = fields.Boolean(related='specification_id.is_quick_cutting', + string='可高速切削') + # cutting_tool_change_time = fields.Integer('换刀时间(s)') + cutting_tool_change_time = fields.Integer(related='specification_id.tool_changing_time', + string='换刀时间(s)') + # cutting_tool_clamping_way = fields.Char('夹持方式') + cutting_tool_clamping_way = fields.Char(related='specification_id.clamping_mode', + string='夹持方式') + # cutting_tool_fit_chuck_size = fields.Char('适配夹头尺寸') + cutting_tool_fit_chuck_size = fields.Char(related='specification_id.fit_chuck_size', + string='适配夹头尺寸') + # cutting_tool_taper_shank_model = fields.Char('锥柄型号') + cutting_tool_taper_shank_model = fields.Char(related='specification_id.taper_shank_model', + string='锥柄型号') cutting_tool_standard_speed = fields.Integer('标准转速(n/min)') - cutting_tool_speed_max = fields.Integer('最大转速(n/min)') + # cutting_tool_speed_max = fields.Integer('最大转速(n/min)') + cutting_tool_speed_max = fields.Integer(related='specification_id.max_rotate_speed', + string='最大转速(n/min)') + # specification_id.max_rotate_speed cutting_tool_cooling_type = fields.Char('冷却类型') cutting_tool_dynamic_balance_class = fields.Char('动平衡等级') - cutting_tool_fit_nut_model = fields.Char('适用锁紧螺母型号') - + # cutting_tool_fit_nut_model = fields.Char('适用锁紧螺母型号') + cutting_tool_fit_nut_model = fields.Char(related='specification_id.nut', + string='适用锁紧螺母型号') + # specification_id.nut # 夹头参数 - cutting_tool_taper = fields.Integer('锥度(°)') - cutting_tool_top_diameter = fields.Float('顶部直径') - cutting_tool_outer_diameter = fields.Float('外径(mm)') - cutting_tool_inner_diameter = fields.Float('内径(mm)') - cooling_suit_type_ids = fields.Char('适用冷却套型号') - cutting_tool_max_load_capacity = fields.Float('最大负载能力(kg)') - cutting_tool_er_size_model = fields.Char('尺寸型号') + # cutting_tool_taper = fields.Integer('锥度(°)') + cutting_tool_taper = fields.Integer(related='specification_id.taper', + string='锥度(°)') + # specification_id.taper + # cutting_tool_top_diameter = fields.Float('顶部直径') + cutting_tool_top_diameter = fields.Float(related='specification_id.top_diameter', + string='顶部直径') + # specification_id.top_diameter + # cutting_tool_outer_diameter = fields.Float('外径(mm)') + # specification_id.outer_diameter + cutting_tool_outer_diameter = fields.Float(related='specification_id.outer_diameter', + string='外径(mm)') + # cutting_tool_inner_diameter = fields.Float('内径(mm)') + cutting_tool_inner_diameter = fields.Float(related='specification_id.inner_diameter', + string='内径(mm)') + # specification_id.inner_diameter + # cooling_suit_type_ids = fields.Char('适用冷却套型号') + cooling_suit_type_ids = fields.Char(related='specification_id.cooling_jacket', + string='适用冷却套型号') + # specification_id.cooling_jacket + # cutting_tool_max_load_capacity = fields.Float('最大负载能力(kg)') + cutting_tool_max_load_capacity = fields.Float(related='specification_id.max_load_capacity', + string='最大负载能力(kg)') + # specification_id.max_load_capacity + # cutting_tool_er_size_model = fields.Char('尺寸型号') + cutting_tool_er_size_model = fields.Char(related='specification_id.er_size_model', + string='尺寸型号') + # specification_id.er_size_model # cutting_tool_handle_ids = fields.Many2many( # 'sf.cutting_tool.standard.library', # relation='product_cutting_tool_library_chuck_handle_rel', @@ -543,11 +756,15 @@ class ResProductMo(models.Model): # string='适用刀柄型号' # ) - cutting_tool_handle_id = fields.Many2one( - 'sf.cutting_tool.standard.library', - domain="[('cutting_tool_type', '=', '刀柄')]", - string='适用刀柄型号' - ) + # cutting_tool_handle_id = fields.Many2one( + # 'sf.cutting_tool.standard.library', + # domain="[('cutting_tool_type', '=', '刀柄')]", + # string='适用刀柄型号' + # ) + cutting_tool_handle_id = fields.Many2one(related='cutting_tool_model_id.handle_id', + domain="[('cutting_tool_type', '=', '刀柄')]", + string='适用刀柄型号') + # cutting_tool_model_id.handle_id # 注册状态 register_state = fields.Selection([('未注册', '未注册'), ('已注册', '已注册'), ('注册失败', '注册失败')],