From 0e26f9b1dbd3ce130680ec2d280ac33a577cea20 Mon Sep 17 00:00:00 2001 From: Henil Maru Date: Wed, 5 Aug 2026 17:58:58 +0530 Subject: [PATCH] fix(sales-invoice): respect Customize Form hidden setting on Update Stock (#57819) frm.toggle_display("update_stock", ...) unconditionally forced the field visible based only on has_subcontracted, overwriting whatever Customize Form had set on every refresh. OR it with the field's original (property-setter-driven) hidden value instead. Backport of #57818. --- .../accounts/doctype/sales_invoice/sales_invoice.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js index 7597eec0e57..3ee34f24d17 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js @@ -1180,7 +1180,16 @@ frappe.ui.form.on("Sales Invoice", { } frm.set_df_property("update_stock", "read_only", frm.doc.has_subcontracted); - frm.toggle_display("update_stock", !frm.doc.has_subcontracted); + // frm.set_df_property mutates a per-document copy, not the doctype's shared field + // metadata, so this always reflects the original (Customize Form) hidden value. + const hidden_by_customization = cint( + frappe.meta.get_docfield("Sales Invoice", "update_stock")?.hidden + ); + frm.set_df_property( + "update_stock", + "hidden", + cint(frm.doc.has_subcontracted) || hidden_by_customization + ); }, });