fix: filtering through accounting dimensions
diff --git a/erpnext/accounts/report/purchase_register/purchase_register.py b/erpnext/accounts/report/purchase_register/purchase_register.py
index 93dadc6..8e733cc 100644
--- a/erpnext/accounts/report/purchase_register/purchase_register.py
+++ b/erpnext/accounts/report/purchase_register/purchase_register.py
@@ -12,6 +12,7 @@
 	get_accounting_dimensions,
 )
 from erpnext.accounts.report.utils import (
+	filter_invoices_based_on_dimensions,
 	get_advance_taxes_and_charges,
 	get_conditions,
 	get_journal_entries,
@@ -38,6 +39,10 @@
 			frappe.throw(_("Please select a supplier for fetching payments."))
 		invoice_list += get_payments(filters, additional_table_columns)
 
+	accounting_dimensions = get_accounting_dimensions(as_list=False)
+	if len(invoice_list) > 0 and accounting_dimensions:
+		invoice_list = filter_invoices_based_on_dimensions(filters, accounting_dimensions, invoice_list)
+
 	columns, expense_accounts, tax_accounts, unrealized_profit_loss_accounts = get_columns(
 		invoice_list, additional_table_columns, include_payments
 	)
@@ -207,7 +212,6 @@
 
 
 def get_invoices(filters, additional_query_columns):
-	accounting_dimensions = get_accounting_dimensions(as_list=False)
 	pi = frappe.qb.DocType("Purchase Invoice")
 	invoice_item = frappe.qb.DocType("Purchase Invoice Item")
 	query = (
@@ -235,7 +239,7 @@
 	)
 	if filters.get("supplier"):
 		query = query.where(pi.supplier == filters.supplier)
-	query = get_conditions(filters, query, [pi, invoice_item], accounting_dimensions)
+	query = get_conditions(filters, query, [pi, invoice_item])
 	invoices = query.run(as_dict=True)
 	return invoices
 
@@ -250,9 +254,8 @@
 		party_name="supplier_name",
 		additional_query_columns="" if not additional_query_columns else additional_query_columns,
 	)
-	accounting_dimensions = get_accounting_dimensions(as_list=False)
-	payment_entries = get_payment_entries(filters, accounting_dimensions, args)
-	journal_entries = get_journal_entries(filters, accounting_dimensions, args)
+	payment_entries = get_payment_entries(filters, args)
+	journal_entries = get_journal_entries(filters, args)
 	return payment_entries + journal_entries
 
 
diff --git a/erpnext/accounts/report/sales_register/sales_register.py b/erpnext/accounts/report/sales_register/sales_register.py
index 1daf524..42fc5b3 100644
--- a/erpnext/accounts/report/sales_register/sales_register.py
+++ b/erpnext/accounts/report/sales_register/sales_register.py
@@ -13,6 +13,7 @@
 	get_accounting_dimensions,
 )
 from erpnext.accounts.report.utils import (
+	filter_invoices_based_on_dimensions,
 	get_advance_taxes_and_charges,
 	get_conditions,
 	get_journal_entries,
@@ -39,6 +40,10 @@
 			frappe.throw(_("Please select a customer for fetching payments."))
 		invoice_list += get_payments(filters, additional_table_columns)
 
+	accounting_dimensions = get_accounting_dimensions(as_list=False)
+	if len(invoice_list) > 0 and accounting_dimensions:
+		invoice_list = filter_invoices_based_on_dimensions(filters, accounting_dimensions, invoice_list)
+
 	columns, income_accounts, tax_accounts, unrealized_profit_loss_accounts = get_columns(
 		invoice_list, additional_table_columns, include_payments
 	)
@@ -365,7 +370,6 @@
 
 
 def get_invoices(filters, additional_query_columns):
-	accounting_dimensions = get_accounting_dimensions(as_list=False)
 	si = frappe.qb.DocType("Sales Invoice")
 	invoice_item = frappe.qb.DocType("Sales Invoice Item")
 	invoice_payment = frappe.qb.DocType("Sales Invoice Payment")
@@ -401,7 +405,7 @@
 	)
 	if filters.get("customer"):
 		query = query.where(si.customer == filters.customer)
-	query = get_conditions(filters, query, [si, invoice_item, invoice_payment], accounting_dimensions)
+	query = get_conditions(filters, query, [si, invoice_item, invoice_payment])
 	invoices = query.run(as_dict=True)
 	return invoices
 
@@ -416,9 +420,8 @@
 		party_name="customer_name",
 		additional_query_columns="" if not additional_query_columns else additional_query_columns,
 	)
-	accounting_dimensions = get_accounting_dimensions(as_list=False)
-	payment_entries = get_payment_entries(filters, accounting_dimensions, args)
-	journal_entries = get_journal_entries(filters, accounting_dimensions, args)
+	payment_entries = get_payment_entries(filters, args)
+	journal_entries = get_journal_entries(filters, args)
 	return payment_entries + journal_entries
 
 
diff --git a/erpnext/accounts/report/utils.py b/erpnext/accounts/report/utils.py
index 8b58a46..32ca9fa 100644
--- a/erpnext/accounts/report/utils.py
+++ b/erpnext/accounts/report/utils.py
@@ -225,7 +225,7 @@
 	return query.where(taxes.charge_type.isin(["On Paid Amount", "Actual"]))
 
 
-def get_journal_entries(filters, accounting_dimensions, args):
+def get_journal_entries(filters, args):
 	je = frappe.qb.DocType("Journal Entry")
 	journal_account = frappe.qb.DocType("Journal Entry Account")
 	query = (
@@ -250,12 +250,12 @@
 		.where((je.voucher_type == "Journal Entry") & (journal_account.party == filters.get(args.party)))
 		.orderby(je.posting_date, je.name, order=Order.desc)
 	)
-	query = get_conditions(filters, query, [je], accounting_dimensions, payments=True)
+	query = get_conditions(filters, query, [je], payments=True)
 	journal_entries = query.run(as_dict=True)
 	return journal_entries
 
 
-def get_payment_entries(filters, accounting_dimensions, args):
+def get_payment_entries(filters, args):
 	pe = frappe.qb.DocType("Payment Entry")
 	query = (
 		frappe.qb.from_(pe)
@@ -276,12 +276,12 @@
 		.where((pe.party == filters.get(args.party)))
 		.orderby(pe.posting_date, pe.name, order=Order.desc)
 	)
-	query = get_conditions(filters, query, [pe], accounting_dimensions, payments=True)
+	query = get_conditions(filters, query, [pe], payments=True)
 	payment_entries = query.run(as_dict=True)
 	return payment_entries
 
 
-def get_conditions(filters, query, docs, accounting_dimensions, payments=False):
+def get_conditions(filters, query, docs, payments=False):
 	parent_doc = docs[0]
 	if not payments:
 		child_doc = docs[1]
@@ -316,16 +316,6 @@
 			query = query.where(child_doc.warehouse == filters.warehouse)
 		if filters.get("item_group"):
 			query = query.where(child_doc.item_group == filters.item_group)
-
-	if accounting_dimensions:
-		for dimension in accounting_dimensions:
-			if filters.get(dimension.fieldname):
-				if frappe.get_cached_value("DocType", dimension.document_type, "is_tree"):
-					filters[dimension.fieldname] = get_dimension_with_children(
-						dimension.document_type, filters.get(dimension.fieldname)
-					)
-				fieldname = dimension.fieldname
-				query = query.where(parent_doc.fieldname.isin(filters.fieldname))
 	return query
 
 
@@ -348,4 +338,21 @@
 			& (adv_taxes.base_tax_amount != 0)
 		)
 		.groupby(adv_taxes.parent, adv_taxes.account_head, adv_taxes.add_deduct_tax)
-	).run(as_dict=True, debug=True)
+	).run(as_dict=True)
+
+
+def filter_invoices_based_on_dimensions(filters, accounting_dimensions, invoices):
+	invoices_with_acc_dimensions = []
+	for inv in invoices:
+		for dimension in accounting_dimensions:
+			if filters.get(dimension.fieldname):
+				if frappe.get_cached_value("DocType", dimension.document_type, "is_tree"):
+					filters[dimension.fieldname] = get_dimension_with_children(
+						dimension.document_type, filters.get(dimension.fieldname)
+					)
+				fieldname = dimension.fieldname
+				if inv.fieldname != filters[fieldname]:
+					break
+		else:
+			invoices_with_acc_dimensions.append(inv)
+	return invoices_with_acc_dimensions