修复刀具产品及同步刀具标准库
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from odoo import models, fields, api
|
||||
from odoo import models, fields, api, _
|
||||
from odoo.exceptions import ValidationError
|
||||
from odoo.modules import get_resource_path
|
||||
from odoo.addons.sf_base.commons.common import Common
|
||||
@@ -101,12 +101,12 @@ class ResProductMo(models.Model):
|
||||
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('刀尖处理尺寸(R半径mm/倒角)', size=20)
|
||||
fit_blade_shape_ids = fields.Many2many('maintenance.equipment.image', 'rel_fit_blade_shape_product_template',
|
||||
fit_blade_shape_id = fields.Many2many('maintenance.equipment.image', 'rel_fit_blade_shape_product_template',
|
||||
'适配刀片形状', domain=[('type', '=', '刀片形状')])
|
||||
suitable_machining_method_ids = fields.Many2many('maintenance.equipment.image',
|
||||
'rel_machining_product_template', '适合加工方式',
|
||||
domain=[('type', '=', '加工能力')])
|
||||
blade_tip_characteristics_ids = fields.Many2many('maintenance.equipment.image',
|
||||
blade_tip_characteristics_id = fields.Many2many('maintenance.equipment.image',
|
||||
'rel_blade_tip_product_template', '刀尖特征',
|
||||
domain=[('type', '=', '刀尖特征')])
|
||||
handle_type_ids = fields.Many2many('maintenance.equipment.image', 'rel_handle_product_template', '柄部类型',
|
||||
@@ -116,52 +116,75 @@ class ResProductMo(models.Model):
|
||||
suitable_coolant_ids = fields.Many2many('maintenance.equipment.image', 'rel_coolant_product_template',
|
||||
'适合冷却液', domain=[('type', '=', '冷却液')])
|
||||
compaction_way_ids = fields.Many2many('maintenance.equipment.image', 'rel_compaction_product_template',
|
||||
'压紧方式', domain=[('type', '=', '压紧方式')])\
|
||||
|
||||
|
||||
# @api.onchange('cutting_tool_material_id')
|
||||
# def _onchange_cutting_tool_material_id(self):
|
||||
# for item in self:
|
||||
# if item.cutting_tool_material_id.id != item.cutting_tool_model_id.cutting_tool_material_id.id:
|
||||
# item.cutting_tool_model_id = False
|
||||
# item.specification_id = False
|
||||
# item.cutting_tool_type_id = False
|
||||
# item.brand_id = False
|
||||
# item.tool_hardness = False
|
||||
# item.cutting_tool_run_out_accuracy_max = False
|
||||
# item.cutting_tool_run_out_accuracy_min = False
|
||||
# item.materials_type_id = False
|
||||
# item.cutting_tool_blade_type = False
|
||||
# item.cutting_tool_total_length = False
|
||||
# item.cutting_tool_shank_length = False
|
||||
# item.cutting_tool_blade_length = False
|
||||
# item.cutting_tool_blade_number = False
|
||||
# item.cutting_tool_neck_length = False
|
||||
# item.cutting_tool_neck_diameter = False
|
||||
# item.cutting_tool_shank_diameter = False
|
||||
# item.cutting_tool_blade_tip_diameter = False
|
||||
# item.cutting_tool_blade_tip_taper = False
|
||||
# item.cutting_tool_blade_helix_angle = False
|
||||
# item.cutting_tool_blade_type = False
|
||||
# item.cutting_tool_pitch = False
|
||||
# item.cutting_tool_blade_width = False
|
||||
# item.cutting_tool_blade_depth = False
|
||||
# item.cutting_tool_cut_depth = False
|
||||
# item.cutting_tool_coarse_medium_fine = False
|
||||
# item.cutting_tool_run_out_accuracy_max = False
|
||||
# item.cutting_tool_run_out_accuracy_min = False
|
||||
# item.cutting_tool_blade_tip_working_size = False
|
||||
# item.fit_blade_shape_ids = False
|
||||
# item.suitable_machining_method_ids = False
|
||||
# item.blade_tip_characteristics_ids = False
|
||||
# item.handle_type_ids = False
|
||||
# item.cutting_direction_ids = False
|
||||
# item.suitable_coolant_ids = False
|
||||
# item.compaction_way_ids = False
|
||||
# item.cutting_speed_ids = False
|
||||
# item.feed_per_tooth_ids = False
|
||||
'压紧方式', domain=[('type', '=', '压紧方式')]) \
|
||||
|
||||
@api.onchange('cutting_tool_material_id')
|
||||
def _onchange_cutting_tool_material_id(self):
|
||||
for item in self:
|
||||
if item.cutting_tool_material_id.id != item.cutting_tool_model_id.cutting_tool_material_id.id:
|
||||
item.cutting_tool_model_id = False
|
||||
item.specification_id = False
|
||||
item.cutting_tool_type_id = False
|
||||
item.brand_id = False
|
||||
item.tool_hardness = False
|
||||
item.cutting_tool_run_out_accuracy_max = False
|
||||
item.cutting_tool_run_out_accuracy_min = False
|
||||
item.materials_type_id = False
|
||||
item.cutting_tool_blade_type = False
|
||||
item.cutting_tool_total_length = False
|
||||
item.cutting_tool_clamping_way = False
|
||||
item.cutting_tool_blade_diameter = False
|
||||
item.cutting_tool_shank_length = False
|
||||
item.cutting_tool_blade_length = False
|
||||
item.cutting_tool_blade_number = False
|
||||
item.cutting_tool_neck_length = False
|
||||
item.cutting_tool_neck_diameter = False
|
||||
item.cutting_tool_shank_diameter = False
|
||||
item.cutting_tool_blade_tip_diameter = False
|
||||
item.cutting_tool_blade_tip_taper = False
|
||||
item.cutting_tool_blade_helix_angle = False
|
||||
item.cutting_tool_blade_type = False
|
||||
item.cutting_tool_pitch = False
|
||||
item.cutting_tool_blade_width = False
|
||||
item.cutting_tool_blade_depth = False
|
||||
item.cutting_tool_cut_depth = False
|
||||
item.cutting_tool_coarse_medium_fine = False
|
||||
item.cutting_tool_run_out_accuracy_max = False
|
||||
item.cutting_tool_run_out_accuracy_min = False
|
||||
item.cutting_tool_blade_tip_working_size = False
|
||||
item.fit_blade_shape_id = False
|
||||
item.suitable_machining_method_ids = False
|
||||
item.blade_tip_characteristics_id = False
|
||||
item.handle_type_ids = False
|
||||
item.cutting_direction_ids = False
|
||||
item.suitable_coolant_ids = False
|
||||
item.compaction_way_ids = False
|
||||
item.cutting_speed_ids = False
|
||||
item.feed_per_tooth_ids = False
|
||||
|
||||
# def choice(self):
|
||||
# if self.cutting_tool_type == '整体式刀具':
|
||||
# tree_view = self.env.ref('sf_base.view_sf_tool_materials_basic_parameters_integral_tree')
|
||||
# elif self.cutting_tool_type == '刀片':
|
||||
# tree_view = self.env.ref('sf_base.view_sf_tool_materials_basic_parameters_blade_tree')
|
||||
# elif self.cutting_tool_type == '刀杆':
|
||||
# tree_view = self.env.ref('sf_base.view_sf_tool_materials_basic_parameters_cutter_bar_tree')
|
||||
# elif self.cutting_tool_type == '刀盘':
|
||||
# tree_view = self.env.ref('sf_base.view_sf_tool_materials_basic_parameters_tree')
|
||||
# elif self.cutting_tool_type == '刀柄':
|
||||
# tree_view = self.env.ref('sf_base.view_sf_tool_materials_basic_parameters_tree')
|
||||
# else :
|
||||
# tree_view = self.env.ref('sf_base.view_sf_tool_materials_basic_parameters_tree')
|
||||
# return {
|
||||
# 'name': _('规格'),
|
||||
# 'view_mode': 'list',
|
||||
# 'view_id': tree_view.id,
|
||||
# 'type': 'ir.actions.act_window',
|
||||
# 'res_model': 'sf.tool.materials.basic.parameters',
|
||||
# 'target': 'new',
|
||||
# 'domain': [('cutting_tool_type', '=', self.cutting_tool_type),
|
||||
# ('standard_library_id', '=', self.cutting_tool_model_id.id)],
|
||||
# }
|
||||
|
||||
@api.onchange('specification_id')
|
||||
def _onchange_specification(self):
|
||||
@@ -189,30 +212,30 @@ class ResProductMo(models.Model):
|
||||
self.cutting_tool_blade_width = self.specification_id.blade_width
|
||||
self.cutting_tool_blade_depth = self.specification_id.blade_depth
|
||||
self.cutting_tool_cut_depth = self.specification_id.cutting_depth
|
||||
elif self.cutting_tool_type == '刀杆1':
|
||||
self.cutting_tool_total_length = self.specification_id.total_length
|
||||
self.tool_height = self.specification_id.height
|
||||
self.tool_width = self.specification_id.width
|
||||
self.cutting_tool_knife_head_length = self.specification_id.cutting_blade_length
|
||||
self.cutting_tool_knife_head_width = self.specification_id.blade_tip_circular_arc_radius
|
||||
self.cutting_tool_knife_head_height = self.cutting_tool_model_id.blade_tip_height_tolerance
|
||||
self.cutting_tool_blade_diameter = self.specification_id.inscribed_circle_diameter
|
||||
self.cutting_tool_cutter_arbor_diameter = self.specification_id.cutter_arbor_diameter
|
||||
self.cutting_tool_cut_blade_length = self.specification_id.install_aperture_diameter
|
||||
self.cutting_tool_cut_depth_max = self.specification_id.cut_depth_max
|
||||
self.cutting_tool_min_machining_aperture = self.specification_id.min_machining_aperture
|
||||
self.cutting_tool_install_blade_tip_num = self.specification_id.install_blade_tip_num
|
||||
self.cutting_tool_main_included_angle = self.specification_id.main_included_angle
|
||||
self.cutting_tool_rear_angle = self.specification_id.main_included_angle
|
||||
self.cutting_tool_installing_structure = self.specification_id.installing_structure
|
||||
self.cutting_tool_cooling_hole = self.specification_id.cooling_hole
|
||||
self.cutting_tool_locating_slot_code = self.specification_id.locating_slot_code
|
||||
self.cutting_tool_blade_ids = self.cutting_tool_model_id.blade_ids
|
||||
self.cutting_tool_tool_shim = self.specification_id.tool_shim
|
||||
self.cutting_tool_cotter_pin = self.specification_id.cotter_pin
|
||||
self.cutting_tool_pressing_plate = self.specification_id.pressing_plate
|
||||
self.cutting_tool_screw = self.specification_id.screw
|
||||
self.cutting_tool_wrench = self.specification_id.wrench
|
||||
self.cutting_speed_ids = self.cutting_tool_model_id.cutting_speed_ids
|
||||
self.feed_per_tooth_ids = [(0, 0, {'product_template_id': product_template.id,
|
||||
'cutting_speed': product_template.cutting_speed,
|
||||
'machining_method': product_template.machining_method,
|
||||
'blade_diameter': product_template.blade_diameter,
|
||||
'materials_type_id': product_template.materials_type_id.id}) for
|
||||
product_template in
|
||||
self.cutting_tool_model_id.feed_per_tooth_ids.filtered(
|
||||
lambda r: r.blade_diameter == self.specification_id.blade_diameter)]
|
||||
elif self.cutting_tool_type == '夹头':
|
||||
self.cutting_tool_clamping_length = self.specification_id.clamping_length
|
||||
self.cutting_tool_clamping_tolerance = self.specification_id.clamping_tolerance
|
||||
self.cutting_tool_clamping_diameter_min = self.specification_id.min_clamping_diameter
|
||||
self.cutting_tool_clamping_diameter_min = self.specification_id.max_clamping_diameter
|
||||
self.cutting_tool_clamping_way = self.specification_id.clamping_mode
|
||||
self.cutting_tool_top_diameter = self.cutting_tool_model_id.top_diameter
|
||||
self.cutting_tool_outer_diameter = self.specification_id.outer_diameter
|
||||
self.cutting_tool_inner_diameter = self.specification_id.inner_diameter
|
||||
self.tool_weight = self.specification_id.weight
|
||||
self.cutting_tool_jump_accuracy = self.specification_id.run_out_accuracy
|
||||
self.cutting_tool_max_load_capacity = self.specification_id.max_load_capacity
|
||||
self.cutting_tool_er_size_model = self.specification_id.er_size_model
|
||||
self.cutting_tool_handle_ids = self.cutting_tool_model_id.handle_ids
|
||||
self.cooling_suit_type_ids = self.specification_id.cooling_jacket
|
||||
elif self.cutting_tool_type == '刀片':
|
||||
self.cutting_tool_total_length = self.specification_id.total_length
|
||||
self.tool_length = self.specification_id.length
|
||||
@@ -220,7 +243,7 @@ class ResProductMo(models.Model):
|
||||
self.tool_width = self.specification_id.width
|
||||
self.cutting_tool_cut_blade_length = self.specification_id.cutting_blade_length
|
||||
self.cutting_tool_blade_tip_circular_arc_radius = self.specification_id.blade_tip_circular_arc_radius
|
||||
self.cutting_tool_blade_tip_height_tolerance = self.cutting_tool_model_id.blade_tip_height_tolerance
|
||||
self.cutting_tool_blade_tip_height_tolerance = self.specification_id.blade_tip_height_tolerance
|
||||
self.cutting_tool_inscribed_circle_diameter = self.specification_id.inscribed_circle_diameter
|
||||
self.cutting_tool_inscribed_circle_tolerance = self.specification_id.inscribed_circle_tolerance
|
||||
self.cutting_tool_install_aperture_diameter = self.specification_id.install_aperture_diameter
|
||||
@@ -233,21 +256,23 @@ class ResProductMo(models.Model):
|
||||
self.cutting_tool_top_angle = self.specification_id.top_angle
|
||||
self.cutting_tool_blade_tip_dip_angle = self.specification_id.blade_tip_dip_angle
|
||||
self.cutting_tool_side_cutting_edge_angle = self.specification_id.side_cutting_edge_angle
|
||||
self.cutting_tool_pitch = self.cutting_tool_model_id.pitch
|
||||
self.cutting_tool_pitch = self.specification_id.pitch
|
||||
self.cutting_tool_bladed_teeth_model = self.specification_id.blade_teeth_model
|
||||
self.cutting_tool_thickness_tolerance = self.specification_id.thickness_tolerance
|
||||
self.cutting_tool_thread_model = self.specification_id.thread_model
|
||||
self.cutting_tool_thread_num = self.specification_id.thread_num
|
||||
self.cutting_tool_cutter_bar_ids = self.cutting_tool_model_id.cutting_tool_cutter_bar_ids.ids
|
||||
self.cutting_tool_cutter_pad_ids = self.cutting_tool_model_id.cutting_tool_cutter_pad_ids.ids
|
||||
elif self.cutting_tool_type in ('刀盘','刀杆'):
|
||||
self.cutting_tool_cutter_bar_ids = self.cutting_tool_model_id.cutter_bar_ids.ids
|
||||
self.cutting_tool_cutter_pad_ids = self.cutting_tool_model_id.cutter_pad_ids.ids
|
||||
self.cutting_speed_ids = self.cutting_tool_model_id.cutting_speed_ids
|
||||
self.feed_per_tooth_ids = self.cutting_tool_model_id.feed_per_tooth_ids
|
||||
elif self.cutting_tool_type in ('刀盘', '刀杆'):
|
||||
self.cutting_tool_total_length = self.specification_id.total_length
|
||||
self.tool_length = self.specification_id.length
|
||||
self.tool_thickness = self.specification_id.thickness
|
||||
self.tool_width = self.specification_id.width
|
||||
self.cutting_tool_cut_blade_length = self.specification_id.cutting_blade_length
|
||||
self.cutting_tool_blade_tip_circular_arc_radius = self.specification_id.blade_tip_circular_arc_radius
|
||||
self.cutting_tool_blade_tip_height_tolerance = self.cutting_tool_model_id.blade_tip_height_tolerance
|
||||
self.cutting_tool_blade_tip_height_tolerance = self.specification_id.blade_tip_height_tolerance
|
||||
self.cutting_tool_inscribed_circle_diameter = self.specification_id.inscribed_circle_diameter
|
||||
self.cutting_tool_inscribed_circle_tolerance = self.specification_id.inscribed_circle_tolerance
|
||||
self.cutting_tool_install_aperture_diameter = self.specification_id.install_aperture_diameter
|
||||
@@ -274,14 +299,12 @@ class ResProductMo(models.Model):
|
||||
self.cutting_tool_flange_length = self.specification_id.flange_shank_length
|
||||
self.cutting_tool_shank_outer_diameter = self.specification_id.handle_external_diameter
|
||||
self.cutting_tool_shank_inner_diameter = self.specification_id.handle_inside_diameter
|
||||
|
||||
|
||||
self.suitable_machining_method_ids = [(6, 0,
|
||||
[])] if not self.cutting_tool_model_id.suitable_machining_method_ids else [
|
||||
(6, 0, self.cutting_tool_model_id.suitable_machining_method_ids.ids)]
|
||||
self.blade_tip_characteristics_ids = [(6, 0,
|
||||
[])] if not self.cutting_tool_model_id.blade_tip_characteristics_ids else [
|
||||
(6, 0, self.cutting_tool_model_id.blade_tip_characteristics_ids.ids)]
|
||||
self.blade_tip_characteristics_id = [(6, 0,
|
||||
[])] if not self.cutting_tool_model_id.blade_tip_characteristics_id else [
|
||||
(6, 0, self.cutting_tool_model_id.blade_tip_characteristics_id.ids)]
|
||||
|
||||
self.handle_type_ids = [(6, 0,
|
||||
[])] if not self.cutting_tool_model_id.handle_type_ids else [
|
||||
@@ -297,17 +320,6 @@ class ResProductMo(models.Model):
|
||||
self.compaction_way_ids = [(6, 0,
|
||||
[])] if not self.cutting_tool_model_id.compaction_way_ids else [
|
||||
(6, 0, self.cutting_tool_model_id.compaction_way_ids.ids)]
|
||||
if self.cutting_tool_type == '整体式刀具':
|
||||
self.cutting_speed_ids = self.cutting_tool_model_id.cutting_speed_ids
|
||||
self.feed_per_tooth_ids = [(0, 0, {'product_template_id': product_template.id,
|
||||
'cutting_speed': product_template.cutting_speed,
|
||||
'machining_method': product_template.machining_method,
|
||||
'blade_diameter': product_template.blade_diameter,
|
||||
'materials_type_id': product_template.materials_type_id.id}) for
|
||||
product_template in
|
||||
self.cutting_tool_model_id.feed_per_tooth_ids.filtered(
|
||||
lambda r: r.blade_diameter == self.specification_id.blade_diameter)]
|
||||
|
||||
|
||||
|
||||
# @api.constrains('suitable_machining_method_ids')
|
||||
@@ -413,7 +425,7 @@ class ResProductMo(models.Model):
|
||||
cutting_tool_inscribed_circle_diameter = fields.Char('内接圆直径(mm)', size=20)
|
||||
cutting_tool_install_aperture_diameter = fields.Char('安装孔直径(mm)', size=20)
|
||||
cutting_tool_chip_breaker_groove = fields.Selection([('无', '无'), ('单面', '单面'), ('双面', '双面')],
|
||||
string='有无断屑槽')
|
||||
string='有无断屑槽')
|
||||
cutting_tool_bladed_teeth_model = fields.Selection(
|
||||
[('无', '无'), ('V牙型', 'V牙型'), ('米制全牙型', '米制全牙型'), ('美制全牙型', '美制全牙型'),
|
||||
('惠氏全牙型', '惠氏全牙型'), ('BSPT全牙型', 'BSPT全牙型'), ('NPT全牙型', 'NPT全牙型'),
|
||||
@@ -427,7 +439,8 @@ class ResProductMo(models.Model):
|
||||
|
||||
cutting_tool_blade_tip_dip_angle = fields.Integer('刀尖倾角(°)')
|
||||
cutting_tool_side_cutting_edge_angle = fields.Integer('侧切削角(°)')
|
||||
cutting_tool_thread_model = fields.Selection([('无', '无'), ('外螺纹', '外螺纹'), ('内螺纹', '内螺纹')], string='螺纹类型')
|
||||
cutting_tool_thread_model = fields.Selection([('无', '无'), ('外螺纹', '外螺纹'), ('内螺纹', '内螺纹')],
|
||||
string='螺纹类型')
|
||||
cutting_tool_thread_num = fields.Char('每英寸螺纹数(tpi)', size=20)
|
||||
cutting_tool_blade_tip_height_tolerance = fields.Char('刀尖高度公差(mm)', size=20)
|
||||
cutting_tool_inscribed_circle_tolerance = fields.Char('内接圆公差(mm)', size=20)
|
||||
@@ -516,7 +529,6 @@ class ResProductMo(models.Model):
|
||||
string='适用刀柄型号'
|
||||
)
|
||||
|
||||
|
||||
# 夹具参数
|
||||
fixture_material_id = fields.Many2one('sf.fixture.material', string="夹具物料")
|
||||
fixture_model_id = fields.Many2one('sf.fixture.model', string="夹具型号")
|
||||
@@ -645,7 +657,6 @@ class ResProductMo(models.Model):
|
||||
self.detailed_type = 'product'
|
||||
self.sale_ok = False
|
||||
|
||||
|
||||
@api.onchange('fixture_material_id')
|
||||
def _onchange_fixture_material_id(self):
|
||||
for item in self:
|
||||
@@ -682,16 +693,6 @@ class ResProductMo(models.Model):
|
||||
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')
|
||||
def _onchange_cutting_tool_model_id(self):
|
||||
if self.cutting_tool_model_id:
|
||||
if self.cutting_tool_type == '刀片':
|
||||
self.env['sf.tool.materials.basic.parameters'].search([('standard_library_id',=)])
|
||||
self.specification_id = self.cutting_tool_model_id.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def _get_volume_uom_id_from_ir_config_parameter(self):
|
||||
product_length_in_feet_param = self.env['ir.config_parameter'].sudo().get_param('product.volume_in_cubic_feet')
|
||||
|
||||
Reference in New Issue
Block a user