We've updated the ServiceNow Community Code of Conduct, adding guidelines around AI usage, professionalism, and content violations. Read more

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
Mega 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
Tera 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