diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index 8d5ecbf1..15369f8d 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -69,7 +69,18 @@ class ResMrpWorkOrder(models.Model): delivery_warning = fields.Selection([('normal', '正常'), ('warning', '告警'), ('overdue', '逾期')], string='时效', tracking=True) back_button_display = fields.Boolean(default=False, compute='_compute_back_button_display', store=True) - + pr_mp_count = fields.Integer('采购申请单数量', compute='_compute_pr_mp_count', store=True) + @api.depends('state') + def _compute_pr_mp_count(self): + for item in self: + if not item.is_subcontract: + pr_mp_count = 0 + continue + pr_ids = self.env['purchase.request'].sudo().search([('origin', 'like', item.name),('is_subcontract','=','True')]) + if pr_ids: + item.pr_mp_count = len(pr_ids) + else: + item.pr_mp_count = 0 @api.depends('state') def _compute_back_button_display(self): for record in self: @@ -445,6 +456,28 @@ class ResMrpWorkOrder(models.Model): else: order.surface_technics_purchase_count = 0 + def action_view_pr_mrp_workorder(self): + """ + 采购请求 + """ + self.ensure_one() + pr_ids = self.env['purchase.request'].sudo().search([('origin', 'like', self.name),('is_subcontract', '=', True)]) + action = { + 'res_model': 'purchase.request', + 'type': 'ir.actions.act_window', + } + if len(pr_ids) == 1: + action.update({ + 'view_mode': 'form', + 'res_id': pr_ids[0].id, + }) + else: + action.update({ + 'name': _("从 %s生成采购请求单", self.name), + 'domain': [('id', 'in', pr_ids)], + 'view_mode': 'tree,form', + }) + return action def action_view_surface_technics_purchase(self): self.ensure_one() # if self.routing_type == '表面工艺': diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml index c1f165fd..1720a418 100644 --- a/sf_manufacturing/views/mrp_workorder_view.xml +++ b/sf_manufacturing/views/mrp_workorder_view.xml @@ -144,6 +144,17 @@ statusbar_visible="pending,waiting,ready,progress,to be detected,done,rework"/> +