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
+
+
+

+
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
+
+
+
+
+
+- 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.
+
+
+
+
+
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.
+
+
+
+
+
+
+
+
This module is maintained by the OCA.
+

+
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. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

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 @@
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 @@
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
+
+
+
+
+
+
-
+
Go to ** Settings > Technical > Database Structure ** and Add
@@ -405,7 +410,7 @@
-
+
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 @@
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
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

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 @@
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.
@@ -440,7 +444,7 @@
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)