# -*- 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 from datetime import datetime, timedelta _logger = logging.getLogger(__name__) class Action_Plan_All_Wizard(models.TransientModel): _name = 'sf.action.plan.all.wizard' _description = u'排程向导' def _get_date_planned_start(self): planned_start_date = datetime.now() + timedelta(minutes=10) logging.info('计划开始时间: %s', planned_start_date) return planned_start_date # 选择生产线 production_line_id = fields.Many2one('sf.production.line', string=u'生产线', required=True) date_planned_start = fields.Datetime(string='计划开始时间', index=True, copy=False, default=_get_date_planned_start) # 接收传递过来的计划ID plan_ids = fields.Many2many('sf.production.plan', string=u'计划ID') # 确认排程按钮 def action_plan_all(self): # 使用传递过来的计划ID self.plan_ids.production_line_id = self.production_line_id.id self.plan_ids.date_planned_start = self.date_planned_start # 在这里添加您的逻辑来处理这些ID # 判断能否排成 self.plan_ids.deal_processing_schedule(self.date_planned_start) self.plan_ids.do_production_schedule() # 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.date_planned_start = self.date_planned_start # plan_obj.do_production_schedule() # plan_obj.state = 'done' _logger.info('处理计划: %s 完成', self.plan_ids.ids) # # 获取当前生产线 # 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_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('当前生产线的所有生产订单都已暂停,请勿重复排程!')