From 20047ac6352c05082b4489f931dce24953a4690d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesu=CC=81s=20Alan=20Ramos=20Rodri=CC=81guez?= Date: Wed, 17 Jul 2024 18:19:24 -0600 Subject: [PATCH 1/2] [ADD] purchase_request: add button box buttons to purchase order to link to related purchase request and purchase request lines --- purchase_request/models/purchase_order.py | 50 +++++++++++++++++++ .../views/purchase_order_view.xml | 28 +++++++++++ 2 files changed, 78 insertions(+) diff --git a/purchase_request/models/purchase_order.py b/purchase_request/models/purchase_order.py index a52cbd6ac54..8b9b922e282 100644 --- a/purchase_request/models/purchase_order.py +++ b/purchase_request/models/purchase_order.py @@ -10,6 +10,56 @@ class PurchaseOrder(models.Model): _inherit = "purchase.order" + purchase_request_count = fields.Integer( + compute="_compute_purchase_request_count", + default=0, + ) + purchase_request_line_count = fields.Integer( + compute="_compute_purchase_request_line_count", + default=0, + ) + + @api.depends("order_line.purchase_request_lines") + def _compute_purchase_request_count(self): + for order in self: + order.purchase_request_count = len( + order.order_line.mapped("purchase_request_lines.request_id") + ) + + @api.depends("order_line.purchase_request_lines") + def _compute_purchase_request_line_count(self): + for order in self: + order.purchase_request_line_count = len( + order.order_line.mapped("purchase_request_lines") + ) + + def action_open_purchase_request(self): + self.ensure_one() + requests = self.order_line.mapped("purchase_request_lines.request_id") + action = self.env["ir.actions.act_window"]._for_xml_id( + "purchase_request.purchase_request_form_action" + ) + action["context"] = {} + if len(requests) == 1: + action.update( + { + "res_id": requests.id, + "views": [(False, "form")], + } + ) + else: + action["domain"] = [("id", "in", requests.ids)] + return action + + def action_open_purchase_request_lines(self): + self.ensure_one() + request_line_ids = self.order_line.mapped("purchase_request_lines").ids + action = self.env["ir.actions.act_window"]._for_xml_id( + "purchase_request.purchase_request_line_form_action" + ) + action["domain"] = [("id", "in", request_line_ids)] + return action + def _purchase_request_confirm_message_content(self, request, request_dict=None): self.ensure_one() if not request_dict: diff --git a/purchase_request/views/purchase_order_view.xml b/purchase_request/views/purchase_order_view.xml index 88600239c2c..6b9089f108c 100644 --- a/purchase_request/views/purchase_order_view.xml +++ b/purchase_request/views/purchase_order_view.xml @@ -7,6 +7,34 @@ purchase.order + + + +