From 6f6a8490e591dc2d144e10694772b32d202bfdf5 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Thu, 29 Sep 2022 15:56:42 +0200 Subject: [PATCH] [IMP] stock_orderpoint_purchase_link: Add smart-button on orderpoints We provide a link from the orderpoint to the involved purchase orders. TT39644 --- .../__manifest__.py | 5 +++- .../models/stock_warehouse_orderpoint.py | 17 +++++++++++- .../test_stock_orderpoint_purchase_link.py | 11 +++++++- .../stock_warehouse_orderpoint_views.xml | 26 +++++++++++++++++++ 4 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 stock_orderpoint_purchase_link/views/stock_warehouse_orderpoint_views.xml diff --git a/stock_orderpoint_purchase_link/__manifest__.py b/stock_orderpoint_purchase_link/__manifest__.py index 201c30cf4..7630b66ce 100644 --- a/stock_orderpoint_purchase_link/__manifest__.py +++ b/stock_orderpoint_purchase_link/__manifest__.py @@ -10,7 +10,10 @@ "author": "ForgeFlow, Odoo Community Association (OCA)", "category": "Warehouse Management", "depends": ["stock_orderpoint_move_link", "purchase_stock"], - "data": ["views/purchase_order_views.xml"], + "data": [ + "views/purchase_order_views.xml", + "views/stock_warehouse_orderpoint_views.xml", + ], "installable": True, "auto_install": True, } diff --git a/stock_orderpoint_purchase_link/models/stock_warehouse_orderpoint.py b/stock_orderpoint_purchase_link/models/stock_warehouse_orderpoint.py index 6b4621eee..57f451189 100644 --- a/stock_orderpoint_purchase_link/models/stock_warehouse_orderpoint.py +++ b/stock_orderpoint_purchase_link/models/stock_warehouse_orderpoint.py @@ -1,7 +1,8 @@ # Copyright 2018-20 ForgeFlow S.L. (https://www.forgeflow.com) +# Copyright 2022 Tecnativa - Pedro M. Baeza # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). -from odoo import fields, models +from odoo import _, api, fields, models class StockWarehouseOrderpoint(models.Model): @@ -13,3 +14,17 @@ class StockWarehouseOrderpoint(models.Model): copy=False, readonly=True, ) + purchase_count = fields.Integer(compute="_compute_purchase_count") + + @api.depends("purchase_line_ids") + def _compute_purchase_count(self): + for record in self: + record.purchase_count = len(record.purchase_line_ids.order_id) + + def button_view_purchases(self): + self.ensure_one() + orders = self.purchase_line_ids.order_id + action = self.env["ir.actions.act_window"]._for_xml_id("purchase.purchase_rfq") + action["display_name"] = _("Generated purchases") + action["domain"] = [("id", "in", orders.ids)] + return action diff --git a/stock_orderpoint_purchase_link/tests/test_stock_orderpoint_purchase_link.py b/stock_orderpoint_purchase_link/tests/test_stock_orderpoint_purchase_link.py index 1ae049be4..b3a3391a8 100644 --- a/stock_orderpoint_purchase_link/tests/test_stock_orderpoint_purchase_link.py +++ b/stock_orderpoint_purchase_link/tests/test_stock_orderpoint_purchase_link.py @@ -69,11 +69,11 @@ class TestOrderpointPurchaseLink(common.TransactionCase): "product_max_qty": 20.0, } ) + self.group_obj.run_scheduler() def test_01_po_line_from_orderpoints(self): """Test that a PO line created/updated by two orderpoints keeps the link with both of them.""" - self.group_obj.run_scheduler() po_line = self.env["purchase.order.line"].search( [("product_id", "=", self.tp1.id)] ) @@ -81,3 +81,12 @@ class TestOrderpointPurchaseLink(common.TransactionCase): # Each orderpoint must have required 20.0 units: self.assertEqual(po_line.product_qty, 40.0) self.assertEqual(len(po_line.orderpoint_ids), 2) + + def test_02_button_view_purchases(self): + po_line = self.env["purchase.order.line"].search( + [("product_id", "=", self.tp1.id)] + ) + self.assertEqual(self.op1.purchase_count, 1) + self.assertEqual(self.op2.purchase_count, 1) + action = self.op1.button_view_purchases() + self.assertEqual(action["domain"], [("id", "in", [po_line.order_id.id])]) diff --git a/stock_orderpoint_purchase_link/views/stock_warehouse_orderpoint_views.xml b/stock_orderpoint_purchase_link/views/stock_warehouse_orderpoint_views.xml new file mode 100644 index 000000000..0bed0e60a --- /dev/null +++ b/stock_orderpoint_purchase_link/views/stock_warehouse_orderpoint_views.xml @@ -0,0 +1,26 @@ + + + + + stock.warehouse.orderpoint.form - PO smart-button + stock.warehouse.orderpoint + + + + + + + +