From 640dfab827f2e83b9c3ae7ff839c6f94b63b71b2 Mon Sep 17 00:00:00 2001 From: s-aga-r Date: Tue, 28 Nov 2023 17:45:17 +0530 Subject: [PATCH] refactor: use `frm.set_query` to add filters --- .../doctype/warranty_claim/warranty_claim.js | 102 +++++++++--------- 1 file changed, 49 insertions(+), 53 deletions(-) diff --git a/erpnext/support/doctype/warranty_claim/warranty_claim.js b/erpnext/support/doctype/warranty_claim/warranty_claim.js index a653f840d80b..32494efe53d3 100644 --- a/erpnext/support/doctype/warranty_claim/warranty_claim.js +++ b/erpnext/support/doctype/warranty_claim/warranty_claim.js @@ -5,14 +5,34 @@ frappe.provide("erpnext.support"); frappe.ui.form.on("Warranty Claim", { setup: (frm) => { - frm.set_query('contact_person', erpnext.queries.contact_query); - frm.set_query('customer_address', erpnext.queries.address_query); - frm.set_query('customer', erpnext.queries.customer); + frm.set_query("contact_person", erpnext.queries.contact_query); + frm.set_query("customer_address", erpnext.queries.address_query); + frm.set_query("customer", erpnext.queries.customer); + + frm.set_query("serial_no", () => { + let filters = { + company: frm.doc.company, + }; + + if (frm.doc.item_code) { + filters["item_code"] = frm.doc.item_code; + } + + return { filters: filters }; + }); + + frm.set_query("item_code", () => { + return { + filters: { + disabled: 0, + }, + }; + }); }, onload: (frm) => { - if(!frm.doc.status) { - frm.set_value('status', 'Open'); + if (!frm.doc.status) { + frm.set_value("status", "Open"); } }, @@ -26,64 +46,40 @@ frappe.ui.form.on("Warranty Claim", { contact_person: (frm) => { erpnext.utils.get_contact_details(frm); - } + }, }); -erpnext.support.WarrantyClaim = class WarrantyClaim extends frappe.ui.form.Controller { +erpnext.support.WarrantyClaim = class WarrantyClaim extends ( + frappe.ui.form.Controller +) { refresh() { - frappe.dynamic_link = {doc: this.frm.doc, fieldname: 'customer', doctype: 'Customer'} + frappe.dynamic_link = { + doc: this.frm.doc, + fieldname: "customer", + doctype: "Customer", + }; - if(!cur_frm.doc.__islocal && - (cur_frm.doc.status=='Open' || cur_frm.doc.status == 'Work In Progress')) { - cur_frm.add_custom_button(__('Maintenance Visit'), - this.make_maintenance_visit); + if ( + !cur_frm.doc.__islocal && + (cur_frm.doc.status == "Open" || + cur_frm.doc.status == "Work In Progress") + ) { + cur_frm.add_custom_button( + __("Maintenance Visit"), + this.make_maintenance_visit + ); } } make_maintenance_visit() { frappe.model.open_mapped_doc({ method: "erpnext.support.doctype.warranty_claim.warranty_claim.make_maintenance_visit", - frm: cur_frm - }) + frm: cur_frm, + }); } }; -extend_cscript(cur_frm.cscript, new erpnext.support.WarrantyClaim({frm: cur_frm})); - -cur_frm.fields_dict['serial_no'].get_query = (doc, cdt, cdn) => { - var cond = []; - var filter = [ - ['Serial No', 'docstatus', '!=', 2] - ]; - if(doc.item_code) { - cond = ['Serial No', 'item_code', '=', doc.item_code]; - filter.push(cond); - } - if(doc.customer) { - cond = ['Serial No', 'customer', '=', doc.customer]; - filter.push(cond); - } - return{ - filters:filter - } -} - -cur_frm.fields_dict['item_code'].get_query = (doc, cdt, cdn) => { - if(doc.serial_no) { - return{ - doctype: "Serial No", - fields: "item_code", - filters:{ - name: doc.serial_no - } - } - } - else{ - return{ - filters:[ - ['Item', 'docstatus', '!=', 2], - ['Item', 'disabled', '=', 0] - ] - } - } -}; +extend_cscript( + cur_frm.cscript, + new erpnext.support.WarrantyClaim({ frm: cur_frm }) +);