diff --git a/erpnext/accounts/doctype/account/account.json b/erpnext/accounts/doctype/account/account.json
index e65d41fde19..5ed1b59a45c 100644
--- a/erpnext/accounts/doctype/account/account.json
+++ b/erpnext/accounts/doctype/account/account.json
@@ -122,6 +122,7 @@
"description": "Setting Account Type helps in selecting this Account in transactions.",
"fieldname": "account_type",
"fieldtype": "Select",
+ "in_preview": 1,
"in_standard_filter": 1,
"label": "Account Type",
"oldfieldname": "account_type",
@@ -203,7 +204,7 @@
"idx": 1,
"is_tree": 1,
"links": [],
- "modified": "2026-08-21 23:11:37.851001",
+ "modified": "2026-09-03 12:59:42.190900",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Account",
diff --git a/erpnext/accounts/doctype/account/account_tree.js b/erpnext/accounts/doctype/account/account_tree.js
index dd7e1d29e71..9f06bdf4dbd 100644
--- a/erpnext/accounts/doctype/account/account_tree.js
+++ b/erpnext/accounts/doctype/account/account_tree.js
@@ -62,7 +62,7 @@ frappe.treeview_settings["Account"] = {
const flags = [];
if (node.data.account_number) {
- flags.push(frappe.ui.badge({ label: node.data.account_number, size: "sm" }));
+ flags.push(frappe.ui.badge({ label: node.data.account_number }));
}
const company = frappe.treeview_settings["Account"].treeview?.page?.fields_dict?.company?.get_value();
@@ -72,26 +72,21 @@ frappe.treeview_settings["Account"] = {
company_currency &&
node.data.account_currency !== company_currency
) {
- flags.push(frappe.ui.badge({ label: node.data.account_currency, theme: "blue", size: "sm" }));
+ flags.push(frappe.ui.badge({ label: node.data.account_currency, theme: "blue" }));
}
if (node.data.freeze_account === "Yes") {
flags.push(
- $(
- `
- ${frappe.utils.icon("lock", "sm")}
- `
- )[0]
+ frappe.ui.badge({
+ label: __("Frozen"),
+ icon: "lock",
+ title: __("Frozen - entries restricted"),
+ theme: "orange",
+ })
);
}
- if (flags.length) {
- const $flags = $(
- ''
- );
- flags.forEach((flag) => $flags.append(flag));
- $flags.insertAfter(node.$tree_link.find("a.tree-label"));
- }
+ erpnext.utils.render_tree_node_flags(node, flags);
},
on_node_render: function (node, deep) {
const render_balances = () => {
diff --git a/erpnext/accounts/doctype/cost_center/cost_center_tree.js b/erpnext/accounts/doctype/cost_center/cost_center_tree.js
index 5b134f6545f..c36a2922846 100644
--- a/erpnext/accounts/doctype/cost_center/cost_center_tree.js
+++ b/erpnext/accounts/doctype/cost_center/cost_center_tree.js
@@ -12,6 +12,19 @@ frappe.treeview_settings["Cost Center"] = {
],
root_label: "Cost Centers",
get_tree_nodes: "erpnext.accounts.utils.get_children",
+ get_label: function (node) {
+ // clean display name — the number renders as a badge (see onrender)
+ return frappe.utils.escape_html(node.data.cost_center_name || node.title || node.label);
+ },
+ onrender: function (node) {
+ if (node.is_root || !node.data) return;
+
+ const flags = [];
+ if (node.data.cost_center_number) {
+ flags.push(frappe.ui.badge({ label: node.data.cost_center_number }));
+ }
+ erpnext.utils.render_tree_node_flags(node, flags);
+ },
add_tree_node: "erpnext.accounts.utils.add_cc",
menu_items: [
{
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index db7a58c08c3..09b5a60fc53 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -1359,22 +1359,28 @@ def get_children(
parent_fieldname = "parent_" + doctype.lower().replace(" ", "_")
fields = ["name as value", "is_group as expandable"]
filters = [["docstatus", "<", 2]]
- if frappe.db.has_column(doctype, "disabled") and not include_disabled:
- filters.append(["disabled", "=", False])
+ if frappe.db.has_column(doctype, "disabled"):
+ if include_disabled:
+ # the tree marks disabled rows, so it needs the flag
+ fields.append("disabled")
+ else:
+ filters.append(["disabled", "=", False])
+
+ # extra columns the tree views render as badges / clean labels
+ node_fields = {
+ "Account": ["root_type", "account_name", "account_number", "account_currency", "freeze_account"],
+ "Cost Center": ["cost_center_name", "cost_center_number"],
+ }
+ fields += node_fields.get(doctype, [])
if is_root:
filters.append(IfNull(Field(parent_fieldname), "") == "")
+ filters.append(["company", "=", company])
+ if doctype == "Account":
+ fields.append("report_type")
else:
filters.append([parent_fieldname, "=", parent])
-
- account_fields = ["account_name", "account_number", "account_currency", "freeze_account"]
- if is_root:
- fields += ["root_type", "report_type", *account_fields] if doctype == "Account" else []
- filters.append(["company", "=", company])
-
- else:
- fields += ["root_type", *account_fields] if doctype == "Account" else []
- fields += [parent_fieldname + " as parent"]
+ fields.append(parent_fieldname + " as parent")
acc = frappe.get_list(doctype, fields=fields, filters=filters)
diff --git a/erpnext/public/js/utils.js b/erpnext/public/js/utils.js
index ecd3aa8b4e3..12bdede4166 100755
--- a/erpnext/public/js/utils.js
+++ b/erpnext/public/js/utils.js
@@ -426,6 +426,26 @@ $.extend(erpnext.utils, {
}
return rows;
},
+ /**
+ * Row flags for the Account / Cost Center trees: the caller's badges plus
+ * a shared "Disabled" marker for records shown through the tree's
+ * "include disabled" toggle.
+ * @param {Object} node tree node (from treeview_settings.onrender)
+ * @param {Array} flags badge markup / elements
+ */
+ render_tree_node_flags: function (node, flags = []) {
+ if (cint(node.data?.disabled)) {
+ flags.push(frappe.ui.badge({ label: __("Disabled"), variant: "outline" }));
+ node.$tree_link.find("a.tree-label").addClass("text-ink-gray-5");
+ }
+ if (!flags.length) return;
+ const $flags = $(
+ ''
+ );
+ flags.forEach((flag) => $flags.append(flag));
+ $flags.insertAfter(node.$tree_link.find("a.tree-label"));
+ },
+
get_tree_options: function (option) {
// get valid options for tree based on user permission & locals dict
let unscrub_option = frappe.model.unscrub(option);