Document not saved on quick entry of Issue in Support Management. How to Fix it?

  1. This is the quick entry form When trying to add issue and save.

image

  1. But when the same issue is opened after some time. It displays “Not Saved”. Is this a bug?

image

Hi @Prasant_Pant,

Does any type of client script apply on the issue doctype or not?

yes applied. @NCP

Share your code.

I think, the refresh event runs every time, so not save option show in your issue doctype.

@NCP

var count = 0;

frappe.ui.form.on('Issue', {
    
	after_save:function(frm) {
	     
	   if(frm.doc.status === "Open" || frm.doc.status === "Replied" || frm.doc.status === "On Hold" || frm.doc.status === "Resolved"){
	        count = 0;
	         frappe.call({
                    method: 'frappe.client.set_value',
                    args: {
                        doctype: frm.doc.doctype,
                        name: frm.doc.name,
                        fieldname: 'starting_date',
                        value:frm.doc.opening_date+ " "+ frm.doc.opening_time
                    },
            callback: function(response) {
                if (response.message) {
                  console.log("Starting date updated successfully!");
                   // frm.set_value('starting_date', frm.doc.opening_date+ " "+ frm.doc.opening_time);
                 frm.reload_doc();
                } else {
                  console.log("Failed to update starting date.");
                }
              }
             });
             
	       
	   }
           


		if(frm.doc.status === "Closed" && count === 0){
		    
               // frm.set_value('resolution_date', frappe.datetime.now_datetime());
               //frm.set_value('starting_date', frm.doc.opening_date+ " "+ frm.doc.opening_time);
             
             frappe.call({
                    method: 'frappe.client.set_value',
                    args: {
                        doctype: frm.doc.doctype,
                        name: frm.doc.name,
                        fieldname: 'resolution_date',
                        value:frappe.datetime.now_datetime()
                    },
            callback: function(response) {
                if (response.message) {
                  console.log("Resolution date updated successfully!");
                   // frm.set_value('starting_date', frm.doc.opening_date+ " "+ frm.doc.opening_time);
                 frm.reload_doc();
                } else {
                  console.log("Failed to update resolution date.");
                }
              }
             });
             
               
                 
         
        
                

      
           }
           var delayTime = 1000;
           
           setTimeout(function() {
           
                     if(frm.doc.starting_date && frm.doc.resolution_date){
                         
                         var closed_date = frm.doc.resolution_date;
                var opened_date = frm.doc.starting_date;
                var new_closedDate = new Date(closed_date);
                var new_openedOpened = new Date(opened_date);
       
                
                
                 var timeDifference = new_closedDate.getTime() - new_openedOpened.getTime();
              
                 
                 var days = Math.floor(timeDifference / (1000 * 3600 * 24));
                 var hours = Math.floor((timeDifference % (1000 * 3600 * 24)) / (1000 *60*60));
                 var mins = Math.floor((timeDifference % (1000 * 60 * 60)) / (1000 *60));
                 var secs =Math.floor((timeDifference % (1000 * 60 )) / (1000 ));
                 
                         frappe.call({
                                method: 'frappe.client.set_value',
                                args: {
                                    doctype: frm.doc.doctype,
                                    name: frm.doc.name,
                                    fieldname: 'work_duration_',
                                    value:days + " "+ hours + ":"+mins+":"+secs
                                },
                        callback: function(response) {
                            if (response.message) {
                              console.log("success!");
                                //frm.set_value('starting_date', frm.doc.opening_date+ " "+ frm.doc.opening_time);
                           frm.reload_doc();
                            } else {
                              console.log("Failed.");
                            }
                          }
                         });}},delayTime);
                         
             
             
           
        },
        
   
        onload:function(frm){
   
	    
            	var fields = frm.fields_dict;
		
        if(frm.doc.status == "Closed" ){
          
           
        
            for (var fieldname in fields) {
            // Set all fields as read-only except for the specific field
                if (fieldname !== 'status') {
                   frm.set_df_property(fieldname, 'read_only', 1);
                    
                }
            }
        }
     
    
            
        },
        
         timeline_refresh:function(frm){
              if(frm.doc.status == "Open") {

                     frm.set_value('starting_date', frm.doc.opening_date+ " "+ frm.doc.opening_time); 
                     count = 0;
                   
             }
           
            
             if(frm.doc.status == "Closed" ){
                 count = 1;
            if(frm.doc.resolution_date === undefined){
                
                  frappe.call({
                                method: 'frappe.client.set_value',
                                args: {
                                    doctype: frm.doc.doctype,
                                    name: frm.doc.name,
                                    fieldname: 'resolution_date',
                                    value:frm.doc.opening_date+ " "+ frm.doc.opening_time
                                },
                        callback: function(response) {
                            if (response.message) {
                              console.log("success!");
                                //frm.set_value('starting_date', frm.doc.opening_date+ " "+ frm.doc.opening_time);
                          frm.reload_doc();
                            } else {
                              console.log("Failed.");
                            }
                          }
                         });
                 
            }}
        },
	refresh:function(frm){
	    
	        
            
	    if(frm.doc.opened_by === undefined){
	    frappe.call({
            method: 'frappe.client.get_value',
            args: {
                doctype: 'User',
                filters: { name: frappe.session.user },
                fieldname: 'full_name'
            },
            callback: function(response) {
                var full_name = response.message.full_name;

                // Set the value to a field
                frm.set_value('opened_by', full_name);
                frm.set_df_property('opened_by', 'read_only', 1);
                
            }
        });}
	},
		status:function(frm){
		    
		var fields = frm.fields_dict;
		
        if(frm.doc.status == "Closed"){
            
        // Iterate through the fields
            for (var fieldname in fields) {
            // Set all fields as read-only except for the specific field
                if (fieldname !== 'status') {
                   frm.set_df_property(fieldname, 'read_only', 1);
                    
                }
            }
        }
        else{
            
            for (var fieldname2 in fields) {
            // Set all fields as read-only 0 except for the specific field
                if(fieldname2 == 'opening_date' || fieldname2 == 'opening_time' || fieldname2 == "opened_by"){
                   frm.set_df_property(fieldname2, 'read_only', 1)}
                else{
                    frm.set_df_property(fieldname2, 'read_only', 0)
                }
                    
            }
        }
		
		 //if(frm.doc.closed_by === undefined){
	    frappe.call({
            method: 'frappe.client.get_value',
            args: {
                doctype: 'User',
                filters: { name: frappe.session.user },
                fieldname: 'full_name'
            },
            callback: function(response) {
                var full_name = response.message.full_name;

                // Set the value to a field
                frm.set_value('closed_by', full_name);
                frm.set_df_property('closed_by', 'read_only', 1);
            }
        });//}
	}
	
})


Hi @Prasant_Pant,

Hmm code is too long, I didn’t catch it in a short time but unnecessary content i removed so please try it.

frappe.ui.form.on('Issue', {
    after_save: function(frm) {
        if (frm.doc.status === "Open" || frm.doc.status === "Replied" || frm.doc.status === "On Hold" || frm.doc.status === "Resolved") {
            if (!frm.doc.starting_date) {
                frappe.call({
                    method: 'frappe.client.set_value',
                    args: {
                        doctype: frm.doc.doctype,
                        name: frm.doc.name,
                        fieldname: 'starting_date',
                        value: frm.doc.opening_date + " " + frm.doc.opening_time
                    },
                    callback: function(response) {
                        if (response.message) {
                            console.log("Starting date updated successfully!");
                        } else {
                            console.log("Failed to update starting date.");
                        }
                    }
                });
            }
        }

        if (frm.doc.status === "Closed" && !frm.doc.resolution_date) {
            frappe.call({
                method: 'frappe.client.set_value',
                args: {
                    doctype: frm.doc.doctype,
                    name: frm.doc.name,
                    fieldname: 'resolution_date',
                    value: frappe.datetime.now_datetime()
                },
                callback: function(response) {
                    if (response.message) {
                        console.log("Resolution date updated successfully!");
                    } else {
                        console.log("Failed to update resolution date.");
                    }
                }
            });
        }

        var delayTime = 1000;
        setTimeout(function() {
            if (frm.doc.starting_date && frm.doc.resolution_date) {
                var closed_date = frm.doc.resolution_date;
                var opened_date = frm.doc.starting_date;
                var new_closedDate = new Date(closed_date);
                var new_openedOpened = new Date(opened_date);

                var timeDifference = new_closedDate.getTime() - new_openedOpened.getTime();

                var days = Math.floor(timeDifference / (1000 * 3600 * 24));
                var hours = Math.floor((timeDifference % (1000 * 3600 * 24)) / (1000 * 60 * 60));
                var mins = Math.floor((timeDifference % (1000 * 60 * 60)) / (1000 * 60));
                var secs = Math.floor((timeDifference % (1000 * 60)) / 1000);

                frappe.call({
                    method: 'frappe.client.set_value',
                    args: {
                        doctype: frm.doc.doctype,
                        name: frm.doc.name,
                        fieldname: 'work_duration_',
                        value: days + " " + hours + ":" + mins + ":" + secs
                    },
                    callback: function(response) {
                        if (response.message) {
                            console.log("Work duration updated successfully!");
                        } else {
                            console.log("Failed to update work duration.");
                        }
                    }
                });
            }
        }, delayTime);
    },

    onload: function(frm) {
        if (frm.doc.status === "Closed") {
            frm.set_df_property('status', 'read_only', 1);
        } else {
            frm.set_df_property('status', 'read_only', 0);
        }
    },

    timeline_refresh: function(frm) {
        if (frm.doc.status === "Open") {
            frm.set_value('starting_date', frm.doc.opening_date + " " + frm.doc.opening_time);
        }

        if (frm.doc.status === "Closed" && !frm.doc.resolution_date) {
            frappe.call({
                method: 'frappe.client.set_value',
                args: {
                    doctype: frm.doc.doctype,
                    name: frm.doc.name,
                    fieldname: 'resolution_date',
                    value: frm.doc.opening_date + " " + frm.doc.opening_time
                },
                callback: function(response) {
                    if (response.message) {
                        console.log("Resolution date updated successfully!");
                    } else {
                        console.log("Failed to update resolution date.");
                    }
                }
            });
        }
    },

    refresh: function(frm) {
        if (!frm.doc.opened_by) {
            frappe.call({
                method: 'frappe.client.get_value',
                args: {
                    doctype: 'User',
                    filters: { name: frappe.session.user },
                    fieldname: 'full_name'
                },
                callback: function(response) {
                    var full_name = response.message.full_name;
                    frm.set_value('opened_by', full_name);
                    frm.set_df_property('opened_by', 'read_only', 1);
                }
            });
        }

        frappe.call({
            method: 'frappe.client.get_value',
            args: {
                doctype: 'User',
                filters: { name: frappe.session.user },
                fieldname: 'full_name'
            },
            callback: function(response) {
                var full_name = response.message.full_name;
                frm.set_value('closed_by', full_name);
                frm.set_df_property('closed_by', 'read_only', 1);
            }
        });
    },

    status: function(frm) {
        if (frm.doc.status === "Closed") {
            frm.set_df_property('status', 'read_only', 1);
        } else {
            frm.set_df_property('status', 'read_only', 0);
        }
    }
});

Then reload and check it.

Thank You!