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.

client script and script include

Shiv Dahe
Tera Expert

I want to restrict user from submitting duplicate time card (time_card) and considering three parameters to validate the same

1. week_starts_on

2. user

3. task

if all three parameters matches with an existing record user should not be able to submit the request.

 

I have written an onChange client script to validate it but it is not working.

on alert it is showing "null"

 

Client Script

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }
    alert(g_form.getDisplayValue('week_starts_on'));
    var dup = new GlideAjax('global.duplicate_time_sheet');
    dup.addParam('sysparm_name', 'checkPrerequisite');
    dup.addParam('sysparm_week', g_form.getDisplayValue('week_starts_on'));
    dup.addParam('sysparm_task', g_form.getValue('task'));
    dup.addParam('sysparm_user', g_form.getValue('user'));

    dup.getXMLAnswer(getResponse);

    function getResponse(response) {
        var res = JSON.parse(response);
        alert(res);
        if (res == 'duplicate') {
            alert('Duplicate dont submit');
        } else if (res == 'not_duplicate') {
            alert('Submit the form');
        }

        //Type appropriate comment here, and begin script below

    }
}
 
 
 
Script Include
 
var duplicate_time_sheet = Class.create();
duplicate_time_sheet.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    checkPrerequisite: function() {
        // var hy = this.getParameter(current);
        var time = this.getParameter(sysparm_week);
        var task = this.getParameter(sysparm_task);
        var user = this.getParameter(sysparm_user);
        var sd = "week_starts_onON" + time + "@javascript:gs.dateGenerate('" + time + "','start')@javascript:gs.dateGenerate('" + time + "','end')";

        var gr = new GlideRecord('time_card');

        gr.addEncodedQuery(sd + "^task" + task + "^user" + user);

        gr.query();
        if (gr.next()) {
            //alert('duplicate Entry');
            return 'duplicate';
        } else {
            return 'not_duplicate';
        }
    },
    type: 'duplicate_time_sheet'
});

 

//Client Script
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }
    alert(g_form.getDisplayValue('week_starts_on'));
    var dup = new GlideAjax('global.duplicate_time_sheet');
    dup.addParam('sysparm_name', 'checkPrerequisite');
    dup.addParam('sysparm_week', g_form.getDisplayValue('week_starts_on'));
    dup.addParam('sysparm_task', g_form.getValue('task'));
    dup.addParam('sysparm_user', g_form.getValue('user'));

    dup.getXMLAnswer(getResponse);

    function getResponse(response) {
        var res = JSON.parse(response);
		alert(res);
        if (res == 'duplicate') {
            alert('Duplicate dont submit');
        } else if (res == 'not_duplicate') {
            alert('Submit the form');
        }

        //Type appropriate comment here, and begin script below

    }
}



//Script Include
var duplicate_time_sheet = Class.create();
duplicate_time_sheet.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    checkPrerequisite: function() {
        // var hy = this.getParameter(current);
        var time = this.getParameter(sysparm_week);
        var task = this.getParameter(sysparm_task);
        var user = this.getParameter(sysparm_user);
        var sd = "week_starts_onON" + time + "@javascript:gs.dateGenerate('" + time + "','start')@javascript:gs.dateGenerate('" + time + "','end')";

        var gr = new GlideRecord('time_card');

        gr.addEncodedQuery(sd + "^task" + task + "^user" + user);

        gr.query();
        if (gr.next()) {
            //alert('duplicate Entry');
            return 'duplicate';
        } else {
            return 'not_duplicate';
        }
    },
    type: 'duplicate_time_sheet'
});​

 

2 ACCEPTED SOLUTIONS

Voona Rohila
Mega Patron
Mega Patron

Hi @Shiv Dahe 

Remove the parse statement from the client script and try.

  var res = JSON.parse(response);

 


Mark it helpful if this helps you to understand. Accept solution if this give you the answer you're looking for
Kind Regards,
Rohila V
2022-25 ServiceNow Community MVP

View solution in original post

Shiv Dahe
Tera Expert

Thanks, it worked

Corrected solution:

//Client Script
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }

    var dup = new GlideAjax('global.duplicate_time_sheet');
    dup.addParam('sysparm_name', 'checkPrerequisite');
    dup.addParam('sysparm_week', g_form.getDisplayValue('week_starts_on'));
    dup.addParam('sysparm_task', g_form.getValue('task'));
    dup.addParam('sysparm_user', g_form.getValue('user'));

    dup.getXMLAnswer(getResponse);

    function getResponse(response) {
        var res = response;
        if (res == 'duplicate') {
            alert('Duplicate dont submit');
        } else if (res == 'not_duplicate') {
            alert('Submit the form');
        }

        //Type appropriate comment here, and begin script below

    }
}


//Script Include
var duplicate_time_sheet = Class.create();
duplicate_time_sheet.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    checkPrerequisite: function() {
        var time = this.getParameter('sysparm_week');
        var task = this.getParameter('sysparm_task');
        var user = this.getParameter('sysparm_user');
        var sd = "week_starts_onON" + time + "@javascript:gs.dateGenerate('" + time + "','start')@javascript:gs.dateGenerate('" + time + "','end')";
        var gr = new GlideRecord('time_card');

        gr.addEncodedQuery(sd + "^task=" + task + "^user=" + user);

        gr.query();
        if (gr.next()) {
            //alert('duplicate Entry');
            return 'duplicate';
        } else {
            return 'not_duplicate';
        }
    },
    type: 'duplicate_time_sheet'
});

 

View solution in original post

2 REPLIES 2

Voona Rohila
Mega Patron
Mega Patron

Hi @Shiv Dahe 

Remove the parse statement from the client script and try.

  var res = JSON.parse(response);

 


Mark it helpful if this helps you to understand. Accept solution if this give you the answer you're looking for
Kind Regards,
Rohila V
2022-25 ServiceNow Community MVP

Shiv Dahe
Tera Expert

Thanks, it worked

Corrected solution:

//Client Script
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }

    var dup = new GlideAjax('global.duplicate_time_sheet');
    dup.addParam('sysparm_name', 'checkPrerequisite');
    dup.addParam('sysparm_week', g_form.getDisplayValue('week_starts_on'));
    dup.addParam('sysparm_task', g_form.getValue('task'));
    dup.addParam('sysparm_user', g_form.getValue('user'));

    dup.getXMLAnswer(getResponse);

    function getResponse(response) {
        var res = response;
        if (res == 'duplicate') {
            alert('Duplicate dont submit');
        } else if (res == 'not_duplicate') {
            alert('Submit the form');
        }

        //Type appropriate comment here, and begin script below

    }
}


//Script Include
var duplicate_time_sheet = Class.create();
duplicate_time_sheet.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    checkPrerequisite: function() {
        var time = this.getParameter('sysparm_week');
        var task = this.getParameter('sysparm_task');
        var user = this.getParameter('sysparm_user');
        var sd = "week_starts_onON" + time + "@javascript:gs.dateGenerate('" + time + "','start')@javascript:gs.dateGenerate('" + time + "','end')";
        var gr = new GlideRecord('time_card');

        gr.addEncodedQuery(sd + "^task=" + task + "^user=" + user);

        gr.query();
        if (gr.next()) {
            //alert('duplicate Entry');
            return 'duplicate';
        } else {
            return 'not_duplicate';
        }
    },
    type: 'duplicate_time_sheet'
});