[IMP] partner_statement: Translate statement title

This commit is contained in:
Simone Rubino
2025-07-03 16:25:57 +02:00
committed by Miquel Raïch
parent 736e816bae
commit a792d29e16
11 changed files with 134 additions and 55 deletions

View File

@@ -15,6 +15,42 @@ class ActivityStatement(models.AbstractModel):
_name = "report.partner_statement.activity_statement"
_description = "Partner Activity Statement"
def _get_title(self, partner, **kwargs):
kwargs["context"] = {
"lang": partner.lang,
}
if kwargs.get("is_detailed"):
if kwargs.get("account_type") == "receivable":
title = _(
"Detailed Statement "
"between %(starting_date)s and %(ending_date)s "
"in %(currency)s",
**kwargs,
)
else:
title = _(
"Detailed Supplier Statement "
"between %(starting_date)s and %(ending_date)s "
"in %(currency)s",
**kwargs,
)
else:
if kwargs.get("account_type") == "receivable":
title = _(
"Statement between "
"%(starting_date)s and %(ending_date)s "
"in %(currency)s",
**kwargs,
)
else:
title = _(
"Supplier Statement "
"between %(starting_date)s and %(ending_date)s "
"in %(currency)s",
**kwargs,
)
return title
def _initial_balance_sql_q1(self, partners, date_start, account_type):
return str(
self._cr.mogrify(

View File

@@ -38,15 +38,14 @@ class ActivityStatementXslx(models.AbstractModel):
currency_data = partner_data.get("currencies", {}).get(currency.id)
account_type = data.get("account_type", False)
row_pos += 2
statement_header = _(
"%(payable)sStatement between %(start)s and %(end)s in %(currency)s"
) % {
"payable": account_type == "liability_payable" and _("Supplier ") or "",
"start": partner_data.get("start"),
"end": partner_data.get("end"),
"currency": currency.display_name,
}
statement_header = data["get_title"](
partner,
is_detailed=False,
account_type=account_type,
starting_date=partner_data.get("start"),
ending_date=partner_data.get("end"),
currency=currency.display_name,
)
sheet.merge_range(
row_pos, 0, row_pos, 6, statement_header, FORMATS["format_left_bold"]
)

View File

@@ -1,7 +1,7 @@
# Copyright 2022 ForgeFlow, S.L. (https://www.forgeflow.com)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import models
from odoo import _, models
from .outstanding_statement import OutstandingStatement
@@ -13,6 +13,34 @@ class DetailedActivityStatement(models.AbstractModel):
_name = "report.partner_statement.detailed_activity_statement"
_description = "Partner Detailed Activity Statement"
def _get_title(self, partner, **kwargs):
kwargs["context"] = {
"lang": partner.lang,
}
if kwargs.get("line_type") == "prior_lines":
if kwargs.get("account_type") == "receivable":
title = _(
"Prior Balance up to %(ending_date)s in %(currency)s", **kwargs
)
else:
title = _(
"Supplier Prior Balance up to %(ending_date)s in %(currency)s",
**kwargs,
)
elif kwargs.get("line_type") == "ending_lines":
if kwargs.get("account_type") == "receivable":
title = _(
"Ending Balance up to %(ending_date)s in %(currency)s", **kwargs
)
else:
title = _(
"Supplier Ending Balance up to %(ending_date)s in %(currency)s",
**kwargs,
)
else:
title = super()._get_title(partner, **kwargs)
return title
def _get_account_display_prior_lines(
self, company_id, partner_ids, date_start, date_end, account_type
):

View File

@@ -40,15 +40,14 @@ class DetailedActivityStatementXslx(models.AbstractModel):
currency_data = partner_data.get("currencies", {}).get(currency.id)
account_type = data.get("account_type", False)
row_pos += 2
statement_header = _(
"Detailed %(payable)sStatement between %(start)s and %(end)s"
" in %(currency)s"
) % {
"payable": account_type == "liability_payable" and _("Supplier ") or "",
"start": partner_data.get("start"),
"end": partner_data.get("end"),
"currency": currency.display_name,
}
statement_header = data["get_title"](
partner,
is_detailed=True,
account_type=account_type,
starting_date=partner_data.get("start"),
ending_date=partner_data.get("end"),
currency=currency.display_name,
)
sheet.merge_range(
row_pos,
0,
@@ -221,13 +220,14 @@ class DetailedActivityStatementXslx(models.AbstractModel):
currency_data = partner_data.get("currencies", {}).get(currency.id)
account_type = data.get("account_type", False)
row_pos += 2
statement_header = _(
"%(payable)sStatement up to %(prior_day)s in %(currency)s"
) % {
"payable": account_type == "payable" and _("Supplier ") or "",
"prior_day": partner_data.get("prior_day"),
"currency": currency.display_name,
}
statement_header = data["get_title"](
partner,
is_detailed=False,
account_type=account_type,
starting_date=partner_data.get("start"),
ending_date=partner_data.get("end"),
currency=currency.display_name,
)
sheet.merge_range(
row_pos,
0,
@@ -328,11 +328,14 @@ class DetailedActivityStatementXslx(models.AbstractModel):
currency_data = partner_data.get("currencies", {}).get(currency.id)
account_type = data.get("account_type", False)
row_pos += 2
statement_header = _("%(payable)sStatement up to %(end)s in %(currency)s") % {
"payable": account_type == "payable" and _("Supplier ") or "",
"end": partner_data.get("end"),
"currency": currency.display_name,
}
statement_header = data["get_title"](
partner,
is_detailed=False,
account_type=account_type,
starting_date=partner_data.get("start"),
ending_date=partner_data.get("end"),
currency=currency.display_name,
)
sheet.merge_range(
row_pos,
0,

View File

@@ -1,7 +1,7 @@
# Copyright 2018 ForgeFlow, S.L. (https://www.forgeflow.com)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import api, models
from odoo import _, api, models
from odoo.tools.float_utils import float_is_zero
@@ -12,6 +12,18 @@ class OutstandingStatement(models.AbstractModel):
_name = "report.partner_statement.outstanding_statement"
_description = "Partner Outstanding Statement"
def _get_title(self, partner, **kwargs):
kwargs["context"] = {
"lang": partner.lang,
}
if kwargs.get("account_type") == "receivable":
title = _("Statement up to %(ending_date)s in %(currency)s", **kwargs)
else:
title = _(
"Supplier Statement up to %(ending_date)s in %(currency)s", **kwargs
)
return title
def _display_outstanding_lines_sql_q1(self, partners, date_end, account_type):
partners = tuple(partners)
return str(

View File

@@ -4,9 +4,7 @@
from odoo import _, models
from odoo.addons.report_xlsx_helper.report.report_xlsx_format import ( # type: ignore
FORMATS,
)
from odoo.addons.report_xlsx_helper.report.report_xlsx_format import FORMATS
def copy_format(book, fmt):
@@ -158,12 +156,12 @@ class OutstandingStatementXslx(models.AbstractModel):
currency_data = partner_data.get("currencies", {}).get(currency.id)
account_type = data.get("account_type", False)
row_pos += 2
statement_header = _("%(payable)sStatement up to %(end)s in %(currency)s") % {
"payable": account_type == "liability_payable" and _("Supplier ") or "",
"end": partner_data.get("end"),
"currency": currency.display_name,
}
statement_header = data["get_title"](
partner,
account_type=account_type,
ending_date=partner_data.get("end"),
currency=currency.display_name,
)
sheet.merge_range(
row_pos, 0, row_pos, 6, statement_header, FORMATS["format_left_bold"]
)

View File

@@ -17,6 +17,15 @@ class ReportStatementCommon(models.AbstractModel):
inv_addr_id = part.address_get(["invoice"]).get("invoice", part.id)
return self.env["res.partner"].browse(inv_addr_id)
def _get_title(self, partner, **kwargs):
raise NotImplementedError
def _get_aging_buckets_title(self, partner, **kwargs):
kwargs["context"] = {
"lang": partner.lang,
}
return _("Aging Report at %(ending_date)s in %(currency)s", **kwargs)
def _format_date_to_partner_lang(
self, date, date_format=DEFAULT_SERVER_DATE_FORMAT
):
@@ -577,4 +586,6 @@ class ReportStatementCommon(models.AbstractModel):
"is_detailed": is_detailed,
"bucket_labels": bucket_labels,
"get_inv_addr": self._get_invoice_address,
"get_title": self._get_title,
"get_aging_buckets_title": self._get_aging_buckets_title,
}

View File

@@ -4,12 +4,9 @@
<odoo>
<template id="activity_balance">
<p>
<span t-if="is_detailed">Detailed </span>
<span
t-if="account_type == 'liability_payable'"
>Supplier </span>Statement between <span t-out="d['start']" /> and <span
t-out="d['end']"
/> in <span t-out="display_currency.name" />
t-out="get_title(o, is_detailed=is_detailed, account_type=account_type, starting_date=d['start'], ending_date=d['end'], currency=display_currency.name)"
/>
</p>
<table class="table table-condensed table-statement">
<thead>

View File

@@ -4,9 +4,9 @@
<odoo>
<template id="aging_buckets">
<p>
Aging Report at <span t-out="d['end']" /> in <span
t-out="display_currency.name"
/>:
<span
t-out="get_aging_buckets_title(o, ending_date=d['end'], currency=display_currency.name)"
/>
</p>
<table class="table table-sm table-statement">
<thead>

View File

@@ -36,7 +36,6 @@
<t t-set="display_currency" t-value="Currencies[currency[0]]" />
<t t-set="currency" t-value="currency[1]" />
<t t-set="line_type" t-value="'prior_lines'" />
<t t-set="title_name" t-value="'Prior Balance'" />
<t
t-set="ending_amount"
t-value="currency['balance_forward']"
@@ -51,7 +50,6 @@
name="detailed_activity"
/>
<t t-set="line_type" t-value="'ending_lines'" />
<t t-set="title_name" t-value="'Ending Balance'" />
<t t-set="ending_amount" t-value="currency['amount_due']" />
<t t-set="ending_date" t-value="d['end']" />
<t

View File

@@ -5,9 +5,7 @@
<template id="outstanding_balance">
<p>
<span
t-out="'' if account_type == 'asset_receivable' else 'Supplier '"
/><span t-out="title_name" /> up to <span t-out="ending_date" /> in <span
t-out="display_currency.name"
t-out="get_title(o, account_type=account_type, line_type=line_type, ending_date=ending_date, currency=display_currency.name)"
/>
</p>
<table class="table table-sm table-statement">
@@ -135,7 +133,6 @@
<t t-set="display_currency" t-value="Currencies[currency[0]]" />
<t t-set="currency" t-value="currency[1]" />
<t t-set="line_type" t-value="'lines'" />
<t t-set="title_name" t-value="'Statement'" />
<t t-set="ending_amount" t-value="currency['amount_due']" />
<t t-set="ending_date" t-value="d['end']" />
<t