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.

Trying to Calculate Days remaining

jasonjones
Giga Contributor

All,

I'm trying to create a client script or business rule that calculates the difference of a Warranty Expiration Date and the current date to determine a "Number of Days remaining" on the warranty.

find_real_file.png

I found this script in community to modify, but I'm still missing something.

function onChange(control, oldValue, newValue, isLoading) {
    var strt = g_form.getValue(warranty_expiration);  //set this as current warranty date
    var end = new Date(now.getFullYear(), now.getMonth(), no.getDate());  //This retrieves the current date
    var ajax = new GlideAjax('AjaxDurCalc');
    ajax.addParam('sysparm_name','durCalc');
    ajax.addParam('sysparm_strt',strt);
    ajax.addParam('sysparm_end',end);
    ajax.getXMLWait();
    var answer = ajax.getAnswer();
    g_form.setValue('u_days_of_remaining_warranty', answer);
}

Below is an error that is received.

find_real_file.png

Any help is appreciated.

Jason

41 REPLIES 41

Mike Patel
Tera Sage

warranty_expiration needs to be in quotes like "warranty_expiration"

var strt = g_form.getValue("warranty_expiration");  //set this as current warranty date

Dave Smith1
ServiceNow Employee
ServiceNow Employee

The error is as Mike mentioned: getValue() requires the field name to be specified as a string.

However, I would caution against trying to manipulate dates client-side, given that the display format is under user control so making assumptions the figures appear in specific locations is a flawed one.

Definitely BR is the way I would go - possibly triggered on a afterQuery so that the value can be calculated then displayed to the user when the form loads.

You may also want to look at a calculated field (or function field) to achieve the same outcome.

All,

I am still getting an error.  I also tried Duration and the following attribute string.

u_days_of_remaining_warranty = GlideDateTime.subtract(warranty_expiration.getDisplayValue(), gs.nowDate())

Which shows.

find_real_file.png

I also tried Calculated Value, but not having luck there either.  I'm sure it is syntax again.

 

Jason

jasonjones
Giga Contributor

I also found a BR that I modified.

Still not working. 

What am I missing