Merge pull request #57392 from mihir-kandoi/fix/canonical-default-warehouse-names

fix: create default warehouses with untranslated names
This commit is contained in:
Mihir Kandoi
2026-07-23 16:17:04 +05:30
committed by GitHub
5 changed files with 50 additions and 7 deletions

View File

@@ -448,6 +448,8 @@ class Company(NestedSet):
frappe.clear_cache()
def create_default_warehouses(self):
from erpnext.setup.utils import identity as _
parent_warehouse = None
for wh_detail in [
{"warehouse_name": _("All Warehouses"), "is_group": 1},
@@ -459,7 +461,10 @@ class Company(NestedSet):
if frappe.db.exists(
"Warehouse",
{
"warehouse_name": wh_detail["warehouse_name"],
"warehouse_name": (
"in",
(wh_detail["warehouse_name"], frappe._(wh_detail["warehouse_name"])),
),
"company": self.name,
},
):

View File

@@ -15,6 +15,7 @@ from erpnext.accounts.doctype.account.chart_of_accounts.chart_of_accounts import
from erpnext.accounts.doctype.account.test_account import create_account
from erpnext.setup.doctype.company.company import get_default_company_address
from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
from erpnext.stock.doctype.item.item import get_stores_warehouse
from erpnext.stock.doctype.item.test_item import make_item
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry
from erpnext.tests.utils import ERPNextTestSuite
@@ -214,6 +215,34 @@ class TestCompany(ERPNextTestSuite):
self.assertEqual({d.parent_department for d in departments}, {"All Departments"})
self.assertIn("Buchhaltung - DTTC", [d.name for d in departments])
def test_default_warehouses_ignore_session_translations(self):
translations = {"Stores": "Lager", "All Warehouses": "Alle Lagerhäuser"}
with patch("frappe.translate.get_all_translations", return_value=translations):
company = frappe.new_doc("Company")
company.company_name = "Warehouse Translation Test Co"
company.abbr = "WTTC"
company.default_currency = "INR"
company.country = "India"
company.insert()
self.assertEqual(get_stores_warehouse(company.name), "Stores - WTTC")
warehouse_names = frappe.get_all("Warehouse", filters={"company": company.name}, pluck="name")
for warehouse_name in (
"All Warehouses",
"Stores",
"Work In Progress",
"Finished Goods",
"Goods In Transit",
):
self.assertIn(f"{warehouse_name} - WTTC", warehouse_names)
self.assertNotIn("Lager - WTTC", warehouse_names)
self.assertEqual(get_stores_warehouse(company.name), "Stores - WTTC")
frappe.db.set_value("Warehouse", "Stores - WTTC", "warehouse_name", "Lager", update_modified=False)
with patch("frappe.translate.get_all_translations", return_value=translations):
self.assertEqual(get_stores_warehouse(company.name), "Stores - WTTC")
def test_change_parent_company(self):
child_company = frappe.get_doc("Company", "_Test Company 5")

View File

@@ -30,7 +30,7 @@ def set_default_settings(args):
stock_settings = frappe.get_doc("Stock Settings")
stock_settings.item_naming_by = "Item Code"
stock_settings.valuation_method = "FIFO"
stock_settings.default_warehouse = frappe.db.get_value("Warehouse", {"warehouse_name": _("Stores")})
stock_settings.default_warehouse = frappe.db.get_value("Warehouse", {"warehouse_name": "Stores"})
stock_settings.stock_uom = "Nos"
stock_settings.auto_indent = 1
stock_settings.auto_insert_price_list_rate_if_missing = 1

View File

@@ -328,9 +328,7 @@ class Item(Document):
warehouse_company = frappe.db.get_value("Warehouse", default_warehouse, "company")
if not default_warehouse or warehouse_company != default.company:
default_warehouse = frappe.db.get_value(
"Warehouse", {"warehouse_name": _("Stores"), "company": default.company}
)
default_warehouse = get_stores_warehouse(default.company)
if default_warehouse:
opening_account = frappe.db.get_value(
@@ -1776,7 +1774,7 @@ def get_default_warehouse_for_opening_stock(item, company: str, warehouse: str |
if warehouse_company == company:
return settings_warehouse
stores_warehouse = frappe.db.get_value("Warehouse", {"warehouse_name": _("Stores"), "company": company})
stores_warehouse = get_stores_warehouse(company)
if stores_warehouse:
return stores_warehouse
@@ -1788,6 +1786,17 @@ def get_default_warehouse_for_opening_stock(item, company: str, warehouse: str |
)
def get_stores_warehouse(company: str) -> str | None:
stores_warehouse = frappe.db.get_value("Warehouse", {"warehouse_name": "Stores", "company": company})
if not stores_warehouse and _("Stores") != "Stores":
stores_warehouse = frappe.db.get_value(
"Warehouse", {"warehouse_name": _("Stores"), "company": company}
)
return stores_warehouse
def on_doctype_update():
if frappe.db.db_type == "postgres":
# The Item link-search (erpnext.controllers.queries.item_query) filters

View File

@@ -246,7 +246,7 @@ class BootStrapTestData:
stock_settings = frappe.get_doc("Stock Settings")
stock_settings.item_naming_by = "Item Code"
stock_settings.valuation_method = "FIFO"
stock_settings.default_warehouse = frappe.db.get_value("Warehouse", {"warehouse_name": _("Stores")})
stock_settings.default_warehouse = frappe.db.get_value("Warehouse", {"warehouse_name": "Stores"})
stock_settings.stock_uom = "Nos"
stock_settings.auto_indent = 1
stock_settings.auto_insert_price_list_rate_if_missing = 1