From bc4a4df53e56d0d71c672df9097e8c22b9e8a261 Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Mon, 8 Jan 2024 14:52:29 +0800 Subject: [PATCH] =?UTF-8?q?tree=E8=A7=86=E5=9B=BE=E4=B8=AD=E7=9A=84"?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=8E=92=E7=A8=8B"=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=B8=BA=E5=90=91=E5=AF=BC=E7=9A=84=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_plan/__init__.py | 1 + sf_plan/__manifest__.py | 4 +- sf_plan/models/custom_plan.py | 3 +- sf_plan/security/ir.model.access.csv | 2 + sf_plan/views/view.xml | 6 ++- sf_plan/wizard/__init__.py | 1 + sf_plan/wizard/action_plan_some.py | 65 ++++++++++++++++++++++++++++ sf_plan/wizard/action_plan_some.xml | 31 +++++++++++++ 8 files changed, 109 insertions(+), 4 deletions(-) create mode 100644 sf_plan/wizard/__init__.py create mode 100644 sf_plan/wizard/action_plan_some.py create mode 100644 sf_plan/wizard/action_plan_some.xml diff --git a/sf_plan/__init__.py b/sf_plan/__init__.py index 8134f974..52497701 100644 --- a/sf_plan/__init__.py +++ b/sf_plan/__init__.py @@ -2,3 +2,4 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from . import models +from . import wizard diff --git a/sf_plan/__manifest__.py b/sf_plan/__manifest__.py index 257400d3..6059e3bd 100644 --- a/sf_plan/__manifest__.py +++ b/sf_plan/__manifest__.py @@ -17,8 +17,10 @@ 'data': [ 'security/ir.model.access.csv', # 'security/rules.xml', + 'wizard/action_plan_some.xml', 'views/view.xml', - 'views/change_manufactuing.xml' + 'views/change_manufactuing.xml', + ], 'assets': { diff --git a/sf_plan/models/custom_plan.py b/sf_plan/models/custom_plan.py index a60af7f3..ef6d77a0 100644 --- a/sf_plan/models/custom_plan.py +++ b/sf_plan/models/custom_plan.py @@ -12,7 +12,7 @@ class sf_production_plan(models.Model): _name = 'sf.production.plan' _description = 'sf_production_plan' _inherit = ['mail.thread'] - _order = 'create_date desc' + _order = 'state desc, write_date desc' state = fields.Selection([ ('draft', '待排程'), @@ -252,6 +252,7 @@ class sf_production_plan(models.Model): def cancel_production_schedule(self): self.date_planned_finished = False self.state = 'draft' + self.production_line_id = False aa = self.env['mrp.production'].sudo().search([('name', '=', self.name)]) aa.schedule_state = '未排' return self.date_planned_finished diff --git a/sf_plan/security/ir.model.access.csv b/sf_plan/security/ir.model.access.csv index 3123afe9..be1708f7 100644 --- a/sf_plan/security/ir.model.access.csv +++ b/sf_plan/security/ir.model.access.csv @@ -1,3 +1,5 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_sf_production_plan,sf.production.plan,model_sf_production_plan,base.group_user,1,0,0,0 access_sf_production_plan_for_dispatch,sf.production.plan for dispatch,model_sf_production_plan,sf_base.group_plan_dispatch,1,1,1,0 + +access_sf_action_plan_all_wizard,sf.action.plan.all.wizard,model_sf_action_plan_all_wizard,base.group_user,1,1,1,1 \ No newline at end of file diff --git a/sf_plan/views/view.xml b/sf_plan/views/view.xml index c1bdf5fe..b4e23965 100644 --- a/sf_plan/views/view.xml +++ b/sf_plan/views/view.xml @@ -5,9 +5,11 @@ sf.production.plan.tree sf.production.plan - + +
-
diff --git a/sf_plan/wizard/__init__.py b/sf_plan/wizard/__init__.py new file mode 100644 index 00000000..1dd0edf6 --- /dev/null +++ b/sf_plan/wizard/__init__.py @@ -0,0 +1 @@ +from . import action_plan_some diff --git a/sf_plan/wizard/action_plan_some.py b/sf_plan/wizard/action_plan_some.py new file mode 100644 index 00000000..9760f7ec --- /dev/null +++ b/sf_plan/wizard/action_plan_some.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +import base64 +import logging +import os +from datetime import datetime +from odoo import fields, models +# from odoo.exceptions import ValidationError +from odoo.exceptions import UserError + +_logger = logging.getLogger(__name__) + + +class Action_Plan_All_Wizard(models.TransientModel): + _name = 'sf.action.plan.all.wizard' + _description = u'排程向导' + + # 选择生产线 + production_line_id = fields.Many2one('sf.production.line', string=u'生产线', required=True) + + # 接收传递过来的计划ID + plan_ids = fields.Many2many('sf.production.plan', string=u'计划ID') + + # 确认排程按钮 + def action_plan_all(self): + # 使用传递过来的计划ID + temp_plan_ids = self.plan_ids + # 在这里添加您的逻辑来处理这些ID + for plan in temp_plan_ids: + # 处理每个计划 + # 比如更新计划状态、分配资源等 + # 示例:plan.state = 'scheduled' + print('处理计划:', plan.id) + # 拿到计划对象 + plan_obj = self.env['sf.production.plan'].browse(plan.id) + plan_obj.production_line_id = self.production_line_id.id + plan_obj.do_production_schedule() + plan_obj.state = 'done' + print('处理计划:', plan.id, '完成') + + # # 获取当前生产线 + # production_line_id = self.production_line_id + # # 获取当前生产线的所有生产订单 + # production_order_ids = self.env['mrp.production'].search([('production_line_id', '=', production_line_id.id)]) + # # 获取当前生产线的所有生产订单的id + # production_order_id_list = [] + # for production_order_id in production_order_ids: + # production_order_id_list.append(production_order_id.id) + # # 获取当前生产线的所有生产订单的排程状态 + # production_order_plan_state_list = [] + # for production_order_id in production_order_ids: + # production_order_plan_state_list.append(production_order_id.plan_state) + # # 如果当前生产线的所有生产订单的排程状态都是已排程,则报错 + # if all(production_order_plan_state == '已排程' for production_order_plan_state in production_order_plan_state_list): + # raise UserError('当前生产线的所有生产订单都已排程,请勿重复排程!') + # # 如果当前生产线的所有生产订单的排程状态都是未排程,则报错 + # if all(production_order_plan_state == '未排程' for production_order_plan_state in production_order_plan_state_list): + # raise UserError('当前生产线的所有生产订单都未排程,请先排程!') + # # 如果当前生产线的所有生产订单的排程状态都是已完成,则报错 + # if all(production_order_plan_state == '已完成' for production_order_plan_state in production_order_plan_state_list): + # raise UserError('当前生产线的所有生产订单都已完成,请勿重复排程!') + # # 如果当前生产线的所有生产订单的排程状态都是已取消,则报错 + # if all(production_order_plan_state == '已取消' for production_order_plan_state in production_order_plan_state_list): + # raise UserError('当前生产线的所有生产订单都已取消,请勿重复排程!') + # # 如果当前生产线的所有生产订单的排程状态都是已暂停,则报错 + # if all(production_order_plan_state == '已暂停' for production_order_plan_state in production diff --git a/sf_plan/wizard/action_plan_some.xml b/sf_plan/wizard/action_plan_some.xml new file mode 100644 index 00000000..2c52658a --- /dev/null +++ b/sf_plan/wizard/action_plan_some.xml @@ -0,0 +1,31 @@ + + + + 选择生产线 + sf.action.plan.all.wizard + +
+ + + +
+
+
+
+
+ + 请选择要排程的生产线 + ir.actions.act_window + + sf.action.plan.all.wizard + form + + new + {'default_plan_ids': active_ids} + + + +
\ No newline at end of file