diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index 38b75c28..23fd8c79 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -1025,20 +1025,20 @@ class ResMrpWorkOrder(models.Model): # 查询工序最小的非完工、非返工的装夹预调工单 work_id = self.search( [('production_id', '=', workorder.production_id.id), - ('routing_type', '=', '装夹预调'), ('state', 'not in', ['rework', 'done', 'cancel'])], limit=1, order="sequence") - if workorder == work_id: - if workorder.production_id.reservation_state == 'assigned': - workorder.state = 'ready' - elif workorder.production_id.reservation_state != 'assigned': - workorder.state = 'waiting' - continue - elif (workorder.name == '装夹预调' and - workorder.state not in ['rework', 'done', 'cancel']): - if workorder.state != 'pending': - workorder.state = 'pending' + if work_id.routing_type == '装夹预调': + if workorder == work_id: + if workorder.production_id.reservation_state == 'assigned': + workorder.state = 'ready' + elif workorder.production_id.reservation_state != 'assigned': + workorder.state = 'waiting' + continue + elif (workorder.name == '装夹预调' and + workorder.state not in ['rework', 'done', 'cancel']): + if workorder.state != 'pending': + workorder.state = 'pending' if workorder.production_id.tool_state in ['1', '2'] and workorder.state == 'ready': workorder.state = 'waiting' continue @@ -1342,6 +1342,7 @@ class ResMrpWorkOrder(models.Model): arch = etree.fromstring(tree_view['arch']) # 查找 tree 标签 tree_element = arch.xpath("//tree")[0] + tree_element.set('js_class', 'remove_focus_list_view') # 查找或创建 header 标签 header_element = tree_element.find('header') diff --git a/sf_plan/models/custom_plan.py b/sf_plan/models/custom_plan.py index 388d2630..ddd3bcc5 100644 --- a/sf_plan/models/custom_plan.py +++ b/sf_plan/models/custom_plan.py @@ -70,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): @@ -221,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 = '待装夹' diff --git a/sf_plan/views/view.xml b/sf_plan/views/view.xml index 10992f4a..82382ef3 100644 --- a/sf_plan/views/view.xml +++ b/sf_plan/views/view.xml @@ -88,8 +88,8 @@ - - + +