diff --git a/purchase_request/__manifest__.py b/purchase_request/__manifest__.py
index 4ba39a5c6fc..dd91835f7a2 100644
--- a/purchase_request/__manifest__.py
+++ b/purchase_request/__manifest__.py
@@ -4,7 +4,7 @@
{
"name": "Purchase Request",
"author": "ForgeFlow, Odoo Community Association (OCA)",
- "version": "19.0.1.0.1",
+ "version": "19.0.1.0.2",
"summary": "Use this module to have notification of requirements of "
"materials and/or external services and keep track of such "
"requirements.",
diff --git a/purchase_request/i18n/purchase_request.pot b/purchase_request/i18n/purchase_request.pot
index 8405671c1a6..24d4377b6b1 100644
--- a/purchase_request/i18n/purchase_request.pot
+++ b/purchase_request/i18n/purchase_request.pot
@@ -4,8 +4,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 19.0\n"
+"Project-Id-Version: Odoo Server 19.0+e\n"
"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2026-06-29 20:25+0000\n"
+"PO-Revision-Date: 2026-06-29 20:25+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -13,22 +15,6 @@ msgstr ""
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
-#. module: purchase_request
-#. odoo-python
-#: code:addons/purchase_request/models/purchase_order.py:0
-msgid ""
-"
%(prl_name)s: Ordered quantity %(prl_qty)s %(prl_uom)s, Planned "
-"date %(prl_date_planned)s"
-msgstr ""
-
-#. module: purchase_request
-#. odoo-python
-#: code:addons/purchase_request/models/purchase_request_allocation.py:0
-msgid ""
-"%(product_name)s: Received quantity %(product_qty)s "
-"%(product_uom)s"
-msgstr ""
-
#. module: purchase_request
#: model_terms:ir.ui.view,arch_db:purchase_request.report_purchase_request
msgid "Analytic Distribution"
@@ -482,7 +468,9 @@ msgstr ""
#. module: purchase_request
#: model:ir.model.fields,help:purchase_request.field_purchase_request__message_has_error
+#: model:ir.model.fields,help:purchase_request.field_purchase_request__message_has_sms_error
#: model:ir.model.fields,help:purchase_request.field_purchase_request_line__message_has_error
+#: model:ir.model.fields,help:purchase_request.field_purchase_request_line__message_has_sms_error
msgid "If checked, some messages have a delivery error."
msgstr ""
@@ -662,6 +650,13 @@ msgstr ""
msgid "Order confirmation %(po_name)s for your Request %(pr_name)s"
msgstr ""
+#. module: purchase_request
+#. odoo-python
+#: code:addons/purchase_request/models/purchase_order.py:0
+msgid ""
+"Ordered quantity %(prl_qty)s %(prl_uom)s, Planned date %(prl_date_planned)s"
+msgstr ""
+
#. module: purchase_request
#: model:ir.model.fields,field_description:purchase_request.field_purchase_request_line__orderpoint_id
msgid "Orderpoint"
@@ -1014,6 +1009,12 @@ msgstr ""
msgid "Received quantity"
msgstr ""
+#. module: purchase_request
+#. odoo-python
+#: code:addons/purchase_request/models/purchase_request_allocation.py:0
+msgid "Received quantity %(product_qty)s %(product_uom)s"
+msgstr ""
+
#. module: purchase_request
#: model_terms:ir.ui.view,arch_db:purchase_request.view_purchase_request_form
msgid "Reject"
@@ -1124,6 +1125,12 @@ msgstr ""
msgid "Responsible User"
msgstr ""
+#. module: purchase_request
+#: model:ir.model.fields,field_description:purchase_request.field_purchase_request__message_has_sms_error
+#: model:ir.model.fields,field_description:purchase_request.field_purchase_request_line__message_has_sms_error
+msgid "SMS Delivery error"
+msgstr ""
+
#. module: purchase_request
#: model_terms:ir.ui.view,arch_db:purchase_request.purchase_order_line_search_sub
msgid "Search Purchase Order Line"
diff --git a/purchase_request/models/purchase_order.py b/purchase_request/models/purchase_order.py
index 27563217521..c04c80324f9 100644
--- a/purchase_request/models/purchase_order.py
+++ b/purchase_request/models/purchase_order.py
@@ -19,24 +19,27 @@ def _purchase_request_confirm_message_content(self, request, request_dict=None):
po_name=self.name,
pr_name=request.name,
)
- message = f"{title}
"
- message += self.env._(
+ intro = self.env._(
"The following requested items from Purchase Request %(pr_name)s "
"have now been confirmed in Purchase Order %(po_name)s:",
po_name=self.name,
pr_name=request.name,
)
+ message = Markup("{}
{}").format(title, intro)
for line in request_dict.values():
- message += self.env._(
- "- %(prl_name)s: Ordered quantity %(prl_qty)s %(prl_uom)s, "
- "Planned date %(prl_date_planned)s
",
- prl_name=html_escape(line["name"]),
+ line_text = self.env._(
+ "Ordered quantity %(prl_qty)s %(prl_uom)s, "
+ "Planned date %(prl_date_planned)s",
prl_qty=line["product_qty"],
prl_uom=line["product_uom"],
prl_date_planned=line["date_planned"],
)
- message += "
"
+ message += Markup("- {}: {}
").format(
+ html_escape(line["name"]),
+ line_text,
+ )
+ message += Markup("
")
return message
def _purchase_request_confirm_message(self):
@@ -62,7 +65,7 @@ def _purchase_request_confirm_message(self):
request, requests_dict[request_id]
)
request.message_post(
- body=Markup(message),
+ body=message,
subtype_id=self.env.ref(
"purchase_request.mt_request_po_confirmed"
).id,
diff --git a/purchase_request/models/purchase_request_allocation.py b/purchase_request/models/purchase_request_allocation.py
index 4ca68d371e1..dedd8eb327b 100644
--- a/purchase_request/models/purchase_request_allocation.py
+++ b/purchase_request/models/purchase_request_allocation.py
@@ -96,21 +96,20 @@ def _compute_open_product_qty(self):
@api.model
def _purchase_request_confirm_done_message_content(self, message_data):
- message = ""
- message += self.env._(
+ message_body = self.env._(
"From last reception this quantity has been "
"allocated to this purchase request"
)
- message += ""
- message += self.env._(
- "- %(product_name)s: "
- "Received quantity %(product_qty)s %(product_uom)s
",
- product_name=html_escape(message_data["product_name"]),
+ line_text = self.env._(
+ "Received quantity %(product_qty)s %(product_uom)s",
product_qty=message_data["product_qty"],
product_uom=message_data["product_uom"],
)
- message += "
"
- return message
+ product_line = Markup("").format(
+ html_escape(message_data["product_name"]),
+ line_text,
+ )
+ return Markup("{}{}").format(message_body, product_line)
def _prepare_message_data(self, po_line, request, allocated_qty):
return {
@@ -130,6 +129,6 @@ def _notify_allocation(self, allocated_qty):
message_data = self._prepare_message_data(po_line, request, allocated_qty)
message = self._purchase_request_confirm_done_message_content(message_data)
request.message_post(
- body=Markup(message),
+ body=message,
subtype_id=self.env.ref("mail.mt_note").id,
)