Name

sn_itam_workspace.RequestAssetLifecycleExtPoint

Description

Implements extension point sn_itam_workspace.AssetLifecycleExtPoint for Requests

Script

var RequestAssetLifecycleExtPoint = Class.create();
RequestAssetLifecycleExtPoint.prototype = {
  initialize: function() {
  },
  hasAccess: function(table) {
  	return new GlideRecordSecure(table).canRead();
  },
  getAssetCI: function(table, assetId) {
  	var assetCI = new global.GlideQuery(table).where('sys_id', assetId).selectOne('ci').get();
  	return assetCI.ci;
  },
  getAssetCIandRITM: function(assetTable, assetId, ritmTable) {
  	var assetGQ = new global.GlideQuery(assetTable).where('sys_id', assetId).selectOne('ci', 'request_line').get();
  	var assetRITM = null;
  	if (assetGQ.request_line) {
  		var assetRITMGQ = new global.GlideQuery(ritmTable)
  			.where('sys_id', assetGQ.request_line)
  			.selectOne('number')
  			.get();
  		assetRITM = assetRITMGQ.number;
  	}
  	var assetDetails = { ci: assetGQ.ci, assetRITM: assetRITM };
  	return assetDetails;
  },
  getJSON: function(assetTable, assetId) {
  	var tableName = 'sc_req_item';
  	var attrName = 'configuration_item';
  	var assetDetails = this.getAssetCIandRITM(assetTable, assetId, tableName);
  	var ci = assetDetails.ci;
  	var assetRITM = assetDetails.assetRITM;
  	if (ci === null) {
  		return null;
  	}
  	// Find all RITMs where either CI is currCI and the RITM which itself is stamped on the asset
  	var requestCountGQ = new global.GlideQuery(tableName).where(attrName, ci);
  	if (assetRITM) {
  		requestCountGQ = requestCountGQ.orWhere('number', assetRITM);
  	}
  	var requestCount = requestCountGQ.count();
  	var disableButton = !this.hasAccess(tableName) || requestCount === 0;
  	var query = 'configuration_item.sys_id=' + ci;
  	if (assetRITM) {
  		query += '^ORnumber=' + assetRITM;
  	}
  	return {
  		table: tableName,
  		title: gs.getMessage('Request'),
  		count: requestCount,
  		query: query,
  		order: 100,
  		disable: disableButton,
  	};
  },

  type: 'RequestAssetLifecycleExtPoint',
};

Sys ID

d902d777c322301012f6eb1e9840ddae

Offical Documentation

Official Docs: