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

Nope. Do you want to send me a screenshot of what your seeing as a comparison? I unselected the checkbox for query.

 

Can you please send me the screenshots of all the sections of your BR. But i tried the exact same thing and works in my instance. One more question, the string field with name "u_days_of_remaining_warranty" is active correct??

Also confirm your BR runs on alm_hardware table

 


Please mark my response as correct and helpful if it helped solved your question.
-Thanks

Any luck??

 


Please mark my response as correct and helpful if it helped solved your question.
-Thanks

SanjivMeher
Kilo Patron
Kilo Patron

Try this

 

(function executeRule(current, previous /*null when async*/) {
var start = new GlideDateTime();
var end = new GlideDateTime();
end.setValue(current.warranty_expiration);
// Duration in days
var dur = gs.dateDiff(start, end,false);
gs.addErrorMessage('This is the Duration:'+dur.split(' ')[0]);
current.u_days_of_remaining_warranty =dur.split(' ')[0];


})(current, previous);


Please mark this response as correct or helpful if it assisted you with your question.

SaiRaviKiran Ak
Giga Guru

Hi,

 

you can try below logic:

 

Create "After Update" business rule.

When to run : 1) Warranty Expiration is Not Empty

                      2)Warranty expiration Changes

 

Script:

var warranty_expiration = current.warranty_expiration;

var today = new GlideDateTime();

today.getDate();

var diff = gs.dateDiff(warranty_expiration,today,false);

var convert =diff.split(' ');

var days = convert[0];

current.u_days_of_remaining_warranty = days;

current.update();

 

Thanks,

Ravi