diff --git a/account_financial_report/report/general_ledger.py b/account_financial_report/report/general_ledger.py index 2b79ef95..9e9f4c14 100644 --- a/account_financial_report/report/general_ledger.py +++ b/account_financial_report/report/general_ledger.py @@ -774,6 +774,7 @@ class GeneralLedgerReport(models.AbstractModel): list_centralized_ml += list(centralized_ml[jnl_id].values()) return list_centralized_ml + # flake8: noqa: C901 def _get_report_values(self, docids, data): wizard_id = data["wizard_id"] wizard = self.env["general.ledger.report.wizard"].browse(wizard_id) @@ -852,6 +853,59 @@ class GeneralLedgerReport(models.AbstractModel): account[grouped_by] = False del account["list_grouped"] general_ledger = sorted(general_ledger, key=lambda k: k["code"]) + # Set the bal_curr of the initial balance to 0 if it does not correspond + # (reducing the corresponding of the bal_curr of the initial balance). + for gl_item in general_ledger: + if ( + not gl_item["currency_id"] + or gl_item["currency_id"] != company.currency_id + ): + gl_item["fin_bal"]["bal_curr"] -= gl_item["init_bal"]["bal_curr"] + gl_item["init_bal"]["bal_curr"] = 0 + if "list_grouped" in gl_item: + for lg_item in gl_item["list_grouped"]: + lg_item["fin_bal"]["bal_curr"] -= lg_item["init_bal"][ + "bal_curr" + ] + lg_item["init_bal"]["bal_curr"] = 0 + # Set the fin_bal_currency_id value if the account does not have it set + # and there are move lines in a currency different from that of + # the company (USD for example). + for gl_item in general_ledger: + fin_bal_currency_ids = [] + fin_bal_currency_id = gl_item["currency_id"] + if gl_item["currency_id"]: + continue + gl_item["fin_bal"]["bal_curr"] = gl_item["init_bal"]["bal_curr"] + if "move_lines" in gl_item: + for ml in gl_item["move_lines"]: + ml_currency_id = ( + ml["currency_id"][0] if ml["currency_id"] else False + ) + if ml_currency_id and ml_currency_id != company.currency_id.id: + gl_item["fin_bal"]["bal_curr"] += ml["bal_curr"] + if ml_currency_id not in fin_bal_currency_ids: + fin_bal_currency_ids.append(ml_currency_id) + elif "list_grouped" in gl_item: + fin_bal_currency_ids = [] + for lg_item in gl_item["list_grouped"]: + lg_item["fin_bal"]["bal_curr"] = lg_item["init_bal"]["bal_curr"] + for ml in lg_item["move_lines"]: + ml_currency_id = ( + ml["currency_id"][0] if ml["currency_id"] else False + ) + if ml_currency_id and ml_currency_id != company.currency_id.id: + lg_item["fin_bal"]["bal_curr"] += ml["bal_curr"] + gl_item["fin_bal"]["bal_curr"] += ml["bal_curr"] + if ml_currency_id not in fin_bal_currency_ids: + fin_bal_currency_ids.append(ml_currency_id) + # If there is only 1 currency, we set that one as fin_bal_currency_id + # The use of different move lines with different currencies (EUR + GBP) + # will be excluded. We use a different field to avoid showing the initial + # balance and/or distorting data. + if not gl_item["currency_id"] and len(fin_bal_currency_ids) == 1: + fin_bal_currency_id = fin_bal_currency_ids[0] + gl_item["fin_bal_currency_id"] = fin_bal_currency_id return { "doc_ids": [wizard_id], "doc_model": "general.ledger.report.wizard", diff --git a/account_financial_report/report/general_ledger_xlsx.py b/account_financial_report/report/general_ledger_xlsx.py index 981246f3..c954071b 100644 --- a/account_financial_report/report/general_ledger_xlsx.py +++ b/account_financial_report/report/general_ledger_xlsx.py @@ -347,10 +347,11 @@ class GeneralLedgerXslx(models.AbstractModel): "final_balance": account["fin_bal"]["balance"], } ) - if foreign_currency and account["currency_id"]: + if foreign_currency and account["fin_bal_currency_id"]: account.update( { - "final_bal_curr": account["fin_bal"]["bal_curr"], + "final_bal_curr": total_bal_curr, + "currency_id": account["fin_bal_currency_id"], } ) self.write_ending_balance_from_dict(account, report_data) diff --git a/account_financial_report/report/templates/general_ledger.xml b/account_financial_report/report/templates/general_ledger.xml index a4b1fda4..e2f110a2 100644 --- a/account_financial_report/report/templates/general_ledger.xml +++ b/account_financial_report/report/templates/general_ledger.xml @@ -16,15 +16,15 @@ General Ledger - - + - - +

@@ -35,8 +35,8 @@
@@ -62,7 +62,7 @@
From: - + To: - +
All posted entries @@ -246,7 +246,7 @@ res-model="account.move.line" > @@ -257,7 +257,7 @@ res-model="account.move.line" > @@ -272,7 +272,7 @@ res-model="account.move.line" > @@ -283,7 +283,7 @@ res-model="account.move.line" > @@ -294,7 +294,7 @@ @@ -305,7 +305,7 @@ res-model="account.move.line" > @@ -324,7 +324,7 @@ res-model="account.move.line" > @@ -335,7 +335,7 @@ res-model="account.move.line" > @@ -348,7 +348,7 @@ res-model="account.move.line" > @@ -359,7 +359,7 @@ res-model="account.move.line" > @@ -387,7 +387,7 @@ view-type="form" > @@ -396,7 +396,7 @@ @@ -410,7 +410,7 @@ res-model="account.move" view-type="form" > - +
@@ -422,7 +422,7 @@ view-type="form" >
@@ -433,7 +433,7 @@ res-model="account.account" view-type="form" > - +
@@ -441,12 +441,12 @@ - +
@@ -457,7 +457,7 @@ res-model="res.partner" view-type="form" > - + @@ -469,12 +469,12 @@ res-model="account.move.line" view-type="form" > - + - + @@ -487,7 +487,7 @@ res-model="account.analytic.account" view-type="form" > - + @@ -498,7 +498,7 @@ @@ -512,7 +512,7 @@ res-model="account.full.reconcile" view-type="form" > - + @@ -525,7 +525,7 @@ view-type="form" > @@ -533,7 +533,7 @@ @@ -548,7 +548,7 @@ view-type="form" > @@ -556,7 +556,7 @@ @@ -571,7 +571,7 @@ view-type="form" > @@ -579,7 +579,7 @@ @@ -602,7 +602,7 @@ t-att-res-id="line['id']" res-model="account.move.line" view-type="form" - t-raw="line['bal_curr']" + t-out="line['bal_curr']" t-options="{'widget': 'monetary', 'display_currency': line_currency}" t-if="line_currency!=company_currency" /> @@ -613,7 +613,7 @@ t-att-res-id="line['id']" res-model="account.move.line" view-type="form" - t-raw="total_bal_curr" + t-out="total_bal_curr" t-options="{'widget': 'monetary', 'display_currency': line_currency}" t-if="line_currency!=company_currency" /> @@ -637,8 +637,8 @@
- - -
@@ -696,10 +696,10 @@ /> - +
@@ -711,7 +711,7 @@ style="color: black;" > @@ -726,7 +726,7 @@ style="color: black;" > @@ -743,7 +743,7 @@ style="color: black;" > @@ -758,7 +758,7 @@ style="color: black;" >