1、新增功能刀具清单模型,及其tree视图、权限;2、功能刀具安全库存模型和功能刀具组装单模型新增功能刀具名称关联功能刀具清单,优化功能刀具组装流程生成功能刀具安全库存信息的流程
This commit is contained in:
@@ -309,7 +309,8 @@ class RealTimeDistributionOfFunctionalTools(models.Model):
|
||||
_name = 'sf.real.time.distribution.of.functional.tools'
|
||||
_description = '功能刀具安全库存'
|
||||
|
||||
name = fields.Char('功能刀具名称', readonly=True, compute='_compute_name')
|
||||
name = fields.Char('名称', readonly=True, compute='_compute_name', store=True)
|
||||
functional_name_id = fields.Many2one('sf.tool.inventory', string='功能刀具名称', required=True)
|
||||
tool_groups_id = fields.Many2one('sf.tool.groups', '刀具组', readonly=False, required=True)
|
||||
sf_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=False,
|
||||
group_expand='_read_mrs_cutting_tool_type_ids', store=True)
|
||||
@@ -355,13 +356,13 @@ class RealTimeDistributionOfFunctionalTools(models.Model):
|
||||
|
||||
active = fields.Boolean(string='已归档', default=True)
|
||||
|
||||
@api.depends('tool_groups_id', 'diameter', 'knife_tip_r_angle')
|
||||
@api.depends('functional_name_id')
|
||||
def _compute_name(self):
|
||||
for obj in self:
|
||||
if obj.tool_groups_id:
|
||||
obj.sudo().name = '%s-D%sR%s' % (obj.tool_groups_id.name, obj.diameter, obj.knife_tip_r_angle)
|
||||
obj.name = obj.functional_name_id.name
|
||||
else:
|
||||
obj.sudo().name = None
|
||||
obj.sudo().name = ''
|
||||
|
||||
@api.constrains('min_stock_num', 'max_stock_num')
|
||||
def _check_stock_num(self):
|
||||
@@ -452,7 +453,8 @@ class RealTimeDistributionOfFunctionalTools(models.Model):
|
||||
"""
|
||||
# 根据功能刀具名称、刀具组、直径或尖刀R角、粗/中/精查询该功能刀具是否已经存在
|
||||
record = self.env['sf.real.time.distribution.of.functional.tools'].search(
|
||||
[('name', '=', vals['name']), ('sf_cutting_tool_type_id', '=', vals['sf_cutting_tool_type_id']),
|
||||
[('functional_name_id', '=', vals['functional_name_id']),
|
||||
('sf_cutting_tool_type_id', '=', vals['sf_cutting_tool_type_id']),
|
||||
('diameter', '=', vals['diameter']), ('knife_tip_r_angle', '=', vals['knife_tip_r_angle']),
|
||||
('coarse_middle_thin', '=', vals['coarse_middle_thin']), ('tool_groups_id', '=', vals['tool_groups_id'])])
|
||||
if len(record) > 0:
|
||||
|
||||
@@ -299,7 +299,8 @@
|
||||
<field name="model">sf.real.time.distribution.of.functional.tools</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
<field name="name" invisible="1"/>
|
||||
<field name="functional_name_id"/>
|
||||
<field name="sf_cutting_tool_type_id" invisible="True"/>
|
||||
<field name="tool_groups_id"/>
|
||||
<field name="diameter"/>
|
||||
@@ -329,9 +330,11 @@
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<h1>
|
||||
<field name="name"/>
|
||||
<field name="functional_name_id" placeholder="请选择"
|
||||
attrs="{'readonly': [('status_create', '=', False)]}"/>
|
||||
</h1>
|
||||
</div>
|
||||
<field name="name" invisible="1"/>
|
||||
<field name="status_create" invisible="1"/>
|
||||
<group>
|
||||
<group>
|
||||
|
||||
@@ -358,10 +358,11 @@ class FunctionalToolAssemblyOrder(models.TransientModel):
|
||||
item.rfid = None
|
||||
|
||||
# 组装功能刀具参数信息
|
||||
after_name_id = fields.Many2one('sf.tool.inventory', string='功能刀具名称', required=True)
|
||||
barcode_id = fields.Many2one('stock.lot', string='功能刀具序列号')
|
||||
rfid = fields.Char('Rfid', readonly=True, store=True, compute='_compute_rfid')
|
||||
tool_code = fields.Char(string='功能刀具编码', readonly=True, compute='_compute_tool_code')
|
||||
after_assembly_functional_tool_name = fields.Char(string='组装后功能刀具名称', compute='_compute_name')
|
||||
after_assembly_functional_tool_name = fields.Char(string='组装后功能刀具名称', compute='_compute_name', store=True)
|
||||
after_assembly_functional_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model',
|
||||
string='组装后功能刀具类型',
|
||||
compute='_compute_after_assembly_functional_tool_type_id')
|
||||
@@ -428,15 +429,13 @@ class FunctionalToolAssemblyOrder(models.TransientModel):
|
||||
num = "%03d" % m
|
||||
return num
|
||||
|
||||
@api.depends('after_assembly_functional_tool_diameter', 'after_assembly_knife_tip_r_angle', 'tool_groups_id')
|
||||
@api.depends('after_name_id')
|
||||
def _compute_name(self):
|
||||
for obj in self:
|
||||
if obj.tool_groups_id:
|
||||
obj.after_assembly_functional_tool_name = '%s-D%sR%s' % (
|
||||
obj.tool_groups_id.name, obj.after_assembly_functional_tool_diameter,
|
||||
obj.after_assembly_knife_tip_r_angle)
|
||||
if obj.after_name_id:
|
||||
obj.after_assembly_functional_tool_name = obj.after_name_id.name
|
||||
else:
|
||||
obj.after_assembly_functional_tool_name = None
|
||||
obj.after_assembly_functional_tool_name = ''
|
||||
|
||||
@api.onchange('integral_code_id')
|
||||
def _onchange_after_assembly_functional_tool_diameter(self):
|
||||
@@ -530,7 +529,7 @@ class FunctionalToolAssemblyOrder(models.TransientModel):
|
||||
record_1 = self.env['sf.functional.cutting.tool.entity'].create(desc_2)
|
||||
# 创建安全库存信息
|
||||
self.env['sf.real.time.distribution.of.functional.tools'].create_or_edit_safety_stock({
|
||||
'name': self.after_assembly_functional_tool_name,
|
||||
'functional_name_id': self.after_name_id.id,
|
||||
'sf_cutting_tool_type_id': self.after_assembly_functional_tool_type_id.id,
|
||||
'tool_groups_id': self.tool_groups_id.id,
|
||||
'diameter': self.after_assembly_functional_tool_diameter,
|
||||
|
||||
@@ -342,7 +342,8 @@
|
||||
<field name="barcode_id" invisible="True"/>
|
||||
<field name="tool_code" readonly="True"/>
|
||||
<field name="rfid" placeholder="请输入rfid码" class="custom_required"/>
|
||||
<field name="after_assembly_functional_tool_name" string="功能刀具名称"/>
|
||||
<field name="after_name_id" string="功能刀具名称"/>
|
||||
<field name="after_assembly_functional_tool_name" string="功能刀具名称" invisible="1"/>
|
||||
<field name="after_assembly_functional_tool_type_id" string="功能刀具类型"
|
||||
options="{'no_create': True, 'no_quick_create': True}"/>
|
||||
<field name="tool_groups_id"/>
|
||||
|
||||
Reference in New Issue
Block a user