2023-07-17 12:27:03 +00:00
|
|
|
# Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and Contributors
|
|
|
|
# MIT License. See license.txt
|
|
|
|
|
|
|
|
import frappe
|
|
|
|
from frappe.tests.utils import FrappeTestCase
|
|
|
|
from frappe.utils import today
|
|
|
|
|
|
|
|
from erpnext.accounts.report.trial_balance.trial_balance import execute
|
|
|
|
|
|
|
|
|
|
|
|
class TestTrialBalance(FrappeTestCase):
|
|
|
|
def setUp(self):
|
|
|
|
from erpnext.accounts.doctype.account.test_account import create_account
|
|
|
|
from erpnext.accounts.doctype.cost_center.test_cost_center import create_cost_center
|
|
|
|
from erpnext.accounts.utils import get_fiscal_year
|
|
|
|
|
|
|
|
self.company = create_company()
|
|
|
|
create_cost_center(
|
|
|
|
cost_center_name="Test Cost Center",
|
|
|
|
company="Trial Balance Company",
|
|
|
|
parent_cost_center="Trial Balance Company - TBC",
|
|
|
|
)
|
|
|
|
create_account(
|
|
|
|
account_name="Offsetting",
|
|
|
|
company="Trial Balance Company",
|
|
|
|
parent_account="Temporary Accounts - TBC",
|
|
|
|
)
|
|
|
|
self.fiscal_year = get_fiscal_year(today(), company="Trial Balance Company")[0]
|
|
|
|
create_accounting_dimension()
|
|
|
|
|
|
|
|
def test_offsetting_entries_for_accounting_dimensions(self):
|
|
|
|
"""
|
|
|
|
Checks if Trial Balance Report is balanced when filtered using a particular Accounting Dimension
|
|
|
|
"""
|
|
|
|
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
|
|
|
|
|
|
|
|
frappe.db.sql("delete from `tabSales Invoice` where company='Trial Balance Company'")
|
|
|
|
frappe.db.sql("delete from `tabGL Entry` where company='Trial Balance Company'")
|
|
|
|
|
|
|
|
branch1 = frappe.new_doc("Branch")
|
|
|
|
branch1.branch = "Location 1"
|
2023-07-19 06:32:26 +00:00
|
|
|
branch1.insert(ignore_if_duplicate=True)
|
2023-07-17 12:27:03 +00:00
|
|
|
branch2 = frappe.new_doc("Branch")
|
|
|
|
branch2.branch = "Location 2"
|
2023-07-19 06:32:26 +00:00
|
|
|
branch2.insert(ignore_if_duplicate=True)
|
2023-07-17 12:27:03 +00:00
|
|
|
|
|
|
|
si = create_sales_invoice(
|
|
|
|
company=self.company,
|
|
|
|
debit_to="Debtors - TBC",
|
|
|
|
cost_center="Test Cost Center - TBC",
|
|
|
|
income_account="Sales - TBC",
|
|
|
|
do_not_submit=1,
|
|
|
|
)
|
|
|
|
si.branch = "Location 1"
|
|
|
|
si.items[0].branch = "Location 2"
|
|
|
|
si.save()
|
|
|
|
si.submit()
|
|
|
|
|
|
|
|
filters = frappe._dict(
|
|
|
|
{"company": self.company, "fiscal_year": self.fiscal_year, "branch": ["Location 1"]}
|
|
|
|
)
|
|
|
|
total_row = execute(filters)[1][-1]
|
|
|
|
self.assertEqual(total_row["debit"], total_row["credit"])
|
|
|
|
|
|
|
|
def tearDown(self):
|
2023-07-19 10:37:32 +00:00
|
|
|
clear_dimension_defaults("Branch")
|
2023-07-17 12:27:03 +00:00
|
|
|
disable_dimension()
|
|
|
|
|
|
|
|
|
|
|
|
def create_company(**args):
|
|
|
|
args = frappe._dict(args)
|
|
|
|
company = frappe.get_doc(
|
|
|
|
{
|
|
|
|
"doctype": "Company",
|
|
|
|
"company_name": args.company_name or "Trial Balance Company",
|
|
|
|
"country": args.country or "India",
|
|
|
|
"default_currency": args.currency or "INR",
|
|
|
|
}
|
|
|
|
)
|
|
|
|
company.insert(ignore_if_duplicate=True)
|
|
|
|
return company.name
|
|
|
|
|
|
|
|
|
|
|
|
def create_accounting_dimension(**args):
|
|
|
|
args = frappe._dict(args)
|
|
|
|
document_type = args.document_type or "Branch"
|
|
|
|
if not frappe.db.exists("Accounting Dimension", {"document_type": "Branch"}):
|
|
|
|
accounting_dimension = frappe.get_doc(
|
|
|
|
{"doctype": "Accounting Dimension", "document_type": document_type}
|
|
|
|
).insert()
|
|
|
|
else:
|
|
|
|
accounting_dimension = frappe.get_doc("Accounting Dimension", document_type)
|
|
|
|
accounting_dimension.disabled = 0
|
|
|
|
|
|
|
|
accounting_dimension.append(
|
|
|
|
"dimension_defaults",
|
|
|
|
{
|
|
|
|
"company": args.company or "Trial Balance Company",
|
|
|
|
"automatically_post_balancing_accounting_entry": 1,
|
|
|
|
"offsetting_account": args.offsetting_account or "Offsetting - TBC",
|
|
|
|
},
|
|
|
|
)
|
|
|
|
accounting_dimension.save()
|
|
|
|
return accounting_dimension.name
|
|
|
|
|
|
|
|
|
|
|
|
def disable_dimension(**args):
|
|
|
|
args = frappe._dict(args)
|
|
|
|
document_type = args.document_type or "Branch"
|
|
|
|
dimension = frappe.get_doc("Accounting Dimension", document_type)
|
|
|
|
dimension.disabled = 1
|
|
|
|
dimension.save()
|
2023-07-19 06:32:26 +00:00
|
|
|
|
|
|
|
|
|
|
|
def clear_dimension_defaults(dimension_name):
|
|
|
|
accounting_dimension = frappe.get_doc("Accounting Dimension", dimension_name)
|
|
|
|
accounting_dimension.dimension_defaults = []
|
|
|
|
accounting_dimension.save()
|