197 lines
9.0 KiB
Python
197 lines
9.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
from odoo import fields, models, api, SUPERUSER_ID
|
|
|
|
|
|
# 刀具物料搜索
|
|
class SfToolMaterialSearch(models.Model):
|
|
_name = 'sf.tool.material.search'
|
|
_description = '刀具物料搜索'
|
|
|
|
sequence = fields.Integer('序号')
|
|
code = fields.Char('编码')
|
|
name = fields.Char('名称')
|
|
# 关联刀具类型
|
|
mrs_cutting_tool_type_id = fields.Many2one(
|
|
'sf.cutting.tool.type', '刀具类型',
|
|
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='刀具物料名称',
|
|
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_cutting_tool_model_id = fields.Many2one('sf.cutting.tool.model', '刀具型号')
|
|
|
|
# 关联刀具物料模型
|
|
mrs_cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', '刀具物料',tracking=True,
|
|
group_expand='_read_group_mrs_cutting_tool_material_ids')
|
|
cutting_tool_material_name = fields.Char(string='物料名称',invisible=True)
|
|
|
|
@api.onchange('mrs_cutting_tool_material_id')
|
|
def _onchange_mrs_cutting_tool_material_id(self):
|
|
for record in self:
|
|
if record:
|
|
record.cutting_tool_material_name = record.mrs_cutting_tool_material_id.name
|
|
|
|
@api.model
|
|
def _read_group_mrs_cutting_tool_material_ids(self, categories, domain, order):
|
|
mrs_cutting_tool_material_ids = categories._search([], order=order, access_rights_uid=SUPERUSER_ID)
|
|
return categories.browse(mrs_cutting_tool_material_ids)
|
|
|
|
# 刀片特有字段
|
|
blade_code = fields.Char('刀片编码', readonly=True)
|
|
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_coating_material_id = 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',
|
|
relation='sf_tool_material_search_blade_cutter_bar_rel',
|
|
column1='model_id_1',
|
|
column2='model_id_2',
|
|
domain="[('cutting_tool_type', '=', '刀杆')]",
|
|
string='适用刀杆型号',
|
|
default=lambda self: [], # 使用空列表作为默认值
|
|
)
|
|
mrs_cutting_tool_model_blade_cutter_pad_ids = fields.Many2many(
|
|
'sf.cutting.tool.model',
|
|
relation='sf_tool_material_search_blade_cutter_pad_rel',
|
|
column1='model_id_1',
|
|
column2='model_id_2',
|
|
domain="[('cutting_tool_type', '=', '刀盘')]",
|
|
string='适用刀盘型号',
|
|
default=lambda self: [], # 使用空列表作为默认值
|
|
)
|
|
|
|
# 整体式刀具特有字段
|
|
integral_code = fields.Char('整体式刀具编码', readonly=True)
|
|
integral_total_length = fields.Float('总长度(mm)')
|
|
integral_shank_length = fields.Float('柄部长度(mm)')
|
|
integral_blade_length = fields.Float('刃部长度(mm)')
|
|
integral_diameter = fields.Float('直径(mm)')
|
|
integral_blade_number = fields.Integer('刃数')
|
|
integral_front_angle = fields.Float('前角(°)')
|
|
integral_rear_angle = fields.Float('后角(°)')
|
|
integral_main_included_angle = fields.Float('主偏角(°)')
|
|
integral_accuracy = fields.Float('精度等级')
|
|
integral_hardness = fields.Float('加工硬度(HRC)')
|
|
integral_coating_material = fields.Char('涂层材质')
|
|
integral_nut = fields.Float('配对螺母(mm)')
|
|
integral_scope = fields.Char('适用范围')
|
|
|
|
# 刀杆特有字段
|
|
bar_code = fields.Char('刀杆编码', readonly=True)
|
|
# bar_name = fields.Char('刀杆名称', required=True)
|
|
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',
|
|
relation='sf_tool_material_search_bar_blade_rel',
|
|
column1='model_id_1',
|
|
column2='model_id_2',
|
|
domain="[('cutting_tool_type', '=', '刀片')]",
|
|
string='适用刀片型号'
|
|
)
|
|
bar_wrench = fields.Float('配对扳手(mm)')
|
|
bar_screw = fields.Float('配备螺丝(mm)')
|
|
bar_radius = fields.Float('刀尖圆角半径')
|
|
bar_accuracy = fields.Char('精度等级')
|
|
bar_hardness = fields.Char('硬度(°)')
|
|
bar_scope = fields.Char('适用范围')
|
|
|
|
# 刀盘特有字段
|
|
pad_code = fields.Char('刀盘编码', readonly=True)
|
|
# pad_name = fields.Char('刀盘名称', required=True)
|
|
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',
|
|
relation='sf_tool_material_search_pad_blade_rel',
|
|
column1='model_id_1',
|
|
column2='model_id_2',
|
|
domain="[('cutting_tool_type', '=', '刀片')]",
|
|
string='适用刀片型号'
|
|
)
|
|
pad_wrench = fields.Float('配对扳手(mm)')
|
|
pad_screw = fields.Float('配备螺丝(mm)')
|
|
pad_radius = fields.Float('刀尖圆角半径')
|
|
pad_accuracy = fields.Char('精度等级')
|
|
pad_hardness = fields.Char('硬度(°)')
|
|
pad_scope = fields.Char('适用范围')
|
|
|
|
# 刀柄特有字段
|
|
handle_code = fields.Char('刀柄编码', readonly=True)
|
|
# 柄长L(mm)、法兰柄长L1(mm)、法兰直径D1(mm)
|
|
handle_length = fields.Float('柄长L(mm)')
|
|
handle_diameter = fields.Float('直径D(mm)')
|
|
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',
|
|
relation='sf_tool_material_search_handle_chuck_rel',
|
|
column1='model_id_1',
|
|
column2='model_id_2',
|
|
domain="[('cutting_tool_type', '=', '夹头')]",
|
|
string='适用夹头型号'
|
|
)
|
|
handle_clamping_range = fields.Float('夹持范围(mm)')
|
|
handle_detection_accuracy = fields.Float('检测精度')
|
|
handle_detection_hardness = fields.Char('检测硬度')
|
|
handle_standard_speed = fields.Float('标准转速')
|
|
|
|
# 夹头特有字段
|
|
chuck_code = fields.Char('夹头编码', readonly=True)
|
|
# chuck_name = fields.Char('夹头名称', required=True)
|
|
chuck_accuracy = fields.Float('精度(mm)')
|
|
# 夹持直径min、夹持直径max、3D模型图
|
|
chuck_clamping_diameter_min = fields.Float('夹持直径min')
|
|
chuck_clamping_diameter_max = fields.Float('夹持直径max')
|
|
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_tool_material_search_chuck_handle_rel',
|
|
column1='model_id_1',
|
|
column2='model_id_2',
|
|
domain="[('cutting_tool_type', '=', '刀柄')]",
|
|
string='适用刀柄型号'
|
|
)
|
|
chuck_clamping_range = fields.Float('夹持范围(mm)')
|
|
chuck_feature = fields.Char('特性')
|
|
image = fields.Binary('图片')
|
|
|
|
# 数量、采购入库日期、采购批次、供应商、仓库名称、库区、库位、3D模型
|
|
number = fields.Integer('数量')
|
|
mrs_materials_model_id = fields.Many2one('sf.materials.model', '材料型号')
|
|
purchase_date = fields.Date('采购入库日期')
|
|
purchase_batch = fields.Char('采购批次')
|
|
supplier = fields.Char('供应商')
|
|
warehouse_name = fields.Char('仓库名称')
|
|
warehouse_area = fields.Char('库区')
|
|
warehouse_location = fields.Char('库位')
|
|
three_d_model = fields.Many2one('ir.attachment', '3D模型')
|
|
|