other than prompt what can be used to display a pop up in widget which should be non mandatory

Tabassum1
Tera Contributor

I have Approve button for Demand, so when we click on the button it should display a pop up. Approvers should have the option to add comments when approving, but this should remain optional (not mandatory). Th Approve button is implemented in a widget.

12 REPLIES 12

Can you please let me know how that can be achieved(code) but within the same widget

@Tabassum1 

these links have solution to make it mandatory, ensure you don't do mandatory check

How to make additional comments mandatory on Employee Center when reopen button is clicked? 

ReOpen Incident Option on Service portal for end users. 

make comments mandatory when reopen incident from portal 

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Tabassum1
Tera Contributor

Client controller code :

 

function ($scope, spUIActionsExecuter, spUtil, spModal) {
    var c = this;
   
    var ESIGNATURE = {
        "approved": "cbfe291147220100ba13a5554ee4904d",
        "rejected": "580f711147220100ba13a5554ee4904b"
    };
   
    spUtil.recordWatch($scope, "sysapproval_approver", "state=requested^sys_id="+ c.data.sys_id);

    c.action = function(state) {
        if(c.data.esignature.e_sig_required) {
            var requestParams = {
                username: c.data.esignature.username,
                userSysId: c.data.esignature.userSysId
            };
            spUIActionsExecuter.executeFormAction(ESIGNATURE[state], "sysapproval_approver" , c.data.sys_id, [] , "", requestParams).then(function(response) {
                });
        } else if(state == 'rejected') {
           
            if (c.data.no_comment_rejection == 'true')
    {
        c.data.op = state;
                c.server.update().then(function() {
                    if (!c.data.updateID) // update failed
                        spUtil.addErrorMessage(c.data.actionPreventedMsg);
                    else
                        c.data.state = state;
                        });
    }  
            else
                {
                if (c.data.reject_raison_label)
                    {
                        var shared ={};
             spModal.open({
        title: 'Rejection',
                widget:'reject_raison',
                keyboard: false,
                widgetInput : {label:c.data.reject_raison_label,options: c.data.reject_raison_options},
                shared:shared
    }).then(function() {
             if (shared.select=='' || shared.select==null)
                     {
                 spModal.alert(task.reject_raison_label +' mandatory')
                     }
                 else
                     {
            c.data.comments = shared.select+'';
            c.data.op = state;
            c.data.reject_raison = 'true';                  
        c.server.update().then(function() {
                    if (!c.data.updateID) // update failed
                        spUtil.addErrorMessage(c.data.actionPreventedMsg);
                    else
                        c.data.state = state;
                        });
                     }
             }
                 );
             
                    }
            else
                {          
                    spModal.prompt("Please enter reason for rejection").then(function(rejectReason)
             {
                        c.data.comments = rejectReason;
                        c.data.op = state;
                c.server.update().then(function() {
                    if (!c.data.updateID) // update failed
                        spUtil.addErrorMessage(c.data.actionPreventedMsg);
                    else
                        c.data.state = state;
                        });

                });        
                    }
        }
        }  
           
        else if(state == 'approved') {
                c.data.op = state;
                c.server.update().then(function() {
                    if (!c.data.updateID) // update failed
                        spUtil.addErrorMessage(c.data.actionPreventedMsg);
                    else
                        c.data.state = state;
                        });
                }      
                   
                       
                   
   
   
}
}
 
 
servcer script : 
 
(function() {
    data.actionPreventedMsg = gs.getMessage("Update failed");
    data.itemflag=0;

    var gr = $sp.getRecord();
    if (gr == null || !gr.isValid()) {
        data.isValid = false
        return;
    }
    var item_name=gr.sysapproval.cat_item;

    if ((typeof gr.sysapproval.variables.reject_raison)=='object')
        {
            var varia = new GlideRecord('sc_item_option_mtom');
            varia.addQuery('request_item',gr.sysapproval.sys_id+'');
            varia.addQuery('sc_item_option.item_option_new.name','reject_raison');
            varia.setLimit(1);
            varia.query();
            varia.next();
            data.reject_raison_label = varia.sc_item_option.item_option_new.question_text.getDisplayValue();
            data.reject_raison_options = [];
            var grQC = new GlideRecord('question_choice');
            grQC.addEncodedQuery("question="+varia.sc_item_option.item_option_new.sys_id);
            grQC.orderBy('order');
            grQC.query();
        while (grQC.next()) {
        var choice = {};
        choice.order = grQC.getValue('order');
        choice.text = grQC.text.getDisplayValue();
        choice.value = grQC.getValue('value');
        data.reject_raison_options.push(choice);
}
       
        }
   
   
   
   
    data.isValid = true;
    data.isMine = isApprovalMine(gr);
//Orlando   var userApprovalAccess = gs.hasRole("approval_admin") || (gs.hasRole("approver_user") && data.isMine);
   
    var approverDisplay = gr.approver.getDisplayValue();
    if (!data.isMine && approverDisplay)
        data.approverDisplay = approverDisplay;
   
    if (approverDisplay) {
        data.approvedMsg = gs.getMessage("Approved by {0}", approverDisplay);
        data.rejectedMsg = gs.getMessage("Rejected by {0}", approverDisplay);
    } else {
        data.approvedMsg = gs.getMessage("Approved");
        data.rejectedMsg = gs.getMessage("Rejected");
    }
   
    if (input && input.op ){ //Orlando && userApprovalAccess) {
       
            if(input.reject_raison =='true'){      
        var grreject = new GlideRecord('sc_item_option_mtom');
            grreject.addQuery('request_item',gr.sysapproval+'');
            grreject.addQuery('sc_item_option.item_option_new.name','reject_raison');
            grreject.setLimit(1);
            grreject.query();
            grreject.next();
       
        var grvalue = new GlideRecord('sc_item_option');
        grvalue.get(grreject.sc_item_option);
        grvalue.setValue('value',input.comments);
        grvalue.update();                  
    }
       
        gr.state = input.op;
        if (input.comments){
        gr.comments = input.comments;
        }
        data.updateID = gr.update();
        if (GlideStringUtil.nil(data.updateID)) {
            // update failed so fetch again for correct values
            gr = $sp.getRecord();
        }
        data.op = "";
    }

    var fields = $sp.getFields(gr, 'sysapproval,state,sys_created_on');

    if (gr.sys_mod_count > 0)
        fields.push($sp.getField(gr, 'sys_updated_on'));

    data.fields = fields;
    data.state = gr.state.toString();
    data.no_comment_rejection = gr.sysapproval.cat_item.u_no_comment_rejection+'';
    data.sys_updated_on = gr.sys_updated_on.toString();
    data.sys_id = gr.getUniqueValue();
    data.table = gr.getTableName();
    data.label = getRecordBeingApproved(gr).getLabel();
    data.esignature = {
        username:  gs.getUserName(),
        userSysId: gs.getUserID(),
        e_sig_required: checkESig(gr)
};
    function checkESig(approvalGR) {
        var esigRegistryGR = new GlideRecord("e_signature_registry");
        if (!esigRegistryGR.isValid())
            return false;
       
        var table = approvalGR.getValue("source_table");
        if (!table)
            table = approvalGR.sysapproval.sys_class_name;
        if (!table)
            return false;
       
        esigRegistryGR.addQuery("enabled", "true");
        esigRegistryGR.addQuery("table_name", table);
        esigRegistryGR.query();
        return esigRegistryGR.hasNext();
    }
   
    function getRecordBeingApproved(gr) {
        if (!gr.sysapproval.nil())
            return gr.sysapproval.getRefRecord();

        return gr.document_id.getRefRecord();
    }
})();