GlideDate() not working in Scoped Application

allison_holt
Giga Expert

We have a scoped application for our accounts payable team.   They need to know if an invoice is under 30 days overdue or over 30 days overdue.

I am trying take the invoice term field and the invoice date field and write an onChange client script on the Invoice date field to determine if the invoice is under 30 days overdue or over 30 days overdue.

I tried using GlideDate() and I keep getting this error:   onChange script error: ReferenceError: GlideDate is not defined function (){var o=i(m,arguments);return l.apply(n,o)}

Essentially, I'm trying to take the Invoice Date + Terms + 29, and if that is before todays date, then it is under 30 days overdue.

I then need to take the Invoice Date + terms + 30, and if that is after todays date, it is over 30 days overdue.

Any help is appreciated!! And I'm completely open to a different/better way of doing this.

Thanks!

1 ACCEPTED SOLUTION

Hi Herm,



Yes, I was able to get this done with a Business Rule.   Here is what I used:



When: After Insert/Update


Filter Conditions:   Invoice Date Changes or Invoice Terms changes



Script:



function onAfter(current, previous) {



  current.under_30_days_past_due = '';


  current.over_30_days_past_due = '';



  var invTerm = current.getValue('invoice_terms');


  switch(invTerm){


  case "Next Day":


  ndTerms();


  break;


  case "Immediate":


  immTerms();


  break;


  case "Other":


  oTerms();


  break;


  default:


  stTerms();


  break;


  }


}




function stTerms(){


  var gdtInv = current.invoice_date;


  gs.info("AP GDT: " + gdtInv);


  var gdtToday = GlideDate();


  gs.info("AP Today's Date " + gdtToday);


  var tv = current.getValue('invoice_terms');


  var terms = parseInt(tv);


  gs.info("AP Terms: " + terms);



  var under = terms + parseInt("30", 10);


  gs.info("AP Under: " + under);


  var over = terms + parseInt("31", 10);



  var underFirstDay = GlideDate();


  underFirstDay.setValue(gdtInv);


  underFirstDay.addDaysUTC(terms);


  gs.info("AP First Day " + underFirstDay);



  var underDate = GlideDate();


  underDate.setValue(gdtInv);


  underDate.addDaysUTC(under);


  gs.info("AP Under Date " + underDate);



  var overDate = GlideDate();


  overDate.setValue(gdtInv);


  overDate.addDaysUTC(over);


  gs.info("AP Over Day " + overDate);





  if (gdtToday >= underFirstDay && gdtToday <= underDate) {


  current.under_30_days_past_due = gdtInv;


  current.update();


  }


  if (overDate < gdtToday) {


  current.over_30_days_past_due = gdtInv;


  current.update();


  }


}




function immTerms() {


  var gdtInv = current.invoice_date;


  gs.info("AP GDT: " + gdtInv);


  var gdtToday = GlideDate();


  gs.info("AP Today's Date " + gdtToday);


  var terms = 0;


  gs.info("AP Terms: " + terms);



  var under = 30;


  gs.info("AP Under: " + under);


  var over = 31;


  gs.info("AP Over: " + over);



  var underFirstDay = GlideDate();


  underFirstDay.setValue(gdtInv);


  underFirstDay.addDaysUTC(terms);


  gs.info("AP First Day " + underFirstDay);



  var underDate = GlideDate();


  underDate.setValue(gdtInv);


  underDate.addDaysUTC(under);


  gs.info("AP Under Date " + underDate);



  var overDate = GlideDate();


  overDate.setValue(gdtInv);


  overDate.addDaysUTC(over);


  gs.info("AP Over Day " + overDate);



  if (gdtToday >= underFirstDay && gdtToday <= underDate) {


  current.under_30_days_past_due = gdtInv;


  current.update();


  }


  if (overDate < gdtToday) {


  current.over_30_days_past_due = gdtInv;


  current.update();


  }


}




function ndTerms(){


  var gdtInv = current.invoice_date;


  gs.info("AP GDT: " + gdtInv);


  var gdtToday = GlideDate();


  gs.info("AP Today's Date " + gdtToday);


  var terms = 1;


  gs.info("AP Terms: " + terms);



  var under = 31;


  gs.info("AP Under: " + under);


  var over = 32;


  gs.info("AP Over: " + over);



  var underFirstDay = GlideDate();


  underFirstDay.setValue(gdtInv);


  underFirstDay.addDaysUTC(terms);


  gs.info("AP First Day " + underFirstDay);



  var underDate = GlideDate();


  underDate.setValue(gdtInv);


  underDate.addDaysUTC(under);


  gs.info("AP Under Date " + underDate);



  var overDate = GlideDate();


  overDate.setValue(gdtInv);


  overDate.addDaysUTC(over);


  gs.info("AP Over Day " + overDate);



  if (gdtToday >= underFirstDay && gdtToday <= underDate) {


  current.under_30_days_past_due = gdtInv;


  current.update();


  }


  if (overDate < gdtToday) {


  current.over_30_days_past_due = gdtInv;


  current.update();


  }


}




function oTerms() {


  var gdtInv = current.invoice_date;


  gs.info("AP GDT: " + gdtInv);


  var gdtToday = GlideDate();


  gs.info("AP Today's Date " + gdtToday);



  var otv = current.getValue('other_terms');


  var otherTerms = parseInt(otv);


  var underOther = otherTerms + parseInt("30", 10);


  var overOther = otherTerms + parseInt("31", 10);



  var underOtherFirstDay = GlideDate();


  underOtherFirstDay.setValue(gdtInv);


  underOtherFirstDay.addDaysUTC(otherTerms);


  gs.info("AP Other Under Other Terms" + underOtherFirstDay);



  var underOtherDate = GlideDate();


  underOtherDate.setValue(gdtInv);


  underOtherDate.addDaysUTC(underOther);


  gs.info("AP under Other Date " + underOtherDate);



  var overOtherDate = GlideDate();


  overOtherDate.setValue(gdtInv);


  overOtherDate.addDaysUTC(overOther);


  gs.info("AP Over Day " + overOtherDate);




  if (gdtToday >= underOtherFirstDay && gdtToday <= underOtherDate) {




  current.under_30_days_past_due = gdtInv;


  current.update();


  }


  if (overOtherDate < gdtToday) {




  current.over_30_days_past_due = gdtInv;


  current.update();


  }


}


View solution in original post

5 REPLIES 5

Govind Kumar S1
Kilo Guru

Hi Allison,



Hope this thread help   you


Client Script Date/Time Functions



Thanks & Regards


Govind Kumar Sharma


sergiu_panaite
ServiceNow Employee
ServiceNow Employee

Hi Allison,



Global Glide APIs are not available in scoped application. There are scoped Glide APIs that provide a subset of Global Glide APIs. For GlideDate see here:



Scoped GlideDate API Reference - ServiceNow Wiki



Regards,


Sergiu


allison_holt
Giga Expert

Hey guys,



I was actually using the Scoped GlideDate API reference sheet and and the client script date/time functions when I got this error...



Thanks.



A


hermgreider
Kilo Contributor

It appears to be something with onChange. I get the same thing with GlideTime in a scoped app using the correct scoped app call. Did you find a fix?