From f0267feca8383c5f5075ed265a761a0d2c769fc9 Mon Sep 17 00:00:00 2001 From: Deepesh Garg Date: Wed, 8 Mar 2023 18:34:07 +0530 Subject: [PATCH] test: Add test case for closing balance --- .../account_closing_balance.py | 31 +++--- .../period_closing_voucher.py | 17 ++-- .../test_period_closing_voucher.py | 94 ++++++++++++++++++- 3 files changed, 116 insertions(+), 26 deletions(-) diff --git a/erpnext/accounts/doctype/account_closing_balance/account_closing_balance.py b/erpnext/accounts/doctype/account_closing_balance/account_closing_balance.py index 9c1567eaf16..7c842372de8 100644 --- a/erpnext/accounts/doctype/account_closing_balance/account_closing_balance.py +++ b/erpnext/accounts/doctype/account_closing_balance/account_closing_balance.py @@ -3,6 +3,7 @@ import frappe from frappe.model.document import Document +from frappe.utils import cint, cstr from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import ( get_accounting_dimensions, @@ -65,25 +66,26 @@ def aggregate_with_last_account_closing_balance(entries, accounting_dimensions): def generate_key(entry, accounting_dimensions): key = [ - entry.get("account"), - entry.get("account_currency"), - entry.get("cost_center"), - entry.get("project"), - entry.get("finance_book"), - entry.get("is_period_closing_voucher_entry"), + cstr(entry.get("account")), + cstr(entry.get("account_currency")), + cstr(entry.get("cost_center")), + cstr(entry.get("project")), + cstr(entry.get("finance_book")), + cint(entry.get("is_period_closing_voucher_entry")), ] key_values = { - "account": entry.get("account"), - "account_currency": entry.get("account_currency"), - "cost_center": entry.get("cost_center"), - "project": entry.get("project"), - "finance_book": entry.get("finance_book"), - "is_period_closing_voucher_entry": entry.get("is_period_closing_voucher_entry"), + "company": cstr(entry.get("company")), + "account": cstr(entry.get("account")), + "account_currency": cstr(entry.get("account_currency")), + "cost_center": cstr(entry.get("cost_center")), + "project": cstr(entry.get("project")), + "finance_book": cstr(entry.get("finance_book")), + "is_period_closing_voucher_entry": cint(entry.get("is_period_closing_voucher_entry")), } for dimension in accounting_dimensions: - key.append(entry.get(dimension)) - key_values[dimension] = entry.get(dimension) + key.append(cstr(entry.get(dimension))) + key_values[dimension] = cstr(entry.get(dimension)) return tuple(key), key_values @@ -101,6 +103,7 @@ def get_previous_closing_entries(company, closing_date, accounting_dimensions): if last_period_closing_voucher: account_closing_balance = frappe.qb.DocType("Account Closing Balance") query = frappe.qb.from_(account_closing_balance).select( + account_closing_balance.company, account_closing_balance.account, account_closing_balance.account_currency, account_closing_balance.debit, diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py index f11513d3670..f6289e7e479 100644 --- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py +++ b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py @@ -144,6 +144,7 @@ class PeriodClosingVoucher(AccountsController): def get_gle_for_pl_account(self, acc): gl_entry = self.get_gl_dict( { + "company": self.company, "closing_date": self.posting_date, "account": acc.account, "cost_center": acc.cost_center, @@ -167,6 +168,7 @@ class PeriodClosingVoucher(AccountsController): def get_gle_for_closing_account(self, acc): gl_entry = self.get_gl_dict( { + "company": self.company, "closing_date": self.posting_date, "account": self.closing_account_head, "cost_center": acc.cost_center, @@ -190,6 +192,7 @@ class PeriodClosingVoucher(AccountsController): def get_closing_entries(self, acc): closing_entry = self.get_gl_dict( { + "company": self.company, "closing_date": self.posting_date, "period_closing_voucher": self.name, "account": acc.account, @@ -293,18 +296,10 @@ class PeriodClosingVoucher(AccountsController): return query.run(as_dict=1) -def process_closing_entries(closing_entries): - from erpnext.accounts.doctype.closing_balance.closing_balance import make_closing_entries - - try: - make_closing_entries(closing_entries) - except Exception as e: - frappe.db.rollback() - frappe.log_error(e) - - def process_gl_entries(gl_entries, closing_entries, voucher_name=None): - from erpnext.accounts.doctype.closing_balance.closing_balance import make_closing_entries + from erpnext.accounts.doctype.account_closing_balance.account_closing_balance import ( + make_closing_entries, + ) from erpnext.accounts.general_ledger import make_gl_entries try: diff --git a/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py b/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py index cfe7fc1f51b..62ae8572e4e 100644 --- a/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py +++ b/erpnext/accounts/doctype/period_closing_voucher/test_period_closing_voucher.py @@ -205,7 +205,99 @@ class TestPeriodClosingVoucher(unittest.TestCase): self.assertRaises(frappe.ValidationError, jv1.submit) - # def test_closing_balance_with_dimensions(self): + def test_closing_balance_with_dimensions(self): + frappe.db.sql("delete from `tabGL Entry` where company='Test PCV Company'") + frappe.db.sql("delete from `tabPeriod Closing Voucher` where company='Test PCV Company'") + frappe.db.sql("delete from `tabAccount Closing Balance` where company='Test PCV Company'") + + company = create_company() + cost_center1 = create_cost_center("Test Cost Center 1") + cost_center2 = create_cost_center("Test Cost Center 2") + + jv1 = make_journal_entry( + posting_date="2021-03-15", + amount=400, + account1="Cash - TPC", + account2="Sales - TPC", + cost_center=cost_center1, + save=False, + ) + jv1.company = company + jv1.save() + jv1.submit() + + jv2 = make_journal_entry( + posting_date="2021-03-15", + amount=200, + account1="Cash - TPC", + account2="Sales - TPC", + cost_center=cost_center2, + save=False, + ) + jv2.company = company + jv2.save() + jv2.submit() + + pcv1 = self.make_period_closing_voucher(posting_date="2021-03-31") + + closing_balance = frappe.db.get_value( + "Account Closing Balance", + { + "account": "Sales - TPC", + "cost_center": cost_center1, + "period_closing_voucher": pcv1.name, + "is_period_closing_voucher_entry": 0, + }, + ["credit", "credit_in_account_currency"], + as_dict=1, + ) + + self.assertEqual(closing_balance.credit, 400) + self.assertEqual(closing_balance.credit_in_account_currency, 400) + + jv3 = make_journal_entry( + posting_date="2022-03-15", + amount=300, + account1="Cash - TPC", + account2="Sales - TPC", + cost_center=cost_center2, + save=False, + ) + + jv3.company = company + jv3.save() + jv3.submit() + + pcv2 = self.make_period_closing_voucher(posting_date="2022-03-31") + + cc1_closing_balance = frappe.db.get_value( + "Account Closing Balance", + { + "account": "Sales - TPC", + "cost_center": cost_center1, + "period_closing_voucher": pcv2.name, + "is_period_closing_voucher_entry": 0, + }, + ["credit", "credit_in_account_currency"], + as_dict=1, + ) + + cc2_closing_balance = frappe.db.get_value( + "Account Closing Balance", + { + "account": "Sales - TPC", + "cost_center": cost_center2, + "period_closing_voucher": pcv2.name, + "is_period_closing_voucher_entry": 0, + }, + ["credit", "credit_in_account_currency"], + as_dict=1, + ) + + self.assertEqual(cc1_closing_balance.credit, 400) + self.assertEqual(cc1_closing_balance.credit_in_account_currency, 400) + self.assertEqual(cc2_closing_balance.credit, 500) + self.assertEqual(cc2_closing_balance.credit_in_account_currency, 500) def make_period_closing_voucher(self, posting_date=None, submit=True): surplus_account = create_account()