From 48e30865afd5daac317f7b6b6e131616a3f8d6ab Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Wed, 6 Sep 2023 09:22:58 +0800
Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E8=AE=A1=E5=88=92=E4=BC=98?=
=?UTF-8?q?=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sf_plan/models/custom_plan.py | 116 +++++++++++++++------------
sf_plan/security/ir.model.access.csv | 1 +
sf_plan/views/view.xml | 43 +++++++++-
3 files changed, 104 insertions(+), 56 deletions(-)
diff --git a/sf_plan/models/custom_plan.py b/sf_plan/models/custom_plan.py
index b07614d3..623e5e21 100644
--- a/sf_plan/models/custom_plan.py
+++ b/sf_plan/models/custom_plan.py
@@ -1,12 +1,10 @@
# -*- coding: utf-8 -*-
import base64
-
+import json, requests
from odoo import models, fields, api, _
from datetime import datetime, timedelta
from odoo.exceptions import UserError, ValidationError
-import json, requests, logging
-
# sf排程
class sf_production_plan(models.Model):
@@ -15,6 +13,7 @@ class sf_production_plan(models.Model):
_description = 'sf_production_plan'
name = fields.Char(string='名称')
+ # selected = fields.Boolean(default=False)
production_id = fields.Many2one('mrp.production', '关联制造订单')
product_qty = fields.Float(string='数量', digits='Product Unit of Measure', required=True, default=0.0)
date_planned_start = fields.Datetime(string='计划开始时间', required=True, index=True, copy=False,
@@ -146,57 +145,60 @@ class sf_production_plan(models.Model):
# 当不设置计划结束时间时,增加计算计划结束时间的方法,根据采购周期加缓冲期两个值来算就可以了
def do_production_schedule(self):
- aa = self.env['mrp.production'].sudo().search([('name', '=', self.name)])
- workorder_time = 0
- print(aa.workorder_ids)
- print(type(aa.workorder_ids))
- if aa.workorder_ids:
- for item in aa.workorder_ids:
- current_workorder = self.env['mrp.workorder'].sudo().search([('id', '=', item.id)])
- workorder_time += current_workorder.duration_expected
- print(workorder_time)
- self.date_planned_finished = self.date_planned_start + timedelta(minutes=workorder_time)
- self.state = 'done'
+ if not self.production_line_id:
+ raise ValidationError("未选择生产线")
else:
- self.date_planned_finished = self.date_planned_start + timedelta(days=3)
- self.state = 'done'
- return {
- 'name': '排程甘特图',
- 'type': 'ir.actions.act_window',
- 'res_model': 'sf.production.plan', # 要跳转的模型名称
- 'view_mode': 'gantt,tree,form', # 要显示的视图类型,可以是'form', 'tree', 'kanban', 'graph', 'calendar', 'pivot'等
- 'target': 'current', # 跳转的目标窗口,可以是'current'或'new'
- }
- # if self.production_line_id:
- # if self.plan_start_time and self.plan_end_time:
- # return None
- # elif self.plan_start_time and not self.plan_end_time:
- # # 如果没有给出计划结束时间,则计划结束时间为计划开始时间+采购周期+缓冲期
- # # 采购周期
- # purchase_cycle = 3
- # # 缓冲期
- # buffer_period = 1
- # # 计划结束时间 = 计划开始时间 + 采购周期 + 缓冲期
- # self.plan_end_time = self.plan_start_time + timedelta(days=purchase_cycle) + timedelta(
- # days=buffer_period)
- # self.state = 'produce'
- # return self.plan_end_time
- # else:
- # return None
- # # 后面要补充计划开始时间的计算方法
- # # # 坯料预制时间
- # # # pl_time = 0.5
- # # # 采购周期
- # # purchase_cycle = 3
- # # # 缓冲期
- # # buffer_period = 1
- # # # 计划结束时间 = 计划开始时间 + 坯料预制时间 + 采购周期 + 缓冲期
- # # # plan_end_time = plan_start_time + pl_time + purchase_cycle + buffer_period
- # # # 计划结束时间 = 计划开始时间(是一个datatime) + 采购周期(Float) + 缓冲期(Float)
- # # self.plan_end_time = self.plan_start_time + timedelta(days=purchase_cycle) + timedelta(days=buffer_period)
- # # return self.plan_end_time
- # else:
- # raise ValidationError('生产线为空!')
+ aa = self.env['mrp.production'].sudo().search([('name', '=', self.name)])
+ workorder_time = 0
+ print(aa.workorder_ids)
+ print(type(aa.workorder_ids))
+ if aa.workorder_ids:
+ for item in aa.workorder_ids:
+ current_workorder = self.env['mrp.workorder'].sudo().search([('id', '=', item.id)])
+ workorder_time += current_workorder.duration_expected
+ print(workorder_time)
+ self.date_planned_finished = self.date_planned_start + timedelta(minutes=workorder_time)
+ self.state = 'done'
+ else:
+ self.date_planned_finished = self.date_planned_start + timedelta(days=3)
+ self.state = 'done'
+ return {
+ 'name': '排程甘特图',
+ 'type': 'ir.actions.act_window',
+ 'res_model': 'sf.production.plan', # 要跳转的模型名称
+ 'view_mode': 'gantt,tree,form', # 要显示的视图类型,可以是'form', 'tree', 'kanban', 'graph', 'calendar', 'pivot'等
+ 'target': 'current', # 跳转的目标窗口,可以是'current'或'new'
+ }
+ # if self.production_line_id:
+ # if self.plan_start_time and self.plan_end_time:
+ # return None
+ # elif self.plan_start_time and not self.plan_end_time:
+ # # 如果没有给出计划结束时间,则计划结束时间为计划开始时间+采购周期+缓冲期
+ # # 采购周期
+ # purchase_cycle = 3
+ # # 缓冲期
+ # buffer_period = 1
+ # # 计划结束时间 = 计划开始时间 + 采购周期 + 缓冲期
+ # self.plan_end_time = self.plan_start_time + timedelta(days=purchase_cycle) + timedelta(
+ # days=buffer_period)
+ # self.state = 'produce'
+ # return self.plan_end_time
+ # else:
+ # return None
+ # # 后面要补充计划开始时间的计算方法
+ # # # 坯料预制时间
+ # # # pl_time = 0.5
+ # # # 采购周期
+ # # purchase_cycle = 3
+ # # # 缓冲期
+ # # buffer_period = 1
+ # # # 计划结束时间 = 计划开始时间 + 坯料预制时间 + 采购周期 + 缓冲期
+ # # # plan_end_time = plan_start_time + pl_time + purchase_cycle + buffer_period
+ # # # 计划结束时间 = 计划开始时间(是一个datatime) + 采购周期(Float) + 缓冲期(Float)
+ # # self.plan_end_time = self.plan_start_time + timedelta(days=purchase_cycle) + timedelta(days=buffer_period)
+ # # return self.plan_end_time
+ # else:
+ # raise ValidationError('生产线为空!')
def cancel_production_schedule(self):
self.date_planned_finished = False
@@ -240,6 +242,7 @@ class sf_production_plan(models.Model):
except Exception as e:
raise UserError(e)
+
# # sf生产排程
# class sf_produce_plan(models.Model):
# _name = 'sf.produce.plan'
@@ -266,3 +269,10 @@ class sf_production_plan(models.Model):
# plan_end_time = plan_start_time + pl_time
# return plan_end_time
#
+
+# 机台作业计划
+class machine_work_schedule(models.Model):
+ _name = 'sf.machine.schedule'
+ _description = '机台作业计划'
+
+ name = fields.Char(string='机台名')
diff --git a/sf_plan/security/ir.model.access.csv b/sf_plan/security/ir.model.access.csv
index b1578586..3a1a20c9 100644
--- a/sf_plan/security/ir.model.access.csv
+++ b/sf_plan/security/ir.model.access.csv
@@ -1,5 +1,6 @@
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,1,1,1
+access_sf_machine_schedule,sf.machine.schedule,model_sf_machine_schedule,base.group_user,1,1,1,1
diff --git a/sf_plan/views/view.xml b/sf_plan/views/view.xml
index d7f8c59d..bce1cae5 100644
--- a/sf_plan/views/view.xml
+++ b/sf_plan/views/view.xml
@@ -6,6 +6,7 @@
sf.production.plan
+
@@ -25,9 +26,10 @@