New Relative Duration for SLA defination
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-13-2023 06:18 AM
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.