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();