Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 2095f83

Browse files
committedMar 18, 2025·
Merge PR #736 into 16.0
Signed-off-by pedrobaeza
2 parents 4e5f5bd + 355ddbb commit 2095f83

File tree

6 files changed

+33
-23
lines changed

6 files changed

+33
-23
lines changed
 

‎base_substate/README.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Base Sub State
77
!! This file is generated by oca-gen-addon-readme !!
88
!! changes will be overwritten. !!
99
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10-
!! source digest: sha256:79bcb3dc0e2500c10c934339ae0ccb057746e55563ec6f2e5617604e7a9df501
10+
!! source digest: sha256:cde74a0197c2b71ab368c3fec83af2191d927a0931edcfe9614755d817ef7af9
1111
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1212
1313
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png

‎base_substate/__manifest__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"name": "Base Sub State",
66
"version": "16.0.1.0.0",
77
"category": "Tools",
8-
"author": "Akretion, " "Odoo Community Association (OCA)",
8+
"author": "Akretion, Odoo Community Association (OCA)",
99
"website": "https://github.com/OCA/server-ux",
1010
"license": "AGPL-3",
1111
"depends": ["base", "mail"],

‎base_substate/models/base_substate_mixin.py

+13-17
Original file line numberDiff line numberDiff line change
@@ -28,23 +28,6 @@ def check_substate_id_value(self):
2828
}
2929
)
3030

31-
def _track_template(self, tracking):
32-
res = super()._track_template(tracking)
33-
first_rec = self[0]
34-
changes, tracking_value_ids = tracking[first_rec.id]
35-
if "substate_id" in changes and first_rec.substate_id.mail_template_id:
36-
res["substate_id"] = (
37-
first_rec.substate_id.mail_template_id,
38-
{
39-
"auto_delete_message": True,
40-
"subtype_id": self.env["ir.model.data"].xmlid_to_res_id(
41-
"mail.mt_note"
42-
),
43-
"notif_layout": "mail.mail_notification_light",
44-
},
45-
)
46-
return res
47-
4831
def _get_default_substate_id(self, state_val=False):
4932
"""Gives default substate_id"""
5033
search_domain = self._get_default_substate_domain(state_val)
@@ -116,6 +99,19 @@ def _update_before_write_create(self, values):
11699
if values.get(state_field) and not values.get("substate_id"):
117100
state_val = values.get(state_field)
118101
values["substate_id"] = self._get_default_substate_id(state_val)
102+
# Send mail if substate has mail template
103+
if values.get("substate_id"):
104+
substate = self.env["base.substate"].browse(values["substate_id"])
105+
if (
106+
hasattr(self, "message_post_with_template")
107+
and substate.mail_template_id
108+
):
109+
self.message_post_with_template(
110+
substate.mail_template_id.id,
111+
subtype_id=self.env["ir.model.data"]._xmlid_to_res_id(
112+
"mail.mt_note"
113+
),
114+
)
119115
return values
120116

121117
def write(self, values):

‎base_substate/static/description/index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ <h1 class="title">Base Sub State</h1>
367367
!! This file is generated by oca-gen-addon-readme !!
368368
!! changes will be overwritten. !!
369369
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
370-
!! source digest: sha256:79bcb3dc0e2500c10c934339ae0ccb057746e55563ec6f2e5617604e7a9df501
370+
!! source digest: sha256:cde74a0197c2b71ab368c3fec83af2191d927a0931edcfe9614755d817ef7af9
371371
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
372372
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/server-ux/tree/16.0/base_substate"><img alt="OCA/server-ux" src="https://img.shields.io/badge/github-OCA%2Fserver--ux-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/server-ux-16-0/server-ux-16-0-base_substate"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/server-ux&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
373373
<p>This module provide abstract models to manage customizable

‎base_substate/tests/sale_test.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77

88
class SaleTest(models.Model, TestMixin):
9-
_inherit = "base.substate.mixin"
109
_name = "base.substate.test.sale"
10+
_inherit = ["base.substate.mixin", "mail.thread"]
1111
_description = "Base substate Test Model"
1212

1313
name = fields.Char(required=True)

‎base_substate/tests/test_base_substate.py

+16-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@ def setUpClass(cls):
1717
cls.substate_test_sale = cls.env["base.substate.test.sale"]
1818
cls.substate_test_sale_line = cls.env["base.substate.test.sale.line"]
1919

20+
cls.mail_template = cls.env["mail.template"].create(
21+
{
22+
"name": "Waiting for legal documents",
23+
"model_id": cls.substate_test_sale.id,
24+
"subject": "Test Email Substate",
25+
}
26+
)
27+
2028
cls.base_substate = cls.env["base.substate.mixin"]
2129
cls.substate_type = cls.env["base.substate.type"]
2230

@@ -68,6 +76,7 @@ def setUpClass(cls):
6876
"name": "Waiting for legal documents",
6977
"sequence": 2,
7078
"target_state_value_id": cls.substate_val_sale.id,
79+
"mail_template_id": cls.mail_template.id,
7180
}
7281
)
7382

@@ -106,12 +115,17 @@ def test_sale_order_substate(self):
106115
)
107116
self.assertTrue(so_test1.state == "draft")
108117
self.assertTrue(so_test1.substate_id == self.substate_under_negotiation)
109-
118+
self.assertNotIn(
119+
self.mail_template.subject, so_test1.message_ids.mapped("subject")
120+
)
110121
# Test that validation of sale order change substate_id
111122
so_test1.button_confirm()
112123
self.assertTrue(so_test1.state == "sale")
113124
self.assertTrue(so_test1.substate_id == self.substate_wait_docs)
114-
125+
# Check some message_ids are created and sent email
126+
self.assertIn(
127+
self.mail_template.subject, so_test1.message_ids.mapped("subject")
128+
)
115129
# Test that substate_id is set to false if
116130
# there is not substate corresponding to state
117131
so_test1.button_cancel()

0 commit comments

Comments
 (0)
Please sign in to comment.