diff --git a/mrp_sale_info/__manifest__.py b/mrp_sale_info/__manifest__.py index 5457a8cdb..99a44addf 100644 --- a/mrp_sale_info/__manifest__.py +++ b/mrp_sale_info/__manifest__.py @@ -14,10 +14,12 @@ "installable": True, "depends": [ "mrp", + "sale", "sale_stock", ], "data": [ "views/mrp_production.xml", "views/mrp_workorder.xml", + "views/sale_order.xml", ], } diff --git a/mrp_sale_info/models/__init__.py b/mrp_sale_info/models/__init__.py index ab9fed971..deb13b1e9 100644 --- a/mrp_sale_info/models/__init__.py +++ b/mrp_sale_info/models/__init__.py @@ -3,3 +3,4 @@ from . import mrp_production from . import mrp_workorder from . import stock_rule +from . import sale_order diff --git a/mrp_sale_info/models/sale_order.py b/mrp_sale_info/models/sale_order.py new file mode 100644 index 000000000..dacc9e3fd --- /dev/null +++ b/mrp_sale_info/models/sale_order.py @@ -0,0 +1,27 @@ +# Copyright 2018 Alex Comba - Agile Business Group +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class SaleOrder(models.Model): + _inherit = "sale.order" + + production_ids = fields.One2many("mrp.production", "sale_id") + production_count = fields.Integer(compute="_compute_production_count", store=True) + + @api.depends("production_ids") + def _compute_production_count(self): + for sale in self: + sale.production_count = len(sale.production_ids) + + def action_view_production(self): + action = self.env.ref("mrp.mrp_production_action").read()[0] + if self.production_count > 1: + action["domain"] = [("id", "in", self.production_ids.ids)] + else: + action["views"] = [ + (self.env.ref("mrp.mrp_production_form_view").id, "form") + ] + action["res_id"] = self.production_ids.id + return action diff --git a/mrp_sale_info/tests/test_mrp_sale_info.py b/mrp_sale_info/tests/test_mrp_sale_info.py index 132111422..62ca10ab7 100644 --- a/mrp_sale_info/tests/test_mrp_sale_info.py +++ b/mrp_sale_info/tests/test_mrp_sale_info.py @@ -52,3 +52,6 @@ class TestMrpSaleInfo(common.SavepointCase): self.assertEqual(production.sale_id, self.sale_order) self.assertEqual(production.partner_id, self.partner) self.assertEqual(production.client_order_ref, self.sale_order.client_order_ref) + self.assertEqual(self.sale_order.production_count, 1) + sale_action = self.sale_order.action_view_production() + self.assertEqual(sale_action["res_id"], production.id) diff --git a/mrp_sale_info/views/sale_order.xml b/mrp_sale_info/views/sale_order.xml new file mode 100644 index 000000000..8842dfcb9 --- /dev/null +++ b/mrp_sale_info/views/sale_order.xml @@ -0,0 +1,30 @@ + + + + + + sale.order.form + sale.order + + + + + + + + +