fix(warehouse-account): get warehouse account map fallback handling (#15625)

* fix(warehouse-account): get warehouse account map fallback handling

* fix: import issue
diff --git a/erpnext/stock/__init__.py b/erpnext/stock/__init__.py
index 9895b5a..06f424e 100644
--- a/erpnext/stock/__init__.py
+++ b/erpnext/stock/__init__.py
@@ -1,5 +1,6 @@
 from __future__ import unicode_literals
 import frappe
+from frappe import _
 
 install_docs = [
 	{"doctype":"Role", "role_name":"Stock Manager", "name":"Stock Manager"},
@@ -33,7 +34,11 @@
 	account = warehouse.account
 	if not account and warehouse.parent_warehouse:
 		if warehouse_account:
-			account = warehouse_account.get(warehouse.parent_warehouse).account
+			if warehouse_account.get(warehouse.parent_warehouse):
+				account = warehouse_account.get(warehouse.parent_warehouse).account
+			else:
+				from frappe.utils.nestedset import rebuild_tree
+				rebuild_tree("Warehouse", "parent_warehouse")
 		else:
 			account = frappe.db.sql("""
 				select
@@ -48,6 +53,9 @@
 	if not account and warehouse.company:
 		account = get_company_default_inventory_account(warehouse.company)
 
+	if not account:
+		frappe.throw(_("Please set Account in Warehouse {0} or Default Inventory Account in Company {1}")
+			.format(warehouse, warehouse.company))
 	return account
 	
 def get_company_default_inventory_account(company):