Skip to main content

Date vetting: start/end dates not in past, start date must be <=end date


onchange catalog client script code:

start date 'access_from' variable:
function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
    var ga = new GlideAjax('servicerequest_ajax');
    ga.addParam('sysparm_name', 'validate_fromto_dates');
    ga.addParam('sysparm_startdate',newValue);
    ga.addParam('sysparm_date_entered',newValue);
    ga.addParam('sysparm_enddate',g_form.getValue('access_to'));
    ga.getXMLAnswer(function(answer) {
        //alert(answer);
        var res=answer.split(':');
       
        if (res[1]!="OK" ){
            alert('Check dates--' + res[1]);
            g_form.setValue('access_from', '');
            return false;
        }
    });
   

}
end date 'access_to' variable:
function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
   
    var ga = new GlideAjax('servicerequest_ajax');
    ga.addParam('sysparm_name', 'validate_fromto_dates');
    ga.addParam('sysparm_enddate',newValue);
    ga.addParam('sysparm_date_entered',newValue);
    ga.addParam('sysparm_startdate',g_form.getValue('access_from'));
    ga.getXMLAnswer(function(answer) {
        //alert(answer);
        var res=answer.split(':');
       
        if (res[1]!="OK" ){
            alert('Check dates--'+res[1]);
            g_form.setValue('access_to', '');
            return false;
        }
    });
   

}

ajax script include code:

var servicerequest_ajax = Class.create();
servicerequest_ajax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
   
     
    validate_fromto_dates: function(){
        //--validate that end date>start date, dates not in past
        var startDateEntered=new GlideDate();
        var endDateEntered=new GlideDate();
        var dateNow=new GlideDate();
        var dateEntered=new GlideDate();
        sReturn='RESULT:OK';
        //alert('blah!');
        var sd_param=this.getParameter('sysparm_startdate');
        var ed_param=this.getParameter('sysparm_enddate');
        var de_param=this.getParameter('sysparm_date_entered');
       
        startDateEntered.setDisplayValue(sd_param);
        endDateEntered.setDisplayValue(ed_param);
        dateEntered.setDisplayValue(de_param);
        var dateNowF=new GlideDate();
        dateNowF.setDisplayValue(dateNow);
       
        if(dateEntered<dateNowF){
            sReturn='RESULT:date in past entered';
        }
       
        //sReturn='SD:' + startDateEntered + ';ED:' + endDateEntered + ';DE:' + dateEntered + ';DN:' + dateNowF + ';true/false=' + (dateEntered>=dateNowF).toString();//--for testing
       
       
        if (de_param==sd_param){
            //--start date onchange script
            sReturn=sReturn+ ':start date';
        }
        if (de_param==ed_param){
            //--end date onchange script
            sReturn=sReturn+ ':end date';
        }
        if (sd_param!='' && ed_param!=''){
            if(endDateEntered<startDateEntered){
                sReturn='RESULT:end date must not be before start date';
            }
        }
       
        return sReturn;
    },
   
    type: 'servicerequest_ajax'
});

Comments

Popular posts from this blog

ServiceNow check for null or nil or empty (or not)

Haven't tested these all recently within global/local scopes, so feel free to have a play! option 1 use an encoded query embedded in the GlideRecord , e.g.  var grProf = new GlideRecord ( 'x_cls_clear_skye_i_profile' ); grProf . addQuery ( 'status=1^ owner=NULL ' ); grProf . query (); even better use the glideRecord  addNotNullQuery or addNullQuery option 2 JSUtil.nil / notNil (this might be the most powerful. See this link ) example: if ( current . operation () == 'insert' && JSUtil . notNil ( current . parent ) && ! current . work_effort . nil ())  option 3 there might be times when you need to get inside the GlideRecord and perform the check there, for example if the code goes down 2 optional routes depending on null / not null can use gs.nil : var grAppr = new GlideRecord ( 'sysapproval_approver' ); var grUser = new GlideRecord ( 'sys_user' ); if ( grUser . get ( 'sys_id' , current . approver )){...

Code a pause/wait - gs.sleep or gs.wait alternative, pause script for specified seconds (timer)

Code a pause/wait - gs.sleep / gs.wait alternative, pause script for specified seconds (timer)  e.g. 10 seconds: do_sleep ( 10000 ); function do_sleep ( milliseconds ) { var start = new Date (). getTime (); for ( var i = 0 ; i < 1e7 ; i ++) { if (( new Date (). getTime () - start ) > milliseconds ){ gs . print ( 'waking up!' ); break ; } } }