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