fix: warehouse_account_map not getting reset for diff company transac (#20995)

* fix: warehouse_account_map not getting reset for diff company transaction

* fix: potential key errors while fetching warehouse_account_map

* fix: travis

Co-authored-by: Nabin Hait <nabinhait@gmail.com>
diff --git a/erpnext/stock/__init__.py b/erpnext/stock/__init__.py
index a4d4cbd..8d64efe 100644
--- a/erpnext/stock/__init__.py
+++ b/erpnext/stock/__init__.py
@@ -13,12 +13,16 @@
 ]
 
 def get_warehouse_account_map(company=None):
-	if not frappe.flags.warehouse_account_map or frappe.flags.in_test:
+	company_warehouse_account_map = company and frappe.flags.setdefault('warehouse_account_map', {}).get(company)
+	warehouse_account_map = frappe.flags.warehouse_account_map
+
+	if not warehouse_account_map or not company_warehouse_account_map or frappe.flags.in_test:
 		warehouse_account = frappe._dict()
 
 		filters = {}
 		if company:
 			filters['company'] = company
+			frappe.flags.setdefault('warehouse_account_map', {}).setdefault(company, {})
 
 		for d in frappe.get_all('Warehouse',
 			fields = ["name", "account", "parent_warehouse", "company", "is_group"],
@@ -30,10 +34,12 @@
 			if d.account:
 				d.account_currency = frappe.db.get_value('Account', d.account, 'account_currency', cache=True)
 				warehouse_account.setdefault(d.name, d)
-
-		frappe.flags.warehouse_account_map = warehouse_account
-
-	return frappe.flags.warehouse_account_map
+		if company:
+			frappe.flags.warehouse_account_map[company] = warehouse_account
+		else:
+			frappe.flags.warehouse_account_map = warehouse_account
+	
+	return frappe.flags.warehouse_account_map.get(company) or frappe.flags.warehouse_account_map
 
 def get_warehouse_account(warehouse, warehouse_account=None):
 	account = warehouse.account