From 974426890a6c5771e9f3e58d635501d066ea28be Mon Sep 17 00:00:00 2001 From: Chandresh Thakkar OSI Date: Fri, 21 May 2021 01:39:47 +0530 Subject: [PATCH 01/38] [NEW] product_tier_validation: New module to validate the product. --- product_tier_validation/README.rst | 109 ++++++++++++++++++ product_tier_validation/__init__.py | 4 + product_tier_validation/__manifest__.py | 20 ++++ .../data/product_state_data.xml | 11 ++ .../data/tier_definition.xml | 12 ++ product_tier_validation/models/__init__.py | 5 + .../models/product_template.py | 32 +++++ .../models/tier_definition.py | 14 +++ .../readme/CONFIGURATION.rst | 10 ++ .../readme/CONTRIBUTORS.rst | 4 + .../readme/DESCRIPTION.rst | 5 + product_tier_validation/readme/INSTALL.rst | 2 + product_tier_validation/readme/USAGE.rst | 19 +++ .../static/description/icon.png | Bin 0 -> 9455 bytes .../views/product_template_view.xml | 19 +++ 15 files changed, 266 insertions(+) create mode 100644 product_tier_validation/README.rst create mode 100644 product_tier_validation/__init__.py create mode 100644 product_tier_validation/__manifest__.py create mode 100644 product_tier_validation/data/product_state_data.xml create mode 100644 product_tier_validation/data/tier_definition.xml create mode 100644 product_tier_validation/models/__init__.py create mode 100644 product_tier_validation/models/product_template.py create mode 100644 product_tier_validation/models/tier_definition.py create mode 100644 product_tier_validation/readme/CONFIGURATION.rst create mode 100644 product_tier_validation/readme/CONTRIBUTORS.rst create mode 100644 product_tier_validation/readme/DESCRIPTION.rst create mode 100644 product_tier_validation/readme/INSTALL.rst create mode 100644 product_tier_validation/readme/USAGE.rst create mode 100644 product_tier_validation/static/description/icon.png create mode 100644 product_tier_validation/views/product_template_view.xml diff --git a/product_tier_validation/README.rst b/product_tier_validation/README.rst new file mode 100644 index 00000000000..59f9853a490 --- /dev/null +++ b/product_tier_validation/README.rst @@ -0,0 +1,109 @@ +======================= +Product Tier Validation +======================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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-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%2Fproduct--attribute-lightgray.png?logo=github + :target: https://github.com/OCA/product-attribute/tree/14.0/product_tier_validation + :alt: OCA/product-attribute +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/product-attribute-14-0/product-attribute-14-0-product_tier_validation + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/135/14.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Adds an approval workflow to Products. +The default rule requires new Product to be approved +before they can be used. + +For this, the new Product record is kept as "Archived" until it is approved. + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +This module depends on ``base_tier_validation``. You can find it at +`OCA/server-ux `_ + +Usage +===== + +A regular user creates a new Product and sends it for approval: + +#. Create a Product triggering at least one "Tier Definition". + Product will be in In Development state and marked as Archived until approved. +#. Click on *Request Validation* button. +#. In the *Reviews* section, at the bottom of the form, inspect the pending reviews and their status. + + +The approver reviews Products to approve: + +#. Now select the filter "Needs my Approval" from Product list view. +#. Open the Product form to approve. It will display a + "This Records needs to be validated" banner, with "Validate" and "Reject" options. +#. The approver can change the state to "Normal". + This will automatically unarchive the record and make it available to be used. + + +The Approve/Reject actions do not automatically change the State. +This could be a future improvement. + +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 +~~~~~~~ + +* Open Source Integrators + +Contributors +~~~~~~~~~~~~ + +* `Open Source Integrators `_. + + * Chandresh Thakkar + * Daniel Reis + +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/product-attribute `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_tier_validation/__init__.py b/product_tier_validation/__init__.py new file mode 100644 index 00000000000..c68fd2bbe95 --- /dev/null +++ b/product_tier_validation/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2021 Open Source Integrators +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import models diff --git a/product_tier_validation/__manifest__.py b/product_tier_validation/__manifest__.py new file mode 100644 index 00000000000..e57d338fc49 --- /dev/null +++ b/product_tier_validation/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright 2021 Open Source Integrators +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Product Tier Validation", + "summary": "Support a tier validation process for Products", + "version": "14.0.1.0.0", + "website": "https://github.com/OCA/product-attribute", + "category": "Products", + "author": "Open Source Integrators, Odoo Community Association (OCA)", + "license": "AGPL-3", + "installable": True, + "maintainer": "dreispt", + "development_status": "Alpha", + "depends": ["product_state", "base_tier_validation"], + "data": [ + "data/tier_definition.xml", + "data/product_state_data.xml", + "views/product_template_view.xml", + ], +} diff --git a/product_tier_validation/data/product_state_data.xml b/product_tier_validation/data/product_state_data.xml new file mode 100644 index 00000000000..08872134c06 --- /dev/null +++ b/product_tier_validation/data/product_state_data.xml @@ -0,0 +1,11 @@ + + + draft + + + confirmed + + + cancel + + diff --git a/product_tier_validation/data/tier_definition.xml b/product_tier_validation/data/tier_definition.xml new file mode 100644 index 00000000000..53b1c3e06af --- /dev/null +++ b/product_tier_validation/data/tier_definition.xml @@ -0,0 +1,12 @@ + + + Product Validation + + group + + domain + ["|",["active","=",True],["active","=",False]] + + diff --git a/product_tier_validation/models/__init__.py b/product_tier_validation/models/__init__.py new file mode 100644 index 00000000000..8f4c7215a1c --- /dev/null +++ b/product_tier_validation/models/__init__.py @@ -0,0 +1,5 @@ +# Copyright 2021 Open Source Integrators +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import product_template +from . import tier_definition diff --git a/product_tier_validation/models/product_template.py b/product_tier_validation/models/product_template.py new file mode 100644 index 00000000000..ca7dd7cf09c --- /dev/null +++ b/product_tier_validation/models/product_template.py @@ -0,0 +1,32 @@ +# Copyright 2021 Open Source Integrators +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class ProductTemplate(models.Model): + _name = "product.template" + _inherit = ["product.template", "tier.validation"] + _tier_validation_manual_config = False + + @api.model + def create(self, vals): + new = super().create(vals) + if new.need_validation and new.state != "confirmed": + new.active = False + return new + + def write(self, vals): + """ + Default `active` is False. + It is set to True when State changes to confirmed. + """ + if "state" in vals: + vals["active"] = vals["state"] == "confirmed" + return super().write(vals) + + @api.model + def _get_default_product_state_id(self): + return self.env.ref( + "product_state.product_state_draft", raise_if_not_found=False + ) diff --git a/product_tier_validation/models/tier_definition.py b/product_tier_validation/models/tier_definition.py new file mode 100644 index 00000000000..aaa1efa8ad4 --- /dev/null +++ b/product_tier_validation/models/tier_definition.py @@ -0,0 +1,14 @@ +# Copyright 2021 Open Source Integrators +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class TierDefinition(models.Model): + _inherit = "tier.definition" + + @api.model + def _get_tier_validation_model_names(self): + res = super(TierDefinition, self)._get_tier_validation_model_names() + res.append("product.template") + return res diff --git a/product_tier_validation/readme/CONFIGURATION.rst b/product_tier_validation/readme/CONFIGURATION.rst new file mode 100644 index 00000000000..d12c28681f3 --- /dev/null +++ b/product_tier_validation/readme/CONFIGURATION.rst @@ -0,0 +1,10 @@ +The approval rules can be configured to suit particular use cases. +A default validation rule is provided out of the box, +that can be used as a starting point fot this configuration. + +This configuration is done at +*Settings > Technical > Tier Validations > Tier Definition*. + +Note that, since Product start as archived records, +the *Definition Domain* must include ``"|",["active","=",True],["active","=",False]``. +Otherwise the validation rule won't apply correctly in new records. diff --git a/product_tier_validation/readme/CONTRIBUTORS.rst b/product_tier_validation/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..dcc3e5ee7f8 --- /dev/null +++ b/product_tier_validation/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* `Open Source Integrators `_. + + * Chandresh Thakkar + * Daniel Reis diff --git a/product_tier_validation/readme/DESCRIPTION.rst b/product_tier_validation/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..bbcb1ea5262 --- /dev/null +++ b/product_tier_validation/readme/DESCRIPTION.rst @@ -0,0 +1,5 @@ +Adds an approval workflow to Products. +The default rule requires new Product to be approved +before they can be used. + +For this, the new Product record is kept as "Archived" until it is approved. diff --git a/product_tier_validation/readme/INSTALL.rst b/product_tier_validation/readme/INSTALL.rst new file mode 100644 index 00000000000..638fbd2d688 --- /dev/null +++ b/product_tier_validation/readme/INSTALL.rst @@ -0,0 +1,2 @@ +This module depends on ``base_tier_validation``. You can find it at +`OCA/server-ux `_ diff --git a/product_tier_validation/readme/USAGE.rst b/product_tier_validation/readme/USAGE.rst new file mode 100644 index 00000000000..a56c784709c --- /dev/null +++ b/product_tier_validation/readme/USAGE.rst @@ -0,0 +1,19 @@ +A regular user creates a new Product and sends it for approval: + +#. Create a Product triggering at least one "Tier Definition". + Product will be in In Development state and marked as Archived until approved. +#. Click on *Request Validation* button. +#. In the *Reviews* section, at the bottom of the form, inspect the pending reviews and their status. + + +The approver reviews Products to approve: + +#. Now select the filter "Needs my Approval" from Product list view. +#. Open the Product form to approve. It will display a + "This Records needs to be validated" banner, with "Validate" and "Reject" options. +#. The approver can change the state to "Normal". + This will automatically unarchive the record and make it available to be used. + + +The Approve/Reject actions do not automatically change the State. +This could be a future improvement. diff --git a/product_tier_validation/static/description/icon.png b/product_tier_validation/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_tier_validation/views/product_template_view.xml b/product_tier_validation/views/product_template_view.xml new file mode 100644 index 00000000000..f6a5a14a73b --- /dev/null +++ b/product_tier_validation/views/product_template_view.xml @@ -0,0 +1,19 @@ + + + + product.form.tier.filter + product.template + + + + + + + + + From 4c687fa96dbd01622b92547c2b82f016bb0006db Mon Sep 17 00:00:00 2001 From: Chandresh Thakkar OSI Date: Fri, 4 Jun 2021 15:49:38 +0530 Subject: [PATCH 02/38] [FIX] Fixed the conflicts. --- product_tier_validation/__manifest__.py | 2 +- product_tier_validation/data/tier_definition.xml | 1 + product_tier_validation/models/product_template.py | 8 ++++++-- product_tier_validation/readme/CONFIGURATION.rst | 3 +++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/product_tier_validation/__manifest__.py b/product_tier_validation/__manifest__.py index e57d338fc49..b320a705baa 100644 --- a/product_tier_validation/__manifest__.py +++ b/product_tier_validation/__manifest__.py @@ -9,7 +9,7 @@ "author": "Open Source Integrators, Odoo Community Association (OCA)", "license": "AGPL-3", "installable": True, - "maintainer": "dreispt", + "maintainer": ["dreispt"], "development_status": "Alpha", "depends": ["product_state", "base_tier_validation"], "data": [ diff --git a/product_tier_validation/data/tier_definition.xml b/product_tier_validation/data/tier_definition.xml index 53b1c3e06af..9f95ac4cf33 100644 --- a/product_tier_validation/data/tier_definition.xml +++ b/product_tier_validation/data/tier_definition.xml @@ -8,5 +8,6 @@ ["|",["active","=",True],["active","=",False]] + False diff --git a/product_tier_validation/models/product_template.py b/product_tier_validation/models/product_template.py index ca7dd7cf09c..343f8141bf2 100644 --- a/product_tier_validation/models/product_template.py +++ b/product_tier_validation/models/product_template.py @@ -9,10 +9,14 @@ class ProductTemplate(models.Model): _inherit = ["product.template", "tier.validation"] _tier_validation_manual_config = False + @api.model + def _is_tier_validated_active(self, state_code): + return state_code != "draft" + @api.model def create(self, vals): new = super().create(vals) - if new.need_validation and new.state != "confirmed": + if new.need_validation and self._is_tier_validated_active(new.state): new.active = False return new @@ -22,7 +26,7 @@ def write(self, vals): It is set to True when State changes to confirmed. """ if "state" in vals: - vals["active"] = vals["state"] == "confirmed" + vals["active"] = self._is_tier_validated_active(vals["state"]) return super().write(vals) @api.model diff --git a/product_tier_validation/readme/CONFIGURATION.rst b/product_tier_validation/readme/CONFIGURATION.rst index d12c28681f3..db3824a360b 100644 --- a/product_tier_validation/readme/CONFIGURATION.rst +++ b/product_tier_validation/readme/CONFIGURATION.rst @@ -8,3 +8,6 @@ This configuration is done at Note that, since Product start as archived records, the *Definition Domain* must include ``"|",["active","=",True],["active","=",False]``. Otherwise the validation rule won't apply correctly in new records. + +Setting new Products inactive can be disabled, +by removing the "draft" code from the initial Product State. From 495d4fb5a17b486c2899d09f05dd3ed8f24a7330 Mon Sep 17 00:00:00 2001 From: Chandresh Thakkar OSI Date: Fri, 4 Jun 2021 15:51:37 +0530 Subject: [PATCH 03/38] [ADD] Added test cases in the module. --- product_tier_validation/tests/__init__.py | 4 ++ .../tests/test_product_tier_validation.py | 40 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 product_tier_validation/tests/__init__.py create mode 100644 product_tier_validation/tests/test_product_tier_validation.py diff --git a/product_tier_validation/tests/__init__.py b/product_tier_validation/tests/__init__.py new file mode 100644 index 00000000000..9080d05a831 --- /dev/null +++ b/product_tier_validation/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2021 Open Source Integrators +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from . import test_product_tier_validation diff --git a/product_tier_validation/tests/test_product_tier_validation.py b/product_tier_validation/tests/test_product_tier_validation.py new file mode 100644 index 00000000000..50adb33fbd9 --- /dev/null +++ b/product_tier_validation/tests/test_product_tier_validation.py @@ -0,0 +1,40 @@ +# Copyright 2021 Open Source Integrators +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo.tests import common, tagged + + +@tagged("-at_install", "post_install") +class TestProductTierValidation(common.SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + group_ids = cls.env.ref("base.group_system").ids + cls.test_user_1 = cls.env["res.users"].create( + { + "name": "John", + "login": "test1", + "groups_id": [(6, 0, group_ids)], + "email": "test@examlple.com", + } + ) + + cls.tier_def_obj = cls.env["tier.definition"] + cls.normal_state = cls.env.ref("product_state.product_state_sellable") + + def test_tier_validation_model_name(self): + self.assertIn( + "product.template", self.tier_def_obj._get_tier_validation_model_names() + ) + + def test_validation_product_template(self): + product = self.env["product.template"].create( + { + "name": "Product for test", + "list_price": 120.00, + } + ) + product.request_validation() + product.with_user(self.test_user_1).validate_tier() + product.write({"product_state_id": self.normal_state.id}) + self.assertEqual(product.state, self.normal_state.code) From e2f9687caf806921f0a9fbfdd44789e836188326 Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Fri, 24 Sep 2021 15:19:46 +0100 Subject: [PATCH 04/38] [FIX] product_tier_validation: correct maintainers manifest key Co-authored-by: Denis Roussel (ACSONE) --- product_tier_validation/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/product_tier_validation/__manifest__.py b/product_tier_validation/__manifest__.py index b320a705baa..205e2923e10 100644 --- a/product_tier_validation/__manifest__.py +++ b/product_tier_validation/__manifest__.py @@ -9,7 +9,7 @@ "author": "Open Source Integrators, Odoo Community Association (OCA)", "license": "AGPL-3", "installable": True, - "maintainer": ["dreispt"], + "maintainers": ["dreispt"], "development_status": "Alpha", "depends": ["product_state", "base_tier_validation"], "data": [ From 910797ac4cc82d17617d7228343a79f452babaee Mon Sep 17 00:00:00 2001 From: oca-travis Date: Fri, 24 Sep 2021 14:47:34 +0000 Subject: [PATCH 05/38] [UPD] Update product_tier_validation.pot --- .../i18n/product_tier_validation.pot | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 product_tier_validation/i18n/product_tier_validation.pot diff --git a/product_tier_validation/i18n/product_tier_validation.pot b/product_tier_validation/i18n/product_tier_validation.pot new file mode 100644 index 00000000000..87e92ff5983 --- /dev/null +++ b/product_tier_validation/i18n/product_tier_validation.pot @@ -0,0 +1,92 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_tier_validation +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.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_tier_validation +#: model:ir.model.fields,field_description:product_tier_validation.field_product_template__can_review +msgid "Can Review" +msgstr "" + +#. module: product_tier_validation +#: model:ir.model.fields,field_description:product_tier_validation.field_product_template__display_name +#: model:ir.model.fields,field_description:product_tier_validation.field_tier_definition__display_name +msgid "Display Name" +msgstr "" + +#. module: product_tier_validation +#: model:ir.model.fields,field_description:product_tier_validation.field_product_template__has_comment +msgid "Has Comment" +msgstr "" + +#. module: product_tier_validation +#: model:ir.model.fields,field_description:product_tier_validation.field_product_template__id +#: model:ir.model.fields,field_description:product_tier_validation.field_tier_definition__id +msgid "ID" +msgstr "" + +#. module: product_tier_validation +#: model:ir.model.fields,field_description:product_tier_validation.field_product_template____last_update +#: model:ir.model.fields,field_description:product_tier_validation.field_tier_definition____last_update +msgid "Last Modified on" +msgstr "" + +#. module: product_tier_validation +#: model:ir.model.fields,field_description:product_tier_validation.field_product_template__need_validation +msgid "Need Validation" +msgstr "" + +#. module: product_tier_validation +#: model_terms:ir.ui.view,arch_db:product_tier_validation.product_form_tier_filter +msgid "Needs an Approval" +msgstr "" + +#. module: product_tier_validation +#: model:ir.model,name:product_tier_validation.model_product_template +msgid "Product Template" +msgstr "" + +#. module: product_tier_validation +#: model:tier.definition,name:product_tier_validation.product_tier_definition +msgid "Product Validation" +msgstr "" + +#. module: product_tier_validation +#: model_terms:ir.ui.view,arch_db:product_tier_validation.product_form_tier_filter +msgid "Product(s) to Approve" +msgstr "" + +#. module: product_tier_validation +#: model:ir.model.fields,field_description:product_tier_validation.field_product_template__rejected +msgid "Rejected" +msgstr "" + +#. module: product_tier_validation +#: model:ir.model.fields,field_description:product_tier_validation.field_product_template__reviewer_ids +msgid "Reviewers" +msgstr "" + +#. module: product_tier_validation +#: model:ir.model,name:product_tier_validation.model_tier_definition +msgid "Tier Definition" +msgstr "" + +#. module: product_tier_validation +#: model:ir.model.fields,field_description:product_tier_validation.field_product_template__validated +msgid "Validated" +msgstr "" + +#. module: product_tier_validation +#: model:ir.model.fields,field_description:product_tier_validation.field_product_template__review_ids +msgid "Validations" +msgstr "" From 5fe0335836c5f1db24b4a4955702518fd0335e84 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 24 Sep 2021 15:14:57 +0000 Subject: [PATCH 06/38] [UPD] README.rst --- product_tier_validation/README.rst | 17 +- .../static/description/index.html | 461 ++++++++++++++++++ 2 files changed, 476 insertions(+), 2 deletions(-) create mode 100644 product_tier_validation/static/description/index.html diff --git a/product_tier_validation/README.rst b/product_tier_validation/README.rst index 59f9853a490..ec10155c761 100644 --- a/product_tier_validation/README.rst +++ b/product_tier_validation/README.rst @@ -7,9 +7,9 @@ Product Tier Validation !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png +.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png :target: https://odoo-community.org/page/development-status - :alt: Beta + :alt: Alpha .. |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 @@ -31,6 +31,11 @@ before they can be used. For this, the new Product record is kept as "Archived" until it is approved. +.. IMPORTANT:: + This is an alpha version, the data model and design can change at any time without warning. + Only for development or testing purpose, do not use in production. + `More details on development status `_ + **Table of contents** .. contents:: @@ -104,6 +109,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-dreispt| image:: https://github.com/dreispt.png?size=40px + :target: https://github.com/dreispt + :alt: dreispt + +Current `maintainer `__: + +|maintainer-dreispt| + This module is part of the `OCA/product-attribute `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_tier_validation/static/description/index.html b/product_tier_validation/static/description/index.html new file mode 100644 index 00000000000..53e39b788b5 --- /dev/null +++ b/product_tier_validation/static/description/index.html @@ -0,0 +1,461 @@ + + + + + + +Product Tier Validation + + + +
+

Product Tier Validation

+ + +

Alpha License: AGPL-3 OCA/product-attribute Translate me on Weblate Try me on Runbot

+

Adds an approval workflow to Products. +The default rule requires new Product to be approved +before they can be used.

+

For this, the new Product record is kept as “Archived” until it is approved.

+
+

Important

+

This is an alpha version, the data model and design can change at any time without warning. +Only for development or testing purpose, do not use in production. +More details on development status

+
+

Table of contents

+ +
+

Installation

+

This module depends on base_tier_validation. You can find it at +OCA/server-ux

+
+
+

Usage

+

A regular user creates a new Product and sends it for approval:

+
    +
  1. Create a Product triggering at least one “Tier Definition”. +Product will be in In Development state and marked as Archived until approved.
  2. +
  3. Click on Request Validation button.
  4. +
  5. In the Reviews section, at the bottom of the form, inspect the pending reviews and their status.
  6. +
+

The approver reviews Products to approve:

+
    +
  1. Now select the filter “Needs my Approval” from Product list view.
  2. +
  3. Open the Product form to approve. It will display a +“This Records needs to be validated” banner, with “Validate” and “Reject” options.
  4. +
  5. The approver can change the state to “Normal”. +This will automatically unarchive the record and make it available to be used.
  6. +
+

The Approve/Reject actions do not automatically change the State. +This could be a future improvement.

+
+
+

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

+
    +
  • Open Source Integrators
  • +
+
+ +
+

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:

+

dreispt

+

This module is part of the OCA/product-attribute project on GitHub.

+

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

+
+
+
+ + From 241e81aca1bcf2530a9a6c1b369a8a7f63a36970 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Tue, 9 Nov 2021 10:31:10 +0000 Subject: [PATCH 07/38] [UPD] Update product_tier_validation.pot --- product_tier_validation/i18n/product_tier_validation.pot | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/product_tier_validation/i18n/product_tier_validation.pot b/product_tier_validation/i18n/product_tier_validation.pot index 87e92ff5983..96126f6b94a 100644 --- a/product_tier_validation/i18n/product_tier_validation.pot +++ b/product_tier_validation/i18n/product_tier_validation.pot @@ -51,6 +51,11 @@ msgstr "" msgid "Needs an Approval" msgstr "" +#. module: product_tier_validation +#: model:ir.model.fields,field_description:product_tier_validation.field_product_template__next_review +msgid "Next Review" +msgstr "" + #. module: product_tier_validation #: model:ir.model,name:product_tier_validation.model_product_template msgid "Product Template" From 9f90efaf78489226e7986a2bb3ca55cc6405fda7 Mon Sep 17 00:00:00 2001 From: sonhd Date: Wed, 27 Oct 2021 17:29:01 +0700 Subject: [PATCH 08/38] Move default states on product_state and product_tier_validation to demo data --- product_tier_validation/data/product_state_data.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/product_tier_validation/data/product_state_data.xml b/product_tier_validation/data/product_state_data.xml index 08872134c06..e66a771d616 100644 --- a/product_tier_validation/data/product_state_data.xml +++ b/product_tier_validation/data/product_state_data.xml @@ -1,7 +1,4 @@ - - draft - confirmed From 54384f6181f283445d3f06c377035c800312e24f Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 25 Nov 2021 11:09:24 +0000 Subject: [PATCH 09/38] product_tier_validation 14.0.1.1.0 --- product_tier_validation/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/product_tier_validation/__manifest__.py b/product_tier_validation/__manifest__.py index 205e2923e10..c250b8b67ff 100644 --- a/product_tier_validation/__manifest__.py +++ b/product_tier_validation/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Product Tier Validation", "summary": "Support a tier validation process for Products", - "version": "14.0.1.0.0", + "version": "14.0.1.1.0", "website": "https://github.com/OCA/product-attribute", "category": "Products", "author": "Open Source Integrators, Odoo Community Association (OCA)", From ec680f89612666f126ab4a8aadea19333c617152 Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Thu, 25 Nov 2021 13:56:47 +0100 Subject: [PATCH 10/38] [14.0][IMP] product_tier_validation: Simplify flow Don't modify product 'active' field. --- product_tier_validation/__manifest__.py | 1 - .../data/product_state_data.xml | 8 ------ .../models/product_template.py | 28 +------------------ 3 files changed, 1 insertion(+), 36 deletions(-) delete mode 100644 product_tier_validation/data/product_state_data.xml diff --git a/product_tier_validation/__manifest__.py b/product_tier_validation/__manifest__.py index c250b8b67ff..ecf402efbf6 100644 --- a/product_tier_validation/__manifest__.py +++ b/product_tier_validation/__manifest__.py @@ -14,7 +14,6 @@ "depends": ["product_state", "base_tier_validation"], "data": [ "data/tier_definition.xml", - "data/product_state_data.xml", "views/product_template_view.xml", ], } diff --git a/product_tier_validation/data/product_state_data.xml b/product_tier_validation/data/product_state_data.xml deleted file mode 100644 index e66a771d616..00000000000 --- a/product_tier_validation/data/product_state_data.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - confirmed - - - cancel - - diff --git a/product_tier_validation/models/product_template.py b/product_tier_validation/models/product_template.py index 343f8141bf2..00ac1bae842 100644 --- a/product_tier_validation/models/product_template.py +++ b/product_tier_validation/models/product_template.py @@ -1,36 +1,10 @@ # Copyright 2021 Open Source Integrators # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import api, models +from odoo import models class ProductTemplate(models.Model): _name = "product.template" _inherit = ["product.template", "tier.validation"] _tier_validation_manual_config = False - - @api.model - def _is_tier_validated_active(self, state_code): - return state_code != "draft" - - @api.model - def create(self, vals): - new = super().create(vals) - if new.need_validation and self._is_tier_validated_active(new.state): - new.active = False - return new - - def write(self, vals): - """ - Default `active` is False. - It is set to True when State changes to confirmed. - """ - if "state" in vals: - vals["active"] = self._is_tier_validated_active(vals["state"]) - return super().write(vals) - - @api.model - def _get_default_product_state_id(self): - return self.env.ref( - "product_state.product_state_draft", raise_if_not_found=False - ) From 67939d3dd69e0ba9aa72db69db2c056df795e040 Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Mon, 29 Nov 2021 11:05:18 +0100 Subject: [PATCH 11/38] [14.0][IMP] product_tier_validation: Change to Beta --- product_tier_validation/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/product_tier_validation/__manifest__.py b/product_tier_validation/__manifest__.py index ecf402efbf6..76af1871e1f 100644 --- a/product_tier_validation/__manifest__.py +++ b/product_tier_validation/__manifest__.py @@ -10,7 +10,7 @@ "license": "AGPL-3", "installable": True, "maintainers": ["dreispt"], - "development_status": "Alpha", + "development_status": "Beta", "depends": ["product_state", "base_tier_validation"], "data": [ "data/tier_definition.xml", From 8d8f6a218ce9bf238030b50d1720b697672195c2 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 17 Dec 2021 14:47:21 +0000 Subject: [PATCH 12/38] [UPD] README.rst --- product_tier_validation/README.rst | 9 ++------- product_tier_validation/static/description/index.html | 8 +------- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/product_tier_validation/README.rst b/product_tier_validation/README.rst index ec10155c761..4f6946f6b88 100644 --- a/product_tier_validation/README.rst +++ b/product_tier_validation/README.rst @@ -7,9 +7,9 @@ Product Tier Validation !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status - :alt: Alpha + :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 @@ -31,11 +31,6 @@ before they can be used. For this, the new Product record is kept as "Archived" until it is approved. -.. IMPORTANT:: - This is an alpha version, the data model and design can change at any time without warning. - Only for development or testing purpose, do not use in production. - `More details on development status `_ - **Table of contents** .. contents:: diff --git a/product_tier_validation/static/description/index.html b/product_tier_validation/static/description/index.html index 53e39b788b5..0f939f4a166 100644 --- a/product_tier_validation/static/description/index.html +++ b/product_tier_validation/static/description/index.html @@ -367,17 +367,11 @@

Product Tier Validation

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Alpha License: AGPL-3 OCA/product-attribute Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/product-attribute Translate me on Weblate Try me on Runbot

Adds an approval workflow to Products. The default rule requires new Product to be approved before they can be used.

For this, the new Product record is kept as “Archived” until it is approved.

-
-

Important

-

This is an alpha version, the data model and design can change at any time without warning. -Only for development or testing purpose, do not use in production. -More details on development status

-

Table of contents

    From 1ef8a1a9cd2882b38a2e8bedc2235497ad8bce48 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 17 Dec 2021 14:47:21 +0000 Subject: [PATCH 13/38] product_tier_validation 14.0.2.0.0 --- product_tier_validation/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/product_tier_validation/__manifest__.py b/product_tier_validation/__manifest__.py index 76af1871e1f..3960928d200 100644 --- a/product_tier_validation/__manifest__.py +++ b/product_tier_validation/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Product Tier Validation", "summary": "Support a tier validation process for Products", - "version": "14.0.1.1.0", + "version": "14.0.2.0.0", "website": "https://github.com/OCA/product-attribute", "category": "Products", "author": "Open Source Integrators, Odoo Community Association (OCA)", From ecf16d6bd53ee367c1f90f38c25de5f2ae7a6148 Mon Sep 17 00:00:00 2001 From: Daniel Reis Date: Thu, 3 Mar 2022 18:50:46 +0000 Subject: [PATCH 14/38] [FIX] product_tier_validation: error on change stage for validated product --- product_tier_validation/models/product_template.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/product_tier_validation/models/product_template.py b/product_tier_validation/models/product_template.py index 00ac1bae842..ca3ff09fec0 100644 --- a/product_tier_validation/models/product_template.py +++ b/product_tier_validation/models/product_template.py @@ -8,3 +8,15 @@ class ProductTemplate(models.Model): _name = "product.template" _inherit = ["product.template", "tier.validation"] _tier_validation_manual_config = False + + def write(self, vals): + # Tier Validation does not work with Stages, only States :-( + # So, signal state transition by adding it to the vals + if "product_state_id" in vals: + stage_id = vals.get("product_state_id") + stage = self.env["product.state"].browse(stage_id) + vals["state"] = stage.code # yes, "code" is used to represent a "state" + res = super().write(vals) + if "product_state_id" in vals: + self.restart_validation() + return res From b9e37950370b3b47ad510b01b07a284915a60448 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sat, 5 Mar 2022 11:37:43 +0000 Subject: [PATCH 15/38] product_tier_validation 14.0.2.0.1 --- product_tier_validation/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/product_tier_validation/__manifest__.py b/product_tier_validation/__manifest__.py index 3960928d200..b98f0821dd0 100644 --- a/product_tier_validation/__manifest__.py +++ b/product_tier_validation/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Product Tier Validation", "summary": "Support a tier validation process for Products", - "version": "14.0.2.0.0", + "version": "14.0.2.0.1", "website": "https://github.com/OCA/product-attribute", "category": "Products", "author": "Open Source Integrators, Odoo Community Association (OCA)", From 162cf476b8b2b252af876c159ea5bb82355e61fe Mon Sep 17 00:00:00 2001 From: oca-travis Date: Fri, 22 Apr 2022 07:20:38 +0000 Subject: [PATCH 16/38] [UPD] Update product_tier_validation.pot --- .../i18n/product_tier_validation.pot | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/product_tier_validation/i18n/product_tier_validation.pot b/product_tier_validation/i18n/product_tier_validation.pot index 96126f6b94a..9d81bed297d 100644 --- a/product_tier_validation/i18n/product_tier_validation.pot +++ b/product_tier_validation/i18n/product_tier_validation.pot @@ -76,6 +76,11 @@ msgstr "" msgid "Rejected" msgstr "" +#. module: product_tier_validation +#: model:ir.model.fields,field_description:product_tier_validation.field_product_template__rejected_message +msgid "Rejected Message" +msgstr "" + #. module: product_tier_validation #: model:ir.model.fields,field_description:product_tier_validation.field_product_template__reviewer_ids msgid "Reviewers" @@ -86,11 +91,21 @@ msgstr "" msgid "Tier Definition" msgstr "" +#. module: product_tier_validation +#: model:ir.model.fields,field_description:product_tier_validation.field_product_template__to_validate_message +msgid "To Validate Message" +msgstr "" + #. module: product_tier_validation #: model:ir.model.fields,field_description:product_tier_validation.field_product_template__validated msgid "Validated" msgstr "" +#. module: product_tier_validation +#: model:ir.model.fields,field_description:product_tier_validation.field_product_template__validated_message +msgid "Validated Message" +msgstr "" + #. module: product_tier_validation #: model:ir.model.fields,field_description:product_tier_validation.field_product_template__review_ids msgid "Validations" From 41dd3c9a527343992128e9ce6d0fe66eb1c0e6f0 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 3 Sep 2023 15:20:46 +0000 Subject: [PATCH 17/38] [UPD] README.rst --- product_tier_validation/README.rst | 15 ++++--- .../static/description/index.html | 44 ++++++++++--------- 2 files changed, 32 insertions(+), 27 deletions(-) diff --git a/product_tier_validation/README.rst b/product_tier_validation/README.rst index 4f6946f6b88..e8e30f59e43 100644 --- a/product_tier_validation/README.rst +++ b/product_tier_validation/README.rst @@ -2,10 +2,13 @@ Product Tier Validation ======================= -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:712fee8943081c0ff1f7baf4694c5063dc7522a35e0572f747c7ef6d58c04667 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Product Tier Validation .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/product-attribute-14-0/product-attribute-14-0-product_tier_validation :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/135/14.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/product-attribute&target_branch=14.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| Adds an approval workflow to Products. The default rule requires new Product to be approved @@ -70,7 +73,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 +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. diff --git a/product_tier_validation/static/description/index.html b/product_tier_validation/static/description/index.html index 0f939f4a166..aea787f41a0 100644 --- a/product_tier_validation/static/description/index.html +++ b/product_tier_validation/static/description/index.html @@ -1,20 +1,20 @@ - + - + Product Tier Validation