خيارات التصفية في تحديد الحقل
لنفترض أن لديك حقلين منسدلين باسم الولاية والمدينة. الدولة لها قيمتان: كارناتاكا وماهاراشترا والمدينة لديها أربع قيم، بنغالور، ميسور، مومباي، وبيون. إذا كنت ترغب في تصفية الخيارات في المدينة بناءً على القيمة المختارة في الولاية، فيمكنك كتابة برنامج نصي مخصص كما هو موضح أدناه.
frappe.ui.form.on("Lead", "state", function(frm) {
if(frm.doc.state == "Karnataka") {
set_field_options("city", ["Bangalore","Mysore"])
} else if(frm.doc.state == "Maharashtra") {
set_field_options("city", ["Mumbai","Pune"])
} else if(frm.doc.state == "") {
set_field_options("city", ["","Bangalore","Mysore","Mumbai","Pune"])
}
});
فيما يلي مثال لبرنامج نصي مخصص يقوم بتصفية الخيارات في حقل تحديد ضمن جدول فرعي:
frappe.ui.form.on('Parent DocType', {
refresh: function (frm) {
// Trigger this function when the form is refreshed or reloaded
frm.fields_dict['child_table_fieldname'].grid.get_field('select_fieldname').get_query = function(doc, cdt, cdn) {
return {
filters: [
['Some Field', '=', 'Some Value'] // Replace with your filter criteria
]
};
};
}
});
السيناريو المثال
لنفترض أن لديك أصل DocType يسمى أمر المبيعات مع حقل جدول فرعي يسمى العناصر. يحتوي الجدول الفرعي على حقل تحديد يسمى رمز العنصر، وتريد تصفية الخيارات لإظهار العناصر من فئة معينة فقط.
إليك كيف قد يبدو البرنامج النصي الخاص بك:
frappe.ui.form.on('Sales Order', {
refresh: function (frm) {
frm.fields_dict['items'].grid.get_field('item_code').get_query = function(doc, cdt, cdn) {
return {
filters: [
['Item Group', '=', 'Specific Category'] // Adjust the filter criteria as needed
]
};
};
}
});