[FIX] account_financial_report: Don't include unaffected account if accounts are filtered

When generated a General Ledger or a Trial Balance, if some accounts are already filtered in the wizard don't show the information related to the unaffected earnings account

TT29658
This commit is contained in:
João Marques
2021-05-12 10:02:35 +01:00
committed by chaule97
parent 70ad31174d
commit f9c27f2824
4 changed files with 105 additions and 48 deletions

View File

@@ -184,6 +184,10 @@ class GeneralLedgerReport(models.AbstractModel):
cost_center_ids,
extra_domain,
):
# If explicit list of accounts is provided,
# don't include unaffected earnings account
if account_ids:
unaffected_earnings_account = False
base_domain = []
if company_id:
base_domain += [("company_id", "=", company_id)]
@@ -272,29 +276,38 @@ class GeneralLedgerReport(models.AbstractModel):
]
accounts_ids = list(gen_ld_data.keys())
unaffected_id = unaffected_earnings_account
if unaffected_id not in accounts_ids:
accounts_ids.append(unaffected_id)
self._initialize_account(gen_ld_data, unaffected_id, foreign_currency)
pl_initial_balance = self._get_pl_initial_balance(
account_ids, company_id, fy_start_date, foreign_currency, base_domain
)
gen_ld_data[unaffected_id]["init_bal"]["debit"] += pl_initial_balance["debit"]
gen_ld_data[unaffected_id]["init_bal"]["credit"] += pl_initial_balance["credit"]
gen_ld_data[unaffected_id]["init_bal"]["balance"] += pl_initial_balance[
"balance"
]
gen_ld_data[unaffected_id]["fin_bal"]["debit"] += pl_initial_balance["debit"]
gen_ld_data[unaffected_id]["fin_bal"]["credit"] += pl_initial_balance["credit"]
gen_ld_data[unaffected_id]["fin_bal"]["balance"] += pl_initial_balance[
"balance"
]
if foreign_currency:
gen_ld_data[unaffected_id]["init_bal"]["bal_curr"] += pl_initial_balance[
"bal_curr"
if unaffected_id:
if unaffected_id not in accounts_ids:
accounts_ids.append(unaffected_id)
self._initialize_account(gen_ld_data, unaffected_id, foreign_currency)
pl_initial_balance = self._get_pl_initial_balance(
account_ids, company_id, fy_start_date, foreign_currency, base_domain
)
gen_ld_data[unaffected_id]["init_bal"]["debit"] += pl_initial_balance[
"debit"
]
gen_ld_data[unaffected_id]["fin_bal"]["bal_curr"] += pl_initial_balance[
"bal_curr"
gen_ld_data[unaffected_id]["init_bal"]["credit"] += pl_initial_balance[
"credit"
]
gen_ld_data[unaffected_id]["init_bal"]["balance"] += pl_initial_balance[
"balance"
]
gen_ld_data[unaffected_id]["fin_bal"]["debit"] += pl_initial_balance[
"debit"
]
gen_ld_data[unaffected_id]["fin_bal"]["credit"] += pl_initial_balance[
"credit"
]
gen_ld_data[unaffected_id]["fin_bal"]["balance"] += pl_initial_balance[
"balance"
]
if foreign_currency:
gen_ld_data[unaffected_id]["init_bal"][
"bal_curr"
] += pl_initial_balance["bal_curr"]
gen_ld_data[unaffected_id]["fin_bal"]["bal_curr"] += pl_initial_balance[
"bal_curr"
]
return gen_ld_data, partners_data, partner_ids
@api.model

View File

@@ -347,6 +347,9 @@ class TrialBalanceReport(models.AbstractModel):
accounts_domain = [("company_id", "=", company_id)]
if account_ids:
accounts_domain += [("id", "in", account_ids)]
# If explicit list of accounts is provided,
# don't include unaffected earnings account
unaffected_earnings_account = False
accounts = self.env["account.account"].search(accounts_domain)
tb_initial_acc = []
for account in accounts:
@@ -452,19 +455,23 @@ class TrialBalanceReport(models.AbstractModel):
)
accounts_ids = list(total_amount.keys())
unaffected_id = unaffected_earnings_account
if unaffected_id not in accounts_ids:
accounts_ids.append(unaffected_id)
total_amount[unaffected_id] = {}
total_amount[unaffected_id]["initial_balance"] = 0.0
total_amount[unaffected_id]["balance"] = 0.0
total_amount[unaffected_id]["credit"] = 0.0
total_amount[unaffected_id]["debit"] = 0.0
total_amount[unaffected_id]["ending_balance"] = 0.0
if foreign_currency:
total_amount[unaffected_id]["initial_currency_balance"] = 0.0
total_amount[unaffected_id]["ending_currency_balance"] = 0.0
if unaffected_id:
if unaffected_id not in accounts_ids:
accounts_ids.append(unaffected_id)
total_amount[unaffected_id] = {}
total_amount[unaffected_id]["initial_balance"] = 0.0
total_amount[unaffected_id]["balance"] = 0.0
total_amount[unaffected_id]["credit"] = 0.0
total_amount[unaffected_id]["debit"] = 0.0
total_amount[unaffected_id]["ending_balance"] = 0.0
if foreign_currency:
total_amount[unaffected_id]["initial_currency_balance"] = 0.0
total_amount[unaffected_id]["ending_currency_balance"] = 0.0
accounts_data = self._get_accounts_data(accounts_ids)
pl_initial_balance, pl_initial_currency_balance = self._get_pl_initial_balance(
(
pl_initial_balance,
pl_initial_currency_balance,
) = self._get_pl_initial_balance(
account_ids,
journal_ids,
partner_ids,
@@ -474,15 +481,16 @@ class TrialBalanceReport(models.AbstractModel):
show_partner_details,
foreign_currency,
)
total_amount[unaffected_id]["ending_balance"] += pl_initial_balance
total_amount[unaffected_id]["initial_balance"] += pl_initial_balance
if foreign_currency:
total_amount[unaffected_id][
"ending_currency_balance"
] += pl_initial_currency_balance
total_amount[unaffected_id][
"initial_currency_balance"
] += pl_initial_currency_balance
if unaffected_id:
total_amount[unaffected_id]["ending_balance"] += pl_initial_balance
total_amount[unaffected_id]["initial_balance"] += pl_initial_balance
if foreign_currency:
total_amount[unaffected_id][
"ending_currency_balance"
] += pl_initial_currency_balance
total_amount[unaffected_id][
"initial_currency_balance"
] += pl_initial_currency_balance
return total_amount, accounts_data, partners_data
def _get_hierarchy_groups(