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.

on submit client script

tushar_ghadage
Tera Contributor

Hi All, 

if some tries to resolve (using an Ui action) the problem record and if there are open problem task records, I want to restrict that and keep the state in fix in progress state only.

 

I am trying this using on submit client script and not business rule because when I try to resolve it state will temporarily move to resolve state but when I refresh it, it will move back to fix in progress. and I don't want that. nor did the client. 

 

so here is the script below -

client script - on submit 

function onSubmit() {
    // Check if state is changing to "Resolved"
    var state = g_form.getValue('state');
    if (state == '106') {
        var problemSysId = g_form.getUniqueValue();

        var ga = new GlideAjax('CheckOpenProblemTasks');
        ga.addParam('sysparm_name', 'hasOpenTasks');
        ga.addParam('sysparm_problem_sys_id', problemSysId);

        ga.getXMLAnswer(function(response) {
            if (response === 'true') {
                g_form.addErrorMessage('There are active Problem Tasks. These need to be closed before resolving the Problem');
                return false;
            } else {
                return true;
            }
        });

        //return false; // Stop default submit until GlideAjax completes
    }

    return true; // Allow submit if not resolving
}
 
script include - 
var CheckOpenProblemTasks = Class.create();
CheckOpenProblemTasks.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    hasOpenTasks: function() {
        var problemSysId = this.getParameter('sysparm_problem_sys_id');
        var gr = new GlideRecord('problem_task');
        gr.addQuery('problem',current.getUniqueValue());
        gr.addActiveQuery(true);
        gr.query();

        if (gr.hasNext()) {
            return 'true';
        }
        return 'false';
    }
}); 
 
but here something seems to be missing as when I try to resolve the problem even when there are active p Task it will get resolved and state will move ahead.
 
please do correct ..
 
thanks 
15 REPLIES 15

it's the OOTB Ui action and with the business rule i am facing an issue as i mentioned above where state will move to resolve and then after reloading the state will move back to fix in progress

( also i tried with script as well its happening the same too here also ) i want to keep the state on the fix in progress it self and not move ahead to resolve at all .. if there are multiple ptask open ..