diff --git a/client_name_on_manufacturing_orders/__manifest__.py b/client_name_on_manufacturing_orders/__manifest__.py index 888b902..5ec6ace 100644 --- a/client_name_on_manufacturing_orders/__manifest__.py +++ b/client_name_on_manufacturing_orders/__manifest__.py @@ -18,17 +18,23 @@ # DEALINGS IN THE SOFTWARE. # { - 'name': 'Client Name on Manufacturing Order', - 'version': '17.0.1.0.0', - 'summary': 'Show the customer name on manufacturing order views.', - 'category': 'Manufacturing', - 'author': 'Bemade Inc.', - 'website': 'http://www.bemade.org', - 'license': 'LGPL-3', - 'depends': ['sale_mrp'], - 'data': [ - 'views/mrp_production_views.xml', + "name": "Client Name on Manufacturing Order", + "version": "17.0.2.0.0", + "summary": "Show the customer name on manufacturing order views.", + "category": "Manufacturing", + "author": "Bemade Inc.", + "website": "http://www.bemade.org", + "license": "LGPL-3", + "depends": ["sale_mrp", "mrp_workorder", "web"], + "data": [ + "views/mrp_production_views.xml", ], - 'installable': True, - 'auto_install': False + 'assets': { + 'web.assets_backend': [ + 'client_name_on_manufacturing_orders/static/src/**/*.xml', + 'client_name_on_manufacturing_orders/static/src/**/*.js', + ] + }, + "installable": True, + "auto_install": False, } diff --git a/client_name_on_manufacturing_orders/models/__init__.py b/client_name_on_manufacturing_orders/models/__init__.py index cd79a59..a9e5f13 100644 --- a/client_name_on_manufacturing_orders/models/__init__.py +++ b/client_name_on_manufacturing_orders/models/__init__.py @@ -1 +1 @@ -from . import mrp_production \ No newline at end of file +from . import mrp_production diff --git a/client_name_on_manufacturing_orders/models/mrp_production.py b/client_name_on_manufacturing_orders/models/mrp_production.py index 1ad379c..036396d 100644 --- a/client_name_on_manufacturing_orders/models/mrp_production.py +++ b/client_name_on_manufacturing_orders/models/mrp_production.py @@ -2,20 +2,40 @@ from odoo import models, fields, api class MrpProduction(models.Model): - _inherit = 'mrp.production' + _inherit = "mrp.production" customer_ids = fields.Many2many( - comodel_name='res.partner', + comodel_name="res.partner", compute="_compute_customers", string="Customers", + store=True, + compute_sudo=True, ) - @api.depends('procurement_group_id') + upstream_production_ids = fields.Many2many( + comodel_name="mrp.production", + relation="mrp_production_upstream_rel", + column1="production_id", + column2="upstream_production_id", + compute="_compute_upstream_production_ids", + string="Upstream Manufacturing Orders", + store=True, + compute_sudo=True, + ) + + @api.depends("procurement_group_id") def _compute_customers(self): for rec in self: - rec.customer_ids = (rec.mapped('procurement_group_id'). - mapped('mrp_production_ids'). - mapped('move_dest_ids'). - mapped('group_id'). - mapped('sale_id'). - mapped('partner_id').ids) + rec.customer_ids = ( + rec.mapped("procurement_group_id") + .mapped("mrp_production_ids") + .mapped("move_dest_ids") + .mapped("group_id") + .mapped("sale_id") + .mapped("partner_id") + .ids + ) + + def _compute_upstream_production_ids(self): + for rec in self: + rec.upstream_production_ids = rec._get_sources().ids diff --git a/client_name_on_manufacturing_orders/models/mrp_workorder.py b/client_name_on_manufacturing_orders/models/mrp_workorder.py new file mode 100644 index 0000000..cf74a99 --- /dev/null +++ b/client_name_on_manufacturing_orders/models/mrp_workorder.py @@ -0,0 +1,27 @@ +from odoo import models, fields, api + + +class MrpWorkorder(models.Model): + _inherit = "mrp.workorder" + + customer_ids = fields.Many2many( + comodel_name="res.partner", + compute="_compute_customer_ids", + string="Customers", + ) + + upstream_production_ids = fields.Many2many( + comodel_name="mrp.production", + compute="_compute_upstream_production_ids", + string="Upstream Manufacturing Orders", + ) + + @api.depends("production_id.customer_ids") + def _compute_customer_ids(self): + for rec in self: + rec.customer_ids = rec.production_id.customer_ids + + @api.depends("production_id.upstream_production_ids") + def _compute_upstream_production_ids(self): + for rec in self: + rec.upstream_production_ids = rec.production_id.upstream_production_ids diff --git a/client_name_on_manufacturing_orders/static/src/mrp_display/mrp_display.esm.js b/client_name_on_manufacturing_orders/static/src/mrp_display/mrp_display.esm.js new file mode 100644 index 0000000..6959623 --- /dev/null +++ b/client_name_on_manufacturing_orders/static/src/mrp_display/mrp_display.esm.js @@ -0,0 +1,18 @@ +/** @odoo-module **/ + +import {MrpDisplay} from "@mrp_workorder/mrp_display/mrp_display"; +import {patch} from "@web/core/utils/patch"; + +patch(MrpDisplay.prototype, { + _makeModelParams() { + var params = super._makeModelParams(); + const customerFields = this.props.models.find( + (m) => m.resModel === "res.partner" + ).fields; + params.config.activeFields.customer_ids.related = { + fields: customerFields, + activeFields: customerFields, + }; + return params; + }, +}); diff --git a/client_name_on_manufacturing_orders/static/src/mrp_display/mrp_display_action.esm.js b/client_name_on_manufacturing_orders/static/src/mrp_display/mrp_display_action.esm.js new file mode 100644 index 0000000..bcdced1 --- /dev/null +++ b/client_name_on_manufacturing_orders/static/src/mrp_display/mrp_display_action.esm.js @@ -0,0 +1,14 @@ +/** @odoo-module **/ + +import {MrpDisplayAction} from "@mrp_workorder/mrp_display/mrp_display_action"; +import {patch} from "@web/core/utils/patch"; + +patch(MrpDisplayAction.prototype, { + get fieldsStructure() { + const vals = super.fieldsStructure; + vals["mrp.production"].push("customer_ids", "upstream_production_ids"); + vals["mrp.workorder"].push("customer_ids", "upstream_production_ids"); + vals["res.partner"] = ["id", "display_name"]; + return vals; + }, +}); diff --git a/client_name_on_manufacturing_orders/static/src/mrp_display/mrp_display_record.esm.js b/client_name_on_manufacturing_orders/static/src/mrp_display/mrp_display_record.esm.js new file mode 100644 index 0000000..ac07d1f --- /dev/null +++ b/client_name_on_manufacturing_orders/static/src/mrp_display/mrp_display_record.esm.js @@ -0,0 +1,9 @@ +/** @odoo-module **/ + +import {Many2ManyTagsField} from "@web/views/fields/many2many_tags/many2many_tags_field"; +import {MrpDisplayRecord} from "@mrp_workorder/mrp_display/mrp_display_record"; + +MrpDisplayRecord.components = { + ...MrpDisplayRecord.components, + Many2ManyTagsField, +}; diff --git a/client_name_on_manufacturing_orders/static/src/mrp_display/mrp_display_record.xml b/client_name_on_manufacturing_orders/static/src/mrp_display/mrp_display_record.xml new file mode 100644 index 0000000..3cbd34b --- /dev/null +++ b/client_name_on_manufacturing_orders/static/src/mrp_display/mrp_display_record.xml @@ -0,0 +1,19 @@ + + + + + + + + + +