The CreatorCon Call for Content is officially open! Get started here.

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