diff --git a/frappe/client.py b/frappe/client.py index 0019e844eb..60a8983d4e 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 {} 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..cbd41491cb 100644 --- a/frappe/public/js/frappe/form/controls/link.js +++ b/frappe/public/js/frappe/form/controls/link.js @@ -870,6 +870,7 @@ frappe.ui.form.ControlLink = class ControlLink extends frappe.ui.form.ControlDat validate_link_and_fetch(value) { const args = this.get_search_args(value); if (!args) return; + const has_filters = !!(args.filters && Object.keys(args.filters).length); const columns_to_fetch = Object.values(this.fetch_map); @@ -938,6 +939,16 @@ frappe.ui.form.ControlLink = class ControlLink extends frappe.ui.form.ControlDat .then((response) => { if (!response) return; + 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; });