Merge pull request #58904 from frappe/mergify/bp/version-16-hotfix/pr-58889

fix(stock): guard inventory dimension lookup without reference document (backport #58889)
This commit is contained in:
Sudharsanan Ashok
2026-09-09 13:23:54 +05:30
committed by GitHub

View File

@@ -72,24 +72,44 @@ frappe.ui.form.on("Inventory Dimension", {
frm.trigger("set_parent_fields");
},
set_parent_fields(frm) {
if (frm.doc.apply_to_all_doctypes) {
let options = ["\n", frm.doc.reference_document];
istable(frm) {
frm.trigger("set_parent_fields");
},
frm.set_df_property("fetch_from_parent", "options", options);
} else if (frm.doc.document_type && frm.doc.istable) {
reference_document(frm) {
frm.trigger("set_parent_fields");
},
apply_to_all_doctypes(frm) {
frm.trigger("set_parent_fields");
},
set_parent_fields(frm) {
const { reference_document, document_type } = frm.doc;
if (!reference_document || (!frm.doc.apply_to_all_doctypes && (!document_type || !frm.doc.istable))) {
return set_parent_field_options(frm, []);
}
if (frm.doc.apply_to_all_doctypes) {
return set_parent_field_options(frm, [{ value: reference_document, label: reference_document }]);
} else if (document_type && frm.doc.istable) {
frappe.call({
method: "erpnext.stock.doctype.inventory_dimension.inventory_dimension.get_parent_fields",
args: {
child_doctype: frm.doc.document_type,
dimension_name: frm.doc.reference_document,
child_doctype: document_type,
dimension_name: reference_document,
},
callback: (r) => {
if (r.message && r.message.length) {
frm.set_df_property("fetch_from_parent", "options", ["\n"].concat(r.message));
} else {
frm.set_df_property("fetch_from_parent", "hidden", 1);
if (
frm.doc.reference_document !== reference_document ||
frm.doc.document_type !== document_type ||
frm.doc.apply_to_all_doctypes ||
!frm.doc.istable
) {
return;
}
return set_parent_field_options(frm, r.message || []);
},
});
}
@@ -114,3 +134,12 @@ frappe.ui.form.on("Inventory Dimension", {
});
},
});
function set_parent_field_options(frm, fields) {
frm.set_df_property("fetch_from_parent", "options", ["", ...fields]);
frm.set_df_property("fetch_from_parent", "hidden", !fields.length);
if (frm.doc.fetch_from_parent && !fields.some((field) => field.value === frm.doc.fetch_from_parent)) {
return frm.set_value("fetch_from_parent", "");
}
}