1、新增功能刀具清单模型,及其tree视图、权限;2、功能刀具安全库存模型和功能刀具组装单模型新增功能刀具名称关联功能刀具清单,优化功能刀具组装流程生成功能刀具安全库存信息的流程

This commit is contained in:
yuxianghui
2024-04-09 10:46:08 +08:00
parent 6bddc4c262
commit 34ea140941
8 changed files with 117 additions and 24 deletions

View File

@@ -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:

View File

@@ -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>

View File

@@ -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,

View File

@@ -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"/>