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 )){

Service Catalog: variable advanced reference qualifiers

Call a script include to apply a reference qualifier on a catalog item variable: - variable reference qualifier dependent on another variable selection, in this case a variable referencing sys_user (requested_for) On the catalog item form. variable name to apply ref qual filter : retail_equipment variable reference qualifier (on cmdb table ): javascript : new  refqual_functions (). lostStolen_getAssignedCIs (); client-callable script include ( refqual_functions)  function : lostStolen_getAssignedCIs : function (){         //--called from variable set client script, for lost/stolen request (service catalog)     gs . log ( current . variables . requested_for , 'retail_lostStolen_getAssignedCIs' );         return ( 'install_statusNOT IN8,7^owned_by=' + current . variables . requested_for );             //owned_by=1269b79937f1060041c5616043990e41^install_statusNOT IN8,7            },