From fb29e89a0422ecbd0cc3d0a5fd611f25b6a95033 Mon Sep 17 00:00:00 2001 From: Kitti U Date: Wed, 2 Jun 2021 22:09:32 +0700 Subject: [PATCH 01/16] [14.0][ADD] purchase_request_substate --- purchase_request_substate/__init__.py | 1 + purchase_request_substate/__manifest__.py | 19 ++++++ .../data/purchase_request_substate_data.xml | 19 ++++++ .../purchase_substate_mail_template_data.xml | 22 +++++++ .../demo/purchase_request_substate_demo.xml | 26 ++++++++ purchase_request_substate/models/__init__.py | 1 + .../models/purchase_request.py | 19 ++++++ .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 5 ++ purchase_request_substate/readme/USAGE.rst | 6 ++ purchase_request_substate/tests/__init__.py | 1 + .../tests/test_purchase_request_substate.py | 59 +++++++++++++++++++ .../views/purchase_request_views.xml | 17 ++++++ 13 files changed, 196 insertions(+) create mode 100644 purchase_request_substate/__init__.py create mode 100644 purchase_request_substate/__manifest__.py create mode 100644 purchase_request_substate/data/purchase_request_substate_data.xml create mode 100644 purchase_request_substate/data/purchase_substate_mail_template_data.xml create mode 100644 purchase_request_substate/demo/purchase_request_substate_demo.xml create mode 100644 purchase_request_substate/models/__init__.py create mode 100644 purchase_request_substate/models/purchase_request.py create mode 100644 purchase_request_substate/readme/CONTRIBUTORS.rst create mode 100644 purchase_request_substate/readme/DESCRIPTION.rst create mode 100644 purchase_request_substate/readme/USAGE.rst create mode 100644 purchase_request_substate/tests/__init__.py create mode 100644 purchase_request_substate/tests/test_purchase_request_substate.py create mode 100644 purchase_request_substate/views/purchase_request_views.xml diff --git a/purchase_request_substate/__init__.py b/purchase_request_substate/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/purchase_request_substate/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/purchase_request_substate/__manifest__.py b/purchase_request_substate/__manifest__.py new file mode 100644 index 00000000000..22152155740 --- /dev/null +++ b/purchase_request_substate/__manifest__.py @@ -0,0 +1,19 @@ +# Copyright 2021 Ecosoft () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Purchase Request Sub State", + "version": "14.0.1.0.0", + "category": "Tools", + "author": "Ecosoft,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/purchase-workflow", + "license": "AGPL-3", + "depends": ["base_substate", "purchase_request"], + "data": [ + "views/purchase_request_views.xml", + "data/purchase_substate_mail_template_data.xml", + "data/purchase_request_substate_data.xml", + ], + "demo": ["demo/purchase_request_substate_demo.xml"], + "installable": True, +} diff --git a/purchase_request_substate/data/purchase_request_substate_data.xml b/purchase_request_substate/data/purchase_request_substate_data.xml new file mode 100644 index 00000000000..4c8cfc36101 --- /dev/null +++ b/purchase_request_substate/data/purchase_request_substate_data.xml @@ -0,0 +1,19 @@ + + + + Purchase Request Substate + purchase.request + state + + + + To be approved + + to_approve + + + Approved + + approved + + diff --git a/purchase_request_substate/data/purchase_substate_mail_template_data.xml b/purchase_request_substate/data/purchase_substate_mail_template_data.xml new file mode 100644 index 00000000000..86bd20e8c31 --- /dev/null +++ b/purchase_request_substate/data/purchase_substate_mail_template_data.xml @@ -0,0 +1,22 @@ + + + + Verified + + Your purchase request ${object.name} is verified + + +
+ Dear ${object.requested_by.name or 'requester'},
+ This email is to inform that your purchase request ${object.name} was verified by procurement team. +

+ Thank you, +
+
+
+ +
+
diff --git a/purchase_request_substate/demo/purchase_request_substate_demo.xml b/purchase_request_substate/demo/purchase_request_substate_demo.xml new file mode 100644 index 00000000000..3b39010e75e --- /dev/null +++ b/purchase_request_substate/demo/purchase_request_substate_demo.xml @@ -0,0 +1,26 @@ + + + + + To Verify + 1 + + + + + Checked + 2 + + + + + Verified + 3 + + + + + diff --git a/purchase_request_substate/models/__init__.py b/purchase_request_substate/models/__init__.py new file mode 100644 index 00000000000..91be581c56a --- /dev/null +++ b/purchase_request_substate/models/__init__.py @@ -0,0 +1 @@ +from . import purchase_request diff --git a/purchase_request_substate/models/purchase_request.py b/purchase_request_substate/models/purchase_request.py new file mode 100644 index 00000000000..ed0a8326754 --- /dev/null +++ b/purchase_request_substate/models/purchase_request.py @@ -0,0 +1,19 @@ +# Copyright 2021 Ecosoft () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class BaseSubstateType(models.Model): + _inherit = "base.substate.type" + + model = fields.Selection( + selection_add=[("purchase.request", "Purchase request")], + ondelete={"purchase.request": "cascade"}, + ) + + +class PurchaseRequest(models.Model): + _inherit = ["purchase.request", "base.substate.mixin"] + _name = "purchase.request" + _state_field = "state" diff --git a/purchase_request_substate/readme/CONTRIBUTORS.rst b/purchase_request_substate/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..6ce956d9619 --- /dev/null +++ b/purchase_request_substate/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Kitti U. diff --git a/purchase_request_substate/readme/DESCRIPTION.rst b/purchase_request_substate/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..f627b94244d --- /dev/null +++ b/purchase_request_substate/readme/DESCRIPTION.rst @@ -0,0 +1,5 @@ +This module allows to add a substate to purchase request. +For each purchase request state you can define a substate. +We this module you can define substate which allow you to extend purchase request workflow. +For example, you can add substate "To Verify" if +the order can not be approved without document checked and verified diff --git a/purchase_request_substate/readme/USAGE.rst b/purchase_request_substate/readme/USAGE.rst new file mode 100644 index 00000000000..92482e83d2d --- /dev/null +++ b/purchase_request_substate/readme/USAGE.rst @@ -0,0 +1,6 @@ +#. Go to ** Settings > Technical > Database Structure ** and Add "Base substate". + If necessery you can add "target State values" (ex define a substate for "cancel" + state). + Substate sequence is very important. +#. Create a purchae request and check if the substate are displayed on the header of + form view. Check if you can't set substate defined for purchase request if sate is a To be approved. diff --git a/purchase_request_substate/tests/__init__.py b/purchase_request_substate/tests/__init__.py new file mode 100644 index 00000000000..208bcd4d3e3 --- /dev/null +++ b/purchase_request_substate/tests/__init__.py @@ -0,0 +1 @@ +from . import test_purchase_request_substate diff --git a/purchase_request_substate/tests/test_purchase_request_substate.py b/purchase_request_substate/tests/test_purchase_request_substate.py new file mode 100644 index 00000000000..4cac14ffdec --- /dev/null +++ b/purchase_request_substate/tests/test_purchase_request_substate.py @@ -0,0 +1,59 @@ +# Copyright 2021 Ecosoft () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from odoo import SUPERUSER_ID +from odoo.exceptions import ValidationError +from odoo.tests.common import TransactionCase + + +class TestBaseSubstate(TransactionCase): + def setUp(self): + super(TestBaseSubstate, self).setUp() + # Prepare PR + self.purchase_request_obj = self.env["purchase.request"] + self.purchase_request_line_obj = self.env["purchase.request.line"] + self.wiz = self.env["purchase.request.line.make.purchase.order"] + vals = { + "picking_type_id": self.env.ref("stock.picking_type_in").id, + "requested_by": SUPERUSER_ID, + } + self.pr_test = self.purchase_request_obj.create(vals) + vals = { + "request_id": self.pr_test.id, + "product_id": self.env.ref("product.product_product_13").id, + "product_uom_id": self.env.ref("uom.product_uom_unit").id, + "product_qty": 5.0, + } + self.purchase_request_line_obj.create(vals) + + # Prepare states + self.substate_to_verify = self.env.ref( + "purchase_request_substate.base_substate_to_verify" + ) + self.substate_checked = self.env.ref( + "purchase_request_substate.base_substate_checked" + ) + self.substate_verified = self.env.ref( + "purchase_request_substate.base_substate_verified" + ) + # Active substate + ( + self.substate_to_verify + self.substate_checked + self.substate_verified + ).active = True + + def test_purchase_request_order_substate(self): + self.assertTrue(self.pr_test.state == "draft") + self.assertTrue(not self.pr_test.substate_id) + + # Block substate not corresponding to draft state + with self.assertRaises(ValidationError): + self.pr_test.substate_id = self.substate_to_verify + # Test that validation of purchase_request order change substate_id + self.pr_test.button_to_approve() + self.assertTrue(self.pr_test.state == "to_approve") + self.assertTrue(self.pr_test.substate_id == self.substate_to_verify) + + # Test that substate_id is set to false if + # there is not substate corresponding to state + self.pr_test.button_approved() + self.assertTrue(self.pr_test.state == "approved") + self.assertTrue(not self.pr_test.substate_id) diff --git a/purchase_request_substate/views/purchase_request_views.xml b/purchase_request_substate/views/purchase_request_views.xml new file mode 100644 index 00000000000..5463da00971 --- /dev/null +++ b/purchase_request_substate/views/purchase_request_views.xml @@ -0,0 +1,17 @@ + + + + + purchase.request + + + + + + + + From 473ac6193fa992d87e105857a9cc32014d66357b Mon Sep 17 00:00:00 2001 From: oca-ci Date: Tue, 11 Oct 2022 08:37:52 +0000 Subject: [PATCH 02/16] [UPD] Update purchase_request_substate.pot --- .../i18n/purchase_request_substate.pot | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 purchase_request_substate/i18n/purchase_request_substate.pot diff --git a/purchase_request_substate/i18n/purchase_request_substate.pot b/purchase_request_substate/i18n/purchase_request_substate.pot new file mode 100644 index 00000000000..4cda79ac9a1 --- /dev/null +++ b/purchase_request_substate/i18n/purchase_request_substate.pot @@ -0,0 +1,105 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_request_substate +# +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: purchase_request_substate +#: model:mail.template,body_html:purchase_request_substate.mail_template_data_purchase_request_substate_verified +msgid "" +"
\n" +" Dear ${object.requested_by.name or 'requester'},
\n" +" This email is to inform that your purchase request ${object.name} was verified by procurement team.\n" +"

\n" +" Thank you,\n" +"
\n" +"
\n" +" " +msgstr "" + +#. module: purchase_request_substate +#: model:ir.model.fields,field_description:purchase_request_substate.field_base_substate_type__model +msgid "Apply on" +msgstr "" + +#. module: purchase_request_substate +#: model:target.state.value,name:purchase_request_substate.target_state_value_approved +msgid "Approved" +msgstr "" + +#. module: purchase_request_substate +#: model:ir.model,name:purchase_request_substate.model_base_substate_type +msgid "Base Substate Type" +msgstr "" + +#. module: purchase_request_substate +#: model:base.substate,name:purchase_request_substate.base_substate_checked +msgid "Checked" +msgstr "" + +#. module: purchase_request_substate +#: model:ir.model.fields,field_description:purchase_request_substate.field_base_substate_type__display_name +#: model:ir.model.fields,field_description:purchase_request_substate.field_purchase_request__display_name +msgid "Display Name" +msgstr "" + +#. module: purchase_request_substate +#: model:ir.model.fields,field_description:purchase_request_substate.field_base_substate_type__id +#: model:ir.model.fields,field_description:purchase_request_substate.field_purchase_request__id +msgid "ID" +msgstr "" + +#. module: purchase_request_substate +#: model:ir.model.fields,field_description:purchase_request_substate.field_base_substate_type____last_update +#: model:ir.model.fields,field_description:purchase_request_substate.field_purchase_request____last_update +msgid "Last Modified on" +msgstr "" + +#. module: purchase_request_substate +#: model:ir.model,name:purchase_request_substate.model_purchase_request +msgid "Purchase Request" +msgstr "" + +#. module: purchase_request_substate +#: model:base.substate.type,name:purchase_request_substate.base_substate_type_purchase_request +msgid "Purchase Request Substate" +msgstr "" + +#. module: purchase_request_substate +#: model:ir.model.fields.selection,name:purchase_request_substate.selection__base_substate_type__model__purchase_request +msgid "Purchase request" +msgstr "" + +#. module: purchase_request_substate +#: model:ir.model.fields,field_description:purchase_request_substate.field_purchase_request__substate_id +msgid "Sub State" +msgstr "" + +#. module: purchase_request_substate +#: model:base.substate,name:purchase_request_substate.base_substate_to_verify +msgid "To Verify" +msgstr "" + +#. module: purchase_request_substate +#: model:target.state.value,name:purchase_request_substate.target_state_value_to_approve +msgid "To be approved" +msgstr "" + +#. module: purchase_request_substate +#: model:base.substate,name:purchase_request_substate.base_substate_verified +msgid "Verified" +msgstr "" + +#. module: purchase_request_substate +#: model:mail.template,subject:purchase_request_substate.mail_template_data_purchase_request_substate_verified +msgid "Your purchase request ${object.name} is verified" +msgstr "" From 20b625a65a01f486f892d9d3f604992296c39df1 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 11 Oct 2022 08:45:18 +0000 Subject: [PATCH 03/16] [UPD] README.rst --- purchase_request_substate/README.rst | 87 ++++ .../static/description/index.html | 438 ++++++++++++++++++ 2 files changed, 525 insertions(+) create mode 100644 purchase_request_substate/README.rst create mode 100644 purchase_request_substate/static/description/index.html diff --git a/purchase_request_substate/README.rst b/purchase_request_substate/README.rst new file mode 100644 index 00000000000..08f5b2f6bb8 --- /dev/null +++ b/purchase_request_substate/README.rst @@ -0,0 +1,87 @@ +========================== +Purchase Request Sub State +========================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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%2Fpurchase--workflow-lightgray.png?logo=github + :target: https://github.com/OCA/purchase-workflow/tree/14.0/purchase_request_substate + :alt: OCA/purchase-workflow +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/purchase-workflow-14-0/purchase-workflow-14-0-purchase_request_substate + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/142/14.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows to add a substate to purchase request. +For each purchase request state you can define a substate. +We this module you can define substate which allow you to extend purchase request workflow. +For example, you can add substate "To Verify" if +the order can not be approved without document checked and verified + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +#. Go to ** Settings > Technical > Database Structure ** and Add "Base substate". + If necessery you can add "target State values" (ex define a substate for "cancel" + state). + Substate sequence is very important. +#. Create a purchae request and check if the substate are displayed on the header of + form view. Check if you can't set substate defined for purchase request if sate is a To be approved. + +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 +~~~~~~~ + +* Ecosoft + +Contributors +~~~~~~~~~~~~ + +* Kitti U. + +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/purchase-workflow `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_request_substate/static/description/index.html b/purchase_request_substate/static/description/index.html new file mode 100644 index 00000000000..18e3b39cc52 --- /dev/null +++ b/purchase_request_substate/static/description/index.html @@ -0,0 +1,438 @@ + + + + + + +Purchase Request Sub State + + + +
+

Purchase Request Sub State

+ + +

Beta License: AGPL-3 OCA/purchase-workflow Translate me on Weblate Try me on Runbot

+

This module allows to add a substate to purchase request. +For each purchase request state you can define a substate. +We this module you can define substate which allow you to extend purchase request workflow. +For example, you can add substate “To Verify” if +the order can not be approved without document checked and verified

+

Table of contents

+ +
+

Usage

+
    +
  1. +
    Go to ** Settings > Technical > Database Structure ** and Add “Base substate”.
    +
    If necessery you can add “target State values” (ex define a substate for “cancel” +state). +Substate sequence is very important.
    +
    +
  2. +
  3. Create a purchae request and check if the substate are displayed on the header of +form view. Check if you can’t set substate defined for purchase request if sate is a To be approved.
  4. +
+
+
+

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

+
    +
  • Ecosoft
  • +
+
+ +
+

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/purchase-workflow project on GitHub.

+

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

+
+
+
+ + From 88187019f2a446126a0bf1f4d1ccf2ebc61e412e Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 11 Oct 2022 08:45:18 +0000 Subject: [PATCH 04/16] [ADD] icon.png --- .../static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 purchase_request_substate/static/description/icon.png diff --git a/purchase_request_substate/static/description/icon.png b/purchase_request_substate/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 From cedfbc24b6754486cc57a9ea3c759c563baf705f Mon Sep 17 00:00:00 2001 From: Saran440 Date: Thu, 17 Nov 2022 15:53:37 +0700 Subject: [PATCH 05/16] [15.0][MIG] purchase_request_substate --- purchase_request_substate/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purchase_request_substate/__manifest__.py b/purchase_request_substate/__manifest__.py index 22152155740..0663cda8233 100644 --- a/purchase_request_substate/__manifest__.py +++ b/purchase_request_substate/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Purchase Request Sub State", - "version": "14.0.1.0.0", + "version": "15.0.1.0.0", "category": "Tools", "author": "Ecosoft,Odoo Community Association (OCA)", "website": "https://github.com/OCA/purchase-workflow", From 3075328985bcd661df373cabd958e3b13edc7e7a Mon Sep 17 00:00:00 2001 From: oca-ci Date: Fri, 17 Mar 2023 09:25:30 +0000 Subject: [PATCH 06/16] [UPD] Update purchase_request_substate.pot --- .../i18n/purchase_request_substate.pot | 21 ++----------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/purchase_request_substate/i18n/purchase_request_substate.pot b/purchase_request_substate/i18n/purchase_request_substate.pot index 4cda79ac9a1..c8c1368510a 100644 --- a/purchase_request_substate/i18n/purchase_request_substate.pot +++ b/purchase_request_substate/i18n/purchase_request_substate.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -46,24 +46,6 @@ msgstr "" msgid "Checked" msgstr "" -#. module: purchase_request_substate -#: model:ir.model.fields,field_description:purchase_request_substate.field_base_substate_type__display_name -#: model:ir.model.fields,field_description:purchase_request_substate.field_purchase_request__display_name -msgid "Display Name" -msgstr "" - -#. module: purchase_request_substate -#: model:ir.model.fields,field_description:purchase_request_substate.field_base_substate_type__id -#: model:ir.model.fields,field_description:purchase_request_substate.field_purchase_request__id -msgid "ID" -msgstr "" - -#. module: purchase_request_substate -#: model:ir.model.fields,field_description:purchase_request_substate.field_base_substate_type____last_update -#: model:ir.model.fields,field_description:purchase_request_substate.field_purchase_request____last_update -msgid "Last Modified on" -msgstr "" - #. module: purchase_request_substate #: model:ir.model,name:purchase_request_substate.model_purchase_request msgid "Purchase Request" @@ -96,6 +78,7 @@ msgstr "" #. module: purchase_request_substate #: model:base.substate,name:purchase_request_substate.base_substate_verified +#: model:mail.template,name:purchase_request_substate.mail_template_data_purchase_request_substate_verified msgid "Verified" msgstr "" From f971c9661d748143dedc86d3ac01a2a79d83c60c Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 17 Mar 2023 09:31:25 +0000 Subject: [PATCH 07/16] [UPD] README.rst --- purchase_request_substate/README.rst | 10 +++++----- .../static/description/index.html | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/purchase_request_substate/README.rst b/purchase_request_substate/README.rst index 08f5b2f6bb8..4f5271a2454 100644 --- a/purchase_request_substate/README.rst +++ b/purchase_request_substate/README.rst @@ -14,13 +14,13 @@ Purchase Request Sub State :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github - :target: https://github.com/OCA/purchase-workflow/tree/14.0/purchase_request_substate + :target: https://github.com/OCA/purchase-workflow/tree/15.0/purchase_request_substate :alt: OCA/purchase-workflow .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/purchase-workflow-14-0/purchase-workflow-14-0-purchase_request_substate + :target: https://translation.odoo-community.org/projects/purchase-workflow-15-0/purchase-workflow-15-0-purchase_request_substate :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/142/14.0 + :target: https://runbot.odoo-community.org/runbot/142/15.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -52,7 +52,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. @@ -82,6 +82,6 @@ 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/purchase-workflow `_ project on GitHub. +This module is part of the `OCA/purchase-workflow `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_request_substate/static/description/index.html b/purchase_request_substate/static/description/index.html index 18e3b39cc52..fcbc487522f 100644 --- a/purchase_request_substate/static/description/index.html +++ b/purchase_request_substate/static/description/index.html @@ -367,7 +367,7 @@

Purchase Request Sub State

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

Beta License: AGPL-3 OCA/purchase-workflow Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/purchase-workflow Translate me on Weblate Try me on Runbot

This module allows to add a substate to purchase request. For each purchase request state you can define a substate. We this module you can define substate which allow you to extend purchase request workflow. @@ -405,7 +405,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.

@@ -429,7 +429,7 @@

Maintainers

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/purchase-workflow project on GitHub.

+

This module is part of the OCA/purchase-workflow project on GitHub.

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

From 9e925526ec6a408a8217a43642da3f1358207790 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 3 Sep 2023 15:46:12 +0000 Subject: [PATCH 08/16] [UPD] README.rst --- purchase_request_substate/README.rst | 15 +++++--- .../static/description/index.html | 38 ++++++++++--------- 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/purchase_request_substate/README.rst b/purchase_request_substate/README.rst index 4f5271a2454..b35e8a8dd63 100644 --- a/purchase_request_substate/README.rst +++ b/purchase_request_substate/README.rst @@ -2,10 +2,13 @@ Purchase Request Sub State ========================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:1463f70c7b2f51db2e677dd12fbaf3ac9befd47fa94872d847a439003d7d0225 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Purchase Request Sub State .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/purchase-workflow-15-0/purchase-workflow-15-0-purchase_request_substate :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/142/15.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/purchase-workflow&target_branch=15.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module allows to add a substate to purchase request. For each purchase request state you can define a substate. @@ -51,7 +54,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/purchase_request_substate/static/description/index.html b/purchase_request_substate/static/description/index.html index fcbc487522f..6e39e12663b 100644 --- a/purchase_request_substate/static/description/index.html +++ b/purchase_request_substate/static/description/index.html @@ -1,20 +1,20 @@ - + - + Purchase Request Sub State -
-

Purchase Request Sub State

+
+ + +Odoo Community Association + +
+

Purchase Request Sub State

-

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

+

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

This module allows to add a substate to purchase request. For each purchase request state you can define a substate. We this module you can define substate which allow you to extend purchase request workflow. For @@ -389,7 +394,7 @@

Purchase Request Sub State

-

Usage

+

Usage

  1. Go to ** Settings > Technical > Database Structure ** and Add @@ -405,7 +410,7 @@

    Usage

-

Bug Tracker

+

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 @@ -413,21 +418,21 @@

Bug Tracker

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

+
From 005bc9c949b68925c6c1e836d5e3535c52049d11 Mon Sep 17 00:00:00 2001 From: mymage Date: Fri, 11 Jul 2025 18:50:37 +0000 Subject: [PATCH 13/16] Added translation using Weblate (Italian) --- purchase_request_substate/i18n/it.po | 85 ++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 purchase_request_substate/i18n/it.po diff --git a/purchase_request_substate/i18n/it.po b/purchase_request_substate/i18n/it.po new file mode 100644 index 00000000000..46d18e1041a --- /dev/null +++ b/purchase_request_substate/i18n/it.po @@ -0,0 +1,85 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * purchase_request_substate +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: purchase_request_substate +#: model:mail.template,body_html:purchase_request_substate.mail_template_data_purchase_request_substate_verified +msgid "" +"
\n" +" Dear ${object.requested_by.name or 'requester'},
\n" +" This email is to inform that your purchase request ${object.name} was verified by procurement team.\n" +"

\n" +" Thank you,\n" +"
\n" +"
\n" +" " +msgstr "" + +#. module: purchase_request_substate +#: model:ir.model.fields,field_description:purchase_request_substate.field_base_substate_type__model +msgid "Apply on" +msgstr "" + +#. module: purchase_request_substate +#: model:target.state.value,name:purchase_request_substate.target_state_value_approved +msgid "Approved" +msgstr "" + +#. module: purchase_request_substate +#: model:ir.model,name:purchase_request_substate.model_base_substate_type +msgid "Base Substate Type" +msgstr "" + +#. module: purchase_request_substate +#: model:base.substate,name:purchase_request_substate.base_substate_checked +msgid "Checked" +msgstr "" + +#. module: purchase_request_substate +#: model:ir.model,name:purchase_request_substate.model_purchase_request +#: model:ir.model.fields.selection,name:purchase_request_substate.selection__base_substate_type__model__purchase_request +msgid "Purchase Request" +msgstr "" + +#. module: purchase_request_substate +#: model:base.substate.type,name:purchase_request_substate.base_substate_type_purchase_request +msgid "Purchase Request Substate" +msgstr "" + +#. module: purchase_request_substate +#: model:ir.model.fields,field_description:purchase_request_substate.field_purchase_request__substate_id +msgid "Sub State" +msgstr "" + +#. module: purchase_request_substate +#: model:base.substate,name:purchase_request_substate.base_substate_to_verify +msgid "To Verify" +msgstr "" + +#. module: purchase_request_substate +#: model:target.state.value,name:purchase_request_substate.target_state_value_to_approve +msgid "To be approved" +msgstr "" + +#. module: purchase_request_substate +#: model:base.substate,name:purchase_request_substate.base_substate_verified +#: model:mail.template,name:purchase_request_substate.mail_template_data_purchase_request_substate_verified +msgid "Verified" +msgstr "" + +#. module: purchase_request_substate +#: model:mail.template,subject:purchase_request_substate.mail_template_data_purchase_request_substate_verified +msgid "Your purchase request ${object.name} is verified" +msgstr "" From 642c5799f270258e58da0c991787edb4b8fd3c8b Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 21 Jul 2025 14:22:06 +0000 Subject: [PATCH 14/16] Translated using Weblate (Italian) Currently translated at 100.0% (12 of 12 strings) Translation: purchase-workflow-18.0/purchase-workflow-18.0-purchase_request_substate Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-18-0/purchase-workflow-18-0-purchase_request_substate/it/ --- purchase_request_substate/i18n/it.po | 35 ++++++++++++++++++---------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/purchase_request_substate/i18n/it.po b/purchase_request_substate/i18n/it.po index 46d18e1041a..cf73afec03a 100644 --- a/purchase_request_substate/i18n/it.po +++ b/purchase_request_substate/i18n/it.po @@ -6,13 +6,15 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 18.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2025-07-21 14:55+0000\n" +"Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.10.4\n" #. module: purchase_request_substate #: model:mail.template,body_html:purchase_request_substate.mail_template_data_purchase_request_substate_verified @@ -26,60 +28,69 @@ msgid "" "\n" " " msgstr "" +"
\n" +"Gentile ${object.requested_by.name o 'requester'},
\n" +"Questa e-mail la informa che la sua richiesta di acquisto ${object.name} è " +"stata verificata dal team acquisti.\n" +"

\n" +"Grazie,\n" +"
\n" +"
\n" +" " #. module: purchase_request_substate #: model:ir.model.fields,field_description:purchase_request_substate.field_base_substate_type__model msgid "Apply on" -msgstr "" +msgstr "Applica a" #. module: purchase_request_substate #: model:target.state.value,name:purchase_request_substate.target_state_value_approved msgid "Approved" -msgstr "" +msgstr "Approvata" #. module: purchase_request_substate #: model:ir.model,name:purchase_request_substate.model_base_substate_type msgid "Base Substate Type" -msgstr "" +msgstr "Tipo substato base" #. module: purchase_request_substate #: model:base.substate,name:purchase_request_substate.base_substate_checked msgid "Checked" -msgstr "" +msgstr "Selezionato" #. module: purchase_request_substate #: model:ir.model,name:purchase_request_substate.model_purchase_request #: model:ir.model.fields.selection,name:purchase_request_substate.selection__base_substate_type__model__purchase_request msgid "Purchase Request" -msgstr "" +msgstr "Richiesta di acquisto" #. module: purchase_request_substate #: model:base.substate.type,name:purchase_request_substate.base_substate_type_purchase_request msgid "Purchase Request Substate" -msgstr "" +msgstr "Substato richiesta di acquisto" #. module: purchase_request_substate #: model:ir.model.fields,field_description:purchase_request_substate.field_purchase_request__substate_id msgid "Sub State" -msgstr "" +msgstr "Substato" #. module: purchase_request_substate #: model:base.substate,name:purchase_request_substate.base_substate_to_verify msgid "To Verify" -msgstr "" +msgstr "Da verificare" #. module: purchase_request_substate #: model:target.state.value,name:purchase_request_substate.target_state_value_to_approve msgid "To be approved" -msgstr "" +msgstr "Da approvare" #. module: purchase_request_substate #: model:base.substate,name:purchase_request_substate.base_substate_verified #: model:mail.template,name:purchase_request_substate.mail_template_data_purchase_request_substate_verified msgid "Verified" -msgstr "" +msgstr "Verificato" #. module: purchase_request_substate #: model:mail.template,subject:purchase_request_substate.mail_template_data_purchase_request_substate_verified msgid "Your purchase request ${object.name} is verified" -msgstr "" +msgstr "La sua richiesta di acquisto ${object.name} è verificata" From 9583ba2b511e7c3e6d2e928a38b19642f54fb7c2 Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 21 Jul 2025 14:22:06 +0000 Subject: [PATCH 15/16] Translated using Weblate (Italian) Currently translated at 100.0% (12 of 12 strings) Translation: purchase-workflow-18.0/purchase-workflow-18.0-purchase_request_substate Translate-URL: https://translation.odoo-community.org/projects/purchase-workflow-18-0/purchase-workflow-18-0-purchase_request_substate/it/ --- purchase_request_substate/i18n/it.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purchase_request_substate/i18n/it.po b/purchase_request_substate/i18n/it.po index cf73afec03a..b41dcc38823 100644 --- a/purchase_request_substate/i18n/it.po +++ b/purchase_request_substate/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 18.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2025-07-21 14:55+0000\n" +"PO-Revision-Date: 2025-07-21 14:57+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" From c6896cce1884014844a03df4d121ff0147f06be8 Mon Sep 17 00:00:00 2001 From: Bhavesh Heliconia Date: Fri, 1 May 2026 15:24:36 +0530 Subject: [PATCH 16/16] [MIG] purchase_request_substate: Migration to 19.0 --- purchase_request_substate/README.rst | 13 +-- purchase_request_substate/__manifest__.py | 2 +- .../readme/CONTRIBUTORS.md | 2 + .../static/description/index.html | 10 ++- .../tests/test_purchase_request_substate.py | 82 ++++++++++++------- 5 files changed, 70 insertions(+), 39 deletions(-) diff --git a/purchase_request_substate/README.rst b/purchase_request_substate/README.rst index 63ea4785222..fa608ca9aa8 100644 --- a/purchase_request_substate/README.rst +++ b/purchase_request_substate/README.rst @@ -21,13 +21,13 @@ Purchase Request Sub State :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github - :target: https://github.com/OCA/purchase-workflow/tree/18.0/purchase_request_substate + :target: https://github.com/OCA/purchase-workflow/tree/19.0/purchase_request_substate :alt: OCA/purchase-workflow .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/purchase-workflow-18-0/purchase-workflow-18-0-purchase_request_substate + :target: https://translation.odoo-community.org/projects/purchase-workflow-19-0/purchase-workflow-19-0-purchase_request_substate :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/purchase-workflow&target_branch=18.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/purchase-workflow&target_branch=19.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -61,7 +61,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 to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -77,6 +77,9 @@ Contributors ------------ - Kitti U. +- `Heliconia Solutions Pvt. Ltd. `__ + + - Bhavesh Heliconia Maintainers ----------- @@ -91,6 +94,6 @@ 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/purchase-workflow `_ project on GitHub. +This module is part of the `OCA/purchase-workflow `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/purchase_request_substate/__manifest__.py b/purchase_request_substate/__manifest__.py index 2280b5a483f..71c2c2b2aae 100644 --- a/purchase_request_substate/__manifest__.py +++ b/purchase_request_substate/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Purchase Request Sub State", - "version": "18.0.1.0.0", + "version": "19.0.1.0.0", "category": "Tools", "author": "Ecosoft,Odoo Community Association (OCA)", "website": "https://github.com/OCA/purchase-workflow", diff --git a/purchase_request_substate/readme/CONTRIBUTORS.md b/purchase_request_substate/readme/CONTRIBUTORS.md index db1787028bd..f538d5b01f7 100644 --- a/purchase_request_substate/readme/CONTRIBUTORS.md +++ b/purchase_request_substate/readme/CONTRIBUTORS.md @@ -1 +1,3 @@ - Kitti U. \<\> +- [Heliconia Solutions Pvt. Ltd.](https://www.heliconia.io) + - Bhavesh Heliconia diff --git a/purchase_request_substate/static/description/index.html b/purchase_request_substate/static/description/index.html index 38a724bc850..79fcc687a35 100644 --- a/purchase_request_substate/static/description/index.html +++ b/purchase_request_substate/static/description/index.html @@ -374,7 +374,7 @@

Purchase Request Sub State

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:8a17c5c0411a565e677833e932a9815a269e7aca828b3c4ecab158e09e9dc653 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

This module allows to add a substate to purchase request. For each purchase request state you can define a substate. We this module you can define substate which allow you to extend purchase request workflow. For @@ -414,7 +414,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 to smash it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -429,6 +429,10 @@

Authors

Contributors

@@ -440,7 +444,7 @@

Maintainers

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/purchase-workflow project on GitHub.

+

This module is part of the OCA/purchase-workflow project on GitHub.

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

diff --git a/purchase_request_substate/tests/test_purchase_request_substate.py b/purchase_request_substate/tests/test_purchase_request_substate.py index adb8ea6e17e..91098788ac4 100644 --- a/purchase_request_substate/tests/test_purchase_request_substate.py +++ b/purchase_request_substate/tests/test_purchase_request_substate.py @@ -2,59 +2,81 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). from odoo import SUPERUSER_ID from odoo.exceptions import ValidationError -from odoo.tests.common import TransactionCase +from odoo.addons.base.tests.common import BaseCommon -class TestPurchaseRequestSubstate(TransactionCase): + +class TestPurchaseRequestSubstate(BaseCommon): @classmethod def setUpClass(cls): super().setUpClass() # Prepare PR cls.purchase_request_obj = cls.env["purchase.request"] cls.purchase_request_line_obj = cls.env["purchase.request.line"] - cls.wiz = cls.env["purchase.request.line.make.purchase.order"] + cls.product = cls.env["product.product"].create( + { + "name": "Test Product", + "is_storable": True, + } + ) + cls.substate_type = cls.env.ref( + "purchase_request_substate.base_substate_type_purchase_request" + ) + cls.target_state_value_to_approve = cls.env.ref( + "purchase_request_substate.target_state_value_to_approve" + ) + cls.substate_to_verify = cls.env["base.substate"].create( + { + "name": "To Verify", + "sequence": 1, + "target_state_value_id": cls.target_state_value_to_approve.id, + "active": True, + } + ) + cls.substate_checked = cls.env["base.substate"].create( + { + "name": "Checked", + "sequence": 2, + "target_state_value_id": cls.target_state_value_to_approve.id, + "active": True, + } + ) + cls.substate_verified = cls.env["base.substate"].create( + { + "name": "Verified", + "sequence": 3, + "target_state_value_id": cls.target_state_value_to_approve.id, + "active": True, + } + ) vals = { "picking_type_id": cls.env.ref("stock.picking_type_in").id, "requested_by": SUPERUSER_ID, } cls.pr_test = cls.purchase_request_obj.create(vals) - vals = { - "request_id": cls.pr_test.id, - "product_id": cls.env.ref("product.product_product_13").id, - "product_uom_id": cls.env.ref("uom.product_uom_unit").id, - "product_qty": 5.0, - } - cls.purchase_request_line_obj.create(vals) - - # Prepare states - cls.substate_to_verify = cls.env.ref( - "purchase_request_substate.base_substate_to_verify" - ) - cls.substate_checked = cls.env.ref( - "purchase_request_substate.base_substate_checked" - ) - cls.substate_verified = cls.env.ref( - "purchase_request_substate.base_substate_verified" + cls.purchase_request_line_obj.create( + { + "request_id": cls.pr_test.id, + "product_id": cls.product.id, + "product_uom_id": cls.env.ref("uom.product_uom_unit").id, + "product_qty": 5.0, + } ) - # Active substate - ( - cls.substate_to_verify + cls.substate_checked + cls.substate_verified - ).active = True def test_purchase_request_order_substate(self): - self.assertTrue(self.pr_test.state == "draft") - self.assertTrue(not self.pr_test.substate_id) + self.assertEqual(self.pr_test.state, "draft") + self.assertFalse(self.pr_test.substate_id) # Block substate not corresponding to draft state with self.assertRaises(ValidationError): self.pr_test.substate_id = self.substate_to_verify # Test that validation of purchase_request order change substate_id self.pr_test.button_to_approve() - self.assertTrue(self.pr_test.state == "to_approve") - self.assertTrue(self.pr_test.substate_id == self.substate_to_verify) + self.assertEqual(self.pr_test.state, "to_approve") + self.assertEqual(self.pr_test.substate_id, self.substate_to_verify) # Test that substate_id is set to false if # there is not substate corresponding to state self.pr_test.button_approved() - self.assertTrue(self.pr_test.state == "approved") - self.assertTrue(not self.pr_test.substate_id) + self.assertEqual(self.pr_test.state, "approved") + self.assertFalse(self.pr_test.substate_id)