Merge pull request #38394 from s-aga-r/FIX-38330
fix: `OperationalError` while selecting Serial No in `Warranty Claim`
diff --git a/erpnext/support/doctype/warranty_claim/warranty_claim.js b/erpnext/support/doctype/warranty_claim/warranty_claim.js
index 358768e..10cb37f 100644
--- a/erpnext/support/doctype/warranty_claim/warranty_claim.js
+++ b/erpnext/support/doctype/warranty_claim/warranty_claim.js
@@ -4,93 +4,67 @@
frappe.provide("erpnext.support");
frappe.ui.form.on("Warranty Claim", {
- setup: function(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);
+ 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.add_fetch('serial_no', 'item_code', 'item_code');
- frm.add_fetch('serial_no', 'item_name', 'item_name');
- frm.add_fetch('serial_no', 'description', 'description');
- frm.add_fetch('serial_no', 'maintenance_status', 'warranty_amc_status');
- frm.add_fetch('serial_no', 'warranty_expiry_date', 'warranty_expiry_date');
- frm.add_fetch('serial_no', 'amc_expiry_date', 'amc_expiry_date');
- frm.add_fetch('serial_no', 'customer', 'customer');
- frm.add_fetch('serial_no', 'customer_name', 'customer_name');
- frm.add_fetch('item_code', 'item_name', 'item_name');
- frm.add_fetch('item_code', 'description', 'description');
+ 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: function(frm) {
- if(!frm.doc.status) {
- frm.set_value('status', 'Open');
+
+ onload: (frm) => {
+ if (!frm.doc.status) {
+ frm.set_value("status", "Open");
}
},
- customer: function(frm) {
+
+ refresh: (frm) => {
+ frappe.dynamic_link = {
+ doc: frm.doc,
+ fieldname: "customer",
+ doctype: "Customer",
+ };
+
+ if (
+ !frm.doc.__islocal &&
+ ["Open", "Work In Progress"].includes(frm.doc.status)
+ ) {
+ frm.add_custom_button(__("Maintenance Visit"), () => {
+ frappe.model.open_mapped_doc({
+ method: "erpnext.support.doctype.warranty_claim.warranty_claim.make_maintenance_visit",
+ frm: frm,
+ });
+ });
+ }
+ },
+
+ customer: (frm) => {
erpnext.utils.get_party_details(frm);
},
- customer_address: function(frm) {
+
+ customer_address: (frm) => {
erpnext.utils.get_address_display(frm);
},
- contact_person: function(frm) {
+
+ contact_person: (frm) => {
erpnext.utils.get_contact_details(frm);
- }
+ },
});
-
-erpnext.support.WarrantyClaim = class WarrantyClaim extends frappe.ui.form.Controller {
- refresh() {
- 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);
- }
- }
-
- make_maintenance_visit() {
- frappe.model.open_mapped_doc({
- method: "erpnext.support.doctype.warranty_claim.warranty_claim.make_maintenance_visit",
- frm: cur_frm
- })
- }
-};
-
-extend_cscript(cur_frm.cscript, new erpnext.support.WarrantyClaim({frm: cur_frm}));
-
-cur_frm.fields_dict['serial_no'].get_query = function(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 = function(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]
- ]
- }
- }
-};
diff --git a/erpnext/support/doctype/warranty_claim/warranty_claim.json b/erpnext/support/doctype/warranty_claim/warranty_claim.json
index 01d9b01..9af2b46 100644
--- a/erpnext/support/doctype/warranty_claim/warranty_claim.json
+++ b/erpnext/support/doctype/warranty_claim/warranty_claim.json
@@ -92,7 +92,8 @@
"fieldname": "serial_no",
"fieldtype": "Link",
"label": "Serial No",
- "options": "Serial No"
+ "options": "Serial No",
+ "search_index": 1
},
{
"fieldname": "customer",
@@ -128,6 +129,8 @@
"options": "fa fa-ticket"
},
{
+ "fetch_from": "serial_no.item_code",
+ "fetch_if_empty": 1,
"fieldname": "item_code",
"fieldtype": "Link",
"in_list_view": 1,
@@ -140,6 +143,7 @@
},
{
"depends_on": "eval:doc.item_code",
+ "fetch_from": "item_code.item_name",
"fieldname": "item_name",
"fieldtype": "Data",
"label": "Item Name",
@@ -149,6 +153,7 @@
},
{
"depends_on": "eval:doc.item_code",
+ "fetch_from": "item_code.description",
"fieldname": "description",
"fieldtype": "Small Text",
"label": "Description",
@@ -164,17 +169,24 @@
"width": "50%"
},
{
+ "fetch_from": "serial_no.maintenance_status",
+ "fetch_if_empty": 1,
"fieldname": "warranty_amc_status",
"fieldtype": "Select",
"label": "Warranty / AMC Status",
- "options": "\nUnder Warranty\nOut of Warranty\nUnder AMC\nOut of AMC"
+ "options": "\nUnder Warranty\nOut of Warranty\nUnder AMC\nOut of AMC",
+ "search_index": 1
},
{
+ "fetch_from": "serial_no.warranty_expiry_date",
+ "fetch_if_empty": 1,
"fieldname": "warranty_expiry_date",
"fieldtype": "Date",
"label": "Warranty Expiry Date"
},
{
+ "fetch_from": "serial_no.amc_expiry_date",
+ "fetch_if_empty": 1,
"fieldname": "amc_expiry_date",
"fieldtype": "Date",
"label": "AMC Expiry Date"
@@ -225,6 +237,7 @@
{
"bold": 1,
"depends_on": "customer",
+ "fetch_from": "customer.customer_name",
"fieldname": "customer_name",
"fieldtype": "Data",
"in_global_search": 1,
@@ -366,7 +379,7 @@
"icon": "fa fa-bug",
"idx": 1,
"links": [],
- "modified": "2023-06-03 16:17:07.694449",
+ "modified": "2023-11-28 17:30:35.676410",
"modified_by": "Administrator",
"module": "Support",
"name": "Warranty Claim",