test: TB report balanced whenfiltered using acc dimension
diff --git a/erpnext/accounts/report/trial_balance/test_trial_balance.py b/erpnext/accounts/report/trial_balance/test_trial_balance.py
new file mode 100644
index 0000000..d4d0554
--- /dev/null
+++ b/erpnext/accounts/report/trial_balance/test_trial_balance.py
@@ -0,0 +1,111 @@
+# 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"
+		branch1.insert()
+		branch2 = frappe.new_doc("Branch")
+		branch2.branch = "Location 2"
+		branch2.insert()
+
+		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):
+		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()