fix: Add company filters for account
diff --git a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.js b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.js
index 2fa1d53..2f53f7b 100644
--- a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.js
+++ b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.js
@@ -15,6 +15,17 @@
 			};
 		});
 
+		frm.set_query("offsetting_account", "dimension_defaults", function(doc, cdt, cdn) {
+			let d = locals[cdt][cdn];
+			return {
+				filters: {
+					company: d.company,
+					root_type: ["in", ["Asset", "Liability"]],
+					is_group: 0
+				}
+			}
+		});
+
 		if (!frm.is_new()) {
 			frm.add_custom_button(__('Show {0}', [frm.doc.document_type]), function () {
 				frappe.set_route("List", frm.doc.document_type);
diff --git a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
index 81ff6a5..ea44734 100644
--- a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
+++ b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
@@ -39,6 +39,8 @@
 		if not self.is_new():
 			self.validate_document_type_change()
 
+		self.validate_dimension_defaults()
+
 	def validate_document_type_change(self):
 		doctype_before_save = frappe.db.get_value("Accounting Dimension", self.name, "document_type")
 		if doctype_before_save != self.document_type:
@@ -46,6 +48,14 @@
 			message += _("Please create a new Accounting Dimension if required.")
 			frappe.throw(message)
 
+	def validate_dimension_defaults(self):
+		companies = []
+		for default in self.get("dimension_defaults"):
+			if default.company not in companies:
+				companies.append(default.company)
+			else:
+				frappe.throw(_("Company {0} is added more than once").format(frappe.bold(default.company)))
+
 	def after_insert(self):
 		if frappe.flags.in_test:
 			make_dimension_in_accounting_doctypes(doc=self)
diff --git a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
index d2f19a1..486e01e 100644
--- a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
@@ -1774,10 +1774,10 @@
 		pi.submit()
 
 		expected_gle = [
-			["_Test Account Cost for Goods Sold - _TC", 1000, 0.0, nowdate(), {"branch": branch2.branch}],
-			["Creditors - _TC", 0.0, 1000, nowdate(), {"branch": branch1.branch}],
-			["Offsetting - _TC", 1000, 0.0, nowdate(), {"branch": branch1.branch}],
-			["Offsetting - _TC", 0.0, 1000, nowdate(), {"branch": branch2.branch}],
+			["_Test Account Cost for Goods Sold - _TC", 1000, 0.0, nowdate(), branch2.branch],
+			["Creditors - _TC", 0.0, 1000, nowdate(), branch1.branch],
+			["Offsetting - _TC", 1000, 0.0, nowdate(), branch1.branch],
+			["Offsetting - _TC", 0.0, 1000, nowdate(), branch2.branch],
 		]
 
 		check_gl_entries(
@@ -1786,7 +1786,7 @@
 			expected_gle,
 			nowdate(),
 			voucher_type="Purchase Invoice",
-			check_acc_dimensions=True,
+			additional_columns=["branch"],
 		)
 		clear_dimension_defaults("Branch")
 		disable_dimension()
@@ -1809,7 +1809,7 @@
 	expected_gle,
 	posting_date,
 	voucher_type="Purchase Invoice",
-	check_acc_dimensions=False,
+	additional_columns=None,
 ):
 	gl = frappe.qb.DocType("GL Entry")
 	query = (
@@ -1823,9 +1823,11 @@
 		)
 		.orderby(gl.posting_date, gl.account, gl.creation)
 	)
-	if check_acc_dimensions:
-		for col in list(expected_gle[0][4].keys()):
-			query = query.select(col)
+
+	if additional_columns:
+		for col in additional_columns:
+			query = query.select(gl[col])
+
 	gl_entries = query.run(as_dict=True)
 
 	for i, gle in enumerate(gl_entries):
@@ -1833,9 +1835,12 @@
 		doc.assertEqual(expected_gle[i][1], gle.debit)
 		doc.assertEqual(expected_gle[i][2], gle.credit)
 		doc.assertEqual(getdate(expected_gle[i][3]), gle.posting_date)
-		if check_acc_dimensions:
-			for acc_dimension in expected_gle[i][4]:
-				doc.assertEqual(expected_gle[i][4][acc_dimension], gle[acc_dimension])
+
+		if additional_columns:
+			j = 4
+			for col in additional_columns:
+				doc.assertEqual(expected_gle[i][j], gle[col])
+				j += 1
 
 
 def create_tax_witholding_category(category_name, company, account):
diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py
index a348911..addc9d5 100644
--- a/erpnext/accounts/general_ledger.py
+++ b/erpnext/accounts/general_ledger.py
@@ -30,8 +30,8 @@
 	from_repost=False,
 ):
 	if gl_map:
-		make_acc_dimensions_offsetting_entry(gl_map)
 		if not cancel:
+			make_acc_dimensions_offsetting_entry(gl_map)
 			validate_accounting_period(gl_map)
 			validate_disabled_accounts(gl_map)
 			gl_map = process_gl_map(gl_map, merge_entries)
@@ -64,6 +64,7 @@
 		return
 
 	offsetting_entries = []
+
 	for gle in gl_map:
 		for dimension in accounting_dimensions_to_offset:
 			offsetting_entry = gle.copy()
@@ -82,12 +83,14 @@
 			)
 			offsetting_entry["against_voucher_type"] = None
 			offsetting_entries.append(offsetting_entry)
+
 	gl_map += offsetting_entries
 
 
 def get_accounting_dimensions_for_offsetting_entry(gl_map, company):
 	acc_dimension = frappe.qb.DocType("Accounting Dimension")
 	dimension_detail = frappe.qb.DocType("Accounting Dimension Detail")
+
 	acc_dimensions = (
 		frappe.qb.from_(acc_dimension)
 		.inner_join(dimension_detail)
@@ -99,11 +102,13 @@
 			& (dimension_detail.automatically_post_balancing_accounting_entry == 1)
 		)
 	).run(as_dict=True)
+
 	accounting_dimensions_to_offset = []
 	for acc_dimension in acc_dimensions:
 		values = set([entry.get(acc_dimension.fieldname) for entry in gl_map])
 		if len(values) > 1:
 			accounting_dimensions_to_offset.append(acc_dimension)
+
 	return accounting_dimensions_to_offset
 
 
diff --git a/erpnext/accounts/report/trial_balance/test_trial_balance.py b/erpnext/accounts/report/trial_balance/test_trial_balance.py
index cd0429b..4682ac4 100644
--- a/erpnext/accounts/report/trial_balance/test_trial_balance.py
+++ b/erpnext/accounts/report/trial_balance/test_trial_balance.py
@@ -91,7 +91,8 @@
 		accounting_dimension = frappe.new_doc("Accounting Dimension")
 		accounting_dimension.document_type = document_type
 		accounting_dimension.insert()
-	accounting_dimension.save()
+
+	accounting_dimension.set("dimension_defaults", [])
 	accounting_dimension.append(
 		"dimension_defaults",
 		{