From 9acdcc04294a8621e215e1b041a23e69fb009777 Mon Sep 17 00:00:00 2001 From: "jinling.yang" Date: Fri, 13 Oct 2023 17:29:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=90=8C=E6=AD=A5cloud?= =?UTF-8?q?=E7=9A=84=E5=88=80=E5=85=B7=E6=A0=87=E5=87=86=E5=BA=93=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/__manifest__.py | 2 +- sf_base/models/tool_base.py | 304 ------- sf_base/models/tool_base_new.py | 229 +++--- sf_base/security/ir.model.access.csv | 1 + sf_base/views/tool_base_menu.xml | 234 ------ sf_base/views/tool_base_views.xml | 849 -------------------- sf_base/views/tool_menu.xml | 23 +- sf_base/views/tool_views.xml | 326 ++++---- sf_dlm/views/product_template_view.xml | 12 - sf_manufacturing/models/product_template.py | 34 +- sf_mrs_connect/models/res_config_setting.py | 5 +- sf_mrs_connect/models/sync_common.py | 149 +++- 12 files changed, 406 insertions(+), 1762 deletions(-) delete mode 100644 sf_base/models/tool_base.py delete mode 100644 sf_base/views/tool_base_menu.xml delete mode 100644 sf_base/views/tool_base_views.xml diff --git a/sf_base/__manifest__.py b/sf_base/__manifest__.py index 60077453..0aa2daa0 100644 --- a/sf_base/__manifest__.py +++ b/sf_base/__manifest__.py @@ -10,7 +10,7 @@ """, 'category': 'sf', 'website': 'https://www.sf.jikimo.com', - 'depends': ['account', 'base', 'mrp_workorder', 'sale'], + 'depends': ['account', 'base', 'mrp_workorder', 'sale', 'sf_maintenance'], 'data': [ 'security/group_security.xml', 'security/ir.model.access.csv', diff --git a/sf_base/models/tool_base.py b/sf_base/models/tool_base.py deleted file mode 100644 index 2d7d7028..00000000 --- a/sf_base/models/tool_base.py +++ /dev/null @@ -1,304 +0,0 @@ -# -*- coding: utf-8 -*- -import logging - -from odoo import fields, models, api -# from odoo.exceptions import UserError -# # from odoo.addons import sf_base, sf_common -# from datetime import datetime - - -# 功能刀具物料 -class CuttingToolMaterial(models.Model): - _name = 'sf.cutting.tool.material' - _description = '刀具物料' - - code = fields.Char('编码') - name = fields.Char('名称') - remark = fields.Char('备注') - active = fields.Boolean('有效', default=True) - - -# 功能刀具 -class FunctionalCuttingTool(models.Model): - _name = 'sf.functional.cutting.tool' - _description = '功能刀具' - - code = fields.Char('编码') - name = fields.Char('名称') - functional_model_number = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型') - integral_model_number = fields.Many2one('sf.integral.cutting.tool', string='整体式刀具型号') - blade_model_number = fields.Many2one('sf.blade', string='刀片型号') - cutterbar_model_number = fields.Many2one('sf.cutter.bar', string='刀杆型号') - cutterpad_model_number = fields.Many2one('sf.cutter.pad', string='刀盘型号') - handle_model_number = fields.Many2one('sf.handle', string='刀柄型号') - chuck_model_number = fields.Many2one('sf.chuck', string='夹头型号') - diameter = fields.Float('直径(mm)') - tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')], - string='刀具等级') - machining_accuracy = fields.Float('加工精度(mm)') - tool_length = fields.Float('装刀长') - blade_number = fields.Integer('刃数') - integral_blade_length = fields.Float('整体刃长(mm)') - effective_blade_length = fields.Float('有效刃长(mm)') - max_life = fields.Float('最大寿命值') - is_standard = fields.Boolean('是否标准刀') - applicable_range = fields.Char('适用范围') - image = fields.Binary('图片') - active = fields.Boolean('有效', default=True) - - -# 功能刀具类型 -class FunctionalCuttingToolModel(models.Model): - _name = 'sf.functional.cutting.tool.model' - _description = '功能刀具类型' - - name = fields.Char('名称') - code = fields.Char('编码') - remark = fields.Char('备注') - active = fields.Boolean('有效', default=True) - - -# 整体式刀具 -class IntegralCuttingTool(models.Model): - _name = 'sf.integral.cutting.tool' - _description = '整体式刀具' - - code = fields.Char('编码') - name = fields.Char('型号名称') - # 关联刀具物料 - cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料') - # 整体式刀具类型字段,关联整体式刀具类型对象 - integral_model_number = fields.Many2one('sf.integral.cutting.tool.model', '整体式刀具类型') - # 增加品牌、总长度(mm)、柄部长度(mm)、刃部长度(mm)、直径(mm)、刃数、前角(°)、后角(°)、主偏角(°)、材料型号、配对螺母(mm)、适用夹头型号、适用范围、图片、创建人、创建时间等字段 - brand = fields.Many2one('sf.machine.brand', '品牌') - total_length = fields.Float('总长度(mm)') - shank_length = fields.Float('柄部长度(mm)') - blade_length = fields.Float('刃部长度(mm)') - diameter = fields.Float('直径(mm)') - blade_number = fields.Integer('刃数') - front_angle = fields.Float('前角(°)') - rear_angle = fields.Float('后角(°)') - main_included_angle = fields.Float('主偏角(°)') - material_model = fields.Many2one('sf.materials.model', '材料型号') - nut = fields.Float('配对螺母(mm)') - # 适用夹头型号可以多选 - chuck_model = fields.Many2many('sf.chuck', string='适用夹头型号') - scope = fields.Char('适用范围') - image = fields.Binary('图片') - active = fields.Boolean('有效', default=True) - - -# 整体式刀具类型 -class IntegralCuttingToolModel(models.Model): - _name = 'sf.integral.cutting.tool.model' - _description = '整体式刀具类型' - - code = fields.Char('编码') - name = fields.Char('名称') - # 关联刀具物料 - cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料') - remark = fields.Char('备注') - - -# 刀片 -class Blade(models.Model): - _name = 'sf.blade' - _description = '刀片' - - code = fields.Char('编码') - name = fields.Char('型号名称') - # 关联刀具物料 - cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料') - # 刀片类型字段,关联刀片类型对象 - blade_model_number = fields.Many2one('sf.blade.model', '刀片类型') - # 编码、型号名称、刀片类型、品牌、长度L(mm)、宽度D(mm)、高度T(mm)、顶角(°)、前角(°)、后角(°)、主偏角(°)、R角(°)、材料型号、加工硬度、配对螺母(mm)、适用刀杆/刀盘型号、刀尖半径(mm)、图片、创建人、创建时间字段 - brand = fields.Many2one('sf.machine.brand', '品牌', ) - length = fields.Float('长度L(mm)') - width = fields.Float('宽度D(mm)') - height = fields.Float('高度T(mm)') - top_angle = fields.Float('顶角(°)') - front_angle = fields.Float('前角(°)') - rear_angle = fields.Float('后角(°)') - main_included_angle = fields.Float('主偏角(°)') - r_angle = fields.Float('R角(°)') - material_model = fields.Many2one('sf.materials.model', '材料型号') - hardness = fields.Char('加工硬度') - nut = fields.Float('配对螺母(mm)') - # 适用刀杆型号可以多选 - cutter_bar = fields.Many2many('sf.cutter.bar', string='适用刀杆型号') - # 适用刀盘型号可以多选 - cutter_pad = fields.Many2many('sf.cutter.pad', string='适用刀盘型号') - radius = fields.Float('刀尖半径(mm)') - image = fields.Binary('图片') - - -# 刀片类型 -class BladeModel(models.Model): - _name = 'sf.blade.model' - _description = '刀片类型' - - code = fields.Char('编码') - name = fields.Char('名称') - # 关联刀具物料 - cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料') - # 刀片类型字段,关联刀片对象 - blade_ids = fields.One2many('sf.blade', 'blade_model_number', '刀片类型') - remark = fields.Char('备注') - - -# 刀杆 -class CutterBar(models.Model): - _name = 'sf.cutter.bar' - _description = '刀杆' - - code = fields.Char('编码') - name = fields.Char('型号名称') - # 关联刀具物料 - cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料') - # 刀杆类型字段,关联刀杆类型对象 - cutter_bar_model_number = fields.Many2one('sf.cutter.bar.model', '刀杆类型') - # 品牌、C柄径(mm)、L总长(mm)、材料型号、刃数、D刃径(mm)、适用刀片型号、配对扳手(mm)、配备螺丝(mm)、刀尖圆角半径、精度等级、硬度(°)、适用范围、图片、创建人、创建时间 - brand = fields.Many2one('sf.machine.brand', '品牌') - c_diameter = fields.Float('C柄径(mm)') - total_length = fields.Float('L总长(mm)') - material_model = fields.Many2one('sf.materials.model', '材料型号') - blade_number = fields.Integer('刃数') - d_diameter = fields.Float('D刃径(mm)') - blade = fields.Many2many('sf.blade', string='适用刀片型号') - wrench = fields.Float('配对扳手(mm)') - screw = fields.Float('配备螺丝(mm)') - radius = fields.Float('刀尖圆角半径') - accuracy = fields.Char('精度等级') - hardness = fields.Char('硬度(°)') - scope = fields.Char('适用范围') - image = fields.Binary('图片') - - -# 刀杆类型 -class CutterBarModel(models.Model): - _name = 'sf.cutter.bar.model' - _description = '刀杆类型' - - code = fields.Char('编码') - name = fields.Char('名称') - # 关联刀具物料 - cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料') - remark = fields.Char('备注') - - -# 刀盘 -class CutterPad(models.Model): - _name = 'sf.cutter.pad' - _description = '刀盘' - - code = fields.Char('编码') - name = fields.Char('型号名称') - # 关联刀具物料 - cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料') - # 刀盘类型字段,关联刀盘类型对象 - cutter_pad_model_number = fields.Many2one('sf.cutter.pad.model', '刀盘类型') - # 增加品牌、C柄径(mm)、L总长(mm)、材料型号、刃数、D刃径(mm)、适用刀片型号、配对扳手(mm)、配备螺丝(mm)、刀尖圆角半径、精度等级、硬度(°)、适用范围、图片、创建人、创建时间 - brand = fields.Many2one('sf.machine.brand', '品牌') - c_diameter = fields.Float('C柄径(mm)') - total_length = fields.Float('L总长(mm)') - material_model = fields.Many2one('sf.materials.model', '材料型号') - blade_number = fields.Integer('刃数') - d_diameter = fields.Float('D刃径(mm)') - blade = fields.Many2many('sf.blade', string='适用刀片型号') - wrench = fields.Float('配对扳手(mm)') - screw = fields.Float('配备螺丝(mm)') - radius = fields.Float('刀尖圆角半径') - accuracy = fields.Char('精度等级') - hardness = fields.Char('硬度(°)') - scope = fields.Char('适用范围') - image = fields.Binary('图片') - - -# 刀盘类型 -class CutterPadModel(models.Model): - _name = 'sf.cutter.pad.model' - _description = '刀盘类型' - - code = fields.Char('编码') - name = fields.Char('名称') - # 关联刀具物料 - cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料') - remark = fields.Char('备注') - - -# 刀柄 -class Handle(models.Model): - _name = 'sf.handle' - _description = '刀柄' - - code = fields.Char('编码') - name = fields.Char('型号名称') - # 关联刀具物料 - cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料') - # 刀柄类型字段,关联刀柄类型对象 - handle_model_number = fields.Many2one('sf.handle.model', '刀柄类型') - # 增加、刀柄类型、品牌、L(mm)、L1(mm)、D1(mm)、重量(kg)、材料型号、本体精度(mm)、配对螺母(mm)、适用夹头型号、夹持范围(mm)、检测精度、检测硬度、标准转速、图片、创建人、创建时间 - brand = fields.Many2one('sf.machine.brand', '品牌') - length = fields.Float('L(mm)') - length1 = fields.Float('L1(mm)') - diameter1 = fields.Float('D1(mm)') - weight = fields.Float('重量(kg)') - material_model = fields.Many2one('sf.materials.model', '材料型号') - body_accuracy = fields.Float('本体精度(mm)') - nut = fields.Float('配对螺母(mm)') - chuck_model = fields.Many2many('sf.chuck.model', string='适用夹头型号') - clamping_range = fields.Float('夹持范围(mm)') - detection_accuracy = fields.Float('检测精度') - detection_hardness = fields.Char('检测硬度') - standard_speed = fields.Float('标准转速') - image = fields.Binary('图片') - - -# 刀柄类型 -class HandleModel(models.Model): - _name = 'sf.handle.model' - _description = '刀柄类型' - - code = fields.Char('编码') - name = fields.Char('名称') - # 关联刀具物料 - cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料') - remark = fields.Char('备注') - - -# 夹头对象(夹头型号对象) -class Chuck(models.Model): - _name = 'sf.chuck' - _description = '夹头' - _rec_name = 'code' - - code = fields.Char('编码') - name = fields.Char('型号名称') - # 关联刀具物料 - cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料') - # 夹头类型字段,关联夹头类型对象 - chuck_model_number = fields.Many2one('sf.chuck.model', '夹头类型') - # 增加品牌、精度(mm)、外径(mm)、内径(mm)、高度(mm)、材料型号、配对螺母(mm)、适用刀柄型号、夹持范围(mm)、特性、图片、创建人、创建时间 - brand = fields.Many2one('sf.machine.brand', '品牌') - accuracy = fields.Float('精度(mm)') - diameter = fields.Float('外径(mm)') - inner_diameter = fields.Float('内径(mm)') - height = fields.Float('高度(mm)') - material_model = fields.Many2one('sf.materials.model', '材料型号') - nut = fields.Float('配对螺母(mm)') - handle_model = fields.Many2many('sf.handle.model', string='适用刀柄型号') - clamping_range = fields.Float('夹持范围(mm)') - feature = fields.Char('特性') - image = fields.Binary('图片') - - -# 夹头类型 -class ChuckModel(models.Model): - _name = 'sf.chuck.model' - _description = '夹头类型' - - code = fields.Char('编码') - name = fields.Char('名称') - # 关联刀具物料 - cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料') - remark = fields.Char('备注') diff --git a/sf_base/models/tool_base_new.py b/sf_base/models/tool_base_new.py index fc62074e..5ed37a94 100644 --- a/sf_base/models/tool_base_new.py +++ b/sf_base/models/tool_base_new.py @@ -91,133 +91,6 @@ class FunctionalCuttingToolModel(models.Model): active = fields.Boolean('有效', default=True) -# 刀具型号 -class CuttingToolModel(models.Model): - _name = 'sf.cutting.tool.model' - _description = '刀具型号' - - name = fields.Char('名称') - cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', string='刀具物料') - cutting_tool_type = fields.Char(string="刀具物料类型", related='cutting_tool_material_id.name', store=True) - cutting_tool_type_id = fields.Many2one('sf.cutting.tool.type', string='刀具类型', - ) - brand_id = fields.Many2one('sf.machine.brand', '品牌') - tool_length = fields.Integer('长度(mm)') - tool_width = fields.Integer('宽度(mm)') - tool_height = fields.Integer('高度(mm)') - tool_thickness = fields.Integer('厚度(mm)') - tool_weight = fields.Float('重量(kg)') - coating_material = fields.Char('涂层材质') - - # 整体式刀具参数 - total_length = fields.Float('总长度(mm)') - shank_length = fields.Float('柄部长度(mm)') - blade_length = fields.Float('刃部长度(mm)') - diameter = fields.Float('直径(mm)') - blade_number = fields.Integer('刃数') - front_angle = fields.Float('前角(°)') - rear_angle = fields.Float('后角(°)') - main_included_angle = fields.Float('主偏角(°)') - material_model_id = fields.Many2one('sf.materials.model', '材料型号') - nut = fields.Float('配对螺母(mm)') - # 适用夹头型号可以多选 - chuck_ids = fields.Many2many( - 'sf.cutting.tool.model', - relation='cutting_tool_model_handle_chuck_rel', - column1='model_id_1', - column2='model_id_2', - domain="[('cutting_tool_type', '=', '夹头')]", - string='适用夹头型号') - # 刀片参数 - top_angle = fields.Float('顶角(°)') - jump_accuracy = fields.Float('径跳精度(um)') - working_hardness = fields.Char('加工硬度(hrc)') - cutter_bar_ids = fields.Many2many( - 'sf.cutting.tool.model', - relation='cutting_tool_model_blade_cutter_bar_rel', - column1='model_id_1', - column2='model_id_2', - domain="[('cutting_tool_type', '=', '刀杆')]", - string='适用刀杆型号' - ) - cutter_pad_ids = fields.Many2many( - 'sf.cutting.tool.model', - relation='cutting_tool_model_blade_cutter_pad_rel', - column1='model_id_1', - column2='model_id_2', - domain="[('cutting_tool_type', '=', '刀盘')]", - string='适用刀盘型号' # 使用空列表作为默认值 - ) - # 刀杆/参数 - blade_diameter = fields.Float('刃径(mm)') - blade_ids = fields.Many2many( - 'sf.cutting.tool.model', - relation='cutting_tool_model_pad_blade_rel', - column1='model_id_1', - column2='model_id_2', - domain="[('cutting_tool_type', '=', '刀片')]", - string='适用刀片型号' # 使用空列表作为默认值 - ) - wrench = fields.Float('配对扳手(mm)') - screw = fields.Float('配备螺丝(mm)') - accuracy_level = fields.Char('精度等级') - # 刀柄参数 - diameter_max = fields.Float('最大直径(mm)') - clamping_diameter = fields.Float('夹持直径(mm)') - flange_length = fields.Float('法兰柄长度(mm)') - flange_diameter = fields.Float('法兰直径(mm)') - # 夹头参数 - outer_diameter = fields.Float('外径(mm)') - inner_diameter = fields.Float('内径(mm)') - handle_ids = fields.Many2many( - 'sf.cutting.tool.model', - relation='cutting_tool_model_chuck_handle_rel', - column1='model_id_1', - column2='model_id_2', - domain="[('cutting_tool_type', '=', '刀柄')]", - string='适用刀柄型号' - ) - active = fields.Boolean('有效', default=True) - - def _get_code(self, cutting_tool_type_code): - cutting_tool_model = self.search( - [('code', 'ilike', cutting_tool_type_code)], - limit=1, - order="id desc") - if not cutting_tool_model: - num = "%03d" % 1 - else: - m = int(cutting_tool_model.code[-3:]) + 1 - num = "%03d" % m - return "%s%s" % (cutting_tool_type_code, num) - - code = fields.Char(string='编码', readonly=True) - - def _onchange_cutting_tool_material_id(self, cutting_tool_material_id): - if cutting_tool_material_id: - if cutting_tool_material_id.name == "整体式刀具": - code = self._get_code("JKM-T-DJWL-ZTDJ-") - elif cutting_tool_material_id.name == "刀片": - code = self._get_code("JKM-T-DJWL-DPIA-") - elif cutting_tool_material_id.name == "刀杆": - code = self._get_code("JKM-T-DJWL-DGAN-") - elif cutting_tool_material_id.name == "刀盘": - code = self._get_code("JKM-T-DJWL-DPAN-") - elif cutting_tool_material_id.name == "夹头": - code = self._get_code("JKM-T-DJWL-DJIA-") - else: - code = self._get_code("JKM-T-DJWL-DBIN-") - return code - - @api.model_create_multi - def create(self, vals): - obj = super(CuttingToolModel, self).create(vals) - if obj.cutting_tool_material_id: - code = self._onchange_cutting_tool_material_id(obj.cutting_tool_material_id) - obj.code = code - return obj - - # 刀具类型 class CuttingToolType(models.Model): _name = 'sf.cutting.tool.type' @@ -229,3 +102,105 @@ class CuttingToolType(models.Model): cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', '刀具物料') remark = fields.Char('备注') active = fields.Boolean('有效', default=True) + + +# 刀具标准库 +class CuttingToolModel(models.Model): + _name = 'sf.cutting_tool.standard.library' + _description = '刀具标准库' + + code = fields.Char(string='编码') + name = fields.Char('名称') + # 关联刀具物料 + cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', '刀具物料', required=True) + # 刀具物料类型 + cutting_tool_type = fields.Char(related='cutting_tool_material_id.name', string='刀具物料类型', + store=True) + # 关联刀具类型 + cutting_tool_type_id = fields.Many2one('sf.cutting.tool.type', '类型', + domain="[('cutting_tool_material_id.name', '=', cutting_tool_type)]") + brand_id = fields.Many2one('sf.machine.brand', '品牌') + status = fields.Boolean(string='状态', default=False) + image = fields.Binary('图片') + + # 整体式刀具参数 + material_model_id = fields.Many2one('mrs.materials.model', '刀具材质') + tool_hardness = fields.Integer('刀具硬度(hrc)') + coating_material = fields.Char('涂层材质') + blade_type = fields.Char('刃部类型') + integral_coarse_medium_fine = fields.Selection([('粗', '粗'), ('中', '中'), ('精', '精')], '粗/中/精') + integral_run_out_accuracy_max = fields.Char('整体式刀具端跳精度max') + integral_run_out_accuracy_min = fields.Char('整体式刀具端跳精度min') + + fit_blade_shape_ids = fields.Many2many('maintenance.equipment.image', 'fit_blade_shape_library_rel', + '适配刀片形状', domain=[('type', '=', '刀片形状')]) + suitable_machining_method_ids = fields.Many2many('maintenance.equipment.image', + 'suitable_machining_method_library_rel', + '适合加工方式', domain=[('type', '=', '加工能力')]) + blade_tip_characteristics_ids = fields.Many2many('maintenance.equipment.image', + 'blade_tip_character_library_rel', + '刀尖特征', domain=[('type', '=', '刀尖特征')]) + handle_type_ids = fields.Many2many('maintenance.equipment.image', 'handle_type_library_rel', + '柄部类型', domain=[('type', '=', '柄部类型')]) + cutting_direction_ids = fields.Many2many('maintenance.equipment.image', 'cutting_direction_library_rel', + '走刀方向', domain=[('type', '=', '走刀方向')]) + suitable_coolant_ids = fields.Many2many('maintenance.equipment.image', 'suitable_coolant_library_rel', + '适合冷却液', domain=[('type', '=', '冷却液')]) + compaction_way_ids = fields.Many2many('maintenance.equipment.image', 'compaction_way_library_rel', + '压紧方式', domain=[('type', '=', '压紧方式')]) + # tool_materials_basic_parameters_ids = fields.One2many('mrs.tool.materials.basic.parameters', + # 'cutting_tool_model_id', string='基本参数') + # cutting_speed_ids = fields.One2many('mrs.cutting.speed', 'cutting_tool_model_id', string='切削速度Vc') + # feed_per_tooth_ids = fields.One2many('mrs.feed.per.tooth', 'cutting_tool_model_id', '每齿走刀量fz') + + material_model_id = fields.Many2one('sf.materials.model', '材料型号') + nut = fields.Float('配对螺母(mm)') + # 适用夹头型号可以多选 + chuck_ids = fields.Many2many( + 'sf.cutting.tool.type', + relation='cutting_tool_type_library_handle_chuck_rel', + column1='model_id_1', + column2='model_id_2', + domain="[('cutting_tool_material_id.name', '=', '夹头')]", + string='适用夹头型号') + + working_hardness = fields.Char('加工硬度(hrc)') + cutter_bar_ids = fields.Many2many( + 'sf.cutting.tool.type', + relation='cutting_tool_type_library_cutter_bar_rel', + column1='model_id_1', + column2='model_id_2', + domain="[('cutting_tool_material_id.name', '=', '刀杆')]", + string='适用刀杆型号' + ) + cutter_pad_ids = fields.Many2many( + 'sf.cutting.tool.type', + relation='cutting_tool_type_library_cutter_pad_rel', + column1='model_id_1', + column2='model_id_2', + domain="[('cutting_tool_material_id.name', '=', '刀盘')]", + string='适用刀盘型号' # 使用空列表作为默认值 + ) + # 刀杆/参数 + blade_diameter = fields.Float('刃径(mm)') + blade_ids = fields.Many2many( + 'sf.cutting.tool.type', + relation='cutting_tool_type_library_pad_blade_rel', + column1='model_id_1', + column2='model_id_2', + domain="[('cutting_tool_material_id.name', '=', '刀片')]", + string='适用刀片型号' # 使用空列表作为默认值 + ) + handle_ids = fields.Many2many( + 'sf.cutting.tool.type', + relation='cutting_tool_type_library_chuck_handle_rel', + column1='model_id_1', + column2='model_id_2', + domain="[('cutting_tool_material_id.name', '=', '刀柄')]", + string='适用刀柄型号' + ) + active = fields.Boolean('有效', default=True) + is_cloud = fields.Boolean('云端数据', default=False) + + def get_cutter_bar_ids(self): + return self.cutter_bar_ids diff --git a/sf_base/security/ir.model.access.csv b/sf_base/security/ir.model.access.csv index 1829085c..39ee21cf 100644 --- a/sf_base/security/ir.model.access.csv +++ b/sf_base/security/ir.model.access.csv @@ -26,6 +26,7 @@ access_sf_functional_fixture,sf_functional_fixture,model_sf_functional_fixture,b access_sf_sync_common,sf_sync_common,model_sf_sync_common,base.group_user,1,1,1,1 access_sf_international_standards,sf_international_standards,model_sf_international_standards,base.group_user,1,1,1,1 access_material_apply,material_apply,model_material_apply,base.group_user,1,1,1,1 +access_sf_cutting_tool_standard_library,sf_cutting_tool_standard_library,model_sf_cutting_tool_standard_library,base.group_user,1,1,1,1 diff --git a/sf_base/views/tool_base_menu.xml b/sf_base/views/tool_base_menu.xml deleted file mode 100644 index 6bd12d74..00000000 --- a/sf_base/views/tool_base_menu.xml +++ /dev/null @@ -1,234 +0,0 @@ - - - - - - 整体式刀具型号 - ir.actions.act_window - sf.integral.cutting.tool - - tree,form - - - - 功能刀具 - ir.actions.act_window - sf.functional.cutting.tool - tree,form - - - - 刀片型号 - ir.actions.act_window - sf.blade - tree,form - - - - 刀杆型号 - ir.actions.act_window - sf.cutter.bar - tree,form - - - - 刀盘型号 - ir.actions.act_window - sf.cutter.pad - tree,form - - - - 刀柄型号 - ir.actions.act_window - sf.handle - tree,form - - - - 夹头型号 - ir.actions.act_window - sf.chuck - tree,form - - - - 功能刀具类型 - ir.actions.act_window - sf.functional.cutting.tool.model - tree,form - - - - 整体式刀具类型 - ir.actions.act_window - sf.integral.cutting.tool.model - tree,form - - - - 刀片类型 - ir.actions.act_window - sf.blade.model - tree,form - - - - 刀杆类型 - ir.actions.act_window - sf.cutter.bar.model - tree,form - - - - 刀盘类型 - ir.actions.act_window - sf.cutter.pad.model - tree,form - - - - 刀柄类型 - ir.actions.act_window - sf.handle.model - tree,form - - - - 夹头类型 - ir.actions.act_window - sf.chuck.model - tree,form - - - - 刀具物料 - ir.actions.act_window - sf.cutting.tool.material - tree,form - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sf_base/views/tool_base_views.xml b/sf_base/views/tool_base_views.xml deleted file mode 100644 index ce16146c..00000000 --- a/sf_base/views/tool_base_views.xml +++ /dev/null @@ -1,849 +0,0 @@ - - - - - - sf.cutting.tool.material.tree - sf.cutting.tool.material - - - - - - - - - - - sf.cutting.tool.material.form - sf.cutting.tool.material - -
- - - - - - - - - - - - - -
-
-
- - - - - sf.cutting.tool.material.search - sf.cutting.tool.material - - - - - - - - - - - sf.functional.cutting.tool.tree - sf.functional.cutting.tool - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sf.functional.cutting.tool.form - sf.functional.cutting.tool - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - - sf.functional.cutting.tool.search - sf.functional.cutting.tool - - - - - - - - - - - sf.integral.cutting.tool.tree - sf.integral.cutting.tool - - - - - - - - - - - - - - - sf.integral.cutting.tool.form - sf.integral.cutting.tool - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - - sf.integral.cutting.tool.search - sf.integral.cutting.tool - - - - - - - - - - sf.blade.tree - sf.blade - - - - - - - - - - - - - sf.blade.form - sf.blade - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - - sf.blade.search - sf.blade - - - - - - - - - - sf.cutter.bar.tree - sf.cutter.bar - - - - - - - - - - - - - sf.cutter.bar.form - sf.cutter.bar - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - - sf.cutter.bar.search - sf.cutter.bar - - - - - - - - - - - sf.cutter.pad.tree - sf.cutter.pad - - - - - - - - - - - - - sf.cutter.pad.form - sf.cutter.pad - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - - sf.cutter.pad.search - sf.cutter.pad - - - - - - - - - - - sf.cutter.handle.tree - sf.handle - - - - - - - - - - - - - sf.cutter.handle.form - sf.handle - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - - sf.handle.search - sf.handle - - - - - - - - - - - sf.cutter.chuck.tree - sf.chuck - - - - - - - - - - - - - sf.cutter.chuck.form - sf.chuck - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - - sf.chuck.search - sf.chuck - - - - - - - - - - - sf.cutter.function.tree - sf.functional.cutting.tool.model - - - - - - - - - - - - sf.cutter.function.form - sf.functional.cutting.tool.model - -
- - - - - - - - - - - -
-
-
- - - sf.integral.cutting.tool.model.tree - sf.integral.cutting.tool.model - - - - - - - - - - - - sf.integral.cutting.tool.model.form - sf.integral.cutting.tool.model - -
- - - - - - - - - - - - -
-
-
- - - sf.blade.model.tree - sf.blade.model - - - - - - - - - - - - sf.blade.model.form - sf.blade.model - -
- - - - - - - - - - - - -
-
-
- - - sf.cutter.bar.model.tree - sf.cutter.bar.model - - - - - - - - - - - - sf.cutter.bar.model.form - sf.cutter.bar.model - -
- - - - - - - - - - - - -
-
-
- - - sf.cutter.pad.model.tree - sf.cutter.pad.model - - - - - - - - - - - - sf.cutter.pad.model.form - sf.cutter.pad.model - -
- - - - - - - - - - - - -
-
-
- - - - sf.handle.model.tree - sf.handle.model - - - - - - - - - - - - sf.handle.model.form - sf.handle.model - -
- - - - - - - - - - - - -
-
-
- - - sf.chuck.model.tree - sf.chuck.model - - - - - - - - - - - - sf.chuck.model.form - sf.chuck.model - -
- - - - - - - - - - - - -
-
-
-
-
diff --git a/sf_base/views/tool_menu.xml b/sf_base/views/tool_menu.xml index 4f6bb693..378277e5 100644 --- a/sf_base/views/tool_menu.xml +++ b/sf_base/views/tool_menu.xml @@ -16,11 +16,11 @@ sf.cutting.tool.type tree - - - 刀具型号 + + + 刀具标准库 ir.actions.act_window - sf.cutting.tool.model + sf.cutting_tool.standard.library tree,form @@ -61,14 +61,13 @@ sequence="2" action="action_sf_cutting_tool_type" /> - - - - - - - - + diff --git a/sf_base/views/tool_views.xml b/sf_base/views/tool_views.xml index ee5546a8..8d837dc7 100644 --- a/sf_base/views/tool_views.xml +++ b/sf_base/views/tool_views.xml @@ -14,29 +14,6 @@ - - - - - - - - - - - - - - - - - - - - - - - sf.cutting.tool.material.search sf.cutting.tool.material @@ -160,25 +137,6 @@ - - - - - - - - - - - - - - - - - - - @@ -193,148 +151,178 @@ - - - sf.cutting.tool.model.tree - sf.cutting.tool.model + + + sf.cutting_tool.standard.library.tree + sf.cutting_tool.standard.library - - - + + + + + - - sf.cutting.tool.model.form - sf.cutting.tool.model + + sf.cutting_tool.standard.library.form + sf.cutting_tool.standard.library -
+ +

- +

- - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- - - sf.cutting.tool.model.search - sf.cutting.tool.model + + sf.cutting_tool.standard.library.search + sf.cutting_tool.standard.library - + @@ -355,27 +343,6 @@ - - - - - - - - - - - - - - - - - - - - - sf.cutting.tool.type.search @@ -391,6 +358,5 @@ - diff --git a/sf_dlm/views/product_template_view.xml b/sf_dlm/views/product_template_view.xml index 8c4ff1ae..ce888b90 100644 --- a/sf_dlm/views/product_template_view.xml +++ b/sf_dlm/views/product_template_view.xml @@ -51,18 +51,6 @@ attrs="{'invisible': ['|',('categ_type', '!=', '表面工艺'),('categ_type', '=', False)]}"/> - - - - - - - - - - - -