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