Skip to content

Commit fe7bc67

Browse files
committed
Merge PR #735 into 15.0
Signed-off-by pedrobaeza
2 parents c5a3a0f + 12822c5 commit fe7bc67

File tree

3 files changed

+30
-20
lines changed

3 files changed

+30
-20
lines changed

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/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)