New Relative Duration for SLA defination

Shraddha desai
Tera Contributor

Hello,

 

We have created new Relative Duration in SLA definition in that we want to calculate a duration for (Change Request Plan start date- Change Request Plan start date) +8 hr.

We write below code in Relative duration in field 'script' but it is not working-

 

// Perform relative duration calculation using the 'calculator' variable (which is a DurationCalculator object)
//gs.info("currentSYSID" +current.sys_id);
answer = 0;
gs.info("TESTSLA" + current.task);
var grChanger = current.task; // current task record
var grTask = new GlideRecord('change_request');
grTask.addQuery('sys_id', grChanger); //current task sys_id  
grTask.query();
gs.info("TESTSLA11");
if (grTask.next()) {
    gs.info("TESTSLA13");
    var grdiffStart = new GlideDateTime(grTask.start_date); //
    var grdiffEnd = new GlideDateTime(grTask.end_date);
    gs.info("TESTSLA16");
    var calDuration = new DurationCalculator();
    var tZone;
    if (current.timezone) //timezone field on task sla
        tZone = current.timezone;
    else
        tZone = gs.getSysTimeZone(); //get system time zone
    gs.info("TESTSLA23");
    calDuration.setSchedule(current.schedule, tZone);
    calDuration.setStartDateTime(grTask.start_date); //start timedate
    calDuration.calcScheduleDuration(grdiffStart, grdiffEnd); // from CHG planned start to end
    gs.info("TESTSLA27");
    var betDuration = calDuration.getSeconds() * 1000; // get Business duration only
    var grActual = new DurationCalculator();
    grActual.setSchedule(current.schedule, tZone);
    gs.info("TESTSLA31 betDuration" + betDuration);
    grActual.setStartDateTime(current.start_time); //start timedate
    gs.info("TESTSLA23 grActual" + grActual.getSeconds());
    var grActual1 = grActual;
    if (current.sla.duration_type == "a8d304901b9d3150106e85d9dc4bcbb3") { ///duration type field on SLA  
        var grDurationSLA = new GlideDuration();
    grDurationSLA.setDisplayValue(gs.getProperty('change.sla.duration'));
        var grD = new GlideDateTime(grDurationSLA.getValue());   
        var businessDur = grD.getNumericValue() + current.business_pause_duration.getGlideObject().getNumericValue() + betDuration;
        grActual.calcDuration(businessDur / 1000);
        gs.info("businessDur" + businessDur);
    }
    grActual1.calcDuration(grActual.getSeconds());
    gs.info("TESTSLA23 grActual1" + grActual.getTotalSeconds());
    var endDateVal = new GlideDateTime();
    endDateVal.addSeconds(grActual.getTotalSeconds());
    var endT = grActual1.getEndDateTime();
    gs.info('TESTSLA48' +endT);
    var grDuration = new GlideDuration();
    grDuration.setValue(grActual1.getTotalSeconds()*1000);
    gs.info("TESTSLA23 $$Due Date" + grDuration.getDisplayValue());
var days= grDuration.getDayPart()>1? grDuration.getDayPart() : 1;
    grDuration.add(25200*1000);
    var time1 = grDuration.getByFormat("HH:mm:ss");
    gs.info("TESTSLA52" +endDateVal);
    calculator.calcRelativeDueDate(calculator.startDateTime, days, endDateVal.split(' ')[1]);
    //   answer = grActual1.getTotalSeconds();

 

 

 

Please let us know correction in our code.

0 REPLIES 0