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