Name

sn_gf.GoalFrameworkAjaxProcessor

Description

No description available

Script

var GoalFrameworkAjaxProcessor = Class.create();
GoalFrameworkAjaxProcessor.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
  isAtleastOneTargetIsOfNonMilestoneType: function() {
      var response = {};
      var targetGr = new GlideRecordSecure(GoalFrameworkConstants.GOAL_TARGET_TABLE);
      if (targetGr.isValid()) {
          targetGr.addQuery('sys_id', 'IN', this.getParameter('sysparm_target_sys_ids'));
          targetGr.addQuery('type', '!=', 'milestone');
          targetGr.setLimit(1);
          targetGr.query();
          if (targetGr.hasNext())
              response['recordOfNonMilestoneType'] = true;
          else
              response['recordOfNonMilestoneType'] = false;
      }
      return JSON.stringify(response);
  },

  doesTargetContainProgress: function() {
      var response = {};
      var targetGr = new GlideRecordSecure(GoalFrameworkConstants.GOAL_TARGET_PROGRESS_TABLE);
      if (targetGr.isValid()) {
          targetGr.addQuery('target.sys_id', 'IN', this.getParameter('sysparm_target_sys_ids'));
          targetGr.setLimit(1);
          targetGr.query();
          if (targetGr.hasNext())
              response['hasProgressRecord'] = true;
          else
              response['hasProgressRecord'] = false;
      }
      return JSON.stringify(response);
  },

  resetPercentComplete: function() {
      var response = {};
      var targetGr = new GlideRecordSecure(GoalFrameworkConstants.GOAL_TARGET_TABLE);
      if (targetGr.isValid()) {
          targetGr.addQuery('sys_id', 'IN', this.getParameter('sysparm_target_sys_ids'));
          targetGr.addQuery('type', '!=', 'milestone');
          targetGr.query();
          while (targetGr.next()) {
              targetGr.setValue('percent_complete', '');
              if (targetGr.update()) {
                  response['percentCompleteUpdated'] = true;
                  return JSON.stringify(response);
              }
          }
      }
      response['percentCompleteUpdated'] = false;
      return JSON.stringify(response);
  },

  getGoalDates: function() {
      var response = {};
      var goalGr = new GlideRecordSecure(GoalFrameworkConstants.GOAL_CORE_TABLE);
      if (goalGr.get(this.getParameter('sysparm_parent_goal'))) {
          response['start_date'] = goalGr.getDisplayValue('start_date');
          response['end_date'] = goalGr.getDisplayValue('end_date');
      } else {
          var currentQuarter = new GlideRecordSecure("business_calendar_span");
          if (sn_gf.GoalConfigUtil.getCalendarType() === "fiscal_period")
              currentQuarter.addQuery("calendar", GoalFrameworkConstants.FISCAL_QUARTER_ID);
          else
              currentQuarter.addQuery("calendar", GoalFrameworkConstants.GREGORIAN_QUARTER_ID);

          currentQuarter.addEncodedQuery("start<=javascript:gs.endOfToday()^end>=javascript:gs.beginningOfToday()");
          currentQuarter.query();
          if (currentQuarter.next()) {
              response['start_date'] = GlideDateTime(currentQuarter.getValue("start")).getDate().getDisplayValue();
              response['end_date'] = GlideDateTime(currentQuarter.getValue("end")).getDate().getDisplayValue();
          }
      }
      return JSON.stringify(response);
  },

  getDefaultGoalDatesFromStrategy: function() {
      
      var response = {};
      var strategyGr = new GlideRecordSecure(GoalFrameworkConstants.STRATEGY_TABLE);
      if (strategyGr.get(this.getParameter('sysparm_strategy'))) {
          if (strategyGr.getValue('start_date'))
              response['start_date'] = strategyGr.getDisplayValue('start_date');
          if (strategyGr.getValue('end_date'))
              response['end_date'] = strategyGr.getDisplayValue('end_date');
      }
      return JSON.stringify(response);
  },

  getDefaultStrategyDatesFromStrategicPlan: function() {
      var response = {};
      var strategicPlanGr = new GlideRecordSecure(GoalFrameworkConstants.STRATEGIC_PLAN);
      if (strategicPlanGr.get(this.getParameter('sysparm_strategic_plan'))) {
          if (strategicPlanGr.getValue('start_date')) {
              response['start_date'] = strategicPlanGr.getDisplayValue('start_date');
          }
          if (strategicPlanGr.getValue('end_date')) {
              response['end_date'] = strategicPlanGr.getDisplayValue('end_date');
          }
      }
      return JSON.stringify(response);
  },

  canEditGoal: function() {
      var response = {
          'canEdit': false
      };
      var goalId = this.getParameter('sysparm_goal_id');
      var goalGr = new GlideRecordSecure(GoalFrameworkConstants.GOAL_TABLE);
      if (goalGr.get(goalId)) {
          response['canEdit'] = goalGr.canWrite();
      }
      return JSON.stringify(response);
  },
  
  getReviewDate: function() {
      var response = {};
  	var msg ;
  	var oldReviewDate = this.getParameter('sysparm_review_date');
  	var reviewDate = (new GFTarget()).getNextReviewDate(this.getParameter('sysparm_start_date'), this.getParameter('sysparm_review_freq'));
  	if (reviewDate){
          response['review_due_date'] = reviewDate.getDisplayValue();
  		if (oldReviewDate)
  			msg = gs.getMessage("Review due date is changed from {0} to {1}.", [oldReviewDate, reviewDate]);
  		else
  			msg = gs.getMessage("Review due date is set to {0}.", reviewDate);
  	
  		response['info_msg'] = msg;
  	}
  	return JSON.stringify(response);
  },

  type: 'GoalFrameworkAjaxProcessor'
});

Sys ID

1185b1c653113010c8d4ddeeff7b12d3

Offical Documentation

Official Docs: