整体式刀具基本参数补充,float类型字段增加非零验证,增加相关字段必填属性。
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from odoo import fields, models, api, SUPERUSER_ID
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
# 刀具物料搜索
|
||||
@@ -9,22 +10,22 @@ class SfToolMaterialSearch(models.Model):
|
||||
|
||||
sequence = fields.Integer('序号')
|
||||
code = fields.Char('编码')
|
||||
name = fields.Char('名称')
|
||||
name = fields.Char('名称', required=True)
|
||||
# 关联刀具类型
|
||||
mrs_cutting_tool_type_id = fields.Many2one(
|
||||
'sf.cutting.tool.type', '刀具类型',
|
||||
domain="[('cutting_tool_material_id.name', '=', cutting_tool_material_name)]")
|
||||
domain="[('cutting_tool_material_id.name', '=', cutting_tool_material_name)]", required=True)
|
||||
# 关联刀具物料名称
|
||||
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_machine_brand_id = fields.Many2one('sf.machine.brand', '品牌', required=True)
|
||||
# 关联刀具型号
|
||||
# mrs_cutting_tool_model_id = fields.Many2one('sf.cutting.tool.model', '刀具型号')
|
||||
|
||||
# 关联刀具物料模型
|
||||
mrs_cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', '刀具物料',
|
||||
group_expand='_read_group_mrs_cutting_tool_material_ids')
|
||||
group_expand='_read_group_mrs_cutting_tool_material_ids', required=True)
|
||||
cutting_tool_material_name = fields.Char(string='物料名称', invisible=True)
|
||||
|
||||
@api.onchange('mrs_cutting_tool_material_id')
|
||||
@@ -74,19 +75,73 @@ class SfToolMaterialSearch(models.Model):
|
||||
|
||||
# 整体式刀具特有字段
|
||||
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_total_length = fields.Float('整体式刀具总长度(mm)', digits=(6, 1))
|
||||
integral_shank_length = fields.Float('整体式刀具柄部长度(mm)', digits=(6, 1))
|
||||
integral_blade_length = fields.Float('整体式刀具刃部长度(mm)', digits=(6, 1))
|
||||
integral_neck_length = fields.Float('整体式刀具颈部长度(mm)', digits=(6, 1))
|
||||
integral_shank_diameter = fields.Float('整体式刀具柄部直径(mm)', digits=(6, 1))
|
||||
integral_blade_diameter = fields.Float('整体式刀具刃部直径(mm)', digits=(6, 1))
|
||||
integral_neck_diameter = fields.Float('整体式刀具颈部直径(mm)', digits=(6, 1))
|
||||
integral_blade_number = fields.Integer('整体式刀具刃数(个)')
|
||||
integral_blade_tip_diameter = fields.Float('整体式刀具刀尖直径(mm)', digits=(6, 1))
|
||||
integral_blade_tip_taper = fields.Float('整体式刀具刀尖锥度(°)', digits=(6, 1))
|
||||
integral_blade_helix_angle = fields.Float('整体式刀具刃部螺旋角(°)', digits=(6, 1))
|
||||
integral_blade_type = fields.Selection([('直刃', '直刃'), ('带断屑槽', '带断屑槽')], '整体式刀具刃部类型')
|
||||
integral_coarse_medium_fine = fields.Selection([('粗', '粗'), ('中', '中'), ('精', '精')], '整体式刀具粗/中/精')
|
||||
integral_blade_material = fields.Selection([('碳素钢', '碳素钢'), ('硬质合金', '硬质合金')], '整体式刀具刀具材质')
|
||||
integral_hardness = fields.Integer('整体式刀具硬度(HRC)')
|
||||
integral_coating_material = fields.Char('整体式刀具涂层材质')
|
||||
integral_nut = fields.Float('整体式刀具配对螺母(mm)')
|
||||
integral_scope = fields.Char('整体式刀具适用范围')
|
||||
integral_run_out_accuracy_max = fields.Float('整体式刀具端跳精度max', digits=(6,1))
|
||||
integral_run_out_accuracy_min = fields.Float('整体式刀具端跳精度min', digits=(6, 1))
|
||||
|
||||
@api.constrains('integral_total_length')
|
||||
def _check_integral_total_length(self):
|
||||
if self.integral_total_length <= 0 and self.cutting_tool_type == '整体式刀具':
|
||||
raise ValidationError("总长度不能为0")
|
||||
|
||||
@api.constrains('integral_shank_length')
|
||||
def _check_integral_shank_length(self):
|
||||
if self.integral_shank_length <= 0 and self.cutting_tool_type == '整体式刀具':
|
||||
raise ValidationError("柄部长度不能为0")
|
||||
|
||||
@api.constrains('integral_blade_length')
|
||||
def _check_integral_blade_length(self):
|
||||
if self.integral_blade_length <= 0 and self.cutting_tool_type == '整体式刀具':
|
||||
raise ValidationError("刃部长度不能为0")
|
||||
|
||||
@api.constrains('integral_blade_number')
|
||||
def _check_integral_blade_number(self):
|
||||
if self.integral_blade_number <= 0 and self.cutting_tool_type == '整体式刀具':
|
||||
raise ValidationError("刃数不能为0")
|
||||
|
||||
@api.constrains('integral_shank_diameter')
|
||||
def _check_integral_shank_diameter(self):
|
||||
if self.integral_shank_diameter <= 0 and self.cutting_tool_type == '整体式刀具':
|
||||
raise ValidationError("柄部直径不能为0")
|
||||
|
||||
@api.constrains('integral_blade_diameter')
|
||||
def _check_integral_blade_diameter(self):
|
||||
if self.integral_blade_diameter <= 0 and self.cutting_tool_type == '整体式刀具':
|
||||
raise ValidationError("刃部直径不能为0")
|
||||
|
||||
@api.constrains('integral_run_out_accuracy_min')
|
||||
def _check_integral_blade_diameter(self):
|
||||
if self.integral_run_out_accuracy_min <= 0 and self.cutting_tool_type == '整体式刀具':
|
||||
raise ValidationError("端跳精度最小(min)不能为0")
|
||||
|
||||
@api.constrains('integral_run_out_accuracy_max')
|
||||
def _check_integral_run_out_accuracy_max(self):
|
||||
if self.integral_run_out_accuracy_max <= 0 and self.cutting_tool_type == '整体式刀具':
|
||||
raise ValidationError("端跳精度最大(max)不能为0")
|
||||
|
||||
# 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)
|
||||
@@ -193,4 +248,3 @@ class SfToolMaterialSearch(models.Model):
|
||||
warehouse_area = fields.Char('库区')
|
||||
warehouse_location = fields.Char('库位')
|
||||
three_d_model = fields.Many2one('ir.attachment', '3D模型')
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<field name="model">sf.tool.material.search</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="刀具物料查询">
|
||||
<field name="sequence"/>
|
||||
<field name="sequence" invisible="True"/>
|
||||
<field name="code"/>
|
||||
<field name="name"/>
|
||||
<field name="mrs_cutting_tool_type_id"/>
|
||||
@@ -33,19 +33,19 @@
|
||||
<field name="mrs_cutting_tool_model_blade_cutter_bar_ids" optional="hide"/>
|
||||
|
||||
<!-- <field name="integral_code" readonly="1"/> -->
|
||||
<field name="integral_total_length" optional="hide"/>
|
||||
<field name="integral_shank_length" optional="hide"/>
|
||||
<field name="integral_blade_length" optional="hide"/>
|
||||
<field name="integral_diameter" optional="hide"/>
|
||||
<field name="integral_blade_number" optional="hide"/>
|
||||
<field name="integral_front_angle" optional="hide"/>
|
||||
<field name="integral_rear_angle" optional="hide"/>
|
||||
<field name="integral_main_included_angle" optional="hide"/>
|
||||
<field name="integral_accuracy" optional="hide"/>
|
||||
<field name="integral_hardness" optional="hide"/>
|
||||
<field name="integral_coating_material" optional="hide"/>
|
||||
<field name="integral_nut" optional="hide"/>
|
||||
<field name="integral_scope" optional="hide"/>
|
||||
<!-- <field name="integral_total_length" optional="hide"/>-->
|
||||
<!-- <field name="integral_shank_length" optional="hide"/>-->
|
||||
<!-- <field name="integral_blade_length" optional="hide"/>-->
|
||||
<!-- <field name="integral_diameter" optional="hide"/>-->
|
||||
<!-- <field name="integral_blade_number" optional="hide"/>-->
|
||||
<!-- <field name="integral_front_angle" optional="hide"/>-->
|
||||
<!-- <field name="integral_rear_angle" optional="hide"/>-->
|
||||
<!-- <field name="integral_main_included_angle" optional="hide"/>-->
|
||||
<!-- <field name="integral_accuracy" optional="hide"/>-->
|
||||
<!-- <field name="integral_hardness" optional="hide"/>-->
|
||||
<!-- <field name="integral_coating_material" optional="hide"/>-->
|
||||
<!-- <field name="integral_nut" optional="hide"/>-->
|
||||
<!-- <field name="integral_scope" optional="hide"/>-->
|
||||
|
||||
<!-- <field name="bar_code" readonly="1"/> -->
|
||||
<field name="bar_c_diameter" optional="hide"/>
|
||||
@@ -134,13 +134,13 @@
|
||||
<group>
|
||||
<group>
|
||||
<field name="mrs_cutting_tool_material_name" invisible="1"/>
|
||||
<field name="sequence"/>
|
||||
<field name="sequence" invisible="True"/>
|
||||
<field name="code"/>
|
||||
<field name="mrs_cutting_tool_material_id"/>
|
||||
<field name="mrs_cutting_tool_type_id"/>
|
||||
<field name="mrs_machine_brand_id"/>
|
||||
<!-- <field name="mrs_cutting_tool_model_id"/> -->
|
||||
<field name="mrs_materials_model_id"/>
|
||||
<field name="mrs_cutting_tool_material_id"/>
|
||||
<!-- <field name="mrs_cutting_tool_model_id"/> -->
|
||||
</group>
|
||||
<group>
|
||||
<field name="image" widget="image"/>
|
||||
@@ -195,18 +195,32 @@
|
||||
<field name="integral_total_length" string="总长度(mm)"/>
|
||||
<field name="integral_shank_length" string="柄部长度(mm)"/>
|
||||
<field name="integral_blade_length" string="刃部长度(mm)"/>
|
||||
<field name="integral_diameter" string="直径(mm)"/>
|
||||
<field name="integral_blade_number" string="刃数"/>
|
||||
<field name="integral_accuracy" string="精度等级"/>
|
||||
<field name="integral_neck_length" string="颈部长度(mm)"/>
|
||||
<field name="integral_blade_tip_taper" string="刀尖锥度(°)"/>
|
||||
<field name="integral_blade_helix_angle" string="刃部螺旋角(°)"/>
|
||||
<field name="integral_blade_type" string="刃部类型"/>
|
||||
<field name="integral_blade_material" string="刀具材质" attrs="{'required': [('cutting_tool_type','=','整体式刀具')]}"/>
|
||||
<label for="integral_run_out_accuracy_min" string="端跳精度:"/>
|
||||
<div class="test_model">
|
||||
<label for="integral_run_out_accuracy_min" string="最小(min)"/>
|
||||
<field name="integral_run_out_accuracy_min" class="o_address_zip" required="1"
|
||||
options="{'format': false}" attrs="{'required': [('cutting_tool_type','=','整体式刀具')]}"/>
|
||||
<span>(mm)&nbsp;</span>
|
||||
<label for="integral_run_out_accuracy_max" string="最大(max)"/>
|
||||
<field name="integral_run_out_accuracy_max" class="o_address_zip" required="1"
|
||||
options="{'format': false}" attrs="{'required': [('cutting_tool_type','=','整体式刀具')]}"/>
|
||||
<span>(mm)&nbsp;</span>
|
||||
</div>
|
||||
</group>
|
||||
<group>
|
||||
<field name="integral_front_angle" string="前角(°)"/>
|
||||
<field name="integral_rear_angle" string="后角(°)"/>
|
||||
<field name="integral_main_included_angle" string="主偏角(°)"/>
|
||||
<field name="integral_nut" string="配对螺母(mm)"/>
|
||||
<field name="integral_hardness" string="加工硬度(HRC)"/>
|
||||
<field name="integral_blade_number" string="刃数(个)"/>
|
||||
<field name="integral_shank_diameter" string="柄部直径(mm)"/>
|
||||
<field name="integral_blade_diameter" string="刃部直径(mm)"/>
|
||||
<field name="integral_neck_diameter" string="颈部直径(mm)"/>
|
||||
<field name="integral_blade_tip_diameter" string="刀尖直径(mm)"/>
|
||||
<field name="integral_hardness" string="刀具硬度(HRC)"/>
|
||||
<field name="integral_coarse_medium_fine" string="粗/中/精" attrs="{'required': [('cutting_tool_type','=','整体式刀具')]}"/>
|
||||
<field name="integral_coating_material" string="涂层材质"/>
|
||||
<field name="integral_scope" string="适用范围"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
|
||||
Reference in New Issue
Block a user