From a1840a5ed414b6a511faae34de8cacf5e79ab6d9 Mon Sep 17 00:00:00 2001 From: Lois Rilo Date: Tue, 3 Sep 2019 10:42:27 +0200 Subject: [PATCH 1/3] [12.0][ADD] product_mrp_info --- product_mrp_info/README.rst | 88 ++++ product_mrp_info/__init__.py | 1 + product_mrp_info/__manifest__.py | 23 + product_mrp_info/i18n/product_mrp_info.pot | 43 ++ product_mrp_info/models/__init__.py | 1 + product_mrp_info/models/product.py | 61 +++ product_mrp_info/readme/CONTRIBUTORS.rst | 1 + product_mrp_info/readme/DESCRIPTION.rst | 1 + product_mrp_info/readme/USAGE.rst | 3 + product_mrp_info/static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 428 ++++++++++++++++++ product_mrp_info/tests/__init__.py | 1 + .../tests/test_product_mrp_info.py | 83 ++++ product_mrp_info/views/product_views.xml | 38 ++ 14 files changed, 772 insertions(+) create mode 100644 product_mrp_info/README.rst create mode 100644 product_mrp_info/__init__.py create mode 100644 product_mrp_info/__manifest__.py create mode 100644 product_mrp_info/i18n/product_mrp_info.pot create mode 100644 product_mrp_info/models/__init__.py create mode 100644 product_mrp_info/models/product.py create mode 100644 product_mrp_info/readme/CONTRIBUTORS.rst create mode 100644 product_mrp_info/readme/DESCRIPTION.rst create mode 100644 product_mrp_info/readme/USAGE.rst create mode 100644 product_mrp_info/static/description/icon.png create mode 100644 product_mrp_info/static/description/index.html create mode 100644 product_mrp_info/tests/__init__.py create mode 100644 product_mrp_info/tests/test_product_mrp_info.py create mode 100644 product_mrp_info/views/product_views.xml diff --git a/product_mrp_info/README.rst b/product_mrp_info/README.rst new file mode 100644 index 000000000..0a8445c7b --- /dev/null +++ b/product_mrp_info/README.rst @@ -0,0 +1,88 @@ +================ +Product MRP Info +================ + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github + :target: https://github.com/OCA/manufacture/tree/12.0/product_mrp_info + :alt: OCA/manufacture +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/manufacture-12-0/manufacture-12-0-product_mrp_info + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/129/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Adds smart button in product form view linking to manufacturing order list. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +Go to a product form and on the smart buttons you will se a new one, *MO's*, +click on it to access to a list of all the manufacturing Orders for that +product. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Eficent + +Contributors +~~~~~~~~~~~~ + +* Lois Rilo + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-lreficent| image:: https://github.com/lreficent.png?size=40px + :target: https://github.com/lreficent + :alt: lreficent + +Current `maintainer `__: + +|maintainer-lreficent| + +This module is part of the `OCA/manufacture `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_mrp_info/__init__.py b/product_mrp_info/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/product_mrp_info/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/product_mrp_info/__manifest__.py b/product_mrp_info/__manifest__.py new file mode 100644 index 000000000..6a56ca002 --- /dev/null +++ b/product_mrp_info/__manifest__.py @@ -0,0 +1,23 @@ +# Copyright 2019 Eficent Business and IT Consulting Services S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +{ + "name": "Product MRP Info", + "version": "12.0.1.0.0", + "development_status": "Beta", + "license": "LGPL-3", + "author": "Eficent, Odoo Community Association (OCA)", + "maintainers": ["lreficent"], + "summary": "Adds smart button in product form view linking to " + "manufacturing order list.", + "website": "https://github.com/OCA/manufacture", + "category": "Manufacturing", + "depends": [ + "mrp", + ], + "data": [ + "views/product_views.xml", + ], + "installable": True, + "application": False, +} diff --git a/product_mrp_info/i18n/product_mrp_info.pot b/product_mrp_info/i18n/product_mrp_info.pot new file mode 100644 index 000000000..5dc30d22c --- /dev/null +++ b/product_mrp_info/i18n/product_mrp_info.pot @@ -0,0 +1,43 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_mrp_info +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: product_mrp_info +#: model:ir.model.fields,field_description:product_mrp_info.field_product_product__mo_count +#: model:ir.model.fields,field_description:product_mrp_info.field_product_template__mo_count +msgid "# Manufacturing Orders" +msgstr "" + +#. module: product_mrp_info +#: model_terms:ir.ui.view,arch_db:product_mrp_info.product_normal_form_view +#: model_terms:ir.ui.view,arch_db:product_mrp_info.product_template_only_form_view +msgid "MO's" +msgstr "" + +#. module: product_mrp_info +#: model_terms:ir.ui.view,arch_db:product_mrp_info.product_normal_form_view +#: model_terms:ir.ui.view,arch_db:product_mrp_info.product_template_only_form_view +msgid "Manufactured Orders" +msgstr "" + +#. module: product_mrp_info +#: model:ir.model,name:product_mrp_info.model_product_product +msgid "Product" +msgstr "" + +#. module: product_mrp_info +#: model:ir.model,name:product_mrp_info.model_product_template +msgid "Product Template" +msgstr "" + diff --git a/product_mrp_info/models/__init__.py b/product_mrp_info/models/__init__.py new file mode 100644 index 000000000..9649db77a --- /dev/null +++ b/product_mrp_info/models/__init__.py @@ -0,0 +1 @@ +from . import product diff --git a/product_mrp_info/models/product.py b/product_mrp_info/models/product.py new file mode 100644 index 000000000..96a7a0fb5 --- /dev/null +++ b/product_mrp_info/models/product.py @@ -0,0 +1,61 @@ +# Copyright 2019 Eficent Business and IT Consulting Services S.L. +# - Lois Rilo Antelo +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo import api, fields, models + + +class ProductTemplate(models.Model): + _inherit = "product.template" + + mo_count = fields.Integer( + string="# Manufacturing Orders", + compute="_compute_mo_count", + ) + + @api.multi + def _compute_mo_count(self): + read_group_res = self.env["mrp.production"].read_group( + [("product_id", "in", self.mapped("product_variant_ids").ids)], + ["product_id"], ["product_id"]) + mapped_data = dict( + [(data["product_id"][0], data["product_id_count"]) for data in + read_group_res]) + for rec in self: + count = 0 + for variant in rec.mapped("product_variant_ids"): + count += mapped_data.get(variant.id, 0) + rec.mo_count = count + + def action_view_mrp_productions(self): + product_ids = self.mapped("product_variant_ids").ids + action = self.env.ref("mrp.act_product_mrp_production").read()[0] + action["domain"] = [("product_id", "in", product_ids)] + action["context"] = {} + return action + + +class ProductProduct(models.Model): + _inherit = "product.product" + + mo_count = fields.Integer( + string="# Manufacturing Orders", + compute="_compute_mo_count", + ) + + def _compute_mo_count(self): + read_group_res = self.env["mrp.production"].read_group( + [("product_id", "in", self.ids)], ["product_id"], ["product_id"]) + mapped_data = dict( + [(data["product_id"][0], data["product_id_count"]) for data in + read_group_res]) + for product in self: + product.mo_count = mapped_data.get(product.id, 0) + + @api.multi + def action_view_mrp_productions(self): + product_ids = self.ids + action = self.env.ref("mrp.act_product_mrp_production").read()[0] + action["domain"] = [("product_id", "in", product_ids)] + action["context"] = {} + return action diff --git a/product_mrp_info/readme/CONTRIBUTORS.rst b/product_mrp_info/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..4b574636c --- /dev/null +++ b/product_mrp_info/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Lois Rilo diff --git a/product_mrp_info/readme/DESCRIPTION.rst b/product_mrp_info/readme/DESCRIPTION.rst new file mode 100644 index 000000000..44ed736bd --- /dev/null +++ b/product_mrp_info/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Adds smart button in product form view linking to manufacturing order list. \ No newline at end of file diff --git a/product_mrp_info/readme/USAGE.rst b/product_mrp_info/readme/USAGE.rst new file mode 100644 index 000000000..80351dbae --- /dev/null +++ b/product_mrp_info/readme/USAGE.rst @@ -0,0 +1,3 @@ +Go to a product form and on the smart buttons you will se a new one, *MO's*, +click on it to access to a list of all the manufacturing Orders for that +product. \ No newline at end of file diff --git a/product_mrp_info/static/description/icon.png b/product_mrp_info/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/product_mrp_info/static/description/index.html b/product_mrp_info/static/description/index.html new file mode 100644 index 000000000..2c5da40d4 --- /dev/null +++ b/product_mrp_info/static/description/index.html @@ -0,0 +1,428 @@ + + + + + + +Product MRP Info + + + +
+

Product MRP Info

+ + +

Beta License: LGPL-3 OCA/manufacture Translate me on Weblate Try me on Runbot

+

Adds smart button in product form view linking to manufacturing order list.

+

Table of contents

+ +
+

Usage

+

Go to a product form and on the smart buttons you will se a new one, MO’s, +click on it to access to a list of all the manufacturing Orders for that +product.

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Eficent
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

lreficent

+

This module is part of the OCA/manufacture project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/product_mrp_info/tests/__init__.py b/product_mrp_info/tests/__init__.py new file mode 100644 index 000000000..93b69081f --- /dev/null +++ b/product_mrp_info/tests/__init__.py @@ -0,0 +1 @@ +from . import test_product_mrp_info diff --git a/product_mrp_info/tests/test_product_mrp_info.py b/product_mrp_info/tests/test_product_mrp_info.py new file mode 100644 index 000000000..66582e5bd --- /dev/null +++ b/product_mrp_info/tests/test_product_mrp_info.py @@ -0,0 +1,83 @@ +# Copyright 2019 Eficent Business and IT Consulting Services, S.L. +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from odoo.tests.common import TransactionCase + + +class TestProductMrpInfo(TransactionCase): + + def setUp(self): + super().setUp() + self.pt_obj = self.env["product.template"] + self.pp_obj = self.env["product.product"] + self.mo_obj = self.env["mrp.production"] + self.bom_obj = self.env["mrp.bom"] + self.boml_obj = self.env["mrp.bom.line"] + + self.manufacture_route = self.env.ref( + "mrp.route_warehouse0_manufacture") + + self.attribute = self.env["product.attribute"].create({ + "name": "Test Attribute", + "create_variant": "always", + }) + self.value1 = self.env["product.attribute.value"].create({ + "name": "Value 1", + "attribute_id": self.attribute.id, + }) + self.value2 = self.env["product.attribute.value"].create({ + "name": "Value 2", + "attribute_id": self.attribute.id, + }) + self.product = self.pt_obj.create({ + "name": "Test Template", + "attribute_line_ids": [(0, 0, { + "attribute_id": self.attribute.id, + "value_ids": [(6, 0, [self.value1.id, self.value2.id])] + })], + "route_ids": [(6, 0, self.manufacture_route.ids)], + }) + self.variant_1 = self.product.product_variant_ids[0] + self.variant_2 = self.product.product_variant_ids[1] + self.bom = self.bom_obj.create({ + "product_tmpl_id": self.product.id, + "product_qty": 1.0, + }) + # Create 3 MO's + self.mo_1 = self.mo_obj.create({ + "name": "MO ABC", + "product_id": self.variant_1.id, + "product_uom_id": self.variant_1.uom_id.id, + "product_qty": 2, + "bom_id": self.bom.id, + }) + self.mo_2 = self.mo_obj.create({ + "name": "MO XYZ", + "product_id": self.variant_1.id, + "product_uom_id": self.variant_1.uom_id.id, + "product_qty": 3, + "bom_id": self.bom.id, + }) + self.mo_3 = self.mo_obj.create({ + "name": "MO QWE", + "product_id": self.variant_2.id, + "product_uom_id": self.variant_2.uom_id.id, + "product_qty": 6, + "bom_id": self.bom.id, + }) + + def test_01_mo_counters(self): + self.assertEqual(len(self.product.product_variant_ids), 2) + self.assertEqual(self.product.mo_count, 3) + self.assertEqual(self.variant_1.mo_count, 2) + self.assertEqual(self.variant_2.mo_count, 1) + + def test_02_actions(self): + # template + res = self.product.action_view_mrp_productions() + count = self.mo_obj.search_count(res["domain"]) + self.assertEqual(count, 3) + # variant + res = self.variant_1.action_view_mrp_productions() + count = self.mo_obj.search_count(res["domain"]) + self.assertEqual(count, 2) diff --git a/product_mrp_info/views/product_views.xml b/product_mrp_info/views/product_views.xml new file mode 100644 index 000000000..0f883b6cf --- /dev/null +++ b/product_mrp_info/views/product_views.xml @@ -0,0 +1,38 @@ + + + + + + product.template - product_mrp_info + product.template + + + + + + + + + + + product.product - product_mrp_info + product.product + + + + + + + + + From cadc98f0d06e1f843a1f3d39fb35b65d8882e79c Mon Sep 17 00:00:00 2001 From: sudhir-erpharbor Date: Fri, 11 Oct 2019 15:05:54 +0530 Subject: [PATCH 2/3] [MIG] product_mrp_info: Migration to 13.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Héctor Villarreal Ortega --- product_mrp_info/README.rst | 23 ++-- product_mrp_info/__manifest__.py | 18 ++- product_mrp_info/i18n/product_mrp_info.pot | 7 +- product_mrp_info/models/product.py | 33 +++--- product_mrp_info/readme/CONTRIBUTORS.rst | 3 +- product_mrp_info/readme/DESCRIPTION.rst | 2 +- product_mrp_info/readme/USAGE.rst | 2 +- .../static/description/index.html | 13 ++- .../tests/test_product_mrp_info.py | 106 ++++++++++-------- product_mrp_info/views/product_views.xml | 42 ++++--- 10 files changed, 132 insertions(+), 117 deletions(-) diff --git a/product_mrp_info/README.rst b/product_mrp_info/README.rst index 0a8445c7b..465ff08e1 100644 --- a/product_mrp_info/README.rst +++ b/product_mrp_info/README.rst @@ -14,13 +14,13 @@ Product MRP Info :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html :alt: License: LGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github - :target: https://github.com/OCA/manufacture/tree/12.0/product_mrp_info + :target: https://github.com/OCA/manufacture/tree/13.0/product_mrp_info :alt: OCA/manufacture .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/manufacture-12-0/manufacture-12-0-product_mrp_info + :target: https://translation.odoo-community.org/projects/manufacture-13-0/manufacture-13-0-product_mrp_info :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/129/12.0 + :target: https://runbot.odoo-community.org/runbot/129/13.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -45,7 +45,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -55,12 +55,13 @@ Credits Authors ~~~~~~~ -* Eficent +* ForgeFlow Contributors ~~~~~~~~~~~~ -* Lois Rilo +* Lois Rilo +* Sudhir Arya Maintainers ~~~~~~~~~~~ @@ -75,14 +76,14 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -.. |maintainer-lreficent| image:: https://github.com/lreficent.png?size=40px - :target: https://github.com/lreficent - :alt: lreficent +.. |maintainer-LoisRForgeFlow| image:: https://github.com/LoisRForgeFlow.png?size=40px + :target: https://github.com/LoisRForgeFlow + :alt: LoisRForgeFlow Current `maintainer `__: -|maintainer-lreficent| +|maintainer-LoisRForgeFlow| -This module is part of the `OCA/manufacture `_ project on GitHub. +This module is part of the `OCA/manufacture `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_mrp_info/__manifest__.py b/product_mrp_info/__manifest__.py index 6a56ca002..53ac391f1 100644 --- a/product_mrp_info/__manifest__.py +++ b/product_mrp_info/__manifest__.py @@ -1,23 +1,19 @@ -# Copyright 2019 Eficent Business and IT Consulting Services S.L. +# Copyright 2019 ForgeFlow S.L. # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). { "name": "Product MRP Info", - "version": "12.0.1.0.0", + "version": "13.0.1.0.0", "development_status": "Beta", "license": "LGPL-3", - "author": "Eficent, Odoo Community Association (OCA)", - "maintainers": ["lreficent"], + "author": "ForgeFlow, Odoo Community Association (OCA)", + "maintainers": ["LoisRForgeFlow"], "summary": "Adds smart button in product form view linking to " - "manufacturing order list.", + "manufacturing order list.", "website": "https://github.com/OCA/manufacture", "category": "Manufacturing", - "depends": [ - "mrp", - ], - "data": [ - "views/product_views.xml", - ], + "depends": ["mrp"], + "data": ["views/product_views.xml"], "installable": True, "application": False, } diff --git a/product_mrp_info/i18n/product_mrp_info.pot b/product_mrp_info/i18n/product_mrp_info.pot index 5dc30d22c..4250a596e 100644 --- a/product_mrp_info/i18n/product_mrp_info.pot +++ b/product_mrp_info/i18n/product_mrp_info.pot @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * product_mrp_info +# * product_mrp_info # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\n" +"Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -40,4 +40,3 @@ msgstr "" #: model:ir.model,name:product_mrp_info.model_product_template msgid "Product Template" msgstr "" - diff --git a/product_mrp_info/models/product.py b/product_mrp_info/models/product.py index 96a7a0fb5..b6dab56e1 100644 --- a/product_mrp_info/models/product.py +++ b/product_mrp_info/models/product.py @@ -1,26 +1,26 @@ -# Copyright 2019 Eficent Business and IT Consulting Services S.L. -# - Lois Rilo Antelo +# Copyright 2019 ForgeFlow S.L. +# - Lois Rilo Antelo # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). -from odoo import api, fields, models +from odoo import fields, models class ProductTemplate(models.Model): _inherit = "product.template" mo_count = fields.Integer( - string="# Manufacturing Orders", - compute="_compute_mo_count", + string="# Manufacturing Orders", compute="_compute_mo_count", ) - @api.multi def _compute_mo_count(self): read_group_res = self.env["mrp.production"].read_group( [("product_id", "in", self.mapped("product_variant_ids").ids)], - ["product_id"], ["product_id"]) - mapped_data = dict( - [(data["product_id"][0], data["product_id_count"]) for data in - read_group_res]) + ["product_id"], + ["product_id"], + ) + mapped_data = { + data["product_id"][0]: data["product_id_count"] for data in read_group_res + } for rec in self: count = 0 for variant in rec.mapped("product_variant_ids"): @@ -39,20 +39,19 @@ class ProductProduct(models.Model): _inherit = "product.product" mo_count = fields.Integer( - string="# Manufacturing Orders", - compute="_compute_mo_count", + string="# Manufacturing Orders", compute="_compute_mo_count", ) def _compute_mo_count(self): read_group_res = self.env["mrp.production"].read_group( - [("product_id", "in", self.ids)], ["product_id"], ["product_id"]) - mapped_data = dict( - [(data["product_id"][0], data["product_id_count"]) for data in - read_group_res]) + [("product_id", "in", self.ids)], ["product_id"], ["product_id"] + ) + mapped_data = { + data["product_id"][0]: data["product_id_count"] for data in read_group_res + } for product in self: product.mo_count = mapped_data.get(product.id, 0) - @api.multi def action_view_mrp_productions(self): product_ids = self.ids action = self.env.ref("mrp.act_product_mrp_production").read()[0] diff --git a/product_mrp_info/readme/CONTRIBUTORS.rst b/product_mrp_info/readme/CONTRIBUTORS.rst index 4b574636c..6477cc29f 100644 --- a/product_mrp_info/readme/CONTRIBUTORS.rst +++ b/product_mrp_info/readme/CONTRIBUTORS.rst @@ -1 +1,2 @@ -* Lois Rilo +* Lois Rilo +* Sudhir Arya diff --git a/product_mrp_info/readme/DESCRIPTION.rst b/product_mrp_info/readme/DESCRIPTION.rst index 44ed736bd..9fde6a944 100644 --- a/product_mrp_info/readme/DESCRIPTION.rst +++ b/product_mrp_info/readme/DESCRIPTION.rst @@ -1 +1 @@ -Adds smart button in product form view linking to manufacturing order list. \ No newline at end of file +Adds smart button in product form view linking to manufacturing order list. diff --git a/product_mrp_info/readme/USAGE.rst b/product_mrp_info/readme/USAGE.rst index 80351dbae..48b9527d0 100644 --- a/product_mrp_info/readme/USAGE.rst +++ b/product_mrp_info/readme/USAGE.rst @@ -1,3 +1,3 @@ Go to a product form and on the smart buttons you will se a new one, *MO's*, click on it to access to a list of all the manufacturing Orders for that -product. \ No newline at end of file +product. diff --git a/product_mrp_info/static/description/index.html b/product_mrp_info/static/description/index.html index 2c5da40d4..75f5228e0 100644 --- a/product_mrp_info/static/description/index.html +++ b/product_mrp_info/static/description/index.html @@ -367,7 +367,7 @@ ul.auto-toc { !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: LGPL-3 OCA/manufacture Translate me on Weblate Try me on Runbot

+

Beta License: LGPL-3 OCA/manufacture Translate me on Weblate Try me on Runbot

Adds smart button in product form view linking to manufacturing order list.

Table of contents

@@ -393,7 +393,7 @@ product.

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -401,13 +401,14 @@ If you spotted it first, help us smashing it by providing a detailed and welcome

Authors

    -
  • Eficent
  • +
  • ForgeFlow
@@ -418,8 +419,8 @@ If you spotted it first, help us smashing it by providing a detailed and welcome mission is to support the collaborative development of Odoo features and promote its widespread use.

Current maintainer:

-

lreficent

-

This module is part of the OCA/manufacture project on GitHub.

+

LoisRForgeFlow

+

This module is part of the OCA/manufacture project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

diff --git a/product_mrp_info/tests/test_product_mrp_info.py b/product_mrp_info/tests/test_product_mrp_info.py index 66582e5bd..e9974527c 100644 --- a/product_mrp_info/tests/test_product_mrp_info.py +++ b/product_mrp_info/tests/test_product_mrp_info.py @@ -1,11 +1,10 @@ -# Copyright 2019 Eficent Business and IT Consulting Services, S.L. +# Copyright 2019 ForgeFlow S.L. # License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). from odoo.tests.common import TransactionCase class TestProductMrpInfo(TransactionCase): - def setUp(self): super().setUp() self.pt_obj = self.env["product.template"] @@ -14,57 +13,66 @@ class TestProductMrpInfo(TransactionCase): self.bom_obj = self.env["mrp.bom"] self.boml_obj = self.env["mrp.bom.line"] - self.manufacture_route = self.env.ref( - "mrp.route_warehouse0_manufacture") + self.manufacture_route = self.env.ref("mrp.route_warehouse0_manufacture") - self.attribute = self.env["product.attribute"].create({ - "name": "Test Attribute", - "create_variant": "always", - }) - self.value1 = self.env["product.attribute.value"].create({ - "name": "Value 1", - "attribute_id": self.attribute.id, - }) - self.value2 = self.env["product.attribute.value"].create({ - "name": "Value 2", - "attribute_id": self.attribute.id, - }) - self.product = self.pt_obj.create({ - "name": "Test Template", - "attribute_line_ids": [(0, 0, { - "attribute_id": self.attribute.id, - "value_ids": [(6, 0, [self.value1.id, self.value2.id])] - })], - "route_ids": [(6, 0, self.manufacture_route.ids)], - }) + self.attribute = self.env["product.attribute"].create( + {"name": "Test Attribute", "create_variant": "always"} + ) + self.value1 = self.env["product.attribute.value"].create( + {"name": "Value 1", "attribute_id": self.attribute.id} + ) + self.value2 = self.env["product.attribute.value"].create( + {"name": "Value 2", "attribute_id": self.attribute.id} + ) + self.product = self.pt_obj.create( + { + "name": "Test Template", + "attribute_line_ids": [ + ( + 0, + 0, + { + "attribute_id": self.attribute.id, + "value_ids": [(6, 0, [self.value1.id, self.value2.id])], + }, + ) + ], + "route_ids": [(6, 0, self.manufacture_route.ids)], + } + ) self.variant_1 = self.product.product_variant_ids[0] self.variant_2 = self.product.product_variant_ids[1] - self.bom = self.bom_obj.create({ - "product_tmpl_id": self.product.id, - "product_qty": 1.0, - }) + self.bom = self.bom_obj.create( + {"product_tmpl_id": self.product.id, "product_qty": 1.0} + ) # Create 3 MO's - self.mo_1 = self.mo_obj.create({ - "name": "MO ABC", - "product_id": self.variant_1.id, - "product_uom_id": self.variant_1.uom_id.id, - "product_qty": 2, - "bom_id": self.bom.id, - }) - self.mo_2 = self.mo_obj.create({ - "name": "MO XYZ", - "product_id": self.variant_1.id, - "product_uom_id": self.variant_1.uom_id.id, - "product_qty": 3, - "bom_id": self.bom.id, - }) - self.mo_3 = self.mo_obj.create({ - "name": "MO QWE", - "product_id": self.variant_2.id, - "product_uom_id": self.variant_2.uom_id.id, - "product_qty": 6, - "bom_id": self.bom.id, - }) + self.mo_1 = self.mo_obj.create( + { + "name": "MO ABC", + "product_id": self.variant_1.id, + "product_uom_id": self.variant_1.uom_id.id, + "product_qty": 2, + "bom_id": self.bom.id, + } + ) + self.mo_2 = self.mo_obj.create( + { + "name": "MO XYZ", + "product_id": self.variant_1.id, + "product_uom_id": self.variant_1.uom_id.id, + "product_qty": 3, + "bom_id": self.bom.id, + } + ) + self.mo_3 = self.mo_obj.create( + { + "name": "MO QWE", + "product_id": self.variant_2.id, + "product_uom_id": self.variant_2.uom_id.id, + "product_qty": 6, + "bom_id": self.bom.id, + } + ) def test_01_mo_counters(self): self.assertEqual(len(self.product.product_variant_ids), 2) diff --git a/product_mrp_info/views/product_views.xml b/product_mrp_info/views/product_views.xml index 0f883b6cf..094efe5bd 100644 --- a/product_mrp_info/views/product_views.xml +++ b/product_mrp_info/views/product_views.xml @@ -1,20 +1,25 @@ - + product.template - product_mrp_info product.template - - + + - - + @@ -22,16 +27,21 @@ product.product - product_mrp_info product.product - - + + - - + From b16c3aa749bdc4b84c29b499677a9e014a962232 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Villarreal=20Ortega?= Date: Tue, 5 Jul 2022 13:21:40 +0200 Subject: [PATCH 3/3] [MIG] product_mrp_info: Migration to 14.0 --- product_mrp_info/__manifest__.py | 2 +- product_mrp_info/models/product.py | 14 ++++++++++---- .../product_mrp_info/odoo/addons/product_mrp_info | 1 + setup/product_mrp_info/setup.py | 6 ++++++ 4 files changed, 18 insertions(+), 5 deletions(-) create mode 120000 setup/product_mrp_info/odoo/addons/product_mrp_info create mode 100644 setup/product_mrp_info/setup.py diff --git a/product_mrp_info/__manifest__.py b/product_mrp_info/__manifest__.py index 53ac391f1..8f9d74fd7 100644 --- a/product_mrp_info/__manifest__.py +++ b/product_mrp_info/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Product MRP Info", - "version": "13.0.1.0.0", + "version": "14.0.1.0.0", "development_status": "Beta", "license": "LGPL-3", "author": "ForgeFlow, Odoo Community Association (OCA)", diff --git a/product_mrp_info/models/product.py b/product_mrp_info/models/product.py index b6dab56e1..bdc8257dd 100644 --- a/product_mrp_info/models/product.py +++ b/product_mrp_info/models/product.py @@ -9,7 +9,8 @@ class ProductTemplate(models.Model): _inherit = "product.template" mo_count = fields.Integer( - string="# Manufacturing Orders", compute="_compute_mo_count", + string="# Manufacturing Orders", + compute="_compute_mo_count", ) def _compute_mo_count(self): @@ -29,7 +30,9 @@ class ProductTemplate(models.Model): def action_view_mrp_productions(self): product_ids = self.mapped("product_variant_ids").ids - action = self.env.ref("mrp.act_product_mrp_production").read()[0] + action = self.env["ir.actions.act_window"]._for_xml_id( + "mrp.act_product_mrp_production_workcenter" + ) action["domain"] = [("product_id", "in", product_ids)] action["context"] = {} return action @@ -39,7 +42,8 @@ class ProductProduct(models.Model): _inherit = "product.product" mo_count = fields.Integer( - string="# Manufacturing Orders", compute="_compute_mo_count", + string="# Manufacturing Orders", + compute="_compute_mo_count", ) def _compute_mo_count(self): @@ -54,7 +58,9 @@ class ProductProduct(models.Model): def action_view_mrp_productions(self): product_ids = self.ids - action = self.env.ref("mrp.act_product_mrp_production").read()[0] + action = self.env["ir.actions.act_window"]._for_xml_id( + "mrp.act_product_mrp_production_workcenter" + ) action["domain"] = [("product_id", "in", product_ids)] action["context"] = {} return action diff --git a/setup/product_mrp_info/odoo/addons/product_mrp_info b/setup/product_mrp_info/odoo/addons/product_mrp_info new file mode 120000 index 000000000..9bb8d4565 --- /dev/null +++ b/setup/product_mrp_info/odoo/addons/product_mrp_info @@ -0,0 +1 @@ +../../../../product_mrp_info \ No newline at end of file diff --git a/setup/product_mrp_info/setup.py b/setup/product_mrp_info/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/product_mrp_info/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)