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.

Due date should not be less than 24 hrs from current date on a catalog variable.

Madicherla Sri1
Tera Contributor

The date field should not allow users to fill less than 24 hrs from the current date and it should follow a defined schedule 

For example Schedule: Mon-Fri (8:00-19:00)Business hours

it should throw an error if the date is less than 24 hrs or out of business hours.

Looking for help.

Thanks in advance

 

1 ACCEPTED SOLUTION

Hi,

is script include client callable?

is the function being called properly?

share logs for this

var ajaxDateDiff = Class.create();
ajaxDateDiff.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    check5Days: function () {
        var answer;
        var valid = new GlideDateTime();
        valid.setDisplayValue(this.getParameter('sysparm_date'));
        
        gs.info('User value->' + valid);
        
        var schedule = new GlideSchedule('377f5e51db2e851040d8176a489619cc');
        var inSchedule = schedule.isInSchedule(valid);
        gs.info("Is in schedule->" + inSchedule);
        if (!inSchedule)
        {
            answer = 'false';
        }
        else
        {
            answer = 'true';
        }
        return answer;
    },

});

Regards
Ankur

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

View solution in original post

21 REPLIES 21

Hi Ankur,

I have tried this code but the code is not moving forward from this below lineyou please suggest.

---->>>>>var inSchedule = schedule.isInSchedule(valid);
gs.log('out of hours3'+inSchedule);

 

 

var outofbussHours = Class.create();
outofbussHours.prototype = Object.extendsObject(AbstractAjaxProcessor, {
checkDays: function() {

var answer = "";
var valid = this.getParameter('sysparm_date');
valid.setDisplayValue(this.getParameter('sysparm_date'));
gs.log('out of hours1'+valid);
var schedule = new GlideSchedule();
schedule.get("377f5e51db2e851040d8176a489619cc");
gs.log('out of hours2'+schedule);
//var schedule = new GlideSchedule('377f5e51db2e851040d8176a489619cc');
>>>>>var inSchedule = schedule.isInSchedule(valid);
gs.log('out of hours3'+inSchedule);
if (!inSchedule)
{
answer = true;
} else {
answer = false;
}
return answer;
},

});

Hi,

did you check what came in logs?

use gs.info()

var ajaxDateDiff = Class.create();
ajaxDateDiff.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    check5Days: function () {
        var answer;
        var valid = new GlideDateTime();
        valid.setDisplayValue(this.getParameter('sysparm_date'));
        var schedule = new GlideSchedule('377f5e51db2e851040d8176a489619cc');
        var inSchedule = schedule.isInSchedule(valid);
        gs.info("Is in schedule->" + inSchedule);
        if (!inSchedule)
        {
            answer = 'false';
        }
        else
        {
            answer = 'true';
        }
        return answer;
    },

});

what came in alert in Ajax?

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

    if(oldValue != newValue){
        // Call the script include to do the date check
        var ga = new GlideAjax('ajaxDateDiff');
        ga.addParam('sysparm_name', 'check5Days');
        ga.addParam('sysparm_date', newValue);
        ga.getXML(ValidateDateResponse);
    }
}

function ValidateDateResponse(response) {
    var answer = response.responseXML.documentElement.getAttribute("answer");
    alert(answer);
    if (answer == "false") {
        g_form.addErrorMsg('termineingabe', "The date/time you entered is an invalid format, the current date or after the current date", 'error');
        g_form.setValue('termineingabe', "");
    }
}

Regards
Ankur

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

Hi Ankur,

 

No logs were found for line in ajax.

----> gs.info("Is in schedule->" + inSchedule);

 

In On change client script

alert(answer) is returning null in pop up

means answer is not passing correctly from the ajax.

function ValidateDateResponse(response) {
    var answer = response.responseXML.documentElement.getAttribute("answer");
  ----->>  alert(answer);
    if (answer == "false") {
        g_form.addErrorMsg('termineingabe', "The date/time you entered is an invalid format, the current date or after the current date", 'error');
        g_form.setValue('termineingabe', "");
    }
}

Hi,

is script include client callable?

is the function being called properly?

share logs for this

var ajaxDateDiff = Class.create();
ajaxDateDiff.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    check5Days: function () {
        var answer;
        var valid = new GlideDateTime();
        valid.setDisplayValue(this.getParameter('sysparm_date'));
        
        gs.info('User value->' + valid);
        
        var schedule = new GlideSchedule('377f5e51db2e851040d8176a489619cc');
        var inSchedule = schedule.isInSchedule(valid);
        gs.info("Is in schedule->" + inSchedule);
        if (!inSchedule)
        {
            answer = 'false';
        }
        else
        {
            answer = 'true';
        }
        return answer;
    },

});

Regards
Ankur

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

Hi Ankur,

please find the screenshots of logs

gs.log('user value->' + valid);

valid is returning the date selected by user on field.

yes, script include is client callable and function is called properly.

Code:

var outofbussHours = Class.create();
outofbussHours.prototype = Object.extendsObject(AbstractAjaxProcessor, {
checkDays: function() {
var answer = "";
var valid = this.getParameter('sysparm_date');
valid.setDisplayValue(this.getParameter('sysparm_date'));
gs.log('user value->' + valid);
var schedule = new GlideSchedule('377f5e51db2e851040d8176a489619cc');
//schedule.get("377f5e51db2e851040d8176a489619cc");
gs.log('schedule selected->' + schedule);
//var schedule = new GlideSchedule('377f5e51db2e851040d8176a489619cc');
var inSchedule = schedule.isInSchedule(valid);
--> gs.log('Is in schedule->' + inSchedule); //No logs were found
if (!inSchedule) {
answer = false;

} else {
answer = true;
}

return answer;
},

});

 

find_real_file.png

 

find_real_file.png

find_real_file.png

 

find_real_file.png