Target date is not auto populated in problem record

sukanya kotni
Tera Contributor

We want to update the target date field in the problem record automatically. It will update after 21 days of the opened date. This field should be read only.

 

We tried through one onload script and script include. It is working. But when we implement the notification for the problem record, the target date field is not coming because of the onload script. Then

 

We have created one business rule for the target date auto populate.

When condition - before/insert

Advanced - 

 

(function executeRule(current, previous /*null when async*/) {
  var cdt = current.getValue('opened_at');
  var ga = new GlideAjax('UserTimeZone');
  ga.addParam('sysparm_name', 'setQuarterlyValidDate');
 ga.addParam('sysparm_start', cdt);
 var answer1 = ga.getXML().getAnswer();
 current.u_rca_target = answer1.getDisplayValue();
})(current, previous);
 
script include:
var UserTimeZone = Class.create();
UserTimeZone.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    setQuarterlyValidDate: function() {
        var eDate = this.getParameter('sysparm_start');
        var dta = gs.getSession().getUser().getDateFormat();
        var gr = new GlideDateTime();
        gr.setDisplayValue(eDate, dta);
        var gdtLocal = new GlideDateTime();
        //gdtLocal.getLocalTime();
        var offset = gdtLocal.getTZOffset();
        gr.setNumericValue(gr.getNumericValue() + offset);
        gr.addDays(21);
        gr.getDisplayValue();
        return this._convertToGlideDate(gr, dta);
    },
    _convertToGlideDate: function(gdt, fdta) {
        var gd = new GlideDate();
        gd.setValue(gdt.getValue());
        var ft = fdta.split(" ")[0];
        var d = gd.getByFormat(ft);
        d = d + ' 23:59:59', fdta;
        return d;

    },
   
        datefieldDiffCal: function() {
        //var currentDate = gs.now();
        var currentDate = new GlideDate();
        var timeZone = gs.getSession().getTimeZoneName();
        var start = new GlideScheduleDateTime(this.getParameter('date_1'));
        var end =  new GlideScheduleDateTime(currentDate);
        start.setTimeZone(timeZone);
        end.setTimeZone(timeZone);
        //gs.log('dates'+ start+end);  
        //gs.log('dates1'+ dt.split(" "));
        return gs.dateDiff(start,end, true);
       
    },

    type: 'DateTimeZone'
});
 
 
 
 
Please help me on this issue.
 
Thanks in advance
Sukanya. K