diff --git a/jikimo_frontend/static/src/scss/custom_style.scss b/jikimo_frontend/static/src/scss/custom_style.scss
index c8304043..bc1be730 100644
--- a/jikimo_frontend/static/src/scss/custom_style.scss
+++ b/jikimo_frontend/static/src/scss/custom_style.scss
@@ -451,8 +451,8 @@ div:has(.o_required_modifier) > label::before {
}
}
-// 设置列表底部按钮、设置列表header按钮
-.o_list_renderer .o_field_x2many_list_row_add a,.treeHeaderBtn{
+// 更改表格底部按钮样式
+.o_list_renderer .o_field_x2many_list_row_add a,.treeHeaderBtn,.o_x2m_control_panel .o_cp_buttons .btn{
display: inline-block;
margin: 5px 0;
font-size: 14px;
@@ -463,7 +463,7 @@ div:has(.o_required_modifier) > label::before {
border-radius: 0.25rem;
transition: all .3s;
}
-.o_list_renderer .o_field_x2many_list_row_add a:hover,.treeHeaderBtn:hover{
+.o_list_renderer .o_field_x2many_list_row_add a:hover,.treeHeaderBtn:hover,.o_x2m_control_panel .o_cp_buttons .btn:hover{
background: #71639e;
color: #fff
-}
\ No newline at end of file
+}
diff --git a/sf_base/models/base.py b/sf_base/models/base.py
index 6fc86e94..c3152098 100644
--- a/sf_base/models/base.py
+++ b/sf_base/models/base.py
@@ -106,6 +106,7 @@ class MachineTool(models.Model):
lead_screw = fields.Char('丝杆')
workbench_L = fields.Char('工作台长度(mm)')
workbench_W = fields.Char('工作台宽度(mm)')
+ workbench_H = fields.Char('工作台高度(mm)')
guide_rail = fields.Char('导轨')
machine_tool_L = fields.Char('机床长度(mm)')
machine_tool_W = fields.Char('机床宽度(mm)')
@@ -193,6 +194,7 @@ class MachineTool(models.Model):
item.lead_screw = item.type_id.lead_screw
item.workbench_L = item.type_id.workbench_L
item.workbench_W = item.type_id.workbench_W
+ item.workbench_H = item.type_id.workbench_H
item.guide_rail = item.type_id.guide_rail
item.machine_tool_L = item.type_id.machine_tool_L
item.machine_tool_W = item.type_id.machine_tool_W
@@ -280,6 +282,7 @@ class MachineToolType(models.Model):
workpiece_load = fields.Char('工件最大负载(kg)')
workbench_L = fields.Char('工作台长度(mm)')
workbench_W = fields.Char('工作台宽度(mm)')
+ workbench_H = fields.Char('工作台高度(mm)')
machine_tool_L = fields.Char('机床长度(mm)')
machine_tool_W = fields.Char('机床宽度(mm)')
machine_tool_H = fields.Char('机床高度(mm)')
@@ -295,8 +298,9 @@ class MachineToolType(models.Model):
x_axis = fields.Integer('X轴')
y_axis = fields.Integer('Y轴')
z_axis = fields.Integer('Z轴')
- b_axis = fields.Integer('B轴')
- c_axis = fields.Integer('C轴')
+ a_axis = fields.Char('a轴')
+ b_axis = fields.Char('B轴')
+ c_axis = fields.Char('C轴')
remark = fields.Char('备注')
control_system_id = fields.Many2one('sf.machine.control_system',
string="控制系统")
@@ -309,7 +313,7 @@ class MachineToolType(models.Model):
default="", string="轴数")
# 1212新增字段
- a_axis = fields.Integer('a轴')
+
function_type = fields.Selection(
[("ZXJGZX", "钻铣加工中心"), ("CXJGZX", "车削加工中心"), ("FHJGZX", "复合加工中心")],
default="", string="功能类型")
@@ -335,23 +339,23 @@ class MachineToolType(models.Model):
straight_cutting_feed_rate = fields.Char('直线切削进给速度(mm/min)')
rotary_cutting_feed_rate = fields.Char('回转切削进给速度(mm/min)')
- X_precision = fields.Float('X轴定位精度(mm)', digits=(12, 3))
- X_precision_repeat = fields.Float('X轴重复定位精度(mm)', digits=(12, 3))
- Y_precision = fields.Float('Y轴定位精度(mm)', digits=(12, 3))
- Y_precision_repeat = fields.Float('Y轴重复定位精度(mm)', digits=(12, 3))
- Z_precision = fields.Float('Z轴定位精度(mm)', digits=(12, 3))
- Z_precision_repeat = fields.Float('Z轴重复定位精度(mm)', digits=(12, 3))
- a_precision = fields.Float('a轴定位精度(mm)', digits=(12, 3))
- a_precision_repeat = fields.Float('a轴重复定位精度(mm)', digits=(12, 3))
- b_precision = fields.Float('b轴定位精度(mm)', digits=(12, 3))
- b_precision_repeat = fields.Float('b轴重复定位精度(mm)', digits=(12, 3))
- c_precision = fields.Float('c轴定位精度(mm)', digits=(12, 3))
- c_precision_repeat = fields.Float('c轴重复定位精度(mm)', digits=(12, 3))
+ X_precision = fields.Char('X轴定位精度(mm)')
+ X_precision_repeat = fields.Char('X轴重复定位精度(mm)')
+ Y_precision = fields.Char('Y轴定位精度(mm)')
+ Y_precision_repeat = fields.Char('Y轴重复定位精度(mm)')
+ Z_precision = fields.Char('Z轴定位精度(mm)')
+ Z_precision_repeat = fields.Char('Z轴重复定位精度(mm)')
+ a_precision = fields.Char('a轴定位精度(mm)')
+ a_precision_repeat = fields.Char('a轴重复定位精度(mm)')
+ b_precision = fields.Char('b轴定位精度(mm)')
+ b_precision_repeat = fields.Char('b轴重复定位精度(mm)')
+ c_precision = fields.Char('c轴定位精度(mm)')
+ c_precision_repeat = fields.Char('c轴重复定位精度(mm)')
tool_full_diameter_max = fields.Float('刀具满刀最大直径(mm)')
tool_perimeter_diameter_max = fields.Float('刀具邻空刀最大直径(mm)')
- T_tool_time = fields.Integer('T-T换刀时间(s)')
- C_tool_time = fields.Integer('C-C换刀时间(s)')
+ T_tool_time = fields.Float('T-T换刀时间(s)', digits=(12, 1))
+ C_tool_time = fields.Float('C-C换刀时间(s)', digits=(12, 1))
jg_image_id = fields.Many2many('maintenance.equipment.image', 'jg_equipment_id', string='加工能力',
domain="[('type', '=', '加工能力')]")
diff --git a/sf_base/models/common.py b/sf_base/models/common.py
index 6cddafd7..7496e7db 100644
--- a/sf_base/models/common.py
+++ b/sf_base/models/common.py
@@ -90,7 +90,7 @@ class MrsProductionProcess(models.Model):
code = fields.Char("编码")
name = fields.Char('名称')
remark = fields.Text("备注")
- processing_order_ids = fields.One2many('sf.processing.order', 'production_process_id', string='工序')
+ # processing_order_ids = fields.One2many('sf.processing.order', 'production_process_id', string='工序')
partner_process_ids = fields.Many2many('res.partner', 'process_ids', '加工工厂')
active = fields.Boolean('有效', default=True)
parameter_ids = fields.One2many('sf.production.process.parameter', 'process_id', string='可选参数')
@@ -98,25 +98,25 @@ class MrsProductionProcess(models.Model):
# workcenter_ids = fields.Many2many('mrp.workcenter', 'rel_workcenter_process', required=True)
-class MrsProcessingTechnology(models.Model):
- _name = 'sf.processing.technology'
- _description = '加工工艺'
-
- name = fields.Char('名称', index=True)
- remark = fields.Text('备注', index=True)
- code = fields.Char("编码")
- processing_order_ids = fields.Many2many('sf.processing.order', 'sf_associated_processes',
- index=True, string='工序')
- active = fields.Boolean('有效', default=True)
+# class MrsProcessingTechnology(models.Model):
+# _name = 'sf.processing.technology'
+# _description = '加工工艺'
+#
+# name = fields.Char('名称', index=True)
+# remark = fields.Text('备注', index=True)
+# code = fields.Char("编码")
+# processing_order_ids = fields.Many2many('sf.processing.order', 'sf_associated_processes',
+# index=True, string='工序')
+# active = fields.Boolean('有效', default=True)
-class MrsProcessingOrder(models.Model):
- _name = 'sf.processing.order'
- _description = '工序'
- sequence = fields.Integer('Sequence')
- processing_technology_ids = fields.Many2many('sf.processing.technology', 'sf_associated_processes',
- index=True, string='加工工艺')
- production_process_id = fields.Many2one('sf.production.process', string="表面工艺")
+# class MrsProcessingOrder(models.Model):
+# _name = 'sf.processing.order'
+# _description = '工序'
+# sequence = fields.Integer('Sequence')
+# processing_technology_ids = fields.Many2many('sf.processing.technology', 'sf_associated_processes',
+# index=True, string='加工工艺')
+# production_process_id = fields.Many2one('sf.production.process', string="表面工艺")
class SupplierSort(models.Model):
diff --git a/sf_base/models/tool_base_new.py b/sf_base/models/tool_base_new.py
index 03a3678b..a3a9e172 100644
--- a/sf_base/models/tool_base_new.py
+++ b/sf_base/models/tool_base_new.py
@@ -1,9 +1,6 @@
# -*- coding: utf-8 -*-
-import json
-import requests
+from datetime import date
from odoo import fields, models, api
-from odoo.exceptions import ValidationError
-from odoo.addons.sf_base.commons.common import Common
class CuttingToolMaterial(models.Model):
@@ -113,6 +110,24 @@ class CuttingToolModel(models.Model):
feed_per_tooth_ids = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz(整体式刀具)')
feed_per_tooth_ids_3 = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz(刀片)')
material_model_id = fields.Many2one('sf.materials.model', '材料型号')
+
+ @api.onchange('cutting_tool_material_id')
+ def _get_code(self):
+ if self.is_cloud is False:
+ today = date.today().strftime("%Y%m%d")
+ today_code = 'T-DJWL-%s-%s' % (self.cutting_tool_material_id.code, today)
+ cutting_tool_model = self.search(
+ [('code', 'ilike', today_code), ('is_cloud', '=', False),
+ ('active', 'in', [True, False])],
+ limit=1,
+ order="id desc")
+ if not cutting_tool_model:
+ num = "%03d" % 1
+ else:
+ m = int(today_code[-3:]) + 1
+ num = "%03d" % m
+ self.code = "%s%s" % (today_code, num)
+
# 适用夹头型号可以多选
# chuck_ids = fields.Many2many(
# 'sf.cutting_tool.standard.library',
diff --git a/sf_base/models/tool_other_features.py b/sf_base/models/tool_other_features.py
index 7ad32bc2..f67e69fd 100644
--- a/sf_base/models/tool_other_features.py
+++ b/sf_base/models/tool_other_features.py
@@ -10,6 +10,7 @@ class ToolMaterialsBasicParameters(models.Model):
standard_library_id = fields.Many2one('sf.cutting_tool.standard.library', string='刀具标准库')
cutting_tool_type = fields.Char(related='standard_library_id.cutting_tool_type', string='刀具物料类型',
store=True)
+ is_cloud = fields.Boolean(related='standard_library_id.is_cloud', string='云端数据')
# 整体式刀具参数
total_length = fields.Float('总长度(mm)')
@@ -21,7 +22,7 @@ class ToolMaterialsBasicParameters(models.Model):
handle_diameter = fields.Float('柄部直径(mm)')
handle_length = fields.Float('柄部长度(mm)')
blade_tip_diameter = fields.Integer('刀尖直径(mm)')
- blade_tip_working_size = fields.Char('刀尖处理尺寸(R半径mm/倒角)', size=20)
+ blade_tip_working_size = fields.Char('刀尖处理尺寸(R半径mm/倒角度)', size=20)
blade_tip_taper = fields.Integer('刀尖锥度(°)')
blade_diameter = fields.Float('刃部直径(mm)')
blade_length = fields.Float('刃部长度(mm)')
@@ -37,7 +38,7 @@ class ToolMaterialsBasicParameters(models.Model):
cutting_blade_length = fields.Float('切削刃长(mm)')
relief_angle = fields.Integer('后角(°)')
blade_tip_circular_arc_radius = fields.Char('刀尖圆弧半径(mm)', size=20)
- inscribed_circle_diameter = fields.Float('内接圆直径(mm)')
+ inscribed_circle_diameter = fields.Float('内接圆直径IC/D(mm)')
install_aperture_diameter = fields.Float('安装孔直径(mm)')
chip_breaker_groove = fields.Selection([('无', '无'), ('单面', '单面'), ('双面', '双面')],
string='有无断屑槽')
@@ -170,8 +171,6 @@ class FeedPerTooth(models.Model):
feed_per_tooth = fields.Char('每齿走刀量 (mm/z)', size=20)
active = fields.Boolean(string='有效', default=True)
-
-
# @api.depends('product_template_id')
# def _compute_product_template_id(self):
# if self.product_template_id is not None:
diff --git a/sf_base/security/ir.model.access.csv b/sf_base/security/ir.model.access.csv
index 782d924d..92bebe5b 100644
--- a/sf_base/security/ir.model.access.csv
+++ b/sf_base/security/ir.model.access.csv
@@ -9,16 +9,13 @@ access_sf_machine_brand_tags,sf_machine_brand_tags,model_sf_machine_brand_tags,b
access_sf_machine_brand_tags_admin,sf_machine_brand_tags_admin,model_sf_machine_brand_tags,base.group_system,1,1,1,0
access_sf_machine_control_system,sf_machine_control_system,model_sf_machine_control_system,base.group_user,1,1,1,0
access_sf_machine_control_system_admin,sf_machine_control_system_admin,model_sf_machine_control_system,base.group_system,1,1,1,0
-access_sf_processing_order,sf_processing_order,model_sf_processing_order,base.group_user,1,1,1,0
-access_sf_processing_order_admin,sf_processing_order_admin,model_sf_processing_order,base.group_system,1,1,1,0
+
access_sf_production_process,sf_production_process,model_sf_production_process,base.group_user,1,1,1,0
access_sf_production_process_admin,sf_production_process_admin,model_sf_production_process,base.group_system,1,1,1,0
access_sf_production_materials,sf_production_materials,model_sf_production_materials,base.group_user,1,1,1,0
access_sf_production_materials_admin,sf_production_materials_admin,model_sf_production_materials,base.group_system,1,1,1,0
access_sf_materials_model,sf_materials_model,model_sf_materials_model,base.group_user,1,1,1,0
access_sf_materials_model_admin,sf_materials_model_admin,model_sf_materials_model,base.group_system,1,1,1,0
-access_sf_processing_technology,sf_processing_technology,model_sf_processing_technology,base.group_user,1,1,1,0
-access_sf_processing_technology_admin,sf_processing_technology_admin,model_sf_processing_technology,base.group_system,1,1,1,0
access_sf_supplier_sort,sf_supplier_sort,model_sf_supplier_sort,base.group_user,1,1,1,0
access_sf_supplier_sort_admin,sf_supplier_sort_admin,model_sf_supplier_sort,base.group_system,1,1,1,0
access_sf_production_process_parameter,sf_production_process_parameter,model_sf_production_process_parameter,base.group_user,1,1,1,0
@@ -75,11 +72,15 @@ access_sf_cutting_speed_group_purchase_director,sf_cutting_speed_group_purchase_
access_sf_cutting_speed_group_sale_director,sf_cutting_speed_group_sale_director,model_sf_cutting_speed,sf_base.group_sale_director,1,1,1,0
access_sf_cutting_speed_group_plan_dispatch,sf_cutting_speed_group_plan_dispatch,model_sf_cutting_speed,sf_base.group_plan_dispatch,1,0,0,0
access_sf_cutting_speed_group_plan_director,sf_cutting_speed_group_plan_director,model_sf_cutting_speed,sf_base.group_plan_director,1,1,1,0
+access_sf_cutting_speed_group_quality_director,sf_cutting_speed_group_quality_director,model_sf_cutting_speed,sf_base.group_quality_director,1,1,1,0
+access_sf_cutting_speed_group_quality,sf_cutting_speed_group_quality,model_sf_cutting_speed,sf_base.group_quality,1,1,1,0
access_sf_feed_per_tooth_group_purchase_director,sf_feed_per_tooth_group_purchase_director,model_sf_feed_per_tooth,sf_base.group_purchase_director,1,1,0,0
access_sf_feed_per_tooth_group_sale_director,sf_feed_per_tooth_group_sale_director,model_sf_feed_per_tooth,sf_base.group_sale_director,1,1,0,0
access_sf_feed_per_tooth_group_plan_dispatch,sf_feed_per_tooth_group_plan_dispatch,model_sf_feed_per_tooth,sf_base.group_plan_dispatch,1,0,0,0
access_sf_feed_per_tooth_group_plan_director,sf_feed_per_tooth_group_plan_director,model_sf_feed_per_tooth,sf_base.group_plan_director,1,1,0,0
access_sf_feed_per_tooth_group_sale_salemanager,sf_feed_per_tooth_group_sale_salemanager,model_sf_feed_per_tooth,sf_base.group_sale_salemanager,1,0,0,0
+access_sf_feed_per_tooth_group_quality,sf_feed_per_tooth_group_quality,model_sf_feed_per_tooth,sf_base.group_quality,1,1,1,0
+access_sf_feed_per_tooth_group_quality_director,sf_feed_per_tooth_group_quality_director,model_sf_feed_per_tooth,sf_base.group_quality_director,1,1,1,0
access_sf_feed_per_tooth,sf_feed_per_tooth,model_sf_feed_per_tooth,base.group_user,1,1,1,0
access_sf_feed_per_tooth_admin,sf_feed_per_tooth_admin,model_sf_feed_per_tooth,base.group_system,1,1,1,0
access_sf_ramping_angle,sf_ramping_angle,model_sf_ramping_angle,base.group_user,1,1,1,1
@@ -94,7 +95,6 @@ access_sf_machine_brand_group_purchase_director,sf_machine_brand_group_purchase_
access_sf_machine_brand_group_sale_director,sf_machine_brand_group_sale_director,model_sf_machine_brand,sf_base.group_sale_director,1,0,0,0
access_sf_machine_brand_tags,sf_machine_brand_tags,model_sf_machine_brand_tags,base.group_user,1,1,1,1
access_sf_machine_control_system,sf_machine_control_system,model_sf_machine_control_system,sf_base.group_sf_mrp_user,1,0,0,0
-access_sf_processing_order,sf_processing_order,model_sf_processing_order,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_production_process,sf_production_process,model_sf_production_process,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_production_materials,sf_production_materials,model_sf_production_materials,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_production_materials_group_plan_director,sf_production_materials_group_plan_director,model_sf_production_materials,sf_base.group_plan_director,1,1,0,0
@@ -104,7 +104,6 @@ access_sf_materials_model,sf_materials_model,model_sf_materials_model,sf_base.gr
access_sf_materials_model_group_plan_director,sf_materials_model_group_plan_director,model_sf_materials_model,sf_base.group_plan_director,1,0,0,0
access_sf_materials_model_group_purchase_director,sf_materials_model_group_purchase_director,model_sf_materials_model,sf_base.group_purchase_director,1,0,0,0
access_sf_materials_model_group_sale_director,sf_materials_model_group_sale_director,model_sf_materials_model,sf_base.group_sale_director,1,0,0,0
-access_sf_processing_technology,sf_processing_technology,model_sf_processing_technology,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_supplier_sort,sf_supplier_sort,model_sf_supplier_sort,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_production_process_parameter,sf_production_process_parameter,model_sf_production_process_parameter,sf_base.group_sf_mrp_user,1,0,0,0
access_sf_production_process_category,sf_production_process_category,model_sf_production_process_category,sf_base.group_sf_mrp_user,1,0,0,0
@@ -143,9 +142,7 @@ access_sf_cutting_width_depth,sf_cutting_width_depth,model_sf_cutting_width_dept
access_sf_cutting_width_depth_group_purchase,sf_cutting_width_depth_group_purchase,model_sf_cutting_width_depth,sf_base.group_purchase,1,0,0,0
access_maintenance_equipment_image,maintenance_equipment_image,model_maintenance_equipment_image,base.group_user,1,1,1,1
access_purchase_order_group_purchase,access_purchase_order_group_purchase,purchase.model_purchase_order,sf_base.group_purchase,1,1,1,0
-access_purchase_order_group_purchase_director,access_purchase_order_group_purchase_director,purchase.model_purchase_order,sf_base.group_purchase_director,1,1,1,0
access_purchase_order_line_group_purchase,access_purchase_order_line_group_purchase,purchase.model_purchase_order_line,sf_base.group_purchase,1,1,1,0
-access_purchase_order_line_group_purchase_director,access_purchase_order_line_group_purchase_director,purchase.model_purchase_order_line,sf_base.group_purchase_director,1,1,1,0
access_spindle_taper_type,spindle_taper_type,model_spindle_taper_type,base.group_user,1,1,1,1
access_sf_tool_groups_group_plan_dispatch,sf_tool_groups,model_sf_tool_groups,sf_base.group_plan_dispatch,1,0,0,0
access_sf_tool_groups_group_sf_tool_user,sf_tool_groups,model_sf_tool_groups,sf_base.group_sf_tool_user,1,1,1,1
@@ -161,11 +158,9 @@ access_sf_machine_tool_type,sf_machine_tool_type,model_sf_machine_tool_type,sf_b
access_sf_machine_brand,sf_machine_brand,model_sf_machine_brand,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_machine_brand_tags,sf_machine_brand_tags,model_sf_machine_brand_tags,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_machine_control_system,sf_machine_control_system,model_sf_machine_control_system,sf_base.group_sf_mrp_user,1,1,0,0
-access_sf_processing_order,sf_processing_order,model_sf_processing_order,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_production_process,sf_production_process,model_sf_production_process,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_production_materials,sf_production_materials,model_sf_production_materials,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_materials_model,sf_materials_model,model_sf_materials_model,sf_base.group_sf_mrp_user,1,1,0,0
-access_sf_processing_technology,sf_processing_technology,model_sf_processing_technology,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_supplier_sort,sf_supplier_sort,model_sf_supplier_sort,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_production_process_parameter,sf_production_process_parameter,model_sf_production_process_parameter,sf_base.group_sf_mrp_user,1,1,0,0
access_sf_production_process_category,sf_production_process_category,model_sf_production_process_category,sf_base.group_sf_mrp_user,1,1,0,0
diff --git a/sf_base/views/base_view.xml b/sf_base/views/base_view.xml
index ca3aba53..a41d3a2b 100644
--- a/sf_base/views/base_view.xml
+++ b/sf_base/views/base_view.xml
@@ -173,6 +173,10 @@