fix: Only load transaction's company's tax accounts in item tax map
diff --git a/erpnext/accounts/doctype/item_tax_template/item_tax_template.js b/erpnext/accounts/doctype/item_tax_template/item_tax_template.js
index 9765d02..42abdb8 100644
--- a/erpnext/accounts/doctype/item_tax_template/item_tax_template.js
+++ b/erpnext/accounts/doctype/item_tax_template/item_tax_template.js
@@ -3,13 +3,12 @@
 
 frappe.ui.form.on('Item Tax Template', {
 	setup: function(frm) {
-		frm.set_query("tax_type", function(doc) {
+		frm.set_query("tax_type", "taxes", function(doc) {
 			return {
-				query: "erpnext.controllers.queries.tax_account_query",
-				filters: {
-					"account_type": ['Tax', 'Chargeable', 'Income Account', 'Expense Account'],
-					"company": doc.company
-				}
+				filters: [
+					['Account', 'is_group', '=', 0],
+					['Account', 'account_type', 'in', ['Tax', 'Chargeable', 'Income Account', 'Expense Account', 'Expenses Included In Valuation']]
+				]
 			}
 		});
 	}
diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index d95ca04..f409f61 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -565,6 +565,7 @@
 
 				frappe.run_serially([
 					() => me.frm.script_manager.trigger("currency"),
+					() => me.update_item_tax_map(),
 					() => me.apply_default_taxes(),
 					() => me.apply_pricing_rule()
 				]);
@@ -1312,40 +1313,8 @@
 		var me = this;
 		if(me.frm.updating_party_details) return;
 
-		var item_codes = [];
-		$.each(this.frm.doc.items || [], function(i, item) {
-			if(item.item_code) {
-				item_codes.push(item.item_code);
-			}
-		});
-
 		frappe.run_serially([
-			() => {
-				if(item_codes.length) {
-					return this.frm.call({
-						method: "erpnext.stock.get_item_details.get_item_tax_info",
-						args: {
-							tax_category: cstr(me.frm.doc.tax_category),
-							item_codes: item_codes
-						},
-						callback: function(r) {
-							if(!r.exc) {
-								$.each(me.frm.doc.items || [], function(i, item) {
-									if(item.item_code && r.message.hasOwnProperty(item.item_code)) {
-										item.item_tax_template = r.message[item.item_code].item_tax_template;
-										item.item_tax_rate = r.message[item.item_code].item_tax_rate;
-										me.add_taxes_from_item_tax_template(item.item_tax_rate);
-									} else {
-										item.item_tax_template = "";
-										item.item_tax_rate = "{}";
-									}
-								});
-								me.calculate_taxes_and_totals();
-							}
-						}
-					});
-				}
-			},
+			() => this.update_item_tax_map(),
 			() => erpnext.utils.set_taxes(this.frm, "tax_category"),
 		]);
 	},
@@ -1360,6 +1329,7 @@
 			return this.frm.call({
 				method: "erpnext.stock.get_item_details.get_item_tax_map",
 				args: {
+					company: me.frm.doc.company,
 					item_tax_template: item.item_tax_template,
 					as_json: true
 				},
@@ -1377,6 +1347,42 @@
 		}
 	},
 
+	update_item_tax_map: function() {
+		var me = this;
+		var item_codes = [];
+		$.each(this.frm.doc.items || [], function(i, item) {
+			if(item.item_code) {
+				item_codes.push(item.item_code);
+			}
+		});
+
+		if(item_codes.length) {
+			return this.frm.call({
+				method: "erpnext.stock.get_item_details.get_item_tax_info",
+				args: {
+					company: me.frm.doc.company,
+					tax_category: cstr(me.frm.doc.tax_category),
+					item_codes: item_codes
+				},
+				callback: function(r) {
+					if(!r.exc) {
+						$.each(me.frm.doc.items || [], function(i, item) {
+							if(item.item_code && r.message.hasOwnProperty(item.item_code)) {
+								item.item_tax_template = r.message[item.item_code].item_tax_template;
+								item.item_tax_rate = r.message[item.item_code].item_tax_rate;
+								me.add_taxes_from_item_tax_template(item.item_tax_rate);
+							} else {
+								item.item_tax_template = "";
+								item.item_tax_rate = "{}";
+							}
+						});
+						me.calculate_taxes_and_totals();
+					}
+				}
+			});
+		}
+	},
+
 	is_recurring: function() {
 		// set default values for recurring documents
 		if(this.frm.doc.is_recurring && this.frm.doc.__islocal) {
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index 0f46acf..a644245 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -45,7 +45,7 @@
 	out = get_basic_details(args, item)
 
 	get_item_tax_template(args, item, out)
-	out["item_tax_rate"] = get_item_tax_map(out.get("item_tax_template"), as_json=True)
+	out["item_tax_rate"] = get_item_tax_map(args.company, out.get("item_tax_template"), as_json=True)
 
 	get_party_item_code(args, item, out)
 
@@ -306,7 +306,7 @@
 	return out
 
 @frappe.whitelist()
-def get_item_tax_info(tax_category, item_codes):
+def get_item_tax_info(company, tax_category, item_codes):
 	out = {}
 	if isinstance(item_codes, string_types):
 		item_codes = json.loads(item_codes)
@@ -317,7 +317,7 @@
 		out[item_code] = {}
 		item = frappe.get_cached_doc("Item", item_code)
 		get_item_tax_template({"tax_category": tax_category}, item, out[item_code])
-		out[item_code]["item_tax_rate"] = get_item_tax_map(out[item_code].get("item_tax_template"), as_json=True)
+		out[item_code]["item_tax_rate"] = get_item_tax_map(company, out[item_code].get("item_tax_template"), as_json=True)
 
 	return out
 
@@ -348,12 +348,13 @@
 	return None
 
 @frappe.whitelist()
-def get_item_tax_map(item_tax_template, as_json=True):
+def get_item_tax_map(company, item_tax_template, as_json=True):
 	item_tax_map = {}
 	if item_tax_template:
 		template = frappe.get_cached_doc("Item Tax Template", item_tax_template)
 		for d in template.taxes:
-			item_tax_map[d.tax_type] = d.tax_rate
+			if frappe.get_cached_value("Account", d.tax_type, "company") == company:
+				item_tax_map[d.tax_type] = d.tax_rate
 
 	return json.dumps(item_tax_map) if as_json else item_tax_map