From e693bd97f37a410cfc7ef10f630c6f262a69c210 Mon Sep 17 00:00:00 2001 From: "jinling.yang" Date: Tue, 4 Jul 2023 17:32:14 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BB=B6?= =?UTF-8?q?=E7=BB=84=E8=A3=85=EF=BC=8C=E5=B7=A5=E4=BB=B6=E5=87=BA=E5=BA=93?= =?UTF-8?q?=EF=BC=8C=E7=BB=84=E8=A3=85=E5=B7=A5=E4=BB=B6=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/models/__init__.py | 1 + sf_base/models/workpiece_clamping.py | 110 ++++++++++++++++++++++ sf_base/views/menu_fixture_view.xml | 7 ++ sf_base/views/workpiece_clamping_view.xml | 71 ++++++++++++++ 4 files changed, 189 insertions(+) create mode 100644 sf_base/models/workpiece_clamping.py create mode 100644 sf_base/views/workpiece_clamping_view.xml diff --git a/sf_base/models/__init__.py b/sf_base/models/__init__.py index cc906ab8..6811dd70 100644 --- a/sf_base/models/__init__.py +++ b/sf_base/models/__init__.py @@ -3,6 +3,7 @@ from . import common from . import tool_base_new from . import fixture from . import functional_fixture +from . import workpiece_clamping diff --git a/sf_base/models/workpiece_clamping.py b/sf_base/models/workpiece_clamping.py new file mode 100644 index 00000000..2f90da48 --- /dev/null +++ b/sf_base/models/workpiece_clamping.py @@ -0,0 +1,110 @@ +from odoo import models, fields, api + + +class WorkpieceClamping(models.Model): + _name = 'sf.workpiece.clamping' + _description = "工件装夹" + # 以下为坯料(工件)申请信息 + apply_code = fields.Char(string="申请坯料编码", size=25, required=True) + apply_name = fields.Char(string="申请坯料名称", size=25, required=True) + material_id = fields.Many2one('sf.production.materials', string="坯料材料", required=True) + apply_width = fields.Float(string="申请宽度", required=True) + apply_length = fields.Float(string="申请长度", required=True) + apply_height = fields.Float(string="申请高度", required=True) + apply_weight = fields.Float(string="申请重量", required=True) + apply_diameter = fields.Float(string="申请直径", required=True) + surface_accuracy = fields.Char(string="表面精度", required=True) + # 以下为坯料(工件)装夹信息 + chuck_name = fields.Char(string="卡盘名称", required=True) + chuck_brand_id = fields.Many2one('sf.machine.brand', string="卡盘品牌", required=True) + chuck_type_id = fields.Char(string="卡盘类型", required=True) + chuck_model_id = fields.Char(string="卡盘型号", required=True) + tray_name = fields.Char(string="托盘名称", required=True) + tray_brand_id = fields.Many2one('sf.machine.brand', string="托盘品牌", required=True) + tray_type_id = fields.Char(string="托盘类型", required=True) + tray_model_id = fields.Char(string="托盘型号", required=True) + real_code = fields.Char(string="真实坯料编码", size=25, required=True) + real_name = fields.Char(string="真实坯料名称", size=25, required=True) + real_width = fields.Float(string="真实宽度", required=True) + real_length = fields.Float(string="真实长度", required=True) + real_height = fields.Float(string="真实高度", required=True) + real_diameter = fields.Float(string="真实直径", required=True) + # 以下为坯料(工件)预调信息 + # hole_site = fields.Char(string="孔位", required=True) + # curve = fields.Char(string="曲线", required=True) + # straight_line = fields.Char(string="直线", required=True) + # x_axis = fields.Float(string="X轴", required=True) + # y_axis = fields.Float(string="Y轴", required=True) + # z_axis = fields.Float(string="Z轴", required=True) + # tool_radius = fields.Float(string="刀具半径", required=True) + # tool_length = fields.Float(string="刀具长度", required=True) + # tool_offset_point = fields.Float(string="刀具偏移点", required=True) + # tool_compensation_value = fields.Float(string="刀具补偿值", required=True) + # cutting_spindle_speed = fields.Float(string="切削主轴转速", required=True) + # cutting_feed_rate = fields.Float(string="切削进给速度", required=True) + # depth_of_cutting = fields.Float(string="切削深度", required=True) + # cutting_direction = fields.Char(string="切削方向", required=True) + # cnc_program_information = fields.Char(string="CNC程序信息", required=True) + + +class StockRemoval(models.Model): + _name = 'sf.stock.removal' + _description = "出库" + + code = fields.Char(string="功能夹具编码", size=25, required=True) + name = fields.Char(string="功能夹具名称", size=25, required=True) + type = fields.Char(string="功能夹具类型", required=True) + production_line = fields.Char(string="生产线", required=True) + machine_tool = fields.Many2one('sf.machine_tool', string="机床", required=True) + + +class Assemble(models.Model): + _name = 'sf.assemble' + _description = "组合装夹" + + functional_fixture_code = fields.Char(string="功能夹具编码", size=25, required=True) + functional_fixture_name = fields.Char(string="功能夹具名称", size=25, required=True) + functional_fixture_type = fields.Char(string="功能夹具类型", required=True) + chuck_name = fields.Char(string="卡盘名称", required=True) + chuck_brand_id = fields.Many2one('sf.machine.brand', string="卡盘品牌", required=True) + chuck_type_id = fields.Char(string="卡盘类型", required=True) + chuck_model_id = fields.Char(string="卡盘型号", required=True) + tray_name = fields.Char(string="托盘名称", required=True) + tray_brand_id = fields.Many2one('sf.machine.brand', string="托盘品牌", required=True) + tray_type_id = fields.Char(string="托盘类型", required=True) + tray_model_id = fields.Char(string="托盘型号", required=True) + real_code = fields.Char(string="真实坯料编码", size=25, required=True) + real_name = fields.Char(string="真实坯料名称", size=25, required=True) + total_wight = fields.Float(string="总重量", required=True) + maximum_carrying_weight = fields.Char(string="最大承载重量[kg]") + maximum_clamping_force = fields.Char(string="最大夹持力[n]") + production_line = fields.Char(string="生产线", required=True) + # 以下为智能工厂工单带过来的机床信息 + machine_tool = fields.Many2one('sf.machine_tool', string="机床名称", required=True) + machine_tool_code = fields.Char(string="机床编码", required=True) + machine_tool_startime = fields.Date(string="机床开始加工时间", required=True) + # 以下为智能工厂工单带过来的信息 + apply_staff = fields.Char(string="申请人", required=True) + apply_time = fields.Date(string="申请时间", required=True) + apply_reason = fields.Char(string="申请原因", required=True) + # 以下为装夹的信息 + preset_staff = fields.Char(string="预调名称", required=True) + preset_time = fields.Date(string="预调时间", required=True) + material_taker = fields.Char(string="领料人", required=True) + material_removal_time = fields.Date(string="领料出库时间", required=True) + + + + + + + + + + + + + + + + diff --git a/sf_base/views/menu_fixture_view.xml b/sf_base/views/menu_fixture_view.xml index 7186fe35..883b6599 100644 --- a/sf_base/views/menu_fixture_view.xml +++ b/sf_base/views/menu_fixture_view.xml @@ -38,4 +38,11 @@ name="功能夹具" sequence="4" /> + + \ No newline at end of file diff --git a/sf_base/views/workpiece_clamping_view.xml b/sf_base/views/workpiece_clamping_view.xml new file mode 100644 index 00000000..9b67a3a0 --- /dev/null +++ b/sf_base/views/workpiece_clamping_view.xml @@ -0,0 +1,71 @@ + + + + + + + search.sf.workpiece.clamping + sf.workpiece.clamping + + + + + + + + + + + 工件夹具 + sf.workpiece.clamping + + + + + + + + + + + + + + + + + + + + 工件夹具 + sf.workpiece.clamping + +
+ + + + + + + + + + + + + +
+
+
+ + + 工件夹具 + ir.actions.act_window + sf.workpiece.clamping + tree,form + + +
\ No newline at end of file From 66cd682f7d596e3a10b5e965f32732aff35f5294 Mon Sep 17 00:00:00 2001 From: "jinling.yang" Date: Wed, 5 Jul 2023 17:34:43 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=B7=A5=E4=BB=B6?= =?UTF-8?q?=E8=A3=85=E5=A4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/__init__.py | 2 + sf_base/__manifest__.py | 3 + sf_base/models/__init__.py | 2 +- sf_base/models/assemble.py | 54 ++++++ sf_base/models/workpiece_clamping.py | 110 ------------ sf_base/security/ir.model.access.csv | 9 +- sf_base/views/assemble_view.xml | 161 ++++++++++++++++++ sf_base/views/menu_fixture_view.xml | 4 +- sf_base/views/workpiece_clamping_view.xml | 71 -------- sf_base/wizard/__init__.py | 4 + sf_base/wizard/stock_removal_wizard.py | 21 +++ sf_base/wizard/stock_removal_wizard_view.xml | 34 ++++ sf_base/wizard/workpiece_clamping_wizard.py | 56 ++++++ .../wizard/workpiece_clamping_wizard_view.xml | 83 +++++++++ 14 files changed, 426 insertions(+), 188 deletions(-) create mode 100644 sf_base/models/assemble.py delete mode 100644 sf_base/models/workpiece_clamping.py create mode 100644 sf_base/views/assemble_view.xml delete mode 100644 sf_base/views/workpiece_clamping_view.xml create mode 100644 sf_base/wizard/__init__.py create mode 100644 sf_base/wizard/stock_removal_wizard.py create mode 100644 sf_base/wizard/stock_removal_wizard_view.xml create mode 100644 sf_base/wizard/workpiece_clamping_wizard.py create mode 100644 sf_base/wizard/workpiece_clamping_wizard_view.xml diff --git a/sf_base/__init__.py b/sf_base/__init__.py index 60182bcc..070e5f4e 100644 --- a/sf_base/__init__.py +++ b/sf_base/__init__.py @@ -1,2 +1,4 @@ from . import models from . import commons +from . import wizard + diff --git a/sf_base/__manifest__.py b/sf_base/__manifest__.py index d6f8a88a..85182220 100644 --- a/sf_base/__manifest__.py +++ b/sf_base/__manifest__.py @@ -18,6 +18,9 @@ 'views/common_view.xml', 'views/fixture_view.xml', 'views/functional_fixture_view.xml', + 'wizard/workpiece_clamping_wizard_view.xml', + 'wizard/stock_removal_wizard_view.xml', + 'views/assemble_view.xml', 'views/menu_view.xml', "views/tool_views.xml", "views/tool_menu.xml", diff --git a/sf_base/models/__init__.py b/sf_base/models/__init__.py index 6811dd70..f81781ec 100644 --- a/sf_base/models/__init__.py +++ b/sf_base/models/__init__.py @@ -3,7 +3,7 @@ from . import common from . import tool_base_new from . import fixture from . import functional_fixture -from . import workpiece_clamping +from . import assemble diff --git a/sf_base/models/assemble.py b/sf_base/models/assemble.py new file mode 100644 index 00000000..902bedc6 --- /dev/null +++ b/sf_base/models/assemble.py @@ -0,0 +1,54 @@ +from odoo import models, fields, api + + +class Assemble(models.Model): + _name = 'sf.assemble' + _description = "组合装夹" + + functional_fixture_code = fields.Char(string="功能夹具编码", size=25, required=True) + functional_fixture_name = fields.Char(string="功能夹具名称", size=25, required=True) + functional_fixture_type = fields.Char(string="功能夹具类型", required=True) + chuck_name = fields.Char(string="卡盘名称", required=True) + chuck_brand_id = fields.Many2one('sf.machine.brand', string="卡盘品牌", required=True) + chuck_type_id = fields.Char(string="卡盘类型", required=True) + chuck_model_id = fields.Char(string="卡盘型号", required=True) + tray_name = fields.Char(string="托盘名称", required=True) + tray_brand_id = fields.Many2one('sf.machine.brand', string="托盘品牌", required=True) + tray_type_id = fields.Char(string="托盘类型", required=True) + tray_model_id = fields.Char(string="托盘型号", required=True) + real_code = fields.Char(string="真实坯料编码", size=25, required=True) + real_name = fields.Char(string="真实坯料名称", size=25, required=True) + total_wight = fields.Float(string="总重量", required=True) + maximum_carrying_weight = fields.Char(string="最大承载重量[kg]") + maximum_clamping_force = fields.Char(string="最大夹持力[n]") + production_line = fields.Char(string="生产线", required=True) + # 以下为智能工厂工单带过来的机床信息 + machine_tool = fields.Many2one('sf.machine_tool', string="机床名称", required=True) + machine_tool_startime = fields.Date(string="机床开始加工时间", required=True) + # 以下为智能工厂工单带过来的信息 + apply_staff = fields.Char(string="申请人", required=True) + machine_tool_code = fields.Char(string="机床编码", required=True) + apply_time = fields.Date(string="申请时间", required=True) + apply_reason = fields.Char(string="申请原因", required=True) + # 以下为装夹的信息 + preset_staff = fields.Char(string="预调名称", required=True) + preset_time = fields.Date(string="预调时间", required=True) + material_taker = fields.Char(string="领料人", required=True) + material_removal_time = fields.Date(string="领料出库时间", required=True) + remark = fields.Char(string="备注", required=True) + + + + + + + + + + + + + + + + diff --git a/sf_base/models/workpiece_clamping.py b/sf_base/models/workpiece_clamping.py deleted file mode 100644 index 2f90da48..00000000 --- a/sf_base/models/workpiece_clamping.py +++ /dev/null @@ -1,110 +0,0 @@ -from odoo import models, fields, api - - -class WorkpieceClamping(models.Model): - _name = 'sf.workpiece.clamping' - _description = "工件装夹" - # 以下为坯料(工件)申请信息 - apply_code = fields.Char(string="申请坯料编码", size=25, required=True) - apply_name = fields.Char(string="申请坯料名称", size=25, required=True) - material_id = fields.Many2one('sf.production.materials', string="坯料材料", required=True) - apply_width = fields.Float(string="申请宽度", required=True) - apply_length = fields.Float(string="申请长度", required=True) - apply_height = fields.Float(string="申请高度", required=True) - apply_weight = fields.Float(string="申请重量", required=True) - apply_diameter = fields.Float(string="申请直径", required=True) - surface_accuracy = fields.Char(string="表面精度", required=True) - # 以下为坯料(工件)装夹信息 - chuck_name = fields.Char(string="卡盘名称", required=True) - chuck_brand_id = fields.Many2one('sf.machine.brand', string="卡盘品牌", required=True) - chuck_type_id = fields.Char(string="卡盘类型", required=True) - chuck_model_id = fields.Char(string="卡盘型号", required=True) - tray_name = fields.Char(string="托盘名称", required=True) - tray_brand_id = fields.Many2one('sf.machine.brand', string="托盘品牌", required=True) - tray_type_id = fields.Char(string="托盘类型", required=True) - tray_model_id = fields.Char(string="托盘型号", required=True) - real_code = fields.Char(string="真实坯料编码", size=25, required=True) - real_name = fields.Char(string="真实坯料名称", size=25, required=True) - real_width = fields.Float(string="真实宽度", required=True) - real_length = fields.Float(string="真实长度", required=True) - real_height = fields.Float(string="真实高度", required=True) - real_diameter = fields.Float(string="真实直径", required=True) - # 以下为坯料(工件)预调信息 - # hole_site = fields.Char(string="孔位", required=True) - # curve = fields.Char(string="曲线", required=True) - # straight_line = fields.Char(string="直线", required=True) - # x_axis = fields.Float(string="X轴", required=True) - # y_axis = fields.Float(string="Y轴", required=True) - # z_axis = fields.Float(string="Z轴", required=True) - # tool_radius = fields.Float(string="刀具半径", required=True) - # tool_length = fields.Float(string="刀具长度", required=True) - # tool_offset_point = fields.Float(string="刀具偏移点", required=True) - # tool_compensation_value = fields.Float(string="刀具补偿值", required=True) - # cutting_spindle_speed = fields.Float(string="切削主轴转速", required=True) - # cutting_feed_rate = fields.Float(string="切削进给速度", required=True) - # depth_of_cutting = fields.Float(string="切削深度", required=True) - # cutting_direction = fields.Char(string="切削方向", required=True) - # cnc_program_information = fields.Char(string="CNC程序信息", required=True) - - -class StockRemoval(models.Model): - _name = 'sf.stock.removal' - _description = "出库" - - code = fields.Char(string="功能夹具编码", size=25, required=True) - name = fields.Char(string="功能夹具名称", size=25, required=True) - type = fields.Char(string="功能夹具类型", required=True) - production_line = fields.Char(string="生产线", required=True) - machine_tool = fields.Many2one('sf.machine_tool', string="机床", required=True) - - -class Assemble(models.Model): - _name = 'sf.assemble' - _description = "组合装夹" - - functional_fixture_code = fields.Char(string="功能夹具编码", size=25, required=True) - functional_fixture_name = fields.Char(string="功能夹具名称", size=25, required=True) - functional_fixture_type = fields.Char(string="功能夹具类型", required=True) - chuck_name = fields.Char(string="卡盘名称", required=True) - chuck_brand_id = fields.Many2one('sf.machine.brand', string="卡盘品牌", required=True) - chuck_type_id = fields.Char(string="卡盘类型", required=True) - chuck_model_id = fields.Char(string="卡盘型号", required=True) - tray_name = fields.Char(string="托盘名称", required=True) - tray_brand_id = fields.Many2one('sf.machine.brand', string="托盘品牌", required=True) - tray_type_id = fields.Char(string="托盘类型", required=True) - tray_model_id = fields.Char(string="托盘型号", required=True) - real_code = fields.Char(string="真实坯料编码", size=25, required=True) - real_name = fields.Char(string="真实坯料名称", size=25, required=True) - total_wight = fields.Float(string="总重量", required=True) - maximum_carrying_weight = fields.Char(string="最大承载重量[kg]") - maximum_clamping_force = fields.Char(string="最大夹持力[n]") - production_line = fields.Char(string="生产线", required=True) - # 以下为智能工厂工单带过来的机床信息 - machine_tool = fields.Many2one('sf.machine_tool', string="机床名称", required=True) - machine_tool_code = fields.Char(string="机床编码", required=True) - machine_tool_startime = fields.Date(string="机床开始加工时间", required=True) - # 以下为智能工厂工单带过来的信息 - apply_staff = fields.Char(string="申请人", required=True) - apply_time = fields.Date(string="申请时间", required=True) - apply_reason = fields.Char(string="申请原因", required=True) - # 以下为装夹的信息 - preset_staff = fields.Char(string="预调名称", required=True) - preset_time = fields.Date(string="预调时间", required=True) - material_taker = fields.Char(string="领料人", required=True) - material_removal_time = fields.Date(string="领料出库时间", required=True) - - - - - - - - - - - - - - - - diff --git a/sf_base/security/ir.model.access.csv b/sf_base/security/ir.model.access.csv index 175e4589..4b84fcfe 100644 --- a/sf_base/security/ir.model.access.csv +++ b/sf_base/security/ir.model.access.csv @@ -14,20 +14,21 @@ access_sf_supplier_sort,sf_supplier_sort,model_sf_supplier_sort,base.group_user, access_sf_production_process_parameter,sf_production_process_parameter,model_sf_production_process_parameter,base.group_user,1,1,1,1 access_sf_production_process_category,sf_production_process_category,model_sf_production_process_category,base.group_user,1,1,1,1 access_sf_machine_tool_category,sf_machine_tool_category,model_sf_machine_tool_category,base.group_user,1,1,1,1 - access_sf_cutting_tool_material,sf_cutting_tool_material,model_sf_cutting_tool_material,base.group_user,1,1,1,1 access_sf_cutting_tool_type,sf_cutting_tool_type,model_sf_cutting_tool_type,base.group_user,1,1,1,1 access_sf_cutting_tool_model,sf_cutting_tool_model,model_sf_cutting_tool_model,base.group_user,1,1,1,1 access_sf_functional_cutting_tool,sf_functional_cutting_tool,model_sf_functional_cutting_tool,base.group_user,1,1,1,1 access_sf_functional_cutting_tool_model,sf_functional_cutting_tool_model,model_sf_functional_cutting_tool_model,base.group_user,1,1,1,1 - - - access_sf_fixture_material,sf_fixture_material,model_sf_fixture_material,base.group_user,1,1,1,1 access_sf_multi_mounting_type,sf_multi_mounting_type,model_sf_multi_mounting_type,base.group_user,1,1,1,1 access_sf_fixture_model,sf_fixture_model,model_sf_fixture_model,base.group_user,1,1,1,1 access_sf_functional_fixture_type,sf_functional_fixture_type,model_sf_functional_fixture_type,base.group_user,1,1,1,1 access_sf_functional_fixture,sf_functional_fixture,model_sf_functional_fixture,base.group_user,1,1,1,1 +access_sf_workpiece_clamping_wizard,sf_workpiece_clamping_wizard,model_sf_workpiece_clamping_wizard,base.group_user,1,1,1,1 +access_sf_stock_removal_wizard,sf_stock_removal_wizard,model_sf_stock_removal_wizard,base.group_user,1,1,1,1 +access_sf_assemble,sf_assemble,model_sf_assemble,base.group_user,1,1,1,1 + + diff --git a/sf_base/views/assemble_view.xml b/sf_base/views/assemble_view.xml new file mode 100644 index 00000000..20da39b2 --- /dev/null +++ b/sf_base/views/assemble_view.xml @@ -0,0 +1,161 @@ + + + + + + + search.sf.assemble + sf.assemble + + + + + + + + + + + + 工件夹具 + sf.assemble + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 工件夹具 + sf.assemble + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + 工件夹具 + ir.actions.act_window + sf.assemble + tree,form + + +
\ No newline at end of file diff --git a/sf_base/views/menu_fixture_view.xml b/sf_base/views/menu_fixture_view.xml index 883b6599..64d5873a 100644 --- a/sf_base/views/menu_fixture_view.xml +++ b/sf_base/views/menu_fixture_view.xml @@ -39,9 +39,9 @@ sequence="4" /> - diff --git a/sf_base/views/workpiece_clamping_view.xml b/sf_base/views/workpiece_clamping_view.xml deleted file mode 100644 index 9b67a3a0..00000000 --- a/sf_base/views/workpiece_clamping_view.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - search.sf.workpiece.clamping - sf.workpiece.clamping - - - - - - - - - - - 工件夹具 - sf.workpiece.clamping - - - - - - - - - - - - - - - - - - - - 工件夹具 - sf.workpiece.clamping - -
- - - - - - - - - - - - - -
-
-
- - - 工件夹具 - ir.actions.act_window - sf.workpiece.clamping - tree,form - - -
\ No newline at end of file diff --git a/sf_base/wizard/__init__.py b/sf_base/wizard/__init__.py new file mode 100644 index 00000000..ac69a1da --- /dev/null +++ b/sf_base/wizard/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import workpiece_clamping_wizard +from . import stock_removal_wizard diff --git a/sf_base/wizard/stock_removal_wizard.py b/sf_base/wizard/stock_removal_wizard.py new file mode 100644 index 00000000..58d7abc7 --- /dev/null +++ b/sf_base/wizard/stock_removal_wizard.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- + +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError +import logging +_logger = logging.getLogger(__name__) + + +class StockRemovalWizard(models.Model): + _name = 'sf.stock.removal.wizard' + _description = "出库" + + code = fields.Char(string="功能夹具编码", size=25, required=True) + name = fields.Char(string="功能夹具名称", size=25, required=True) + type = fields.Char(string="功能夹具类型", required=True) + production_line = fields.Char(string="生产线", required=True) + machine_tool = fields.Many2one('sf.machine_tool', string="机床", required=True) + + def submit(self): + return 1 + diff --git a/sf_base/wizard/stock_removal_wizard_view.xml b/sf_base/wizard/stock_removal_wizard_view.xml new file mode 100644 index 00000000..d669cdca --- /dev/null +++ b/sf_base/wizard/stock_removal_wizard_view.xml @@ -0,0 +1,34 @@ + + + + sf.stock.removal.wizard.form.view + sf.stock.removal.wizard + +
+ + + + + + + + + + + +
+
+
+
+
+ + + 出库 + sf.stock.removal.wizard + form + new + +
+
\ No newline at end of file diff --git a/sf_base/wizard/workpiece_clamping_wizard.py b/sf_base/wizard/workpiece_clamping_wizard.py new file mode 100644 index 00000000..81489bc8 --- /dev/null +++ b/sf_base/wizard/workpiece_clamping_wizard.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- + +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError +import logging + +_logger = logging.getLogger(__name__) + + +class WorkpieceClampingWizard(models.Model): + _name = 'sf.workpiece.clamping.wizard' + _description = "工件装夹" + # 以下为坯料(工件)申请信息 + apply_code = fields.Char(string="申请坯料编码", size=25, required=True) + apply_name = fields.Char(string="申请坯料名称", size=25, required=True) + material_id = fields.Many2one('sf.production.materials', string="坯料材料", required=True) + apply_width = fields.Float(string="申请宽度", required=True) + apply_length = fields.Float(string="申请长度", required=True) + apply_height = fields.Float(string="申请高度", required=True) + apply_weight = fields.Float(string="申请重量", required=True) + apply_diameter = fields.Float(string="申请直径", required=True) + surface_accuracy = fields.Char(string="表面精度", required=True) + # 以下为坯料(工件)装夹信息 + chuck_name = fields.Char(string="卡盘名称", required=True) + chuck_brand_id = fields.Many2one('sf.machine.brand', string="卡盘品牌", required=True) + chuck_type_id = fields.Char(string="卡盘类型", required=True) + chuck_model_id = fields.Char(string="卡盘型号", required=True) + tray_name = fields.Char(string="托盘名称", required=True) + tray_brand_id = fields.Many2one('sf.machine.brand', string="托盘品牌", required=True) + tray_type_id = fields.Char(string="托盘类型", required=True) + tray_model_id = fields.Char(string="托盘型号", required=True) + real_code = fields.Char(string="真实坯料编码", size=25, required=True) + real_name = fields.Char(string="真实坯料名称", size=25, required=True) + real_width = fields.Float(string="真实宽度", required=True) + real_length = fields.Float(string="真实长度", required=True) + real_height = fields.Float(string="真实高度", required=True) + real_diameter = fields.Float(string="真实直径", required=True) + # 以下为坯料(工件)预调信息 + # hole_site = fields.Char(string="孔位", required=True) + # curve = fields.Char(string="曲线", required=True) + # straight_line = fields.Char(string="直线", required=True) + # x_axis = fields.Float(string="X轴", required=True) + # y_axis = fields.Float(string="Y轴", required=True) + # z_axis = fields.Float(string="Z轴", required=True) + # tool_radius = fields.Float(string="刀具半径", required=True) + # tool_length = fields.Float(string="刀具长度", required=True) + # tool_offset_point = fields.Float(string="刀具偏移点", required=True) + # tool_compensation_value = fields.Float(string="刀具补偿值", required=True) + # cutting_spindle_speed = fields.Float(string="切削主轴转速", required=True) + # cutting_feed_rate = fields.Float(string="切削进给速度", required=True) + # depth_of_cutting = fields.Float(string="切削深度", required=True) + # cutting_direction = fields.Char(string="切削方向", required=True) + preset_program_information = fields.Char(string="预调程序信息", required=True) + + def submit(self): + return 1 diff --git a/sf_base/wizard/workpiece_clamping_wizard_view.xml b/sf_base/wizard/workpiece_clamping_wizard_view.xml new file mode 100644 index 00000000..30cb1591 --- /dev/null +++ b/sf_base/wizard/workpiece_clamping_wizard_view.xml @@ -0,0 +1,83 @@ + + + + sf.workpiece.clamping.wizard.form.view + sf.workpiece.clamping.wizard + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ + + 装夹 + sf.workpiece.clamping.wizard + form + new + +
+
\ No newline at end of file From 7743c9658cc206d7b29977a12afe3d3f51788d15 Mon Sep 17 00:00:00 2001 From: "jinling.yang" Date: Mon, 10 Jul 2023 17:33:17 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mrp_workorder/views/mrp_workorder_views.xml | 5 +- sf_maintenance/__manifest__.py | 3 +- sf_manufacturing/models/mrp_workorder.py | 12 ++++ sf_manufacturing/views/mrp_workorder_view.xml | 69 +++++++++++++------ 4 files changed, 63 insertions(+), 26 deletions(-) diff --git a/mrp_workorder/views/mrp_workorder_views.xml b/mrp_workorder/views/mrp_workorder_views.xml index efabc78b..61491d4c 100644 --- a/mrp_workorder/views/mrp_workorder_views.xml +++ b/mrp_workorder/views/mrp_workorder_views.xml @@ -160,10 +160,7 @@ if env.user.has_group('mrp.group_mrp_workorder_dependencies'): - - - - + diff --git a/sf_maintenance/__manifest__.py b/sf_maintenance/__manifest__.py index cc2a1d46..17b1e541 100644 --- a/sf_maintenance/__manifest__.py +++ b/sf_maintenance/__manifest__.py @@ -12,12 +12,11 @@ 'data': [ 'security/group_security.xml', 'security/ir.model.access.csv', - 'views/production_line_base.py', + 'views/production_line_view.xml', 'views/maintenance_views.xml', 'views/maintenance_logs_views.xml', 'views/equipment_maintenance_standards_views.xml', 'views/maintenance_request_views.xml', - 'views/production_line_view.xml', ], 'installable': True, 'application': False, diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index 2c38616e..3b1ecdb1 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -524,6 +524,18 @@ class ResMrpWorkOrder(models.Model): }) super().button_finish() + def action_view_schedule_tree(self): + # 执行打开树视图的操作(已排程的工单) + return { + 'name': 'Schedule Work Order Tree', + 'type': 'ir.actions.act_window', + 'res_model': 'mrp.workorder', + 'target': 'current', + 'view_mode': 'tree', + 'views': [[self.env.ref('mrp.mrp_production_workorder_tree_editable_view').id], 'tree'], + 'domain': [('schedule_state', '=', '已排')], + } + class CNCprocessing(models.Model): _name = 'sf.cnc.processing' diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml index e024b46c..db5f2ed4 100644 --- a/sf_manufacturing/views/mrp_workorder_view.xml +++ b/sf_manufacturing/views/mrp_workorder_view.xml @@ -11,7 +11,6 @@ - @@ -96,26 +95,26 @@ - - 工单 - ir.actions.act_window - mrp.workorder - tree,kanban,form - + + + + + + - - - - - - - - -

- 没有已排程的工单! -

-
-
+ + + + + + + + + + + + + @@ -440,5 +439,35 @@
+ + + + 工单 + ir.actions.act_window + mrp.workorder + tree,kanban,form + + + [('schedule_state', '=', '已排')] + + + + + + + + + + + + + + + + From 5beb7b341701c2dcf82729659d080c03136a814a Mon Sep 17 00:00:00 2001 From: "jinling.yang" Date: Thu, 13 Jul 2023 16:57:48 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=A3=85=E5=A4=B9?= =?UTF-8?q?=E5=B7=A5=E5=8D=95=EF=BC=8C=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BB=B6?= =?UTF-8?q?=E8=A3=85=E5=A4=B9page=EF=BC=8C=E5=90=8D=E5=AD=97=E4=B8=BA?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E7=9A=84page=E5=90=8D=E7=A7=B0=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E7=89=A9=E6=96=99=EF=BC=8C=E5=8E=BB=E6=8E=89=E5=8D=95?= =?UTF-8?q?=E7=8B=AC=E7=9A=84=E5=B7=A5=E4=BB=B6=E8=A3=85=E5=A4=B9=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/__manifest__.py | 1 - sf_base/models/__init__.py | 1 - sf_base/models/assemble.py | 44 ------ sf_base/models/functional_fixture.py | 2 +- sf_base/security/ir.model.access.csv | 1 - sf_base/views/assemble_view.xml | 131 ------------------ sf_base/views/functional_fixture_view.xml | 4 +- sf_base/views/menu_fixture_view.xml | 7 - sf_manufacturing/models/mrp_production.py | 1 + sf_manufacturing/models/mrp_workorder.py | 41 ++++-- sf_manufacturing/views/mrp_workorder_view.xml | 126 ++++++++--------- sf_mrs_connect/models/sync_common.py | 8 +- 12 files changed, 91 insertions(+), 276 deletions(-) delete mode 100644 sf_base/models/assemble.py delete mode 100644 sf_base/views/assemble_view.xml diff --git a/sf_base/__manifest__.py b/sf_base/__manifest__.py index 85182220..6f05a4a5 100644 --- a/sf_base/__manifest__.py +++ b/sf_base/__manifest__.py @@ -20,7 +20,6 @@ 'views/functional_fixture_view.xml', 'wizard/workpiece_clamping_wizard_view.xml', 'wizard/stock_removal_wizard_view.xml', - 'views/assemble_view.xml', 'views/menu_view.xml', "views/tool_views.xml", "views/tool_menu.xml", diff --git a/sf_base/models/__init__.py b/sf_base/models/__init__.py index f81781ec..cc906ab8 100644 --- a/sf_base/models/__init__.py +++ b/sf_base/models/__init__.py @@ -3,7 +3,6 @@ from . import common from . import tool_base_new from . import fixture from . import functional_fixture -from . import assemble diff --git a/sf_base/models/assemble.py b/sf_base/models/assemble.py deleted file mode 100644 index c8568f99..00000000 --- a/sf_base/models/assemble.py +++ /dev/null @@ -1,44 +0,0 @@ -from odoo import models, fields, api - - -class Assemble(models.Model): - _name = 'sf.assemble' - _description = "组合装夹" - - functional_fixture_code = fields.Char(string="功能夹具编码", readonly=True) - name = fields.Char(string="功能夹具名称", readonly=True) - functional_fixture_type_id = fields.Many2one('sf.functional.fixture.type', string="功能夹具类型", readonly=True) - chuck_name = fields.Char(string="卡盘名称") - chuck_brand_id = fields.Many2one('sf.machine.brand', string="卡盘品牌") - chuck_type_id = fields.Char(string="卡盘类型") - chuck_model_id = fields.Char(string="卡盘型号") - tray_name = fields.Char(string="托盘名称") - tray_brand_id = fields.Many2one('sf.machine.brand', string="托盘品牌") - tray_type_id = fields.Char(string="托盘类型") - tray_model_id = fields.Char(string="托盘型号") - real_code = fields.Char(string="真实坯料编码") - real_name = fields.Char(string="真实坯料名称") - real_width = fields.Float(string="真实宽度") - real_length = fields.Float(string="真实长度") - real_height = fields.Float(string="真实高度") - real_diameter = fields.Float(string="真实直径") - total_wight = fields.Float(string="总重量") - maximum_carrying_weight = fields.Char(string="最大承载重量[kg]") - maximum_clamping_force = fields.Char(string="最大夹持力[n]") - production_line = fields.Char(string="生产线") - # 以下为智能工厂工单带过来的机床信息 - machine_tool = fields.Many2one('sf.machine_tool', string="机床名称") - machine_tool_startime = fields.Date(string="机床开始加工时间") - # 以下为智能工厂工单带过来的信息 - apply_staff = fields.Char(string="申请人") - machine_tool_code = fields.Char(string="机床编码") - apply_time = fields.Date(string="申请时间") - apply_reason = fields.Char(string="申请原因") - # 以下为装夹的信息 - preset_staff = fields.Char(string="预调名称") - preset_time = fields.Date(string="预调时间") - material_taker = fields.Char(string="领料人") - material_removal_time = fields.Date(string="领料出库时间") - remark = fields.Char(string="备注") - # 以下为出库的信息 - stock_removal_code = fields.Char(string="出库人") diff --git a/sf_base/models/functional_fixture.py b/sf_base/models/functional_fixture.py index f8acaab2..cce1d9e3 100644 --- a/sf_base/models/functional_fixture.py +++ b/sf_base/models/functional_fixture.py @@ -16,7 +16,7 @@ class FunctionalFixture(models.Model): code = fields.Char(string='编码', readonly=True) name = fields.Char(string="名称", size=15, required=True) - functional_fixture_type_id = fields.Many2one('sf.functional.fixture.type', string="功能夹具类型", required=True) + type_id = fields.Many2one('sf.functional.fixture.type', string="功能夹具类型", required=True) zero_chuck_model_ids = fields.Many2many('sf.fixture.model', 'rel_fixture_model_zero_chuck', string="零点卡盘型号", required=True, domain=[('fixture_material_type', '=', '零点卡盘')]) diff --git a/sf_base/security/ir.model.access.csv b/sf_base/security/ir.model.access.csv index a3fdb8e5..16f639b7 100644 --- a/sf_base/security/ir.model.access.csv +++ b/sf_base/security/ir.model.access.csv @@ -26,7 +26,6 @@ access_sf_functional_fixture_type,sf_functional_fixture_type,model_sf_functional access_sf_functional_fixture,sf_functional_fixture,model_sf_functional_fixture,base.group_user,1,1,1,1 access_sf_workpiece_clamping_wizard,sf_workpiece_clamping_wizard,model_sf_workpiece_clamping_wizard,base.group_user,1,1,1,1 access_sf_stock_removal_wizard,sf_stock_removal_wizard,model_sf_stock_removal_wizard,base.group_user,1,1,1,1 -access_sf_assemble,sf_assemble,model_sf_assemble,base.group_user,1,1,1,1 diff --git a/sf_base/views/assemble_view.xml b/sf_base/views/assemble_view.xml deleted file mode 100644 index ccad42f9..00000000 --- a/sf_base/views/assemble_view.xml +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - search.sf.assemble - sf.assemble - - - - - - - - - - - - 工件夹具 - sf.assemble - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 工件夹具 - sf.assemble - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - - 工件夹具 - ir.actions.act_window - sf.assemble - tree,form - - -
\ No newline at end of file diff --git a/sf_base/views/functional_fixture_view.xml b/sf_base/views/functional_fixture_view.xml index 799c6351..2cf4d50a 100644 --- a/sf_base/views/functional_fixture_view.xml +++ b/sf_base/views/functional_fixture_view.xml @@ -82,7 +82,7 @@ - +
@@ -98,7 +98,7 @@ - + diff --git a/sf_base/views/menu_fixture_view.xml b/sf_base/views/menu_fixture_view.xml index 64d5873a..7186fe35 100644 --- a/sf_base/views/menu_fixture_view.xml +++ b/sf_base/views/menu_fixture_view.xml @@ -38,11 +38,4 @@ name="功能夹具" sequence="4" /> - - \ No newline at end of file diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index 3507919d..05bacce5 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -6,6 +6,7 @@ from odoo import api, fields, models, _ class MrpProduction(models.Model): _inherit = 'mrp.production' _description = "制造订单" + _order = 'create_date desc' tray_ids = fields.One2many('sf.tray', 'production_id', string="托盘") maintenance_count = fields.Integer(compute='_compute_maintenance_count', string="Number of maintenance requests") diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index 3b1ecdb1..a5b110d7 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -16,7 +16,7 @@ from odoo.addons.sf_mrs_connect.models.ftp_operate import FtpController class ResMrpWorkOrder(models.Model): _inherit = 'mrp.workorder' - _order = 'sequence' + _order = 'sequence asc,create_date desc' product_tmpl_id_length = fields.Float(related='production_id.product_tmpl_id.length', readonly=True, store=True, check_company=True, string="坯料长度(mm)") @@ -108,6 +108,33 @@ class ResMrpWorkOrder(models.Model): supplier_id = fields.Many2one('res.partner', string='外协供应商') equipment_id = fields.Many2one('maintenance.equipment', string='加工设备') schedule_state = fields.Selection(related='production_id.schedule_state', store=True) + # 工件装夹信息 + functional_fixture_code = fields.Char(string="功能夹具编码", readonly=True) + functional_fixture_serial_number = fields.Char(string="功能夹具序列号", readonly=True) + functional_fixture_id = fields.Many2one('sf.functional.fixture', string="功能夹具") + functional_fixture_type_id = fields.Many2one('sf.functional.fixture.type', string="功能夹具类型", readonly=True) + chuck_serial_number = fields.Char(string="卡盘序列号") + chuck_name = fields.Char(string="卡盘名称") + chuck_brand_id = fields.Many2one('sf.machine.brand', string="卡盘品牌") + chuck_type_id = fields.Char(string="卡盘类型") + chuck_model_id = fields.Char(string="卡盘型号") + tray_serial_number = fields.Char(string="卡盘序列号") + tray_name = fields.Char(string="托盘名称") + tray_brand_id = fields.Many2one('sf.machine.brand', string="托盘品牌") + tray_type_id = fields.Char(string="托盘类型") + tray_model_id = fields.Char(string="托盘型号") + total_wight = fields.Float(string="总重量") + maximum_carrying_weight = fields.Char(string="最大承载重量[kg]") + maximum_clamping_force = fields.Char(string="最大夹持力[n]") + production_line = fields.Char(string="生产线") + preset_program_information = fields.Char(string="预调程序信息") + + @api.onchange('functional_fixture_id') + def _onchange_functional_fixture_id(self): + if self.functional_fixture_id: + self.functional_fixture_code = self.functional_fixture_id.code + self.functional_fixture_type_id = self.functional_fixture_id.type_id.id + def get_no_data(self, production_id): process_parameter_workorder = self.search( @@ -524,18 +551,6 @@ class ResMrpWorkOrder(models.Model): }) super().button_finish() - def action_view_schedule_tree(self): - # 执行打开树视图的操作(已排程的工单) - return { - 'name': 'Schedule Work Order Tree', - 'type': 'ir.actions.act_window', - 'res_model': 'mrp.workorder', - 'target': 'current', - 'view_mode': 'tree', - 'views': [[self.env.ref('mrp.mrp_production_workorder_tree_editable_view').id], 'tree'], - 'domain': [('schedule_state', '=', '已排')], - } - class CNCprocessing(models.Model): _name = 'sf.cnc.processing' diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml index db5f2ed4..c4152c3c 100644 --- a/sf_manufacturing/views/mrp_workorder_view.xml +++ b/sf_manufacturing/views/mrp_workorder_view.xml @@ -95,39 +95,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - mrp.production.workorder.tray.form.inherit.sf mrp.workorder @@ -137,6 +104,7 @@ +