From 755292561eab228a693b6228f231249aa1351e43 Mon Sep 17 00:00:00 2001 From: Quentin Dupont Date: Wed, 20 Mar 2024 12:31:47 +0100 Subject: [PATCH] [ADD] mrp_bom_select_product_variant --- mrp_bom_select_product_variant/README.rst | 83 ++++ mrp_bom_select_product_variant/__init__.py | 1 + .../__manifest__.py | 18 + mrp_bom_select_product_variant/i18n/fr.po | 35 ++ .../model/__init__.py | 1 + .../model/mrp_bom.py | 22 + .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 8 + .../static/description/index.html | 428 ++++++++++++++++++ .../mrp_bom_select_product_variant.gif | Bin 0 -> 58877 bytes .../tests/__init__.py | 1 + .../tests/test_bom_product_variant.py | 20 + .../view/mrp_bom.xml | 81 ++++ .../addons/mrp_bom_select_product_variant | 1 + setup/mrp_bom_select_product_variant/setup.py | 6 + 15 files changed, 706 insertions(+) create mode 100644 mrp_bom_select_product_variant/README.rst create mode 100644 mrp_bom_select_product_variant/__init__.py create mode 100644 mrp_bom_select_product_variant/__manifest__.py create mode 100644 mrp_bom_select_product_variant/i18n/fr.po create mode 100644 mrp_bom_select_product_variant/model/__init__.py create mode 100644 mrp_bom_select_product_variant/model/mrp_bom.py create mode 100644 mrp_bom_select_product_variant/readme/CONTRIBUTORS.rst create mode 100644 mrp_bom_select_product_variant/readme/DESCRIPTION.rst create mode 100644 mrp_bom_select_product_variant/static/description/index.html create mode 100644 mrp_bom_select_product_variant/static/description/mrp_bom_select_product_variant.gif create mode 100644 mrp_bom_select_product_variant/tests/__init__.py create mode 100644 mrp_bom_select_product_variant/tests/test_bom_product_variant.py create mode 100644 mrp_bom_select_product_variant/view/mrp_bom.xml create mode 120000 setup/mrp_bom_select_product_variant/odoo/addons/mrp_bom_select_product_variant create mode 100644 setup/mrp_bom_select_product_variant/setup.py diff --git a/mrp_bom_select_product_variant/README.rst b/mrp_bom_select_product_variant/README.rst new file mode 100644 index 000000000..0b37691e9 --- /dev/null +++ b/mrp_bom_select_product_variant/README.rst @@ -0,0 +1,83 @@ +============================== +MRP BoM Select Product Variant +============================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:5b23ce3e5b73bf6db5a6b6f719c9ad41ed9ac621633e23e546e392f11180d630 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github + :target: https://github.com/OCA/manufacture/tree/16.0/mrp_bom_select_product_variant + :alt: OCA/manufacture +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/manufacture-16-0/manufacture-16-0-mrp_bom_select_product_variant + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/manufacture&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module is designed so that the user selects the product variant when +creating or updating a Bill of Material. +When selecting a product variant, the linked product template is +automatically selected. + +Tree and filter view are also changed : you see and search with product variant. + +.. figure:: https://raw.githubusercontent.com/OCA/manufacture/16.0/mrp_bom_select_product_variant/static/description/mrp_bom_select_product_variant.gif + +**Table of contents** + +.. contents:: + :local: + +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 to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* GRAP + +Contributors +~~~~~~~~~~~~ + +* Quentin Dupont (quentin.dupont@grap.coop) + +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. + +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/mrp_bom_select_product_variant/__init__.py b/mrp_bom_select_product_variant/__init__.py new file mode 100644 index 000000000..9186ee3ad --- /dev/null +++ b/mrp_bom_select_product_variant/__init__.py @@ -0,0 +1 @@ +from . import model diff --git a/mrp_bom_select_product_variant/__manifest__.py b/mrp_bom_select_product_variant/__manifest__.py new file mode 100644 index 000000000..c1eebbfd1 --- /dev/null +++ b/mrp_bom_select_product_variant/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright (C) 2024 - Today: GRAP (http://www.grap.coop) +# @author: Quentin Dupont (quentin.dupont@grap.coop) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + "name": "MRP BoM Select Product Variant", + "summary": "Favors Product variant selection for BOM creation.", + "version": "16.0.1.0.0", + "author": "GRAP, Odoo Community Association (OCA)", + "category": "Manufacturing", + "depends": ["mrp"], + "website": "https://github.com/OCA/manufacture", + "license": "AGPL-3", + "data": [ + "view/mrp_bom.xml", + ], + "installable": True, +} diff --git a/mrp_bom_select_product_variant/i18n/fr.po b/mrp_bom_select_product_variant/i18n/fr.po new file mode 100644 index 000000000..c492d2974 --- /dev/null +++ b/mrp_bom_select_product_variant/i18n/fr.po @@ -0,0 +1,35 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mrp_bom_select_product_variant +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-03-20 11:20+0000\n" +"PO-Revision-Date: 2024-03-20 11:20+0000\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: mrp_bom_select_product_variant +#: model:ir.model,name:mrp_bom_select_product_variant.model_mrp_bom +msgid "Bill of Material" +msgstr "Nomenclature" + +#. module: mrp_bom_select_product_variant +#: model:ir.model.fields,help:mrp_bom_select_product_variant.field_mrp_bom__product_id +msgid "" +"If a product variant is defined the BOM is available only for this product." +msgstr "" +"Si une variante de produit est définie, la nomenclature n'est disponible que" +" pour ce produit." + +#. module: mrp_bom_select_product_variant +#: model:ir.model.fields,field_description:mrp_bom_select_product_variant.field_mrp_bom__product_id +#: model_terms:ir.ui.view,arch_db:mrp_bom_select_product_variant.view_mrp_bom_search +msgid "Product Variant" +msgstr "Variante de produit" diff --git a/mrp_bom_select_product_variant/model/__init__.py b/mrp_bom_select_product_variant/model/__init__.py new file mode 100644 index 000000000..a352efe9b --- /dev/null +++ b/mrp_bom_select_product_variant/model/__init__.py @@ -0,0 +1 @@ +from . import mrp_bom diff --git a/mrp_bom_select_product_variant/model/mrp_bom.py b/mrp_bom_select_product_variant/model/mrp_bom.py new file mode 100644 index 000000000..3604ccaeb --- /dev/null +++ b/mrp_bom_select_product_variant/model/mrp_bom.py @@ -0,0 +1,22 @@ +# Copyright (C) 2024 - Today: GRAP (http://www.grap.coop) +# @author: Quentin DUPONT (quentin.dupont@grap.coop) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import api, fields, models + + +class MrpBom(models.Model): + _inherit = "mrp.bom" + + # As this field is used on a priority basis, it must be possible to + # select any type of product concerned + product_id = fields.Many2one( + domain="[('type', 'in', ['product', 'consu']), '|'," + "('company_id', '=', False), ('company_id', '=', company_id)]", + ) + + # Side effect : if you change product_tmpl_id, it will reset it because + # of loop of onchange_product_tmpl_id in Odoo code + @api.onchange("product_id") + def _onchange_product_id(self): + self.product_tmpl_id = self.product_id.product_tmpl_id diff --git a/mrp_bom_select_product_variant/readme/CONTRIBUTORS.rst b/mrp_bom_select_product_variant/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..9ed470628 --- /dev/null +++ b/mrp_bom_select_product_variant/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Quentin Dupont (quentin.dupont@grap.coop) diff --git a/mrp_bom_select_product_variant/readme/DESCRIPTION.rst b/mrp_bom_select_product_variant/readme/DESCRIPTION.rst new file mode 100644 index 000000000..ed577523f --- /dev/null +++ b/mrp_bom_select_product_variant/readme/DESCRIPTION.rst @@ -0,0 +1,8 @@ +This module is designed so that the user selects the product variant when +creating or updating a Bill of Material. +When selecting a product variant, the linked product template is +automatically selected. + +Tree and filter view are also changed : you see and search with product variant. + +.. figure:: ../static/description/mrp_bom_select_product_variant.gif diff --git a/mrp_bom_select_product_variant/static/description/index.html b/mrp_bom_select_product_variant/static/description/index.html new file mode 100644 index 000000000..acd853751 --- /dev/null +++ b/mrp_bom_select_product_variant/static/description/index.html @@ -0,0 +1,428 @@ + + + + + + +MRP BoM Select Product Variant + + + +
+

MRP BoM Select Product Variant

+ + +

Beta License: AGPL-3 OCA/manufacture Translate me on Weblate Try me on Runboat

+

This module is designed so that the user selects the product variant when +creating or updating a Bill of Material. +When selecting a product variant, the linked product template is +automatically selected.

+

Tree and filter view are also changed : you see and search with product variant.

+
+https://raw.githubusercontent.com/OCA/manufacture/16.0/mrp_bom_select_product_variant/static/description/mrp_bom_select_product_variant.gif +
+

Table of contents

+ +
+

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 to smash it by providing a detailed and welcomed +feedback.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • GRAP
  • +
+
+
+

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.

+

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/mrp_bom_select_product_variant/static/description/mrp_bom_select_product_variant.gif b/mrp_bom_select_product_variant/static/description/mrp_bom_select_product_variant.gif new file mode 100644 index 0000000000000000000000000000000000000000..628c35b5bf66386b6cf9831ad975b3d573938897 GIT binary patch literal 58877 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%0DTth7M<3kzJ;?0wmJ@dF0M`fE|`Q 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 F{$C-iI3xf7 literal 0 HcmV?d00001 diff --git a/mrp_bom_select_product_variant/tests/__init__.py b/mrp_bom_select_product_variant/tests/__init__.py new file mode 100644 index 000000000..e103d6e8d --- /dev/null +++ b/mrp_bom_select_product_variant/tests/__init__.py @@ -0,0 +1 @@ +from . import test_bom_product_variant diff --git a/mrp_bom_select_product_variant/tests/test_bom_product_variant.py b/mrp_bom_select_product_variant/tests/test_bom_product_variant.py new file mode 100644 index 000000000..cdf578a8c --- /dev/null +++ b/mrp_bom_select_product_variant/tests/test_bom_product_variant.py @@ -0,0 +1,20 @@ +# Copyright (C) 2024 - Today: GRAP (http://www.grap.coop) +# @author: Quentin DUPONT (quentin.dupont@grap.coop) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo.tests.common import TransactionCase + + +class TestBomProductVariant(TransactionCase): + def setUp(self): + super(TestBomProductVariant, self).setUp() + self.product_product_desk = self.env.ref("product.product_product_3") + self.bom_desk = self.env.ref("mrp.mrp_bom_manufacture") + + def test_01_add_variant_in_bom(self): + self.bom_desk.write({"product_id": self.product_product_desk.id}) + self.bom_desk._onchange_product_id() + self.assertEqual( + self.bom_desk.product_tmpl_id, + self.bom_desk.product_id.product_tmpl_id, + ) diff --git a/mrp_bom_select_product_variant/view/mrp_bom.xml b/mrp_bom_select_product_variant/view/mrp_bom.xml new file mode 100644 index 000000000..b2decce74 --- /dev/null +++ b/mrp_bom_select_product_variant/view/mrp_bom.xml @@ -0,0 +1,81 @@ + + + + + + + + + + mrp.bom + + + + 1 + + + + + + + + + + + + + mrp.bom + + + + 1 + + + + 1 + + + + + + + + + + + + + + mrp.bom + + + + + + + + 1 + + + + + + + 1 + + + + + diff --git a/setup/mrp_bom_select_product_variant/odoo/addons/mrp_bom_select_product_variant b/setup/mrp_bom_select_product_variant/odoo/addons/mrp_bom_select_product_variant new file mode 120000 index 000000000..4d7d39137 --- /dev/null +++ b/setup/mrp_bom_select_product_variant/odoo/addons/mrp_bom_select_product_variant @@ -0,0 +1 @@ +../../../../mrp_bom_select_product_variant \ No newline at end of file diff --git a/setup/mrp_bom_select_product_variant/setup.py b/setup/mrp_bom_select_product_variant/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/mrp_bom_select_product_variant/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)