删除制造订单处排程相关的部分,排程模块架构改造完成
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from odoo import models, fields, api, _
|
||||
from datetime import datetime, timedelta
|
||||
from odoo.exceptions import UserError, ValidationError
|
||||
|
||||
|
||||
# sf排程
|
||||
@@ -16,10 +17,39 @@ class sf_production_plan(models.Model):
|
||||
current_operation_name = fields.Char(string='当前工序名称', size=64, default='生产计划')
|
||||
production_line_id = fields.Many2one('sf.production.line', string='生产线')
|
||||
|
||||
# state = fields.Selection([
|
||||
# ('未排程', '未排程'), ('已排程', '已排程')], string='State', copy=False, index=True, readonly=True,
|
||||
# store=True, tracking=True)
|
||||
|
||||
# 当不设置计划结束时间时,增加计算计划结束时间的方法,根据采购周期加缓冲期两个值来算就可以了
|
||||
def action_view_production_schedule(self):
|
||||
self.ensure_one()
|
||||
if self.date_planned_start and self.date_planned_finished:
|
||||
return None
|
||||
elif self.date_planned_start and not self.date_planned_finished:
|
||||
# 如果没有给出计划结束时间,则计划结束时间为计划开始时间+采购周期+缓冲期
|
||||
# 采购周期
|
||||
purchase_cycle = 3
|
||||
# 缓冲期
|
||||
buffer_period = 1
|
||||
# 计划结束时间 = 计划开始时间 + 采购周期 + 缓冲期
|
||||
self.date_planned_finished = self.date_planned_start + timedelta(days=purchase_cycle) + timedelta(
|
||||
days=buffer_period)
|
||||
self.state = '已排程'
|
||||
return self.date_planned_finished
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
def cancel_plan(self):
|
||||
self.ensure_one()
|
||||
self.date_planned_finished = None
|
||||
self.state = 'confirmed'
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
if 'sequence' not in vals:
|
||||
vals['sequence'] = self.env['sf.pl.plan'].search_count([]) + 1
|
||||
vals['sequence'] = self.env['sf.production.plan'].search_count([]) + 1
|
||||
return super().create(vals)
|
||||
|
||||
def unlink(self):
|
||||
@@ -32,7 +62,7 @@ class sf_production_plan(models.Model):
|
||||
|
||||
# 生成编码
|
||||
def _get_pl_no(self):
|
||||
sf_pl_no = self.env['sf.pl.plan'].sudo().search(
|
||||
sf_pl_no = self.env['sf.production.plan'].sudo().search(
|
||||
[('pl_no', '!=', '')],
|
||||
limit=1,
|
||||
order="id desc")
|
||||
@@ -56,57 +86,67 @@ class sf_production_plan(models.Model):
|
||||
|
||||
return num
|
||||
|
||||
pl_no = fields.Char(string='坯料编号', required=True, default=_get_pl_no, readonly=True)
|
||||
pl_name = fields.Char(string='坯料名称', size=64, required=True)
|
||||
material = fields.Many2one('sf.production.materials', string='材质', required=True)
|
||||
# pl_no = fields.Char(string='坯料编号', required=True, default=_get_pl_no, readonly=True)
|
||||
# pl_name = fields.Char(string='坯料名称', size=64, required=True)
|
||||
# material = fields.Many2one('sf.production.materials', string='材质', required=True)
|
||||
quantity = fields.Float(string='数量', required=True)
|
||||
length = fields.Float(string='长度', required=True)
|
||||
width = fields.Float(string='宽度', required=True)
|
||||
thickness = fields.Float(string='厚度', required=True)
|
||||
diameter = fields.Float(string='直径', required=True)
|
||||
# length = fields.Float(string='长度', required=True)
|
||||
# width = fields.Float(string='宽度', required=True)
|
||||
# thickness = fields.Float(string='厚度', required=True)
|
||||
# diameter = fields.Float(string='直径', required=True)
|
||||
plan_start_time = fields.Datetime(string='计划开始时间')
|
||||
plan_end_time = fields.Datetime(string='计划结束时间')
|
||||
state = fields.Selection([
|
||||
('draft', '待产出'),
|
||||
('produce', '已产出'),
|
||||
('draft', '待排程'),
|
||||
('produce', '已排程'),
|
||||
('done', '已产出'),
|
||||
], string='状态', copy=False, index=True, default='draft')
|
||||
customer_name = fields.Char(string='客户名称', size=64)
|
||||
order_no = fields.Char(string='订单号', size=64)
|
||||
line_no = fields.Char(string='行号', size=64)
|
||||
delivery_length = fields.Float(string='交货长度')
|
||||
delivery_width = fields.Float(string='交货宽度')
|
||||
delivery_thickness = fields.Float(string='交货厚度')
|
||||
delivery_diameter = fields.Float(string='交货直径')
|
||||
delivery_quantity = fields.Float(string='交货数量')
|
||||
delivery_date = fields.Datetime(string='交货日期', related='plan_end_time', readonly=False, store=True)
|
||||
# customer_name = fields.Char(string='客户名称', size=64)
|
||||
# order_no = fields.Char(string='订单号', size=64)
|
||||
# line_no = fields.Char(string='行号', size=64)
|
||||
# delivery_length = fields.Float(string='交货长度')
|
||||
# delivery_width = fields.Float(string='交货宽度')
|
||||
# delivery_thickness = fields.Float(string='交货厚度')
|
||||
# delivery_diameter = fields.Float(string='交货直径')
|
||||
# delivery_quantity = fields.Float(string='交货数量')
|
||||
# delivery_date = fields.Datetime(string='交货日期', related='plan_end_time', readonly=False, store=True)
|
||||
|
||||
# 当不设置计划结束时间时,增加计算计划结束时间的方法,根据采购周期加缓冲期两个值来算就可以了
|
||||
def get_plan_end_time(self):
|
||||
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)
|
||||
return self.plan_end_time
|
||||
def do_production_schedule(self):
|
||||
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:
|
||||
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
|
||||
raise ValidationError('生产线为空!')
|
||||
|
||||
def cancel_production_schedule(self):
|
||||
self.plan_end_time = False
|
||||
self.state = 'draft'
|
||||
return self.plan_end_time
|
||||
|
||||
# # sf生产排程
|
||||
# class sf_produce_plan(models.Model):
|
||||
|
||||
Reference in New Issue
Block a user