Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into feature/优化消息模版
# Conflicts: # sf_tool_management/models/base.py
This commit is contained in:
@@ -18,7 +18,8 @@ class sf_production_plan(models.Model):
|
||||
('draft', '待排程'),
|
||||
('done', '已排程'),
|
||||
('processing', '加工中'),
|
||||
('finished', '已完成')
|
||||
('finished', '已完成'),
|
||||
('cancel', '已取消')
|
||||
], string='状态', tracking=True)
|
||||
|
||||
state_order = fields.Integer(compute='_compute_state_order', store=True)
|
||||
@@ -37,7 +38,7 @@ class sf_production_plan(models.Model):
|
||||
_order = 'state_order asc, write_date desc'
|
||||
|
||||
name = fields.Char(string='制造订单')
|
||||
# active = fields.Boolean(string='已归档', default=True)
|
||||
active = fields.Boolean(string='已归档', default=True)
|
||||
# selected = fields.Boolean(default=False)
|
||||
# order_number = fields.Char(string='订单号')
|
||||
order_deadline = fields.Datetime(string='订单交期')
|
||||
@@ -69,6 +70,27 @@ class sf_production_plan(models.Model):
|
||||
sequence = fields.Integer(string='序号', copy=False, readonly=True, index=True)
|
||||
current_operation_name = fields.Char(string='当前工序名称', size=64, default='生产计划')
|
||||
|
||||
@api.onchange('date_planned_start')
|
||||
def date_planned_start_onchange(self):
|
||||
if self.date_planned_start:
|
||||
self.date_planned_finished = self.date_planned_start + timedelta(hours=1)
|
||||
|
||||
#处理计划状态非代排程,计划结束时间为空的数据处理
|
||||
def deal_no_date_planned_finished(self):
|
||||
plans = self.env['sf.production.plan'].search(
|
||||
[('date_planned_finished', '=', False), ('state', 'in', ['processing', 'done', 'finished'])])
|
||||
for item in plans:
|
||||
if item.date_planned_start:
|
||||
item.date_planned_finished = item.date_planned_start + timedelta(hours=1)
|
||||
if not item.order_deadline and item.date_planned_start:
|
||||
item.order_deadline = item.date_planned_start + timedelta(days=7)
|
||||
|
||||
@api.model
|
||||
def search_read(self, domain=None, fields=None, offset=0, limit=None, order=None):
|
||||
|
||||
info = super(sf_production_plan, self).search_read(domain, fields, offset, limit, order)
|
||||
return info
|
||||
|
||||
# 计算实际加工时长
|
||||
@api.depends('actual_start_time', 'actual_end_time')
|
||||
def _compute_actual_process_time(self):
|
||||
@@ -191,7 +213,7 @@ class sf_production_plan(models.Model):
|
||||
|
||||
return num
|
||||
|
||||
def do_production_schedule(self, date_planned_start):
|
||||
def do_production_schedule(self):
|
||||
"""
|
||||
排程方法
|
||||
"""
|
||||
@@ -199,8 +221,7 @@ class sf_production_plan(models.Model):
|
||||
if not record.production_line_id:
|
||||
raise ValidationError("未选择生产线")
|
||||
else:
|
||||
|
||||
is_schedule = self.deal_processing_schedule(date_planned_start)
|
||||
is_schedule = self.deal_processing_schedule(record.date_planned_start)
|
||||
if not is_schedule:
|
||||
raise ValidationError("排程失败")
|
||||
workorder_id_list = record.production_id.workorder_ids.ids
|
||||
@@ -209,7 +230,6 @@ class sf_production_plan(models.Model):
|
||||
for item in record.production_id.workorder_ids:
|
||||
if item.name == 'CNC加工':
|
||||
item.date_planned_finished = datetime.now() + timedelta(days=100)
|
||||
# item.date_planned_start = record.date_planned_start
|
||||
item.date_planned_start = self.date_planned_start if self.date_planned_start else datetime.now()
|
||||
record.sudo().production_id.plan_start_processing_time = item.date_planned_start
|
||||
item.date_planned_finished = item.date_planned_start + timedelta(
|
||||
@@ -222,6 +242,8 @@ class sf_production_plan(models.Model):
|
||||
record.date_planned_start, record.date_planned_finished = \
|
||||
item.date_planned_start, item.date_planned_finished
|
||||
record.state = 'done'
|
||||
record.date_planned_finished = record.date_planned_start + timedelta(
|
||||
minutes=60) if not record.date_planned_finished else record.date_planned_finished
|
||||
# record.production_id.schedule_state = '已排'
|
||||
record.sudo().production_id.schedule_state = '已排'
|
||||
record.sudo().production_id.process_state = '待装夹'
|
||||
@@ -385,3 +407,23 @@ class machine_work_schedule(models.Model):
|
||||
_description = '机台作业计划'
|
||||
|
||||
name = fields.Char(string='机台名')
|
||||
|
||||
|
||||
class MrpProductionInheritForPlan(models.Model):
|
||||
_inherit = 'mrp.production'
|
||||
|
||||
def button_cancel(self):
|
||||
# 调用父类的取消操作
|
||||
res = super(MrpProductionInheritForPlan, self).button_cancel()
|
||||
# 更新 sf.production.plan 模型的 state 为 'cancel'
|
||||
self.env['sf.production.plan'].search([('production_id', '=', self.id)]).write({'state': 'cancel'})
|
||||
return res
|
||||
|
||||
def toggle_active(self):
|
||||
# 调用父类方法切换 active 状态
|
||||
res = super(MrpProductionInheritForPlan, self).toggle_active()
|
||||
self.env['sf.production.plan'].search(
|
||||
[('production_id', '=', self.id), '|', ('active', '=', False), ('active', '=', True)]).write(
|
||||
{'active': self.active})
|
||||
|
||||
return res
|
||||
|
||||
Reference in New Issue
Block a user