diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py index b268156d4c3..b6b5c8afc00 100644 --- a/erpnext/accounts/report/general_ledger/general_ledger.py +++ b/erpnext/accounts/report/general_ledger/general_ledger.py @@ -155,7 +155,7 @@ def get_accountwise_gle(filters, gl_entries, gle_map): for gle in gl_entries: amount = flt(gle.debit, 3) - flt(gle.credit, 3) if (filters.get("account") or filters.get("party") or filters.get("group_by_account")) \ - and gle.posting_date < from_date: + and (gle.posting_date < from_date or cstr(gle.is_opening) == "Yes"): gle_map[gle.account].opening += amount if filters.get("account") or filters.get("party"): opening += amount diff --git a/erpnext/accounts/report/trial_balance/trial_balance.py b/erpnext/accounts/report/trial_balance/trial_balance.py index 8187601249b..1ad4a3783be 100644 --- a/erpnext/accounts/report/trial_balance/trial_balance.py +++ b/erpnext/accounts/report/trial_balance/trial_balance.py @@ -90,7 +90,8 @@ def get_rootwise_opening_balances(filters, report_type): where company=%(company)s {additional_conditions} - and posting_date < %(from_date)s + and (posting_date < %(from_date)s or + (posting_date >= %(from_date)s and ifnull(is_opening, 'No') = 'Yes')) and account in (select name from `tabAccount` where report_type=%(report_type)s) group by account""".format(additional_conditions=additional_conditions), { @@ -128,16 +129,21 @@ def calculate_values(accounts, gl_entries_by_account, opening_balances, filters) for d in accounts: d.update(init.copy()) + # add opening + d["opening_debit"] = opening_balances.get(d.name, {}).get("opening_debit", 0) + d["opening_credit"] = opening_balances.get(d.name, {}).get("opening_credit", 0) + for entry in gl_entries_by_account.get(d.name, []): - d["debit"] += flt(entry.debit) - d["credit"] += flt(entry.credit) + if entry.is_opening == "Yes" and d.root_type in ("Asset", "Liability", "Equity"): + d["opening_debit"] += flt(entry.debit) + d["opening_credit"] += flt(entry.credit) + else: + d["debit"] += flt(entry.debit) + d["credit"] += flt(entry.credit) total_row["debit"] += d["debit"] total_row["credit"] += d["credit"] - # add opening - d["opening_debit"] = opening_balances.get(d.name, {}).get("opening_debit", 0) - d["opening_credit"] = opening_balances.get(d.name, {}).get("opening_credit", 0) return total_row