From 34ea140941e19fd84eaa4fcf7f6bf871f9973cf9 Mon Sep 17 00:00:00 2001 From: yuxianghui <3437689193@qq.com> Date: Tue, 9 Apr 2024 10:46:08 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=96=B0=E5=A2=9E=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=88=80=E5=85=B7=E6=B8=85=E5=8D=95=E6=A8=A1=E5=9E=8B=EF=BC=8C?= =?UTF-8?q?=E5=8F=8A=E5=85=B6tree=E8=A7=86=E5=9B=BE=E3=80=81=E6=9D=83?= =?UTF-8?q?=E9=99=90=EF=BC=9B2=E3=80=81=E5=8A=9F=E8=83=BD=E5=88=80?= =?UTF-8?q?=E5=85=B7=E5=AE=89=E5=85=A8=E5=BA=93=E5=AD=98=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=92=8C=E5=8A=9F=E8=83=BD=E5=88=80=E5=85=B7=E7=BB=84=E8=A3=85?= =?UTF-8?q?=E5=8D=95=E6=A8=A1=E5=9E=8B=E6=96=B0=E5=A2=9E=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=88=80=E5=85=B7=E5=90=8D=E7=A7=B0=E5=85=B3=E8=81=94=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=88=80=E5=85=B7=E6=B8=85=E5=8D=95=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=8A=9F=E8=83=BD=E5=88=80=E5=85=B7=E7=BB=84=E8=A3=85?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E7=94=9F=E6=88=90=E5=8A=9F=E8=83=BD=E5=88=80?= =?UTF-8?q?=E5=85=B7=E5=AE=89=E5=85=A8=E5=BA=93=E5=AD=98=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E7=9A=84=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/models/tool_base_new.py | 20 ++++++ sf_base/security/ir.model.access.csv | 9 ++- sf_base/views/tool_menu.xml | 10 +-- sf_base/views/tool_views.xml | 65 +++++++++++++++++++- sf_tool_management/models/base.py | 12 ++-- sf_tool_management/views/tool_base_views.xml | 7 ++- sf_tool_management/wizard/wizard.py | 15 +++-- sf_tool_management/wizard/wizard_view.xml | 3 +- 8 files changed, 117 insertions(+), 24 deletions(-) diff --git a/sf_base/models/tool_base_new.py b/sf_base/models/tool_base_new.py index a3a9e172..e3b737f0 100644 --- a/sf_base/models/tool_base_new.py +++ b/sf_base/models/tool_base_new.py @@ -308,3 +308,23 @@ class ToolGroups(models.Model): # records = super(ToolGroups, self).create(vals_list) # self._register_tool_groups(records) # return records + + +class ToolInventory(models.Model): + _name = 'sf.tool.inventory' + _description = '功能刀具清单' + + name = fields.Char('功能刀具名称', required=True) + type = fields.Char('类型') + prefix = fields.Char('前缀') + postfix = fields.Char('后缀') + diameter = fields.Float('直径(mm)') + angle = fields.Float('R角(mm)') + tool_length = fields.Float('刀具总长(mm)') + blade_length = fields.Float('避空长/刃长(mm)') + knife_head_name = fields.Char('刀头名称') + cutter_number = fields.Char('刀号') + blade_number = fields.Integer('刃数(个)') + extension = fields.Float('伸出长度(mm)') + + active = fields.Boolean('已归档', default=True) diff --git a/sf_base/security/ir.model.access.csv b/sf_base/security/ir.model.access.csv index 2a3cd471..9d027bdb 100644 --- a/sf_base/security/ir.model.access.csv +++ b/sf_base/security/ir.model.access.csv @@ -192,4 +192,11 @@ access_sf_machine_brand_tags_group_purchase_director,sf_machine_brand_tags_group access_printer,printer,model_printer,base.group_user,1,1,1,1 -access_printer_configuration,printer.configuration,model_printer_configuration,base.group_user,1,1,1,1 \ No newline at end of file +access_printer_configuration,printer.configuration,model_printer_configuration,base.group_user,1,1,1,1 + +access_group_sf_mrp_user,sf_tool_inventory,model_sf_tool_inventory,base.group_user,1,1,1,0 +access_group_sf_mrp_user_admin,sf_tool_inventory_admin,model_sf_tool_inventory,base.group_system,1,1,1,0 +access_group_sf_mrp_user_group_purchase_director,sf_tool_inventory_group_purchase_director,model_sf_tool_inventory,sf_base.group_purchase_director,1,0,1,0 +access_group_sf_mrp_user_group_sale_director,sf_tool_inventory_group_sale_director,model_sf_tool_inventory,sf_base.group_sale_director,1,0,1,0 +access_sf_cutting_tool_material_group_plan_director,sf_tool_inventory_group_plan_director,model_sf_tool_inventory,sf_base.group_plan_director,1,0,1,0 +access_group_sf_mrp_user_group_sf_mrp_user,sf_tool_inventory_group_sf_mrp_user,model_sf_tool_inventory,sf_base.group_sf_mrp_user,1,1,0,0 \ No newline at end of file diff --git a/sf_base/views/tool_menu.xml b/sf_base/views/tool_menu.xml index 506a73df..bad606d6 100644 --- a/sf_base/views/tool_menu.xml +++ b/sf_base/views/tool_menu.xml @@ -59,14 +59,14 @@ id="menu_sf_cutting_tool_type" parent="menu_sf_cutting_tool" name="刀具类型" - sequence="2" + sequence="10" action="action_sf_cutting_tool_type" /> @@ -82,7 +82,7 @@ id="menu_sf_functional_cutting_tool_model_type" parent="menu_sf_cutting_tool" name="功能刀具类型" - sequence="4" + sequence="30" action="action_sf_functional_cutting_tool_model_type" /> @@ -91,14 +91,14 @@ name="能力特征库" parent="menu_sf_cutting_tool" action="action_maintenance_equipment_image" - sequence="5"/> + sequence="40"/> + sequence="50"/> diff --git a/sf_base/views/tool_views.xml b/sf_base/views/tool_views.xml index 34b87a41..25d1824f 100644 --- a/sf_base/views/tool_views.xml +++ b/sf_base/views/tool_views.xml @@ -123,7 +123,7 @@
+ required="1"/>

@@ -547,7 +547,68 @@ - + ' + + + + sf.tool.inventory.tree + sf.tool.inventory + + + + + + + + + + + + + + + + + + + + + + sf.tool.inventory.search + sf.tool.inventory + + + + + + + + + + + + + + + + + + + + + 功能刀具清单 + ir.actions.act_window + sf.tool.inventory + tree + + + diff --git a/sf_tool_management/models/base.py b/sf_tool_management/models/base.py index 766bb8a9..d90c65bd 100644 --- a/sf_tool_management/models/base.py +++ b/sf_tool_management/models/base.py @@ -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: diff --git a/sf_tool_management/views/tool_base_views.xml b/sf_tool_management/views/tool_base_views.xml index b210ff29..4dd23a4e 100644 --- a/sf_tool_management/views/tool_base_views.xml +++ b/sf_tool_management/views/tool_base_views.xml @@ -299,7 +299,8 @@ sf.real.time.distribution.of.functional.tools - + + @@ -329,9 +330,11 @@

- +

+ diff --git a/sf_tool_management/wizard/wizard.py b/sf_tool_management/wizard/wizard.py index 90b8da63..36bb310d 100644 --- a/sf_tool_management/wizard/wizard.py +++ b/sf_tool_management/wizard/wizard.py @@ -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, diff --git a/sf_tool_management/wizard/wizard_view.xml b/sf_tool_management/wizard/wizard_view.xml index f055ffba..a1b35664 100644 --- a/sf_tool_management/wizard/wizard_view.xml +++ b/sf_tool_management/wizard/wizard_view.xml @@ -342,7 +342,8 @@ - + +