Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

How to create cancel request button on the service portal?

shahida1
Mega Contributor

I need to add cancel request button on the portal so that when a user click on it, it cancels the REQ Item and go to cancelled state. Can someone help me with code?

 

Thanks in advance

5 REPLIES 5

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

check these links

Cancel request from Service Portal

How can I add a Cancel button on Service Portal ?

Allow Users to Cancel their INC or RITM/REQ in Service Portal

Regards
Ankur

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

Hi Ankur,

I have followed the above link,now i could see cancel request button on portal,but when i click on it,it is not working.

  
<div class="panel panel-default">
 <div class="panel-heading">Actions</div>
 <div class="panel-body">
 <button type="button" name="cancel" class="btn btn-primary btn-question" ng-click="c.cancel()">Cancel Request</button>
 </div>

Server side

(function() {



data.showNoAction = true;


data.showResolve = false;


data.showReopen = false;


data.showCancel = false;


data.showClose = false;



// Get table & sys_id


data.table = input.table || $sp.getParameter("table");


data.sys_id = input.sys_id || $sp.getParameter("sys_id");



// Valid GlideRecord


var gr = new GlideRecord(data.table);


if (!gr.isValid())


return;



// Valid sys_id


if (!gr.get(data.sys_id))


return;



var closed = IncidentState.CLOSED;


var canceled = IncidentState.CANCELED;


var resolved = IncidentState.RESOLVED;


var newState = IncidentState.NEW;


var on_hold = IncidentState.ON_HOLD;


var awaiting_caller = IncidentReason.AWAITING_CALLER;


var active = gr.active;


var state = gr.getValue('state');


var reason = gr.getValue('hold_reason');



if (state == resolved) {


data.showReopen = true;


data.showClose = true;


data.showNoAction = false;


}



if (state == newState || state == on_hold && reason == awaiting_caller) {


data.showResolve = true;


data.showCancel = true;


data.showNoAction = false;


}



if (input && input.action) {


var action = input.action;



// If Incident table


if (data.table == 'sc_req_item') {



if (action == 'resolve') {


// Resolve Incident


gr.setValue('state', resolved);


gr.setValue('state', resolved);


gr.setValue('resolved_by', gs.getUserID());


gr.update();


}



if (action == 'reopen') {


// Reopen Incident


gr.setValue('state', newState);


gr.setValue('state', newState);


gr.update();


}



if (action == 'close') {


// Close Incident


gr.setValue('state', closed);


gr.setValue('state', closed);


gr.update();


}



if (action == 'cancel') {


// Cancel Incident


gr.setValue('state', canceled);


gr.setValue('state', canceled);


gr.update();


}


}


}



})();


</div>

 

client side

function() {

var c = this;

c.uiAction = function(action) {

c.data.action = action;

c.server.update().then(function() {

c.data.action = undefined;

})

}

}

Hi,

Are there any mandatory fields which needs to be set when you cancel the REQ?

Did you try adding logs in server side?

Regards
Ankur

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

There are no any mandatory fields.

I didn't adding logs