diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py index 1229a052637..a7b1d19c377 100644 --- a/erpnext/accounts/report/general_ledger/general_ledger.py +++ b/erpnext/accounts/report/general_ledger/general_ledger.py @@ -157,25 +157,44 @@ def get_data_with_opening_closing(filters, account_details, gl_entries): if filters.get("account") or filters.get("party"): data += [get_balance_row(_("Opening"), opening, opening_in_account_currency), {}] - for acc, acc_dict in gle_map.items(): - if acc_dict.entries: - # Opening for individual ledger, if grouped by account - if filters.get("group_by_account"): - data.append(get_balance_row(_("Opening"), acc_dict.opening, - acc_dict.opening_in_account_currency)) + if filters.get("group_by_account"): + for acc, acc_dict in gle_map.items(): + if acc_dict.entries: + # Opening for individual ledger, if grouped by account + if filters.get("group_by_account"): + data.append(get_balance_row(_("Opening"), acc_dict.opening, + acc_dict.opening_in_account_currency)) - data += acc_dict.entries + data += acc_dict.entries - # Totals and closing for individual ledger, if grouped by account - if filters.get("group_by_account"): - account_closing = acc_dict.opening + acc_dict.total_debit - acc_dict.total_credit - account_closing_in_account_currency = acc_dict.opening_in_account_currency \ - + acc_dict.total_debit_in_account_currency - acc_dict.total_credit_in_account_currency + # Totals and closing for individual ledger, if grouped by account + if filters.get("group_by_account"): + account_closing = acc_dict.opening + acc_dict.total_debit - acc_dict.total_credit + account_closing_in_account_currency = acc_dict.opening_in_account_currency \ + + acc_dict.total_debit_in_account_currency - acc_dict.total_credit_in_account_currency - data += [{"account": "'" + _("Totals") + "'", "debit": acc_dict.total_debit, - "credit": acc_dict.total_credit}, - get_balance_row(_("Closing (Opening + Totals)"), - account_closing, account_closing_in_account_currency), {}] + data += [{"account": "'" + _("Totals") + "'", "debit": acc_dict.total_debit, + "credit": acc_dict.total_credit}, + get_balance_row(_("Closing (Opening + Totals)"), + account_closing, account_closing_in_account_currency), {}] + + else: + from_date, to_date = getdate(filters.from_date), getdate(filters.to_date) + opening_debit = opening_credit = 0.0 + + for gl in gl_entries: + if gl.posting_date < from_date: + opening_debit += flt(gl.debit, 3) + opening_credit += flt(gl.credit, 3) + else: + data.append(gl) + + if not (filters.get("account") or filters.get("party")): + data = [{ + "account": "'" + _("Opening") + "'", + "debit": opening_debit, + "credit": opening_credit + }] + data # Total debit and credit between from and to date if total_debit or total_credit: