Name
global.SplitStoryUtil
Description
No description available
Script
var SplitStoryUtil = Class.create();
SplitStoryUtil.prototype = {
initialize: function() {},
generateNextStoryNumber: function(tableName) {
var newNumber = new global.NumberManager(tableName);
return newNumber.getNextObjNumberPadded();
},
processSaveStory: function(tableName, taskTableName, sprintFieldName, taskParentTable, fieldsObj) {
var fieldsToCopy = {
'rm_story': ['release', 'product', 'theme', 'epic', 'acceptance_criteria', 'assigned_to', 'description', 'assignment_group', 'project', 'project_phase'],
'sn_safe_story': ['sn_safe_feature', 'sn_safe_epic', 'acceptance_criteria', 'assigned_to', 'description', 'enabler', 'assignment_group']
};
var originalStorySysId = fieldsObj.originalStorySysId;
var originalStoryPoints = fieldsObj.originalStoryPoints;
var splitStorySprintSysId = fieldsObj.splitStorySprintSysId;
var splitStoryPoints = fieldsObj.splitStoryPoints;
var splitStoryNumber = fieldsObj.splitStoryNumber;
var splitStoryShortDescription = fieldsObj.splitStoryShortDescription;
var checkbox = fieldsObj.checkbox;
var originalStory = new GlideRecord(tableName);
originalStory.get(originalStorySysId);
originalStory.setValue('story_points', originalStoryPoints);
originalStory.update();
var newStory = new GlideRecord(tableName);
newStory.initialize();
newStory.setValue('number', splitStoryNumber);
newStory.setValue('story_points', splitStoryPoints);
newStory.setValue('short_description', splitStoryShortDescription);
newStory.setValue(sprintFieldName, splitStorySprintSysId);
newStory.setValue('split_from', originalStorySysId);
var originalStoryValues = {};
var fields = fieldsToCopy[tableName];
for (var key in fields) {
var fieldName = fields[key];
if (originalStory.isValidField(fieldName))
newStory.setValue(fieldName, originalStory.getValue(fieldName));
}
var result = newStory.insert();
if (!gs.nil(result)) {
var taskGr = new GlideRecord(taskTableName);
var taskStateUtil = new global.PlannedTaskStateUtil(taskGr);
var closedStates = taskStateUtil.getCloseStates();
if (checkbox) {
taskGr.addQuery(taskParentTable, originalStorySysId);
taskGr.addQuery('state', 'NOT IN', closedStates);
taskGr.query();
taskGr.setValue(taskParentTable, newStory.sys_id);
taskGr.updateMultiple();
}
var newStorySysId = newStory.sys_id;
var attachment = new GlideSysAttachment();
attachment.copy(tableName, originalStorySysId, tableName, newStorySysId);
}
return {
"originalStory": originalStorySysId,
"split_story_number": splitStoryNumber,
"newStorySysId": newStorySysId,
"status": result
};
},
type: 'SplitStoryUtil'
};
Sys ID
20aecff4c3f3d010766b0bd91f40ddbb