[IMP] account_financial_report: Add "Cumul cur." column to general_ledger.

TT38722
pull/939/head
Víctor Martínez 2022-09-01 13:29:29 +02:00 committed by David Ramia
parent d000496137
commit 4ba883ef05
8 changed files with 85 additions and 165 deletions

View File

@ -130,6 +130,7 @@ Contributors
* Ernesto Tejeda * Ernesto Tejeda
* João Marques * João Marques
* Alexandre D. Díaz * Alexandre D. Díaz
* Víctor Martínez
* `Sygel <https://www.sygel.es>`__: * `Sygel <https://www.sygel.es>`__:

View File

@ -6,6 +6,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Odoo Server 15.0\n" "Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-09-01 13:35+0000\n"
"PO-Revision-Date: 2022-09-01 13:35+0000\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -464,6 +466,11 @@ msgstr ""
msgid "Credit" msgid "Credit"
msgstr "" msgstr ""
#. module: account_financial_report
#: model_terms:ir.ui.view,arch_db:account_financial_report.report_general_ledger_lines
msgid "Cumul cur."
msgstr ""
#. module: account_financial_report #. module: account_financial_report
#: code:addons/account_financial_report/report/general_ledger_xlsx.py:0 #: code:addons/account_financial_report/report/general_ledger_xlsx.py:0
#: model_terms:ir.ui.view,arch_db:account_financial_report.report_general_ledger_lines #: model_terms:ir.ui.view,arch_db:account_financial_report.report_general_ledger_lines
@ -476,7 +483,6 @@ msgstr ""
#: code:addons/account_financial_report/report/open_items_xlsx.py:0 #: code:addons/account_financial_report/report/open_items_xlsx.py:0
#: code:addons/account_financial_report/report/trial_balance_xlsx.py:0 #: code:addons/account_financial_report/report/trial_balance_xlsx.py:0
#: code:addons/account_financial_report/report/trial_balance_xlsx.py:0 #: code:addons/account_financial_report/report/trial_balance_xlsx.py:0
#: model_terms:ir.ui.view,arch_db:account_financial_report.report_general_ledger_lines
#: model_terms:ir.ui.view,arch_db:account_financial_report.report_journal_ledger_journal_table_header #: model_terms:ir.ui.view,arch_db:account_financial_report.report_journal_ledger_journal_table_header
#: model_terms:ir.ui.view,arch_db:account_financial_report.report_open_items_lines_header #: model_terms:ir.ui.view,arch_db:account_financial_report.report_open_items_lines_header
#: model_terms:ir.ui.view,arch_db:account_financial_report.report_trial_balance_lines_header #: model_terms:ir.ui.view,arch_db:account_financial_report.report_trial_balance_lines_header

View File

@ -6,8 +6,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Odoo Server 12.0+e\n" "Project-Id-Version: Odoo Server 12.0+e\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-05-21 13:00+0000\n" "POT-Creation-Date: 2022-09-01 13:35+0000\n"
"PO-Revision-Date: 2022-08-26 19:07+0000\n" "PO-Revision-Date: 2022-09-01 15:36+0200\n"
"Last-Translator: Pedro M. Baeza <pedro.baeza@gmail.com>\n" "Last-Translator: Pedro M. Baeza <pedro.baeza@gmail.com>\n"
"Language-Team: \n" "Language-Team: \n"
"Language: es\n" "Language: es\n"
@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.3.2\n" "X-Generator: Poedit 3.0.1\n"
#. module: account_financial_report #. module: account_financial_report
#: model_terms:ir.ui.view,arch_db:account_financial_report.report_aged_partner_balance_lines_header #: model_terms:ir.ui.view,arch_db:account_financial_report.report_aged_partner_balance_lines_header
@ -480,6 +480,11 @@ msgstr "Creado el"
msgid "Credit" msgid "Credit"
msgstr "Haber" msgstr "Haber"
#. module: account_financial_report
#: model_terms:ir.ui.view,arch_db:account_financial_report.report_general_ledger_lines
msgid "Cumul cur."
msgstr "Acumulado moneda"
#. module: account_financial_report #. module: account_financial_report
#: code:addons/account_financial_report/report/general_ledger_xlsx.py:0 #: code:addons/account_financial_report/report/general_ledger_xlsx.py:0
#: model_terms:ir.ui.view,arch_db:account_financial_report.report_general_ledger_lines #: model_terms:ir.ui.view,arch_db:account_financial_report.report_general_ledger_lines
@ -491,7 +496,6 @@ msgstr "Saldo Acumu."
#: code:addons/account_financial_report/report/general_ledger_xlsx.py:0 #: code:addons/account_financial_report/report/general_ledger_xlsx.py:0
#: code:addons/account_financial_report/report/open_items_xlsx.py:0 #: code:addons/account_financial_report/report/open_items_xlsx.py:0
#: code:addons/account_financial_report/report/trial_balance_xlsx.py:0 #: code:addons/account_financial_report/report/trial_balance_xlsx.py:0
#: model_terms:ir.ui.view,arch_db:account_financial_report.report_general_ledger_lines
#: model_terms:ir.ui.view,arch_db:account_financial_report.report_journal_ledger_journal_table_header #: model_terms:ir.ui.view,arch_db:account_financial_report.report_journal_ledger_journal_table_header
#: model_terms:ir.ui.view,arch_db:account_financial_report.report_open_items_lines_header #: model_terms:ir.ui.view,arch_db:account_financial_report.report_open_items_lines_header
#: model_terms:ir.ui.view,arch_db:account_financial_report.report_trial_balance_lines_header #: model_terms:ir.ui.view,arch_db:account_financial_report.report_trial_balance_lines_header
@ -1852,136 +1856,3 @@ msgstr "ancho: 38.92%;"
#: model_terms:ir.ui.view,arch_db:account_financial_report.report_journal_ledger_journal_table_header #: model_terms:ir.ui.view,arch_db:account_financial_report.report_journal_ledger_journal_table_header
msgid "width: 8.11%;" msgid "width: 8.11%;"
msgstr "ancho: 8.11%;" msgstr "ancho: 8.11%;"
#~ msgid "<span class=\"fa fa-download\"/> Export"
#~ msgstr "<span class=\"fa fa-download\"/>Exportar"
#~ msgid "<span class=\"fa fa-print\"/> Print"
#~ msgstr "<span class=\"fa fa-print\"/>Imprimir"
#~ msgid ""
#~ "<span class=\"oe_inline\">\n"
#~ " To\n"
#~ " </span>"
#~ msgstr ""
#~ "<span class=\"oe_inline\">\n"
#~ " A\n"
#~ " </span>"
#~ msgid ""
#~ "<span class=\"oe_inline\">\n"
#~ " To\n"
#~ " </span>"
#~ msgstr ""
#~ "<span class=\"oe_inline\">\n"
#~ " A\n"
#~ " </span>"
#~ msgid ""
#~ "General Ledger can be computed only if selected company have only one "
#~ "unaffected earnings account."
#~ msgstr ""
#~ "El Libro mayor solo se puede calcular si la empresa seleccionada tiene "
#~ "solo una cuenta de resultados no afectados."
#~ msgid ""
#~ "Trial Balance can be computed only if selected company have only one "
#~ "unaffected earnings account."
#~ msgstr ""
#~ "El balance de sumas y saldos solo puede calcularse si la compañía "
#~ "seleccionada tiene una y solo una cuenta de ganancias."
#~ msgid ""
#~ "Cost\n"
#~ " center"
#~ msgstr "Centro de Costos"
#~ msgid "Cost center"
#~ msgstr "Centro de Costos"
#~ msgid "Account Code"
#~ msgstr "Cuenta"
#~ msgid "Account ID"
#~ msgstr "Nº Cuenta"
#~ msgid "Account Type"
#~ msgstr "Tipo de Cuenta"
#~ msgid "Age 120 Days"
#~ msgstr "120 días"
#~ msgid "Age 30 Days"
#~ msgstr "30 días"
#~ msgid "Age 60 Days"
#~ msgstr "60 días"
#~ msgid "Age 90 Days"
#~ msgstr "90 días"
#~ msgid "Amount Residual"
#~ msgstr "Importe Inicial"
#~ msgid "Amount Residual Currency"
#~ msgstr "Moneda de Saldo Pendiente"
#~ msgid "Amount Total Due"
#~ msgstr "Total"
#~ msgid "Amount Total Due Currency"
#~ msgstr "Moneda de Total"
#~ msgid "Centralize"
#~ msgstr "Centralizar"
#~ msgid "Centralized Entries"
#~ msgstr "Centralizar las entradas"
#~ msgid "Child accounts"
#~ msgstr "Cuentas Hijas"
#~ msgid "Company Currency"
#~ msgstr "Moneda de Empresa"
#~ msgid "Cost Center"
#~ msgstr "Centro de Costos"
#~ msgid "Cumul Age 120 Days"
#~ msgstr "Acumulado a 120 días"
#~ msgid "Cumul Age 30 Days"
#~ msgstr "Acumulado a 30 días"
#~ msgid "Cumul Age 60 Days"
#~ msgstr "Acumulado a 60 días"
#~ msgid "Cumul Age 90 Days"
#~ msgstr "Acumulado a 90 días"
#~ msgid "Cumul Amount Residual"
#~ msgstr "Cantidad Residual Acumulada"
#~ msgid "Cumul Balance"
#~ msgstr "Saldo Acumulado"
#~ msgid "Cumul Current"
#~ msgstr "Acum. Actual"
#~ msgid "Cumul Older"
#~ msgstr "Acum. Anterior"
#~ msgid "Currency Name"
#~ msgstr "Moneda"
#~ msgid "Date Due"
#~ msgstr "Fecha vencimiento"
#~ msgid "Ending blance cur."
#~ msgstr "Saldo final."
#~ msgid "Filter Analytic Tag"
#~ msgstr "Filtrar por Etiqueta Analítica"
#~ msgid "Filter Cost Center"
#~ msgstr "Filtro Centro de Costos"

View File

@ -23,6 +23,7 @@
* Ernesto Tejeda * Ernesto Tejeda
* João Marques * João Marques
* Alexandre D. Díaz * Alexandre D. Díaz
* Víctor Martínez
* `Sygel <https://www.sygel.es>`__: * `Sygel <https://www.sygel.es>`__:

View File

@ -532,16 +532,14 @@ class AbstractReportXslx(models.AbstractModel):
format_amt = report_data["formats"]["format_amount"] format_amt = report_data["formats"]["format_amount"]
field_prefix = "format_amount" field_prefix = "format_amount"
if "currency_id" in line_object and line_object.get("currency_id", False): if "currency_id" in line_object and line_object.get("currency_id", False):
field_name = "{}_{}".format(field_prefix, line_object["currency_id"].name) currency = line_object["currency_id"]
field_name = "{}_{}".format(field_prefix, currency.name)
if hasattr(self, field_name): if hasattr(self, field_name):
format_amt = getattr(self, field_name) format_amt = getattr(self, field_name)
else: else:
format_amt = report_data["workbook"].add_format() format_amt = report_data["workbook"].add_format()
report_data["field_name"] = format_amt report_data["field_name"] = format_amt
format_amount = "#,##0." + ( format_amt.set_num_format(self._report_xlsx_currency_format(currency))
"0" * line_object["currency_id"].decimal_places
)
format_amt.set_num_format(format_amount)
return format_amt return format_amt
def _get_currency_amt_format_dict(self, line_dict, report_data): def _get_currency_amt_format_dict(self, line_dict, report_data):
@ -563,8 +561,7 @@ class AbstractReportXslx(models.AbstractModel):
else: else:
format_amt = report_data["workbook"].add_format() format_amt = report_data["workbook"].add_format()
report_data["field_name"] = format_amt report_data["field_name"] = format_amt
format_amount = "#,##0." + ("0" * currency.decimal_places) format_amt.set_num_format(self._report_xlsx_currency_format(currency))
format_amt.set_num_format(format_amount)
return format_amt return format_amt
def _get_currency_amt_header_format(self, line_object, report_data): def _get_currency_amt_header_format(self, line_object, report_data):

View File

@ -2,6 +2,7 @@
# Author: Julien Coux # Author: Julien Coux
# Copyright 2016 Camptocamp SA # Copyright 2016 Camptocamp SA
# Copyright 2021 Tecnativa - João Marques # Copyright 2021 Tecnativa - João Marques
# Copyright 2022 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import _, models from odoo import _, models
@ -72,20 +73,19 @@ class GeneralLedgerXslx(models.AbstractModel):
] ]
if report.foreign_currency: if report.foreign_currency:
res += [ res += [
{
"header": _("Cur."),
"field": "currency_name",
"field_currency_balance": "currency_name",
"type": "currency_name",
"width": 7,
},
{ {
"header": _("Amount cur."), "header": _("Amount cur."),
"field": "bal_curr", "field": "bal_curr",
"field_initial_balance": "initial_bal_curr", "field_initial_balance": "initial_bal_curr",
"field_final_balance": "final_bal_curr", "field_final_balance": "final_bal_curr",
"type": "amount_currency", "type": "amount_currency",
"width": 14, "width": 10,
},
{
"header": _("Cumul cur."),
"field": "total_bal_curr",
"type": "amount_currency",
"width": 10,
}, },
] ]
res_as_dict = {} res_as_dict = {}
@ -149,6 +149,7 @@ class GeneralLedgerXslx(models.AbstractModel):
tags_data = res_data["tags_data"] tags_data = res_data["tags_data"]
filter_partner_ids = res_data["filter_partner_ids"] filter_partner_ids = res_data["filter_partner_ids"]
foreign_currency = res_data["foreign_currency"] foreign_currency = res_data["foreign_currency"]
company_currency = report.company_id.currency_id
# For each account # For each account
for account in general_ledger: for account in general_ledger:
# Write account title # Write account title
@ -176,6 +177,7 @@ class GeneralLedgerXslx(models.AbstractModel):
self.write_initial_balance_from_dict(account, report_data) self.write_initial_balance_from_dict(account, report_data)
# Display account move lines # Display account move lines
total_bal_curr = 0
for line in account["move_lines"]: for line in account["move_lines"]:
line.update( line.update(
{ {
@ -203,6 +205,13 @@ class GeneralLedgerXslx(models.AbstractModel):
"tags": tags, "tags": tags,
} }
) )
if (
foreign_currency
and line["currency_id"]
and line["currency_id"] != company_currency.id
):
total_bal_curr += line["bal_curr"]
line.update({"total_bal_curr": total_bal_curr})
self.write_line_from_dict(line, report_data) self.write_line_from_dict(line, report_data)
# Display ending balance line for account # Display ending balance line for account
account.update( account.update(
@ -251,6 +260,7 @@ class GeneralLedgerXslx(models.AbstractModel):
self.write_initial_balance_from_dict(partner, report_data) self.write_initial_balance_from_dict(partner, report_data)
# Display account move lines # Display account move lines
total_bal_curr = 0
for line in partner["move_lines"]: for line in partner["move_lines"]:
line.update( line.update(
{ {
@ -280,6 +290,13 @@ class GeneralLedgerXslx(models.AbstractModel):
"tags": tags, "tags": tags,
} }
) )
if (
foreign_currency
and line["currency_id"]
and line["currency_id"] != company_currency.id
):
total_bal_curr += line["bal_curr"]
line.update({"total_bal_curr": total_bal_curr})
self.write_line_from_dict(line, report_data) self.write_line_from_dict(line, report_data)
# Display ending balance line for partner # Display ending balance line for partner

View File

@ -191,8 +191,13 @@
<!--## amount_currency--> <!--## amount_currency-->
<div <div
class="act_as_cell amount" class="act_as_cell amount"
style="width: 7.27%;" style="width: 3.63%;"
>Amount cur.</div> >Amount cur.</div>
<!--## amount_currency cumulated-->
<div
class="act_as_cell amount"
style="width: 3.63%;"
>Cumul cur.</div>
</t> </t>
</div> </div>
</div> </div>
@ -320,7 +325,7 @@
<t <t
t-if="o._get_atr_from_dict(account['id'], accounts_data, 'currency_id')" t-if="o._get_atr_from_dict(account['id'], accounts_data, 'currency_id')"
> >
<div class="act_as_cell amount" style="width: 7.27%;"> <div class="act_as_cell amount" style="width: 3.63%;">
<t t-if="type == 'account_type'"> <t t-if="type == 'account_type'">
<t <t
t-set="domain" t-set="domain"
@ -355,15 +360,18 @@
</span> </span>
</t> </t>
</div> </div>
<div class="act_as_cell amount" style="width: 3.63%;" />
</t> </t>
<t <t
t-if="not o._get_atr_from_dict(account['id'], accounts_data, 'currency_id')" t-if="not o._get_atr_from_dict(account['id'], accounts_data, 'currency_id')"
> >
<div class="act_as_cell" style="width: 7.27%;" /> <div class="act_as_cell" style="width: 3.63%;" />
<div class="act_as_cell" style="width: 3.63%;" />
</t> </t>
</t> </t>
</div> </div>
<!-- Display each lines --> <!-- Display each lines -->
<t t-set="total_bal_curr" t-value="0" />
<t t-foreach="account_or_partner_object['move_lines']" t-as="line"> <t t-foreach="account_or_partner_object['move_lines']" t-as="line">
<!-- # lines or centralized lines --> <!-- # lines or centralized lines -->
<div class="act_as_row lines"> <div class="act_as_row lines">
@ -576,12 +584,16 @@
</div> </div>
<t t-if="foreign_currency"> <t t-if="foreign_currency">
<t t-if="line['currency_id']"> <t t-if="line['currency_id']">
<t
t-set="line_currency"
t-value="currency_model.browse(line['currency_id'][0])"
/>
<t
t-set="total_bal_curr"
t-value="total_bal_curr + line['bal_curr']"
/>
<!--## amount_currency--> <!--## amount_currency-->
<div class="act_as_cell amount" style="width: 7.27%;"> <div class="act_as_cell amount" style="width: 3.63%;">
<t
t-set="line_currency"
t-value="currency_model.browse(line['currency_id'][0])"
/>
<span <span
t-att-res-id="line['id']" t-att-res-id="line['id']"
res-model="account.move.line" res-model="account.move.line"
@ -590,10 +602,22 @@
t-options="{'widget': 'monetary', 'display_currency': line_currency}" t-options="{'widget': 'monetary', 'display_currency': line_currency}"
/> />
</div> </div>
<!--## amount_currency cumulated-->
<div class="act_as_cell amount" style="width: 3.63%;">
<span
t-att-res-id="line['id']"
res-model="account.move.line"
view-type="form"
t-raw="total_bal_curr"
t-options="{'widget': 'monetary', 'display_currency': line_currency}"
/>
</div>
</t> </t>
<t t-if="not line['currency_id']"> <t t-if="not line['currency_id']">
<!--## amount_currency--> <!--## amount_currency-->
<div class="act_as_cell amount" style="width: 7.27%;" /> <div class="act_as_cell amount" style="width: 3.63%;" />
<!--## amount_currency cumulated-->
<div class="act_as_cell amount" style="width: 3.63%;" />
</t> </t>
</t> </t>
</div> </div>
@ -661,7 +685,7 @@
<t <t
t-if="o._get_atr_from_dict(account['id'], accounts_data, 'currency_id')" t-if="o._get_atr_from_dict(account['id'], accounts_data, 'currency_id')"
> >
<div class="act_as_cell amount" style="width: 7.27%;"> <div class="act_as_cell amount" style="width: 3.63%;">
<t t-if="type == 'account_type'"> <t t-if="type == 'account_type'">
<t <t
t-set="domain" t-set="domain"
@ -704,11 +728,13 @@
</span> </span>
</t> </t>
</div> </div>
<div class="act_as_cell amount" style="width: 3.63%;" />
</t> </t>
<t <t
t-if="not o._get_atr_from_dict(account['id'], accounts_data, 'currency_id')" t-if="not o._get_atr_from_dict(account['id'], accounts_data, 'currency_id')"
> >
<div class="act_as_cell amount" style="width: 7.27%;" /> <div class="act_as_cell amount" style="width: 3.63%;" />
<div class="act_as_cell amount" style="width: 3.63%;" />
</t> </t>
</t> </t>
</div> </div>

View File

@ -3,7 +3,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.15.1: http://docutils.sourceforge.net/" /> <meta name="generator" content="Docutils: http://docutils.sourceforge.net/" />
<title>Account Financial Reports</title> <title>Account Financial Reports</title>
<style type="text/css"> <style type="text/css">
@ -485,6 +485,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome
<li>Ernesto Tejeda</li> <li>Ernesto Tejeda</li>
<li>João Marques</li> <li>João Marques</li>
<li>Alexandre D. Díaz</li> <li>Alexandre D. Díaz</li>
<li>Víctor Martínez</li>
</ul> </ul>
</li> </li>
<li><a class="reference external" href="https://www.sygel.es">Sygel</a>:<ul> <li><a class="reference external" href="https://www.sygel.es">Sygel</a>:<ul>