Name

sn_entitlement.CalculatedFieldSubscriptionDetailStatus

Description

No description available

Script

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

  calculateStatus: function(current) {
      try {
          if (!current)
              return 'na';

          return this._isRecordV1(current) ?
              this._calculateAllocatedStatusV1(current) :
              this._calculateAllocatedStatusv2(current);
      } catch (err) {
          return 'na';
      }
  },

  _isRecordV1: function(current) {
      return current.license && !current.subscription;
  },

  _calculateAllocatedStatusV1: function(current) {
      return current.license.allocated_status ? current.license.allocated_status : 'na';
  },

  _calculateAllocatedStatusv2: function(current) {
      if (!current.subscription || !current.subscription.purchased_count || current.allocated_user_count === null || current.allocated_user_count === undefined)
          return 'na';

      const threshold = Number(gs.getProperty('sn_sub_man.u_subscription_threshold', 90));
      const purchased = Number(current.subscription.purchased_count);
      const allocated = Number(current.allocated_user_count);

      if (!Number.isInteger(purchased) || !Number.isInteger(allocated))
          return 'na';

      if(allocated >= threshold/100 * purchased && allocated < purchased)
          return 'near'; // Near Capacity

      if (purchased > allocated)
          return 'under'; // Compliant

      if (purchased == allocated)
          return 'even'; // Even

      return 'over'; // Over-allocated
  },

  type: 'CalculatedFieldSubscriptionDetailStatus'
};

Sys ID

26aa911eff312110468365d7d3b8fe98

Offical Documentation

Official Docs: