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

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


  }


}