refactor: filter accounting dimensions using qb
diff --git a/erpnext/accounts/report/purchase_register/purchase_register.py b/erpnext/accounts/report/purchase_register/purchase_register.py
index 46bfa43..1f25a05 100644
--- a/erpnext/accounts/report/purchase_register/purchase_register.py
+++ b/erpnext/accounts/report/purchase_register/purchase_register.py
@@ -8,12 +8,8 @@
 from frappe.utils import flt, getdate
 from pypika import Order
 
-from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import (
-	get_accounting_dimensions,
-)
 from erpnext.accounts.party import get_party_account
 from erpnext.accounts.report.utils import (
-	filter_invoices_based_on_dimensions,
 	get_advance_taxes_and_charges,
 	get_conditions,
 	get_journal_entries,
@@ -41,10 +37,6 @@
 	if filters.get("include_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
 	)
diff --git a/erpnext/accounts/report/sales_register/sales_register.py b/erpnext/accounts/report/sales_register/sales_register.py
index 6112219..94a7bee 100644
--- a/erpnext/accounts/report/sales_register/sales_register.py
+++ b/erpnext/accounts/report/sales_register/sales_register.py
@@ -9,12 +9,8 @@
 from frappe.utils import flt, getdate
 from pypika import Order
 
-from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import (
-	get_accounting_dimensions,
-)
 from erpnext.accounts.party import get_party_account
 from erpnext.accounts.report.utils import (
-	filter_invoices_based_on_dimensions,
 	get_advance_taxes_and_charges,
 	get_conditions,
 	get_journal_entries,
@@ -42,10 +38,6 @@
 	if filters.get("include_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
 	)
diff --git a/erpnext/accounts/report/utils.py b/erpnext/accounts/report/utils.py
index 6c7338e..462ef21 100644
--- a/erpnext/accounts/report/utils.py
+++ b/erpnext/accounts/report/utils.py
@@ -6,6 +6,7 @@
 
 from erpnext import get_company_currency, get_default_company
 from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import (
+	get_accounting_dimensions,
 	get_dimension_with_children,
 )
 from erpnext.accounts.doctype.fiscal_year.fiscal_year import get_from_and_to_date
@@ -321,6 +322,9 @@
 			query = query.where(child_doc.warehouse == filters.warehouse)
 		if filters.get("item_group"):
 			query = query.where(child_doc.item_group == filters.item_group)
+
+	if parent_doc.get_table_name() != "tabJournal Entry":
+		query = filter_invoices_based_on_dimensions(filters, query, parent_doc)
 	return query
 
 
@@ -346,9 +350,9 @@
 	).run(as_dict=True)
 
 
-def filter_invoices_based_on_dimensions(filters, accounting_dimensions, invoices):
-	invoices_with_acc_dimensions = []
-	for inv in invoices:
+def filter_invoices_based_on_dimensions(filters, query, parent_doc):
+	accounting_dimensions = get_accounting_dimensions(as_list=False)
+	if accounting_dimensions:
 		for dimension in accounting_dimensions:
 			if filters.get(dimension.fieldname):
 				if frappe.get_cached_value("DocType", dimension.document_type, "is_tree"):
@@ -356,11 +360,8 @@
 						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
+				query = query.where(parent_doc[fieldname] == filters.fieldname)
+	return query
 
 
 def get_opening_row(party_type, party, from_date, company):