diff --git a/frappe/client.py b/frappe/client.py index 0019e844eb..b43e2afac3 100644 --- a/frappe/client.py +++ b/frappe/client.py @@ -465,7 +465,7 @@ def validate_link_and_fetch( ) if not search_result: - return {} # does not exist or filtered out + return {} # Either the record does not exist or was excluded by link_filters values = None is_virtual_dt = bool(meta.get("is_virtual")) diff --git a/frappe/public/js/frappe/form/controls/link.js b/frappe/public/js/frappe/form/controls/link.js index 74d62c6382..c81e5c2c6d 100644 --- a/frappe/public/js/frappe/form/controls/link.js +++ b/frappe/public/js/frappe/form/controls/link.js @@ -938,6 +938,17 @@ frappe.ui.form.ControlLink = class ControlLink extends frappe.ui.form.ControlDat .then((response) => { if (!response) return; + const has_filters = !!(args.filters && Object.keys(args.filters).length); + if (!response.name && has_filters) { + frappe.show_alert({ + message: __("{0}: {1} did not match any results.", [ + __(this.df.label || this.df.fieldname), + value, + ]), + indicator: "red", + }); + } + update_dependant_fields(response); return response.name; });