整体式刀具基本参数补充,float类型字段增加非零验证,增加相关字段必填属性。
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from odoo import fields, models, api, SUPERUSER_ID
|
from odoo import fields, models, api, SUPERUSER_ID
|
||||||
|
from odoo.exceptions import ValidationError
|
||||||
|
|
||||||
|
|
||||||
# 刀具物料搜索
|
# 刀具物料搜索
|
||||||
@@ -9,22 +10,22 @@ class SfToolMaterialSearch(models.Model):
|
|||||||
|
|
||||||
sequence = fields.Integer('序号')
|
sequence = fields.Integer('序号')
|
||||||
code = fields.Char('编码')
|
code = fields.Char('编码')
|
||||||
name = fields.Char('名称')
|
name = fields.Char('名称', required=True)
|
||||||
# 关联刀具类型
|
# 关联刀具类型
|
||||||
mrs_cutting_tool_type_id = fields.Many2one(
|
mrs_cutting_tool_type_id = fields.Many2one(
|
||||||
'sf.cutting.tool.type', '刀具类型',
|
'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='刀具物料名称',
|
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)
|
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_model_id = fields.Many2one('sf.cutting.tool.model', '刀具型号')
|
||||||
|
|
||||||
# 关联刀具物料模型
|
# 关联刀具物料模型
|
||||||
mrs_cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', '刀具物料',
|
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)
|
cutting_tool_material_name = fields.Char(string='物料名称', invisible=True)
|
||||||
|
|
||||||
@api.onchange('mrs_cutting_tool_material_id')
|
@api.onchange('mrs_cutting_tool_material_id')
|
||||||
@@ -74,19 +75,73 @@ class SfToolMaterialSearch(models.Model):
|
|||||||
|
|
||||||
# 整体式刀具特有字段
|
# 整体式刀具特有字段
|
||||||
integral_code = fields.Char('整体式刀具编码', readonly=True)
|
integral_code = fields.Char('整体式刀具编码', readonly=True)
|
||||||
integral_total_length = fields.Float('整体式刀具总长度(mm)')
|
integral_total_length = fields.Float('整体式刀具总长度(mm)', digits=(6, 1))
|
||||||
integral_shank_length = fields.Float('整体式刀具柄部长度(mm)')
|
integral_shank_length = fields.Float('整体式刀具柄部长度(mm)', digits=(6, 1))
|
||||||
integral_blade_length = fields.Float('整体式刀具刃部长度(mm)')
|
integral_blade_length = fields.Float('整体式刀具刃部长度(mm)', digits=(6, 1))
|
||||||
integral_diameter = fields.Float('整体式刀具直径(mm)')
|
integral_neck_length = fields.Float('整体式刀具颈部长度(mm)', digits=(6, 1))
|
||||||
integral_blade_number = fields.Integer('整体式刀具刃数')
|
integral_shank_diameter = fields.Float('整体式刀具柄部直径(mm)', digits=(6, 1))
|
||||||
integral_front_angle = fields.Float('整体式刀具前角(°)')
|
integral_blade_diameter = fields.Float('整体式刀具刃部直径(mm)', digits=(6, 1))
|
||||||
integral_rear_angle = fields.Float('整体式刀具后角(°)')
|
integral_neck_diameter = fields.Float('整体式刀具颈部直径(mm)', digits=(6, 1))
|
||||||
integral_main_included_angle = fields.Float('整体式刀具主偏角(°)')
|
integral_blade_number = fields.Integer('整体式刀具刃数(个)')
|
||||||
integral_accuracy = fields.Float('整体式刀具精度等级')
|
integral_blade_tip_diameter = fields.Float('整体式刀具刀尖直径(mm)', digits=(6, 1))
|
||||||
integral_hardness = fields.Float('整体式刀具加工硬度(HRC)')
|
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_coating_material = fields.Char('整体式刀具涂层材质')
|
||||||
integral_nut = fields.Float('整体式刀具配对螺母(mm)')
|
integral_run_out_accuracy_max = fields.Float('整体式刀具端跳精度max', digits=(6,1))
|
||||||
integral_scope = fields.Char('整体式刀具适用范围')
|
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)
|
bar_code = fields.Char('刀杆编码', readonly=True)
|
||||||
@@ -193,4 +248,3 @@ class SfToolMaterialSearch(models.Model):
|
|||||||
warehouse_area = fields.Char('库区')
|
warehouse_area = fields.Char('库区')
|
||||||
warehouse_location = fields.Char('库位')
|
warehouse_location = fields.Char('库位')
|
||||||
three_d_model = fields.Many2one('ir.attachment', '3D模型')
|
three_d_model = fields.Many2one('ir.attachment', '3D模型')
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<field name="model">sf.tool.material.search</field>
|
<field name="model">sf.tool.material.search</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<tree string="刀具物料查询">
|
<tree string="刀具物料查询">
|
||||||
<field name="sequence"/>
|
<field name="sequence" invisible="True"/>
|
||||||
<field name="code"/>
|
<field name="code"/>
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
<field name="mrs_cutting_tool_type_id"/>
|
<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="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"/>-->
|
||||||
<field name="integral_diameter" optional="hide"/>
|
<!-- <field name="integral_diameter" optional="hide"/>-->
|
||||||
<field name="integral_blade_number" optional="hide"/>
|
<!-- <field name="integral_blade_number" optional="hide"/>-->
|
||||||
<field name="integral_front_angle" optional="hide"/>
|
<!-- <field name="integral_front_angle" optional="hide"/>-->
|
||||||
<field name="integral_rear_angle" optional="hide"/>
|
<!-- <field name="integral_rear_angle" optional="hide"/>-->
|
||||||
<field name="integral_main_included_angle" optional="hide"/>
|
<!-- <field name="integral_main_included_angle" optional="hide"/>-->
|
||||||
<field name="integral_accuracy" optional="hide"/>
|
<!-- <field name="integral_accuracy" optional="hide"/>-->
|
||||||
<field name="integral_hardness" optional="hide"/>
|
<!-- <field name="integral_hardness" optional="hide"/>-->
|
||||||
<field name="integral_coating_material" optional="hide"/>
|
<!-- <field name="integral_coating_material" optional="hide"/>-->
|
||||||
<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"/>
|
||||||
@@ -134,13 +134,13 @@
|
|||||||
<group>
|
<group>
|
||||||
<group>
|
<group>
|
||||||
<field name="mrs_cutting_tool_material_name" invisible="1"/>
|
<field name="mrs_cutting_tool_material_name" invisible="1"/>
|
||||||
<field name="sequence"/>
|
<field name="sequence" invisible="True"/>
|
||||||
<field name="code"/>
|
<field name="code"/>
|
||||||
|
<field name="mrs_cutting_tool_material_id"/>
|
||||||
<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_materials_model_id"/>
|
<field name="mrs_materials_model_id"/>
|
||||||
<field name="mrs_cutting_tool_material_id"/>
|
<!-- <field name="mrs_cutting_tool_model_id"/> -->
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<field name="image" widget="image"/>
|
<field name="image" widget="image"/>
|
||||||
@@ -195,18 +195,32 @@
|
|||||||
<field name="integral_total_length" string="总长度(mm)"/>
|
<field name="integral_total_length" string="总长度(mm)"/>
|
||||||
<field name="integral_shank_length" string="柄部长度(mm)"/>
|
<field name="integral_shank_length" string="柄部长度(mm)"/>
|
||||||
<field name="integral_blade_length" string="刃部长度(mm)"/>
|
<field name="integral_blade_length" string="刃部长度(mm)"/>
|
||||||
<field name="integral_diameter" string="直径(mm)"/>
|
<field name="integral_neck_length" string="颈部长度(mm)"/>
|
||||||
<field name="integral_blade_number" string="刃数"/>
|
<field name="integral_blade_tip_taper" string="刀尖锥度(°)"/>
|
||||||
<field name="integral_accuracy" 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>
|
||||||
<group>
|
<group>
|
||||||
<field name="integral_front_angle" string="前角(°)"/>
|
<field name="integral_blade_number" string="刃数(个)"/>
|
||||||
<field name="integral_rear_angle" string="后角(°)"/>
|
<field name="integral_shank_diameter" string="柄部直径(mm)"/>
|
||||||
<field name="integral_main_included_angle" string="主偏角(°)"/>
|
<field name="integral_blade_diameter" string="刃部直径(mm)"/>
|
||||||
<field name="integral_nut" string="配对螺母(mm)"/>
|
<field name="integral_neck_diameter" string="颈部直径(mm)"/>
|
||||||
<field name="integral_hardness" string="加工硬度(HRC)"/>
|
<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_coating_material" string="涂层材质"/>
|
||||||
<field name="integral_scope" string="适用范围"/>
|
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
</page>
|
</page>
|
||||||
|
|||||||
Reference in New Issue
Block a user