From 01fa7bbe87380541817423d6a4bc47a17c376412 Mon Sep 17 00:00:00 2001 From: guanhuan Date: Thu, 12 Dec 2024 14:39:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E9=87=8F=E9=87=8D=E6=96=B0=E5=AE=89?= =?UTF-8?q?=E6=8E=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/__manifest__.py | 2 + sf_manufacturing/security/ir.model.access.csv | 2 + .../views/mrp_workorder_batch_replan.xml | 17 ++++++++ sf_manufacturing/wizard/__init__.py | 1 + .../mrp_workorder_batch_replan_wizard.py | 42 +++++++++++++++++++ ...rp_workorder_batch_replan_wizard_views.xml | 32 ++++++++++++++ 6 files changed, 96 insertions(+) create mode 100644 sf_manufacturing/views/mrp_workorder_batch_replan.xml create mode 100644 sf_manufacturing/wizard/mrp_workorder_batch_replan_wizard.py create mode 100644 sf_manufacturing/wizard/mrp_workorder_batch_replan_wizard_views.xml diff --git a/sf_manufacturing/__manifest__.py b/sf_manufacturing/__manifest__.py index 991b26ab..612577c2 100644 --- a/sf_manufacturing/__manifest__.py +++ b/sf_manufacturing/__manifest__.py @@ -24,6 +24,7 @@ 'wizard/production_wizard_views.xml', 'wizard/production_technology_wizard_views.xml', 'wizard/production_technology_re_adjust_wizard_views.xml', + 'wizard/mrp_workorder_batch_replan_wizard_views.xml', 'views/mrp_views_menus.xml', 'views/agv_scheduling_views.xml', 'views/stock_lot_views.xml', @@ -38,6 +39,7 @@ 'views/sf_maintenance_equipment.xml', 'views/res_config_settings_views.xml', 'views/sale_order_views.xml', + 'views/mrp_workorder_batch_replan.xml', ], 'assets': { diff --git a/sf_manufacturing/security/ir.model.access.csv b/sf_manufacturing/security/ir.model.access.csv index 2880e662..f096b449 100644 --- a/sf_manufacturing/security/ir.model.access.csv +++ b/sf_manufacturing/security/ir.model.access.csv @@ -182,3 +182,5 @@ access_sf_manual_product_model_type_routing_sort_group_sf_mrp_user,sf_manual_pro access_sf_manual_product_model_type_routing_sort_manager,sf_manual_product_model_type_routing_sort,model_sf_manual_product_model_type_routing_sort,sf_base.group_sf_mrp_manager,1,1,1,1 access_sf_manual_product_model_type_routing_sort_group_plan_dispatch,sf_manual_product_model_type_routing_sort_group_plan_dispatch,model_sf_manual_product_model_type_routing_sort,sf_base.group_plan_dispatch,1,0,0,0 access_sf_detection_result_manager,sf_detection_result_manager,model_sf_detection_result,,1,1,1,1 + +access_mrp_workorder_batch_replan_wizard_group_plan_dispatch,mrp_workorder_batch_replan_wizard_group_plan_dispatch,model_mrp_workorder_batch_replan_wizard,sf_base.group_plan_dispatch,1,1,1,0 \ No newline at end of file diff --git a/sf_manufacturing/views/mrp_workorder_batch_replan.xml b/sf_manufacturing/views/mrp_workorder_batch_replan.xml new file mode 100644 index 00000000..a09b1a0e --- /dev/null +++ b/sf_manufacturing/views/mrp_workorder_batch_replan.xml @@ -0,0 +1,17 @@ + + + + >mrp.workorder.tree.editable.inherit + mrp.workorder + + + +
+
+
+
+
+
+
\ No newline at end of file diff --git a/sf_manufacturing/wizard/__init__.py b/sf_manufacturing/wizard/__init__.py index e2206a5f..89bdc09b 100644 --- a/sf_manufacturing/wizard/__init__.py +++ b/sf_manufacturing/wizard/__init__.py @@ -3,3 +3,4 @@ from . import rework_wizard from . import production_wizard from . import production_technology_wizard from . import production_technology_re_adjust_wizard +from . import mrp_workorder_batch_replan_wizard diff --git a/sf_manufacturing/wizard/mrp_workorder_batch_replan_wizard.py b/sf_manufacturing/wizard/mrp_workorder_batch_replan_wizard.py new file mode 100644 index 00000000..f9511040 --- /dev/null +++ b/sf_manufacturing/wizard/mrp_workorder_batch_replan_wizard.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +import logging +from datetime import datetime, timedelta +from odoo import models, api, fields, _ + + +class MrpWorkorderBatchReplanWizard(models.TransientModel): + _name = 'mrp.workorder.batch.replan.wizard' + _description = '制造订单批量重新安排向导' + + def _get_date_planned_start(self): + planned_start_date = datetime.now() + timedelta(hours=2) + logging.info('计划开始加工时间: %s', planned_start_date) + return planned_start_date + + def _get_default_workorder_count(self): + active_ids = self.env.context.get('active_ids', []) + return len(active_ids) + + def _get_default_workorder_type(self): + active_ids = self.env.context.get('active_ids', []) + if active_ids: + workorders = self.env['mrp.workorder'].browse(active_ids) + if workorders: + unique_types = set(workorders.mapped('type')) + return '/'.join(sorted(unique_types)) if unique_types else None + return None + + workorder_type = fields.Char(string='工单类型', default=_get_default_workorder_type, readonly=True) + + date_planned_start = fields.Datetime(string='计划开始加工时间', index=True, copy=False, + default=_get_date_planned_start) + + workorder_count = fields.Integer(string='工单数量', + default=_get_default_workorder_count, + readonly=True) + + workorder_id = fields.Many2many('mrp.workorder', string=u'工单') + + def confirm(self): + print("ddd") + pass diff --git a/sf_manufacturing/wizard/mrp_workorder_batch_replan_wizard_views.xml b/sf_manufacturing/wizard/mrp_workorder_batch_replan_wizard_views.xml new file mode 100644 index 00000000..e004cd6e --- /dev/null +++ b/sf_manufacturing/wizard/mrp_workorder_batch_replan_wizard_views.xml @@ -0,0 +1,32 @@ + + + + mrp.workorder.batch.replan.wizard.form.view + mrp.workorder.batch.replan.wizard + +
+ + + + + +
+
+
+
+
+ + + + 重新安排 + ir.actions.act_window + mrp.workorder.batch.replan.wizard + form + + new + {'default_workorder_id': active_ids} + + +
\ No newline at end of file