[IMP] account_financial_report: Trial balance changes:

- Show Initial balance and Ending balance only when it is necessary with currency + hide currency column
- Show currency in the correct column
- Create a dict with all keys when it does not exist
- Prevent wrong values

TT41158
pull/998/head
Víctor Martínez 2023-01-10 18:14:03 +01:00
parent d64df1d1fc
commit 97a239a325
3 changed files with 52 additions and 103 deletions

View File

@ -178,17 +178,11 @@
<!--## Ending balance-->
<div class="act_as_cell" style="width: 9%;">Ending balance</div>
<t t-if="foreign_currency">
<!--## currency_name-->
<div class="act_as_cell" style="width: 4%;">Cur.</div>
<!--## amount_currency-->
<div class="act_as_cell" style="width: 9%;">
Initial
balance cur.
</div>
<div class="act_as_cell" style="width: 9%;">
Ending balance
cur.
</div>
<div class="act_as_cell" style="width: 11%;">Initial
balance cur.</div>
<div class="act_as_cell" style="width: 11%;">Ending balance
cur.</div>
</t>
</div>
</div>
@ -572,10 +566,6 @@
<t t-if="not show_partner_details">
<t t-if="balance['type'] == 'account_type'">
<t t-if="balance['currency_id']">
<!--## currency_name-->
<div class="act_as_cell" style="width: 4.43%;">
<span t-esc="balance['currency_name']" />
</div>
<!--## Initial balance cur.-->
<div class="act_as_cell amount">
<t
@ -589,6 +579,7 @@
<t
t-att-style="style"
t-esc="balance['initial_currency_balance']"
t-options="{'widget': 'monetary', 'display_currency': balance['currency_id']}"
/>
</span>
<!-- <t t-if="line.account_group_id">-->
@ -609,12 +600,6 @@
<t t-if="show_partner_details">
<t t-if="total_amount[account_id]['currency_id']">
<t t-if="type == 'partner_type'">
<!--## currency_name-->
<div class="act_as_cell" style="width: 4.43%;">
<span
t-esc="total_amount[account_id]['currency_name']"
/>
</div>
<div class="act_as_cell amount">
<t
t-set="domain"
@ -628,6 +613,7 @@
<t
t-att-style="style"
t-raw="total_amount[account_id][partner_id]['initial_currency_balance']"
t-options="{'widget': 'monetary', 'display_currency': total_amount[account_id]['currency_id']}"
/>
</span>
</div>
@ -650,6 +636,7 @@
<t
t-att-style="style"
t-raw="balance['ending_currency_balance']"
t-options="{'widget': 'monetary', 'display_currency': balance['currency_id']}"
/>
</span>
<!-- <t t-if="line.account_group_id">-->
@ -683,6 +670,7 @@
<t
t-att-style="style"
t-raw="total_amount[account_id][partner_id]['ending_currency_balance']"
t-options="{'widget': 'monetary', 'display_currency': total_amount[account_id]['currency_id']}"
/>
</span>
</t>
@ -694,7 +682,6 @@
<!--## balance_currency-->
<div class="act_as_cell" />
<div class="act_as_cell" />
<div class="act_as_cell" />
</t>
</t>
<t t-if="not show_partner_details">
@ -703,14 +690,12 @@
<!--## balance_currency-->
<div class="act_as_cell" />
<div class="act_as_cell" />
<div class="act_as_cell" />
</t>
</t>
<t t-if="balance['type'] == 'group_type'">
<!--## balance_currency-->
<div class="act_as_cell" />
<div class="act_as_cell" />
<div class="act_as_cell" />
</t>
</t>
</t>
@ -889,12 +874,10 @@
/>
</div>
<t t-if="foreign_currency">
<!--## currency_name-->
<div class="act_as_cell" style="width: 4%;" />
<!--## amount_total_due_currency-->
<div class="act_as_cell" style="width: 9%;" />
<div class="act_as_cell" style="width: 11%;" />
<!--## amount_residual_currency-->
<div class="act_as_cell" style="width: 9%;" />
<div class="act_as_cell" style="width: 11%;" />
</t>
</div>
</div>

View File

@ -211,33 +211,15 @@ class TrialBalanceReport(models.AbstractModel):
):
for tb in tb_period_acc:
acc_id = tb["account_id"][0]
total_amount[acc_id] = {}
total_amount[acc_id] = self._prepare_total_amount(tb, foreign_currency)
total_amount[acc_id]["credit"] = tb["credit"]
total_amount[acc_id]["debit"] = tb["debit"]
total_amount[acc_id]["balance"] = tb["balance"]
total_amount[acc_id]["initial_balance"] = 0.0
total_amount[acc_id]["ending_balance"] = tb["balance"]
if foreign_currency:
total_amount[acc_id]["initial_currency_balance"] = 0.0
total_amount[acc_id]["ending_currency_balance"] = round(
tb["amount_currency"], 2
)
for tb in tb_initial_acc:
acc_id = tb["account_id"]
if acc_id not in total_amount.keys():
total_amount[acc_id] = {}
total_amount[acc_id]["credit"] = 0.0
total_amount[acc_id]["debit"] = 0.0
total_amount[acc_id]["balance"] = 0.0
total_amount[acc_id]["initial_balance"] = tb["balance"]
total_amount[acc_id]["ending_balance"] = tb["balance"]
if foreign_currency:
total_amount[acc_id]["initial_currency_balance"] = round(
tb["amount_currency"], 2
)
total_amount[acc_id]["ending_currency_balance"] = round(
tb["amount_currency"], 2
)
total_amount[acc_id] = self._prepare_total_amount(tb, foreign_currency)
else:
total_amount[acc_id]["initial_balance"] = tb["balance"]
total_amount[acc_id]["ending_balance"] += tb["balance"]
@ -250,23 +232,42 @@ class TrialBalanceReport(models.AbstractModel):
)
return total_amount
@api.model
def _prepare_total_amount(self, tb, foreign_currency):
res = {
"credit": 0.0,
"debit": 0.0,
"balance": 0.0,
"initial_balance": tb["balance"],
"ending_balance": tb["balance"],
}
if foreign_currency:
res["initial_currency_balance"] = round(tb["amount_currency"], 2)
res["ending_currency_balance"] = round(tb["amount_currency"], 2)
return res
@api.model
def _compute_acc_prt_amount(
self, total_amount, tb, acc_id, prt_id, foreign_currency
):
total_amount[acc_id][prt_id] = {}
total_amount[acc_id][prt_id]["credit"] = 0.0
total_amount[acc_id][prt_id]["debit"] = 0.0
total_amount[acc_id][prt_id]["balance"] = 0.0
total_amount[acc_id][prt_id]["initial_balance"] = tb["balance"]
total_amount[acc_id][prt_id]["ending_balance"] = tb["balance"]
if foreign_currency:
total_amount[acc_id][prt_id]["initial_currency_balance"] = round(
tb["amount_currency"], 2
)
total_amount[acc_id][prt_id]["ending_currency_balance"] = round(
tb["amount_currency"], 2
# Add keys to dict if not exists
if acc_id not in total_amount:
total_amount[acc_id] = self._prepare_total_amount(tb, foreign_currency)
if prt_id not in total_amount[acc_id]:
total_amount[acc_id][prt_id] = self._prepare_total_amount(
tb, foreign_currency
)
else:
# Increase balance field values
total_amount[acc_id][prt_id]["initial_balance"] = tb["balance"]
total_amount[acc_id][prt_id]["ending_balance"] += tb["balance"]
if foreign_currency:
total_amount[acc_id][prt_id]["initial_currency_balance"] = round(
tb["amount_currency"], 2
)
total_amount[acc_id][prt_id]["ending_currency_balance"] += round(
tb["amount_currency"], 2
)
return total_amount
@api.model
@ -283,18 +284,14 @@ class TrialBalanceReport(models.AbstractModel):
partners_data.update(
{prt_id: {"id": prt_id, "name": tb["partner_id"][1]}}
)
total_amount[acc_id][prt_id] = {}
total_amount[acc_id][prt_id] = self._prepare_total_amount(
tb, foreign_currency
)
total_amount[acc_id][prt_id]["credit"] = tb["credit"]
total_amount[acc_id][prt_id]["debit"] = tb["debit"]
total_amount[acc_id][prt_id]["balance"] = tb["balance"]
total_amount[acc_id][prt_id]["initial_balance"] = 0.0
total_amount[acc_id][prt_id]["ending_balance"] = tb["balance"]
if foreign_currency:
total_amount[acc_id][prt_id]["initial_currency_balance"] = 0.0
total_amount[acc_id][prt_id]["ending_currency_balance"] = round(
tb["amount_currency"], 2
)
partners_ids.add(tb["partner_id"])
partners_ids.add(tb["partner_id"])
for tb in tb_initial_prt:
acc_id = tb["account_id"][0]
if tb["partner_id"]:
@ -303,26 +300,9 @@ class TrialBalanceReport(models.AbstractModel):
partners_data.update(
{prt_id: {"id": prt_id, "name": tb["partner_id"][1]}}
)
if acc_id not in total_amount.keys():
total_amount = self._compute_acc_prt_amount(
total_amount, tb, acc_id, prt_id, foreign_currency
)
partners_ids.add(tb["partner_id"])
elif prt_id not in total_amount[acc_id].keys():
total_amount = self._compute_acc_prt_amount(
total_amount, tb, acc_id, prt_id, foreign_currency
)
partners_ids.add(tb["partner_id"])
else:
total_amount[acc_id][prt_id]["initial_balance"] += tb["balance"]
total_amount[acc_id][prt_id]["ending_balance"] += tb["balance"]
if foreign_currency:
total_amount[acc_id][prt_id][
"initial_currency_balance"
] += round(tb["amount_currency"], 2)
total_amount[acc_id][prt_id][
"ending_currency_balance"
] += round(tb["amount_currency"], 2)
total_amount = self._compute_acc_prt_amount(
total_amount, tb, acc_id, prt_id, foreign_currency
)
return total_amount, partners_data
def _remove_accounts_at_cero(self, total_amount, show_partner_details, company):

View File

@ -60,19 +60,12 @@ class TrialBalanceXslx(models.AbstractModel):
if report.foreign_currency:
foreign_currency = {
7: {
"header": _("Cur."),
"field": "currency_id",
"field_currency_balance": "currency_id",
"type": "many2one",
"width": 7,
},
8: {
"header": _("Initial balance"),
"field": "initial_currency_balance",
"type": "amount_currency",
"width": 14,
},
9: {
8: {
"header": _("Ending balance"),
"field": "ending_currency_balance",
"type": "amount_currency",
@ -118,19 +111,12 @@ class TrialBalanceXslx(models.AbstractModel):
if report.foreign_currency:
foreign_currency = {
6: {
"header": _("Cur."),
"field": "currency_id",
"field_currency_balance": "currency_id",
"type": "many2one",
"width": 7,
},
7: {
"header": _("Initial balance"),
"field": "initial_currency_balance",
"type": "amount_currency",
"width": 14,
},
8: {
7: {
"header": _("Ending balance"),
"field": "ending_currency_balance",
"type": "amount_currency",