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