优化制造订单报废
This commit is contained in:
@@ -1016,10 +1016,13 @@ class ResMrpWorkOrder(models.Model):
|
||||
if workorder.state == 'pending':
|
||||
if all([wo.state in ('done', 'cancel') for wo in workorder.blocked_by_workorder_ids]):
|
||||
if workorder.production_id.reservation_state == 'assigned' and workorder.production_id.schedule_state == '已排':
|
||||
if (workorder.sequence == 1 and not workorder.blocked_by_workorder_ids) or (
|
||||
workorder.blocked_by_workorder_ids.state in ('done', 'cancel')) or (
|
||||
previous_workorder.state in (
|
||||
'done', 'cancel') and not workorder.blocked_by_workorder_ids):
|
||||
if ((workorder.sequence == 1 and not workorder.blocked_by_workorder_ids)
|
||||
or (workorder.blocked_by_workorder_ids.state in ('done', 'cancel')
|
||||
and workorder.blocked_by_workorder_ids.test_results not in ['报废', '返工'])
|
||||
or (previous_workorder.state in ('done', 'cancel')
|
||||
and not workorder.blocked_by_workorder_ids
|
||||
and previous_workorder.test_results not in ['报废', '返工'])
|
||||
):
|
||||
workorder.state = 'ready'
|
||||
continue
|
||||
if workorder.production_id.schedule_state == '未排' and workorder.state in ('waiting', 'ready'):
|
||||
@@ -1050,12 +1053,15 @@ class ResMrpWorkOrder(models.Model):
|
||||
for workorder in self:
|
||||
# 如果工单的工序没有进行排序则跳出循环
|
||||
if workorder.production_id.workorder_ids.filtered(lambda wk: wk.sequence == 0):
|
||||
break
|
||||
continue
|
||||
# ===== 对所有按序号排序的非[进行中、完成、返工、取消]状态的工单,除了第一条之外的工单状态都设置为[等待其他工单] =====
|
||||
min_sequence_wk = min(workorder.production_id.workorder_ids.filtered(
|
||||
lambda wk: wk.state not in ['done', 'rework', 'cancel']),
|
||||
key=lambda wk: wk.sequence)
|
||||
if workorder.state in ['done', 'rework', 'cancel', 'progress']:
|
||||
logging.info(workorder.state)
|
||||
work_ids = workorder.production_id.workorder_ids.filtered(
|
||||
lambda wk: wk.state not in ['done', 'rework', 'cancel'])
|
||||
if not work_ids:
|
||||
continue
|
||||
min_sequence_wk = min(work_ids, key=lambda wk: wk.sequence)
|
||||
if workorder.state in ['done', 'rework', 'cancel', 'progress', 'to be detected']:
|
||||
continue
|
||||
else:
|
||||
if workorder != min_sequence_wk:
|
||||
@@ -1065,7 +1071,9 @@ class ResMrpWorkOrder(models.Model):
|
||||
# ================= 如果制造订单刀具状态为[无效刀、缺刀] 或者 制造订单状态为[返工]==========================
|
||||
if (workorder.production_id.tool_state in ['1', '2'] or workorder.production_id.state == 'rework'
|
||||
or workorder.production_id.schedule_state != '已排'
|
||||
or workorder.production_id.reservation_state != 'assigned'):
|
||||
or workorder.production_id.reservation_state != 'assigned'
|
||||
or workorder.production_id.workorder_ids.filtered(
|
||||
lambda wk: wk.sequence == workorder.sequence - 1).test_results in ['报废', '返工']):
|
||||
if workorder.state != 'waiting':
|
||||
workorder.state = 'waiting'
|
||||
continue
|
||||
@@ -1265,11 +1273,11 @@ class ResMrpWorkOrder(models.Model):
|
||||
def button_finish(self):
|
||||
for record in self:
|
||||
if record.routing_type == '装夹预调':
|
||||
if not record.rfid_code and record.is_rework is False:
|
||||
raise UserError("请扫RFID码进行绑定")
|
||||
if record.is_rework is False:
|
||||
if not record.material_center_point:
|
||||
raise UserError("坯料中心点为空,请检查")
|
||||
# if not record.rfid_code and record.is_rework is False:
|
||||
# raise UserError("请扫RFID码进行绑定")
|
||||
# if record.is_rework is False:
|
||||
# if not record.material_center_point:
|
||||
# raise UserError("坯料中心点为空,请检查")
|
||||
# if record.X_deviation_angle <= 0:
|
||||
# raise UserError("X偏差角度小于等于0,请检查!本次计算的X偏差角度为:%s" % record.X_deviation_angle)
|
||||
record.process_state = '待加工'
|
||||
|
||||
Reference in New Issue
Block a user