From 76b0f4fb2554e92688768c2e96fa6cc3895ebeed Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 12 Aug 2025 11:43:43 +0000 Subject: [PATCH] perf: multiple performance fixes in `get_item_warehouse` (backport #49118) Co-authored-by: Sagar Vora <16315650+sagarvora@users.noreply.github.com> --- erpnext/setup/doctype/brand/brand.py | 2 +- erpnext/setup/doctype/item_group/item_group.py | 2 +- erpnext/stock/doctype/item/item.py | 2 +- erpnext/stock/get_item_details.py | 15 +++++---------- 4 files changed, 8 insertions(+), 13 deletions(-) diff --git a/erpnext/setup/doctype/brand/brand.py b/erpnext/setup/doctype/brand/brand.py index cf3f4744391..ccb8b71e64f 100644 --- a/erpnext/setup/doctype/brand/brand.py +++ b/erpnext/setup/doctype/brand/brand.py @@ -35,7 +35,7 @@ def get_brand_defaults(item, company): for d in brand.brand_defaults or []: if d.company == company: - row = copy.deepcopy(d.as_dict()) + row = d.as_dict(no_private_properties=True) row.pop("name") return row diff --git a/erpnext/setup/doctype/item_group/item_group.py b/erpnext/setup/doctype/item_group/item_group.py index 54f57e707af..f68f0eed493 100644 --- a/erpnext/setup/doctype/item_group/item_group.py +++ b/erpnext/setup/doctype/item_group/item_group.py @@ -90,7 +90,7 @@ def get_item_group_defaults(item, company): for d in item_group.item_group_defaults or []: if d.company == company: - row = copy.deepcopy(d.as_dict()) + row = d.as_dict(no_private_properties=True) row.pop("name") return row diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py index 3409e9a559a..0ea35ddc1fb 100644 --- a/erpnext/stock/doctype/item/item.py +++ b/erpnext/stock/doctype/item/item.py @@ -1281,7 +1281,7 @@ def get_item_defaults(item_code, company): for d in item.item_defaults: if d.company == company: - row = copy.deepcopy(d.as_dict()) + row = d.as_dict(no_private_properties=True) row.pop("name") out.update(row) return out diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index 8d04141d78c..e31ba966653 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -567,20 +567,15 @@ def get_item_warehouse(item, args, overwrite_warehouse, defaults=None): or args.get("warehouse") ) - if not warehouse: - defaults = frappe.defaults.get_defaults() or {} - warehouse_exists = frappe.db.exists( - "Warehouse", {"name": defaults.default_warehouse, "company": args.company} - ) - if defaults.get("default_warehouse") and warehouse_exists: - warehouse = defaults.default_warehouse - else: warehouse = args.get("warehouse") if not warehouse: - default_warehouse = frappe.db.get_single_value("Stock Settings", "default_warehouse") - if frappe.db.get_value("Warehouse", default_warehouse, "company") == args.company: + default_warehouse = frappe.get_single_value("Stock Settings", "default_warehouse") + if ( + default_warehouse + and frappe.get_cached_value("Warehouse", default_warehouse, "company") == args.company + ): return default_warehouse return warehouse