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

Offical Documentation

Official Docs: