Script not working Script Include and UI Action in Change Request

win b
Mega Guru

Hi can you help me on this scenario wherein my Change Request when the state is on Scheduled my Script Include and UI Action should validate and cant proceed if my task is on Open, Pending, Closed State. Then when my state is on Review and i want to close the ticket upon clicking on the Close Button there should be a validation to check if my task Review is still Open or Close. If Open there should be a ErrorMessage and cant proceed to close then if its Closed it will proceed.

find_real_file.png
here is my code in Script Include where it supposed to be my checker for a Review Task if open but i always got false answer even though its correct.
find_real_file.png
here is my UI Action were i get the value from my Script Include

find_real_file.png
here is what i got false answer wherein its supposed to be true because my task Review type state is Open

find_real_file.png
here is my another ticket wherein my Review Task State is closed which is correct way i supposed to be expecting.

1 ACCEPTED SOLUTION

Hi,

update as this

hasActiveReview: function() {
	
	var ccrid = this.getParameter('sysparm_crid');
	var cctask = new GlideRecord('change_task');
	cctask.addActiveQuery();
	cctask.addQuery('change_request', ccrid);
	cctask.addQuery('change_task_type', 'review'); //check P.I.R. Task
	cctask.query();
    return cctask.hasNext();
	
},

UI Action

var hasActiveReviewAjax = new GlideAjax('ChangeRequestStateHandlerAjax');
hasActiveReviewAjax.addParam('sysparm_name', 'hasActiveReview');
hasActiveReviewAjax.addParam('sysparm_crid', g_form.getUniqueValue());
hasActiveReviewAjax.getXMLAnswer(function(answer){
	if(answer.toString() == 'true'){
		g_form.addErrorMessage('A Review task is still open');
	}
	else{
		gsftSubmit(null, g_form.getFormElement(), "state_model_move_to_closed");
	}
});

Regards
Ankur

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

View solution in original post

6 REPLIES 6

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

share both the scripts here.

Regards
Ankur

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

Hi @Ankur Bawiskar 
Sript Include:

hasActiveReview: function() {
        var ccrid = this.getParameter('sysparm_crid');

        var cctask = new GlideRecord('change_task');
        cctask.addActiveQuery();
        cctask.addQuery('change_request', ccrid);
        cctask.addQuery('change_task_type', 'review'); //check P.I.R. Task
        cctask.query();

        var result2 = {};
        result2 = 'false';
        
        gs.info('KACC' + JSON.stringify(cctask));
        gs.info('KACC2' + cctask.next());

        while (cctask.next()) {
            gs.addErrorMessage('A Review task is still open');
            result2 = 'true';
        }
        gs.info('KACC3 ' + JSON.stringify(result2));
        return JSON.stringify(result2);

UI Action:

var hasActiveReviewAjax = new GlideAjax('ChangeRequestStateHandlerAjax');
        hasActiveReviewAjax.addParam('sysparm_name', 'hasActiveReview');
        hasActiveReviewAjax.addParam('sysparm_crid', g_form.getUniqueValue());
        hasActiveReviewAjax.getXMLAnswer(function(answer2) {
            var ansr = JSON.parse(answer2);

            alert('ABBL '+JSON.stringify(ansr));
            if (ansr == false) {
                alert('ABBL2 '+ansr);
//                 gsftSubmit(null, g_form.getFormElement(), "state_model_move_to_closed");
            }

        });

Hi,

update as this

hasActiveReview: function() {
	
	var ccrid = this.getParameter('sysparm_crid');
	var cctask = new GlideRecord('change_task');
	cctask.addActiveQuery();
	cctask.addQuery('change_request', ccrid);
	cctask.addQuery('change_task_type', 'review'); //check P.I.R. Task
	cctask.query();
    return cctask.hasNext();
	
},

UI Action

var hasActiveReviewAjax = new GlideAjax('ChangeRequestStateHandlerAjax');
hasActiveReviewAjax.addParam('sysparm_name', 'hasActiveReview');
hasActiveReviewAjax.addParam('sysparm_crid', g_form.getUniqueValue());
hasActiveReviewAjax.getXMLAnswer(function(answer){
	if(answer.toString() == 'true'){
		g_form.addErrorMessage('A Review task is still open');
	}
	else{
		gsftSubmit(null, g_form.getFormElement(), "state_model_move_to_closed");
	}
});

Regards
Ankur

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

win b
Mega Guru

Hi @Ankur Bawiskar 
Sript Include:

hasActiveReview: function() {
        var ccrid = this.getParameter('sysparm_crid');

        var cctask = new GlideRecord('change_task');
        cctask.addActiveQuery();
        cctask.addQuery('change_request', ccrid);
        cctask.addQuery('change_task_type', 'review'); //check P.I.R. Task
        cctask.query();

        var result2 = {};
        result2 = 'false';
        
        gs.info('KACC' + JSON.stringify(cctask));
        gs.info('KACC2' + cctask.next());

        while (cctask.next()) {
            gs.addErrorMessage('A Review task is still open');
            result2 = 'true';
        }
        gs.info('KACC3 ' + JSON.stringify(result2));
        return JSON.stringify(result2);

UI Action:

var hasActiveReviewAjax = new GlideAjax('ChangeRequestStateHandlerAjax');
        hasActiveReviewAjax.addParam('sysparm_name', 'hasActiveReview');
        hasActiveReviewAjax.addParam('sysparm_crid', g_form.getUniqueValue());
        hasActiveReviewAjax.getXMLAnswer(function(answer2) {
            var ansr = JSON.parse(answer2);

            alert('ABBL '+JSON.stringify(ansr));
            if (ansr == false) {
                alert('ABBL2 '+ansr);
//                 gsftSubmit(null, g_form.getFormElement(), "state_model_move_to_closed");
            }

        });