[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" _name = "report.partner_statement.activity_statement"
_description = "Partner 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): def _initial_balance_sql_q1(self, partners, date_start, account_type):
return str( return str(
self._cr.mogrify( self._cr.mogrify(

View File

@@ -38,15 +38,14 @@ class ActivityStatementXslx(models.AbstractModel):
currency_data = partner_data.get("currencies", {}).get(currency.id) currency_data = partner_data.get("currencies", {}).get(currency.id)
account_type = data.get("account_type", False) account_type = data.get("account_type", False)
row_pos += 2 row_pos += 2
statement_header = _( statement_header = data["get_title"](
"%(payable)sStatement between %(start)s and %(end)s in %(currency)s" partner,
) % { is_detailed=False,
"payable": account_type == "liability_payable" and _("Supplier ") or "", account_type=account_type,
"start": partner_data.get("start"), starting_date=partner_data.get("start"),
"end": partner_data.get("end"), ending_date=partner_data.get("end"),
"currency": currency.display_name, currency=currency.display_name,
} )
sheet.merge_range( sheet.merge_range(
row_pos, 0, row_pos, 6, statement_header, FORMATS["format_left_bold"] 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) # Copyright 2022 ForgeFlow, S.L. (https://www.forgeflow.com)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). # 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 from .outstanding_statement import OutstandingStatement
@@ -13,6 +13,34 @@ class DetailedActivityStatement(models.AbstractModel):
_name = "report.partner_statement.detailed_activity_statement" _name = "report.partner_statement.detailed_activity_statement"
_description = "Partner 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( def _get_account_display_prior_lines(
self, company_id, partner_ids, date_start, date_end, account_type 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) currency_data = partner_data.get("currencies", {}).get(currency.id)
account_type = data.get("account_type", False) account_type = data.get("account_type", False)
row_pos += 2 row_pos += 2
statement_header = _( statement_header = data["get_title"](
"Detailed %(payable)sStatement between %(start)s and %(end)s" partner,
" in %(currency)s" is_detailed=True,
) % { account_type=account_type,
"payable": account_type == "liability_payable" and _("Supplier ") or "", starting_date=partner_data.get("start"),
"start": partner_data.get("start"), ending_date=partner_data.get("end"),
"end": partner_data.get("end"), currency=currency.display_name,
"currency": currency.display_name, )
}
sheet.merge_range( sheet.merge_range(
row_pos, row_pos,
0, 0,
@@ -221,13 +220,14 @@ class DetailedActivityStatementXslx(models.AbstractModel):
currency_data = partner_data.get("currencies", {}).get(currency.id) currency_data = partner_data.get("currencies", {}).get(currency.id)
account_type = data.get("account_type", False) account_type = data.get("account_type", False)
row_pos += 2 row_pos += 2
statement_header = _( statement_header = data["get_title"](
"%(payable)sStatement up to %(prior_day)s in %(currency)s" partner,
) % { is_detailed=False,
"payable": account_type == "payable" and _("Supplier ") or "", account_type=account_type,
"prior_day": partner_data.get("prior_day"), starting_date=partner_data.get("start"),
"currency": currency.display_name, ending_date=partner_data.get("end"),
} currency=currency.display_name,
)
sheet.merge_range( sheet.merge_range(
row_pos, row_pos,
0, 0,
@@ -328,11 +328,14 @@ class DetailedActivityStatementXslx(models.AbstractModel):
currency_data = partner_data.get("currencies", {}).get(currency.id) currency_data = partner_data.get("currencies", {}).get(currency.id)
account_type = data.get("account_type", False) account_type = data.get("account_type", False)
row_pos += 2 row_pos += 2
statement_header = _("%(payable)sStatement up to %(end)s in %(currency)s") % { statement_header = data["get_title"](
"payable": account_type == "payable" and _("Supplier ") or "", partner,
"end": partner_data.get("end"), is_detailed=False,
"currency": currency.display_name, account_type=account_type,
} starting_date=partner_data.get("start"),
ending_date=partner_data.get("end"),
currency=currency.display_name,
)
sheet.merge_range( sheet.merge_range(
row_pos, row_pos,
0, 0,

View File

@@ -1,7 +1,7 @@
# Copyright 2018 ForgeFlow, S.L. (https://www.forgeflow.com) # Copyright 2018 ForgeFlow, S.L. (https://www.forgeflow.com)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). # 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 from odoo.tools.float_utils import float_is_zero
@@ -12,6 +12,18 @@ class OutstandingStatement(models.AbstractModel):
_name = "report.partner_statement.outstanding_statement" _name = "report.partner_statement.outstanding_statement"
_description = "Partner 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): def _display_outstanding_lines_sql_q1(self, partners, date_end, account_type):
partners = tuple(partners) partners = tuple(partners)
return str( return str(

View File

@@ -4,9 +4,7 @@
from odoo import _, models from odoo import _, models
from odoo.addons.report_xlsx_helper.report.report_xlsx_format import ( # type: ignore from odoo.addons.report_xlsx_helper.report.report_xlsx_format import FORMATS
FORMATS,
)
def copy_format(book, fmt): def copy_format(book, fmt):
@@ -158,12 +156,12 @@ class OutstandingStatementXslx(models.AbstractModel):
currency_data = partner_data.get("currencies", {}).get(currency.id) currency_data = partner_data.get("currencies", {}).get(currency.id)
account_type = data.get("account_type", False) account_type = data.get("account_type", False)
row_pos += 2 row_pos += 2
statement_header = _("%(payable)sStatement up to %(end)s in %(currency)s") % { statement_header = data["get_title"](
"payable": account_type == "liability_payable" and _("Supplier ") or "", partner,
"end": partner_data.get("end"), account_type=account_type,
"currency": currency.display_name, ending_date=partner_data.get("end"),
} currency=currency.display_name,
)
sheet.merge_range( sheet.merge_range(
row_pos, 0, row_pos, 6, statement_header, FORMATS["format_left_bold"] 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) inv_addr_id = part.address_get(["invoice"]).get("invoice", part.id)
return self.env["res.partner"].browse(inv_addr_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( def _format_date_to_partner_lang(
self, date, date_format=DEFAULT_SERVER_DATE_FORMAT self, date, date_format=DEFAULT_SERVER_DATE_FORMAT
): ):
@@ -577,4 +586,6 @@ class ReportStatementCommon(models.AbstractModel):
"is_detailed": is_detailed, "is_detailed": is_detailed,
"bucket_labels": bucket_labels, "bucket_labels": bucket_labels,
"get_inv_addr": self._get_invoice_address, "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> <odoo>
<template id="activity_balance"> <template id="activity_balance">
<p> <p>
<span t-if="is_detailed">Detailed </span>
<span <span
t-if="account_type == 'liability_payable'" 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)"
>Supplier </span>Statement between <span t-out="d['start']" /> and <span />
t-out="d['end']"
/> in <span t-out="display_currency.name" />
</p> </p>
<table class="table table-condensed table-statement"> <table class="table table-condensed table-statement">
<thead> <thead>

View File

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

View File

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

View File

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