[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 TT29658pull/780/head
parent
aca28f5dab
commit
770f03452c
|
@ -184,6 +184,10 @@ class GeneralLedgerReport(models.AbstractModel):
|
||||||
cost_center_ids,
|
cost_center_ids,
|
||||||
extra_domain,
|
extra_domain,
|
||||||
):
|
):
|
||||||
|
# If explicit list of accounts is provided,
|
||||||
|
# don't include unaffected earnings account
|
||||||
|
if account_ids:
|
||||||
|
unaffected_earnings_account = False
|
||||||
base_domain = []
|
base_domain = []
|
||||||
if company_id:
|
if company_id:
|
||||||
base_domain += [("company_id", "=", company_id)]
|
base_domain += [("company_id", "=", company_id)]
|
||||||
|
@ -272,26 +276,35 @@ class GeneralLedgerReport(models.AbstractModel):
|
||||||
]
|
]
|
||||||
accounts_ids = list(gen_ld_data.keys())
|
accounts_ids = list(gen_ld_data.keys())
|
||||||
unaffected_id = unaffected_earnings_account
|
unaffected_id = unaffected_earnings_account
|
||||||
|
if unaffected_id:
|
||||||
if unaffected_id not in accounts_ids:
|
if unaffected_id not in accounts_ids:
|
||||||
accounts_ids.append(unaffected_id)
|
accounts_ids.append(unaffected_id)
|
||||||
self._initialize_account(gen_ld_data, unaffected_id, foreign_currency)
|
self._initialize_account(gen_ld_data, unaffected_id, foreign_currency)
|
||||||
pl_initial_balance = self._get_pl_initial_balance(
|
pl_initial_balance = self._get_pl_initial_balance(
|
||||||
account_ids, company_id, fy_start_date, foreign_currency, base_domain
|
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"]["debit"] += pl_initial_balance[
|
||||||
gen_ld_data[unaffected_id]["init_bal"]["credit"] += pl_initial_balance["credit"]
|
"debit"
|
||||||
|
]
|
||||||
|
gen_ld_data[unaffected_id]["init_bal"]["credit"] += pl_initial_balance[
|
||||||
|
"credit"
|
||||||
|
]
|
||||||
gen_ld_data[unaffected_id]["init_bal"]["balance"] += pl_initial_balance[
|
gen_ld_data[unaffected_id]["init_bal"]["balance"] += pl_initial_balance[
|
||||||
"balance"
|
"balance"
|
||||||
]
|
]
|
||||||
gen_ld_data[unaffected_id]["fin_bal"]["debit"] += pl_initial_balance["debit"]
|
gen_ld_data[unaffected_id]["fin_bal"]["debit"] += pl_initial_balance[
|
||||||
gen_ld_data[unaffected_id]["fin_bal"]["credit"] += pl_initial_balance["credit"]
|
"debit"
|
||||||
|
]
|
||||||
|
gen_ld_data[unaffected_id]["fin_bal"]["credit"] += pl_initial_balance[
|
||||||
|
"credit"
|
||||||
|
]
|
||||||
gen_ld_data[unaffected_id]["fin_bal"]["balance"] += pl_initial_balance[
|
gen_ld_data[unaffected_id]["fin_bal"]["balance"] += pl_initial_balance[
|
||||||
"balance"
|
"balance"
|
||||||
]
|
]
|
||||||
if foreign_currency:
|
if foreign_currency:
|
||||||
gen_ld_data[unaffected_id]["init_bal"]["bal_curr"] += pl_initial_balance[
|
gen_ld_data[unaffected_id]["init_bal"][
|
||||||
"bal_curr"
|
"bal_curr"
|
||||||
]
|
] += pl_initial_balance["bal_curr"]
|
||||||
gen_ld_data[unaffected_id]["fin_bal"]["bal_curr"] += pl_initial_balance[
|
gen_ld_data[unaffected_id]["fin_bal"]["bal_curr"] += pl_initial_balance[
|
||||||
"bal_curr"
|
"bal_curr"
|
||||||
]
|
]
|
||||||
|
|
|
@ -347,6 +347,9 @@ class TrialBalanceReport(models.AbstractModel):
|
||||||
accounts_domain = [("company_id", "=", company_id)]
|
accounts_domain = [("company_id", "=", company_id)]
|
||||||
if account_ids:
|
if account_ids:
|
||||||
accounts_domain += [("id", "in", 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)
|
accounts = self.env["account.account"].search(accounts_domain)
|
||||||
tb_initial_acc = []
|
tb_initial_acc = []
|
||||||
for account in accounts:
|
for account in accounts:
|
||||||
|
@ -452,6 +455,7 @@ class TrialBalanceReport(models.AbstractModel):
|
||||||
)
|
)
|
||||||
accounts_ids = list(total_amount.keys())
|
accounts_ids = list(total_amount.keys())
|
||||||
unaffected_id = unaffected_earnings_account
|
unaffected_id = unaffected_earnings_account
|
||||||
|
if unaffected_id:
|
||||||
if unaffected_id not in accounts_ids:
|
if unaffected_id not in accounts_ids:
|
||||||
accounts_ids.append(unaffected_id)
|
accounts_ids.append(unaffected_id)
|
||||||
total_amount[unaffected_id] = {}
|
total_amount[unaffected_id] = {}
|
||||||
|
@ -464,7 +468,10 @@ class TrialBalanceReport(models.AbstractModel):
|
||||||
total_amount[unaffected_id]["initial_currency_balance"] = 0.0
|
total_amount[unaffected_id]["initial_currency_balance"] = 0.0
|
||||||
total_amount[unaffected_id]["ending_currency_balance"] = 0.0
|
total_amount[unaffected_id]["ending_currency_balance"] = 0.0
|
||||||
accounts_data = self._get_accounts_data(accounts_ids)
|
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,
|
account_ids,
|
||||||
journal_ids,
|
journal_ids,
|
||||||
partner_ids,
|
partner_ids,
|
||||||
|
@ -474,6 +481,7 @@ class TrialBalanceReport(models.AbstractModel):
|
||||||
show_partner_details,
|
show_partner_details,
|
||||||
foreign_currency,
|
foreign_currency,
|
||||||
)
|
)
|
||||||
|
if unaffected_id:
|
||||||
total_amount[unaffected_id]["ending_balance"] += pl_initial_balance
|
total_amount[unaffected_id]["ending_balance"] += pl_initial_balance
|
||||||
total_amount[unaffected_id]["initial_balance"] += pl_initial_balance
|
total_amount[unaffected_id]["initial_balance"] += pl_initial_balance
|
||||||
if foreign_currency:
|
if foreign_currency:
|
||||||
|
|
|
@ -89,7 +89,7 @@ class TestGeneralLedgerReport(AccountTestInvoicingCommon):
|
||||||
move = self.env["account.move"].create(move_vals)
|
move = self.env["account.move"].create(move_vals)
|
||||||
move.action_post()
|
move.action_post()
|
||||||
|
|
||||||
def _get_report_lines(self, with_partners=False):
|
def _get_report_lines(self, with_partners=False, account_ids=False):
|
||||||
centralize = True
|
centralize = True
|
||||||
if with_partners:
|
if with_partners:
|
||||||
centralize = False
|
centralize = False
|
||||||
|
@ -101,6 +101,7 @@ class TestGeneralLedgerReport(AccountTestInvoicingCommon):
|
||||||
"target_move": "posted",
|
"target_move": "posted",
|
||||||
"hide_account_at_0": False,
|
"hide_account_at_0": False,
|
||||||
"company_id": company.id,
|
"company_id": company.id,
|
||||||
|
"account_ids": account_ids,
|
||||||
"fy_start_date": self.fy_date_start,
|
"fy_start_date": self.fy_date_start,
|
||||||
"centralize": centralize,
|
"centralize": centralize,
|
||||||
}
|
}
|
||||||
|
@ -178,6 +179,9 @@ class TestGeneralLedgerReport(AccountTestInvoicingCommon):
|
||||||
self.income_account.id, general_ledger
|
self.income_account.id, general_ledger
|
||||||
)
|
)
|
||||||
self.assertFalse(check_income_account)
|
self.assertFalse(check_income_account)
|
||||||
|
self.assertTrue(
|
||||||
|
self.check_account_in_report(self.unaffected_account.id, general_ledger)
|
||||||
|
)
|
||||||
|
|
||||||
# Add a move at the previous day of the first day of fiscal year
|
# Add a move at the previous day of the first day of fiscal year
|
||||||
# to check the initial balance
|
# to check the initial balance
|
||||||
|
@ -267,6 +271,21 @@ class TestGeneralLedgerReport(AccountTestInvoicingCommon):
|
||||||
self.assertEqual(income_fin_balance["credit"], 0)
|
self.assertEqual(income_fin_balance["credit"], 0)
|
||||||
self.assertEqual(income_fin_balance["balance"], 1000)
|
self.assertEqual(income_fin_balance["balance"], 1000)
|
||||||
|
|
||||||
|
# Re Generate the general ledger line
|
||||||
|
res_data = self._get_report_lines(
|
||||||
|
account_ids=(self.receivable_account + self.income_account).ids
|
||||||
|
)
|
||||||
|
general_ledger = res_data["general_ledger"]
|
||||||
|
self.assertTrue(
|
||||||
|
self.check_account_in_report(self.receivable_account.id, general_ledger)
|
||||||
|
)
|
||||||
|
self.assertTrue(
|
||||||
|
self.check_account_in_report(self.income_account.id, general_ledger)
|
||||||
|
)
|
||||||
|
self.assertFalse(
|
||||||
|
self.check_account_in_report(self.unaffected_account.id, general_ledger)
|
||||||
|
)
|
||||||
|
|
||||||
# Add another move at the end day of fiscal year
|
# Add another move at the end day of fiscal year
|
||||||
# to check that it correctly used on report
|
# to check that it correctly used on report
|
||||||
self._add_move(
|
self._add_move(
|
||||||
|
|
|
@ -159,7 +159,9 @@ class TestTrialBalanceReport(AccountTestInvoicingCommon):
|
||||||
move = self.env["account.move"].create(move_vals)
|
move = self.env["account.move"].create(move_vals)
|
||||||
move.action_post()
|
move.action_post()
|
||||||
|
|
||||||
def _get_report_lines(self, with_partners=False, hierarchy_on="computed"):
|
def _get_report_lines(
|
||||||
|
self, with_partners=False, account_ids=False, hierarchy_on="computed"
|
||||||
|
):
|
||||||
company = self.env.user.company_id
|
company = self.env.user.company_id
|
||||||
trial_balance = self.env["trial.balance.report.wizard"].create(
|
trial_balance = self.env["trial.balance.report.wizard"].create(
|
||||||
{
|
{
|
||||||
|
@ -169,6 +171,7 @@ class TestTrialBalanceReport(AccountTestInvoicingCommon):
|
||||||
"hide_account_at_0": True,
|
"hide_account_at_0": True,
|
||||||
"hierarchy_on": hierarchy_on,
|
"hierarchy_on": hierarchy_on,
|
||||||
"company_id": company.id,
|
"company_id": company.id,
|
||||||
|
"account_ids": account_ids,
|
||||||
"fy_start_date": self.fy_date_start,
|
"fy_start_date": self.fy_date_start,
|
||||||
"show_partner_details": with_partners,
|
"show_partner_details": with_partners,
|
||||||
}
|
}
|
||||||
|
@ -243,8 +246,8 @@ class TestTrialBalanceReport(AccountTestInvoicingCommon):
|
||||||
self.assertTrue(self.account200 in self.group2.compute_account_ids)
|
self.assertTrue(self.account200 in self.group2.compute_account_ids)
|
||||||
|
|
||||||
def test_01_account_balance_computed(self):
|
def test_01_account_balance_computed(self):
|
||||||
# Make sure there's no account of type "Current Year Earnings" in the
|
# Change code of the P&L for not being automatically included
|
||||||
# groups - We change the code
|
# in group 1 balances
|
||||||
earning_accs = self.env["account.account"].search(
|
earning_accs = self.env["account.account"].search(
|
||||||
[
|
[
|
||||||
(
|
(
|
||||||
|
@ -256,7 +259,6 @@ class TestTrialBalanceReport(AccountTestInvoicingCommon):
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
for acc in earning_accs:
|
for acc in earning_accs:
|
||||||
if acc.code.startswith("1") or acc.code.startswith("2"):
|
|
||||||
acc.code = "999" + acc.code
|
acc.code = "999" + acc.code
|
||||||
# Generate the general ledger line
|
# Generate the general ledger line
|
||||||
res_data = self._get_report_lines()
|
res_data = self._get_report_lines()
|
||||||
|
@ -270,6 +272,9 @@ class TestTrialBalanceReport(AccountTestInvoicingCommon):
|
||||||
self.account200.id, trial_balance
|
self.account200.id, trial_balance
|
||||||
)
|
)
|
||||||
self.assertFalse(check_income_account)
|
self.assertFalse(check_income_account)
|
||||||
|
self.assertTrue(
|
||||||
|
self.check_account_in_report(self.unaffected_account.id, trial_balance)
|
||||||
|
)
|
||||||
|
|
||||||
# Add a move at the previous day of the first day of fiscal year
|
# Add a move at the previous day of the first day of fiscal year
|
||||||
# to check the initial balance
|
# to check the initial balance
|
||||||
|
@ -332,6 +337,18 @@ class TestTrialBalanceReport(AccountTestInvoicingCommon):
|
||||||
)
|
)
|
||||||
self.assertTrue(check_income_account)
|
self.assertTrue(check_income_account)
|
||||||
|
|
||||||
|
# Re Generate the trial balance line with an account filter
|
||||||
|
res_data = self._get_report_lines(
|
||||||
|
account_ids=(self.account100 + self.account200).ids
|
||||||
|
)
|
||||||
|
trial_balance = res_data["trial_balance"]
|
||||||
|
self.assertTrue(self.check_account_in_report(self.account100.id, trial_balance))
|
||||||
|
self.assertTrue(self.check_account_in_report(self.account200.id, trial_balance))
|
||||||
|
# Unaffected account should not be present
|
||||||
|
self.assertFalse(
|
||||||
|
self.check_account_in_report(self.unaffected_account.id, trial_balance)
|
||||||
|
)
|
||||||
|
|
||||||
# Check the initial and final balance
|
# Check the initial and final balance
|
||||||
account_receivable_lines = self._get_account_lines(
|
account_receivable_lines = self._get_account_lines(
|
||||||
self.account100.id, trial_balance
|
self.account100.id, trial_balance
|
||||||
|
|
Loading…
Reference in New Issue