From c082baa340a75ff10d3ff4fe7809d32de23c44a3 Mon Sep 17 00:00:00 2001 From: clementmbr Date: Wed, 5 Aug 2020 14:33:07 -0300 Subject: [PATCH] [IMP] mrp_usability: improve smart button from products to BoMs --- mrp_usability/README.rst | 4 +- mrp_usability/__init__.py | 2 +- mrp_usability/__manifest__.py | 3 +- mrp_usability/models/__init__.py | 2 + mrp_usability/{ => models}/mrp.py | 0 mrp_usability/models/product.py | 44 +++++++++++++++++++ mrp_usability/readme/DESCRIPTION.rst | 2 + .../{mrp_view.xml => views/mrp_views.xml} | 0 mrp_usability/views/product_views.xml | 25 +++++++++++ 9 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 mrp_usability/models/__init__.py rename mrp_usability/{ => models}/mrp.py (100%) create mode 100644 mrp_usability/models/product.py rename mrp_usability/{mrp_view.xml => views/mrp_views.xml} (100%) create mode 100644 mrp_usability/views/product_views.xml diff --git a/mrp_usability/README.rst b/mrp_usability/README.rst index 4039657..e3435f7 100644 --- a/mrp_usability/README.rst +++ b/mrp_usability/README.rst @@ -17,7 +17,7 @@ MRP Usability :target: https://github.com/akretion/odoo-usability/tree/12.0/mrp_usability :alt: akretion/odoo-usability -|badge1| |badge2| |badge3| +|badge1| |badge2| |badge3| Small usability improvements on MRP: @@ -31,6 +31,8 @@ Small usability improvements on MRP: * complete Manufacturing Order report with unvailable products +* improve smart button from products to BoMs (display BoM form if only one instead of displaying a list of one) + **Table of contents** .. contents:: diff --git a/mrp_usability/__init__.py b/mrp_usability/__init__.py index 6a2984d..0650744 100644 --- a/mrp_usability/__init__.py +++ b/mrp_usability/__init__.py @@ -1 +1 @@ -from . import mrp +from . import models diff --git a/mrp_usability/__manifest__.py b/mrp_usability/__manifest__.py index 64cba7d..206fdb2 100644 --- a/mrp_usability/__manifest__.py +++ b/mrp_usability/__manifest__.py @@ -13,7 +13,8 @@ 'website': 'http://www.akretion.com', 'depends': ['mrp'], 'data': [ - 'mrp_view.xml', + 'views/mrp_views.xml', + 'views/product_views.xml', 'report/mrp_report.xml' ], 'installable': True, diff --git a/mrp_usability/models/__init__.py b/mrp_usability/models/__init__.py new file mode 100644 index 0000000..820357d --- /dev/null +++ b/mrp_usability/models/__init__.py @@ -0,0 +1,2 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from . import mrp, product diff --git a/mrp_usability/mrp.py b/mrp_usability/models/mrp.py similarity index 100% rename from mrp_usability/mrp.py rename to mrp_usability/models/mrp.py diff --git a/mrp_usability/models/product.py b/mrp_usability/models/product.py new file mode 100644 index 0000000..12fba4c --- /dev/null +++ b/mrp_usability/models/product.py @@ -0,0 +1,44 @@ +# Copyright (C) 2020 - Akretion +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import models + + +class ProductTemplate(models.Model): + _inherit = "product.template" + + def action_view_bom(self): + """Replace native action `template_open_bom` to distinguish if we will display + only one BoM form or a list of BoMs.""" + self.ensure_one() + + act_window_xml_id = "mrp.mrp_bom_form_action" + act_window = self.env.ref(act_window_xml_id).read()[0] + if self.bom_count > 1: + act_window["context"] = { + "default_product_tmpl_id": self.id, + "search_default_product_tmpl_id": self.id, + } + else: + act_window["context"] = {"default_product_tmpl_id": self.id} + act_window["views"] = [(self.env.ref("mrp.mrp_bom_form_view").id, "form")] + act_window["res_id"] = ( + self.env["mrp.bom"].search([("product_tmpl_id", "=", self.id)]).id + ) + + return act_window + + +class ProductProduct(models.Model): + _inherit = "product.product" + + def action_view_bom(self): + res = super().action_view_bom() + + bom_target_ids = self.env["mrp.bom"].search(res["domain"]) + + if len(bom_target_ids) == 1: + res["views"] = [(self.env.ref("mrp.mrp_bom_form_view").id, "form")] + res["res_id"] = bom_target_ids[0].id + + return res diff --git a/mrp_usability/readme/DESCRIPTION.rst b/mrp_usability/readme/DESCRIPTION.rst index 197585f..b66d7a1 100644 --- a/mrp_usability/readme/DESCRIPTION.rst +++ b/mrp_usability/readme/DESCRIPTION.rst @@ -9,3 +9,5 @@ Small usability improvements on MRP: * show bom type in tree view + add group by * complete Manufacturing Order report with unvailable products + +* improve smart button from products to BoMs (display BoM form if only one instead of displaying a list of one) diff --git a/mrp_usability/mrp_view.xml b/mrp_usability/views/mrp_views.xml similarity index 100% rename from mrp_usability/mrp_view.xml rename to mrp_usability/views/mrp_views.xml diff --git a/mrp_usability/views/product_views.xml b/mrp_usability/views/product_views.xml new file mode 100644 index 0000000..0d2da11 --- /dev/null +++ b/mrp_usability/views/product_views.xml @@ -0,0 +1,25 @@ + + + + + product.template.procurement + product.template + + + + + 1 + + + + + + + + +