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

jasonjones
Giga Contributor

Ugg. Mike, I so appreciate your help.  I changed it to onBefore and still not getting a value.

find_real_file.png

find_real_file.png

 

Found the issue. Your field is date only and our script expects date time so do below

var gdt1 = new GlideDateTime(current.warranty_expiration.getDisplayValue() + " 07:00:00");
var gdt2 = new GlideDateTime();
current.u_days_of_remaining_warranty = gs.dateDiff(gdt1, gdt2, false);

make sure you use GlideDateTime instead of GlideDate

jasonjones
Giga Contributor

Still not working.  What is the logic behind the +"07:00:00"?

Jason.

var gdt = new GlideDateTime(current.warranty_expiration.getDisplayValue() + "07:00:00");
var gdt2 = new GlideDateTime();
current.u_days_of_remaining_warranty = gs.dateDiff(gdt, gdt2, false);

Am I missing anything here?

 

find_real_file.png

logic behind was if your field is date only than we can add time to it.

but lets just do this and see we get correct value

var gdt = new GlideDateTime(current.warranty_expiration.getDisplayValue());
var gdt2 = new GlideDateTime();
current.u_days_of_remaining_warranty = gs.dateDiff(gdt, gdt2, false);

current.update();