diff --git a/addons/sale_mrp/__manifest__.py b/addons/sale_mrp/__manifest__.py index 29c3636d80a..5ea5defff6e 100644 --- a/addons/sale_mrp/__manifest__.py +++ b/addons/sale_mrp/__manifest__.py @@ -16,6 +16,8 @@ from sales order. It adds sales name and sales Reference on production order. 'depends': ['mrp', 'sale_stock'], 'data': [ 'security/ir.model.access.csv', + 'views/mrp_production_views.xml', + 'views/sale_order_views.xml' ], 'demo': [], 'installable': True, diff --git a/addons/sale_mrp/models/__init__.py b/addons/sale_mrp/models/__init__.py index 9a9609e5400..6e09b9faac4 100644 --- a/addons/sale_mrp/models/__init__.py +++ b/addons/sale_mrp/models/__init__.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from . import sale_mrp +from . import sale from . import account_move +from . import mrp_production diff --git a/addons/sale_mrp/models/mrp_production.py b/addons/sale_mrp/models/mrp_production.py new file mode 100644 index 00000000000..e05fd996a2b --- /dev/null +++ b/addons/sale_mrp/models/mrp_production.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models, _ + + +class MrpProduction(models.Model): + _inherit = 'mrp.production' + + sale_order_count = fields.Integer( + "Count of Source SO", + compute='_compute_sale_order_count', + groups='sales_team.group_sale_salesman') + + @api.depends('move_dest_ids.group_id.sale_id') + def _compute_sale_order_count(self): + for production in self: + production.sale_order_count = len(production.move_dest_ids.group_id.sale_id) + + def action_view_sale_orders(self): + self.ensure_one() + sale_order_ids = self.move_dest_ids.group_id.sale_id.ids + action = { + 'res_model': 'sale.order', + 'type': 'ir.actions.act_window', + } + if len(sale_order_ids) == 1: + action.update({ + 'view_mode': 'form', + 'res_id': sale_order_ids[0], + }) + else: + action.update({ + 'name': _("Sources Sale Orders of %s" % self.name), + 'domain': [('id', 'in', sale_order_ids)], + 'view_mode': 'tree,form', + }) + return action diff --git a/addons/sale_mrp/models/sale_mrp.py b/addons/sale_mrp/models/sale.py similarity index 77% rename from addons/sale_mrp/models/sale_mrp.py rename to addons/sale_mrp/models/sale.py index 3fa0d216235..a5da78cc4a5 100644 --- a/addons/sale_mrp/models/sale_mrp.py +++ b/addons/sale_mrp/models/sale.py @@ -2,7 +2,40 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo import api, fields, models, _ -from odoo.tools import float_compare, float_round + + +class SaleOrder(models.Model): + _inherit = 'sale.order' + + mrp_production_count = fields.Integer( + "Count of MO generated", + compute='_compute_mrp_production_count', + groups='mrp.group_mrp_user') + + @api.depends('procurement_group_id.stock_move_ids.created_production_id') + def _compute_mrp_production_count(self): + for sale in self: + sale.mrp_production_count = len(sale.procurement_group_id.stock_move_ids.created_production_id) + + def action_view_mrp_production(self): + self.ensure_one() + mrp_production_ids = self.procurement_group_id.stock_move_ids.created_production_id.ids + action = { + 'res_model': 'mrp.production', + 'type': 'ir.actions.act_window', + } + if len(mrp_production_ids) == 1: + action.update({ + 'view_mode': 'form', + 'res_id': mrp_production_ids[0], + }) + else: + action.update({ + 'name': _("Manufacturing Orders Generated by %s" % self.name), + 'domain': [('id', 'in', mrp_production_ids)], + 'view_mode': 'tree,form', + }) + return action class SaleOrderLine(models.Model): diff --git a/addons/sale_mrp/views/mrp_production_views.xml b/addons/sale_mrp/views/mrp_production_views.xml new file mode 100644 index 00000000000..c7ba8742f98 --- /dev/null +++ b/addons/sale_mrp/views/mrp_production_views.xml @@ -0,0 +1,18 @@ + + + + mrp.production.inherited.form.sale + mrp.production + + + + + + + + \ No newline at end of file diff --git a/addons/sale_mrp/views/sale_order_views.xml b/addons/sale_mrp/views/sale_order_views.xml new file mode 100644 index 00000000000..8777431f94c --- /dev/null +++ b/addons/sale_mrp/views/sale_order_views.xml @@ -0,0 +1,18 @@ + + + + sale.order.inherited.form.mrp + sale.order + + + + + + + + \ No newline at end of file