From 36436bc42832e9c8f512a3690fd4e446fa0f48ae Mon Sep 17 00:00:00 2001 From: Daniel Palumbo Date: Thu, 10 Sep 2026 15:31:12 +0200 Subject: [PATCH] [T3456] Follow the render's language, not the partner's stored one _compute_address (salutation title, e.g. Mme/Frau/Signora) and _compute_date_communication (the letter's date line) both derived their language from partner.lang regardless of what language the document is actually being rendered in - producing the same class of mismatch fixed on the report_compassion side of this ticket (e.g. a French tax receipt still showing "Frau" and a German-formatted date). Read the language from context instead, falling back to partner.lang only when no context language is set, and mark both computes @api.depends_context("lang") so they aren't cached across different-language renders of the same partner. Co-Authored-By: Claude Sonnet 5 --- thankyou_letters/models/res_partner.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/thankyou_letters/models/res_partner.py b/thankyou_letters/models/res_partner.py index 86612da74..81db3ebf9 100644 --- a/thankyou_letters/models/res_partner.py +++ b/thankyou_letters/models/res_partner.py @@ -13,7 +13,7 @@ from babel.dates import format_date from markupsafe import Markup, escape -from odoo import fields, models +from odoo import api, fields, models class ResPartner(models.Model): @@ -35,11 +35,13 @@ class ResPartner(models.Model): short_address = fields.Char(compute="_compute_address") date_communication = fields.Char(compute="_compute_date_communication") + @api.depends_context("lang") def _compute_address(self): # Replace line returns p = re.compile(r"\n+") + lang = self.env.context.get("lang") or self.env.lang for partner in self: - t_partner = partner.with_context(lang=partner.lang) + t_partner = partner.with_context(lang=lang) lines = [] if not partner.is_company and partner.title.shortcut: title = escape(t_partner.title.shortcut) @@ -53,11 +55,13 @@ def _compute_address(self): text = "\n".join(str(line) for line in lines if line) partner.short_address = Markup(p.sub("
", text)) + @api.depends_context("lang") def _compute_date_communication(self): """City and date displayed in the top right of a letter""" today = datetime.today() city = self.env.user.partner_id.company_id.city + lang = self.env.context.get("lang") or self.env.lang for partner in self: - date = format_date(today, format="long", locale=partner.lang) - formatted_date = f"le {date}" if "fr" in partner.lang else date + date = format_date(today, format="long", locale=lang) + formatted_date = f"le {date}" if "fr" in lang else date partner.date_communication = f"{city}, {formatted_date}"