Name

sn_risk_advanced.FrequencyUtilsBase

Description

We are not using this file.We kept this to avoid upgrade issues.

Script

var FrequencyUtilsBase = Class.create();
FrequencyUtilsBase.prototype = {
  initialize: function() {},

  // Not Used
  
  setNextRunDate: function(record) {
      return this._setNextRunDate(record);
  },

  _getNextDay: function(today) {
      today.addDaysUTC(1);
      return today;
  },

  _getNextDayWeekly: function(today, recordDayOfWeek) {
      var dayOfWeek = today.getDayOfWeekUTC();
      var offset;
      if (dayOfWeek < recordDayOfWeek)
          offset = recordDayOfWeek - dayOfWeek;
      else
          offset = 7 - dayOfWeek + recordDayOfWeek;
      today.addDaysUTC(offset);
      return today;
  },

  _getNextDayMonthly: function(today, recordDayOfMonth) {
      var dayOfMonth = today.getDayOfMonthUTC();
      var currentMonth = today.getMonthUTC();
      var month = currentMonth;
      var year = today.getYearUTC();
      if (dayOfMonth >= recordDayOfMonth) {
          month += 1;
      }
      var nextDate = new GlideDate();
      nextDate.setValue(year + '-' + month + '-' + recordDayOfMonth);
      return nextDate;
  },

  _getNextDayQuaterlyOrSemiAnnually: function(today, months, recordDay, recordMonth) {
      var currentMonth = today.getMonthUTC();
      var dayOfMonth = today.getDayOfMonthUTC();
      var currentMonthNumber = parseInt(currentMonth % months);
      var year = today.getYearUTC();
      var month = '';
      if (((recordMonth == months && currentMonthNumber == 0) || (recordMonth != months && currentMonthNumber == recordMonth)) && recordDay > dayOfMonth) {
          month = currentMonth;
      } else if (currentMonthNumber < recordMonth) {
          month = currentMonth + (recordMonth - currentMonthNumber);
      } else {
          var offset = months - currentMonthNumber;
          month = currentMonth + offset + recordMonth;
      }
      var nextDate = new GlideDate();
      nextDate.setValue(year + '-' + month + '-' + recordDay);
      return nextDate;
  },

  _getNextDayAnnually: function(today, recordDay, recordMonth) {
      var currentMonth = today.getMonthUTC();
      var dayOfMonth = today.getDayOfMonthUTC();
      var year = today.getYearUTC();
      var month = '';
      if (currentMonth == recordMonth && recordDay > dayOfMonth) {
          month = currentMonth;
      } else {
          month = recordMonth;
          if (recordMonth <= currentMonth)
              year += 1;
      }
      var nextDate = new GlideDate();
      nextDate.setValue(year + '-' + month + '-' + recordDay);
      return nextDate;

  },

  _setNextRunDate: function(record) {
      var nextDate = '';
      var today = new GlideDate();
      switch (record.frequency.toString()) {
          //Daily
          case '1':
              nextDate = this._getNextDay(today);
              break;
              //Weekly  
          case '2':
              nextDate = this._getNextDayWeekly(today, parseInt(record.day_of_week));
              break;
              //Monthly
          case '3':
              nextDate = this._getNextDayMonthly(today, parseInt(record.day_of_month));

              break;
              //Quarterly
          case '4':
          case '5':
              var months = '';
              if (record.frequency.toString() == '4')
                  months = 3;
              else
                  months = 6;
              nextDate = this._getNextDayQuaterlyOrSemiAnnually(today, months, parseInt(record.day_of_month), parseInt(record.month));
              break;

              //Annually  
          case '6':
              nextDate = this._getNextDayAnnually(today, parseInt(record.day_of_month), parseInt(record.month));

              break;
      }
      record.next_run_date = nextDate;
  },


  type: 'FrequencyUtilsBase'
};

Sys ID

650710610f261010580c95758b767ec9

Offical Documentation

Official Docs: