The CreatorCon Call for Content is officially open! Get started here.

Please rectify the error coming in logs for the date field validation

rishabh31
Mega Sage
Hello Team,
 
Can anyone please help me to get this error resolved and make these scripts work?
 
Requirement- 'Date to Disable' (Date type variable) should not be the Past date, it can be either today's date or any future date.
 
To achieve this I wrote below the client callable script Include:

 

 

validateDatetoDisable.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    nowDateTime: function() {
        var disableDate = this.getParameter('sysparm_disable_dt');
        gs.log('Rishi Disable Dt ' + disableDate);
        var cDate = new GlideDate();
        gs.log('Rishi Current Dt ' + cDate);
        //return gs.dateDiff(gs.nowDateTime(), disableDate, true) / 86400;
        //return gs.dateDiff(cDate, disableDate, true) / 86400;
        return gs.dateDiff(cDate, disableDate, true);
    },
    type: 'validateDatetoDisable'
});​

 

 

Then I wrote onChange Client Script on change of Date to Disable and called the above script include as below:
 

 

 

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

    var disDate = new GlideAjax('validateDatetoDisable');
    disDate.addParam('sysparm_name', 'nowDateTime');
    disDate.addParam('sysparm_disable_dt', g_form.getValue('date_to_disable_account'));
    disDate.getXML(compareDisableDate);

    function compareDisableDate(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
        //if (answer <= 0) {To neither allow current date nor past date
        if (answer < 0) { //To allow current date but not past date
            g_form.addErrorMessage("Date to Disable should not be the Past Date");
            g_form.clearValue('date_to_disable_account');
        }
    }
}

 

 

But I am getting the below error (shown in the screenshot/attached) while checking through the logs,
rishabh31_0-1691129870051.jpeg

I know this can be achieved through UI Policy Script, but I want this fulfilled through Client Callable Script Include for learning purposes.

 

Thank You in advance!

2 ACCEPTED SOLUTIONS

OlaN
Giga Sage
Giga Sage

Oh, sorry, I completely missed the error from the log that you posted.

That error indicates something else, maybe a scope identifier will help?

Here's how I would do it, if going for the client-script/script include way.

 

Script include:

script-include-date-validation.png

 

Client script:

client-script-date-validation.png

View solution in original post

Okay, that will make it a bit more complicated.

Add these lines to the script to allow for the same day also.

 

And on another note, make it a habit to use gs.info() instead of gs.log(), since gs.log() does not work in scoped applications.

isBeforeToday: function() {
        var compareDate = this.getParameter('sysparm_date_compare');
        if (!compareDate)
            return 0;

        var gdt = new GlideDateTime();
        var compareGDT = new GlideDateTime(compareDate);
	
	var systemDay = gdt.getDate().toString();
	var compareDay = compareGDT.getDate().toString();

	if (systemDay == compareDay) {
		return 1;
	else {
	        if (compareGDT.before(gdt)) {
        	    return 0;
        	} else {
        	    return 1;
        	}
	}
    },

View solution in original post

10 REPLIES 10

Prince Arora
Tera Sage

@rishabh31 

 

Hi Rishabh, please make sure that

1) you have checked the "client callable" checkbox for the script include

2) Scope of script include and client script should be same

Sure @Prince Arora Sir, Let me check an update.

Thank you @Prince Arora Sir for the response, I checked both the mentioned points but all is good there.

 

 

@rishabh31 

 

Glad to see your problem has resolved but I have mentioned that scope might be the issue and that's the only issue there 🙂