Name

global.StandardChangeTemplateSNC

Description

No description available

Script

var StandardChangeTemplateSNC = Class.create();

StandardChangeTemplateSNC.CHANGE_RECORD_PRODUCER = "std_change_record_producer";
StandardChangeTemplateSNC.CHANGE_TEMPLATE = "std_change_template";

StandardChangeTemplateSNC.prototype = Object.extendsObject(ChangeProcess, {

  initialize: function(_gr, _gs) {
  	ChangeProcess.prototype.initialize.call(this, _gr, _gs);
  },

  applyToChange: function(changeRequestGr) {
  	if (!changeRequestGr)
  		return false;

  	changeRequestGr.std_change_producer_version = this.getGlideRecord().current_version + "";

  	if (this._log.atLevel(GSLog.DEBUG))
  		this._log.debug("[applyToChange] std_change_producer_version sysId: " + changeRequestGr.std_change_producer_version);

  	var isTableExtOfStdChgRecProd = GlideDBObjectManager.getTables(this.getGlideRecord().getTableName()).contains(StandardChangeTemplateSNC.CHANGE_RECORD_PRODUCER);

  	if (this._log.atLevel(GSLog.DEBUG))
  		this._log.debug("[applyToChange] isTableExtOfStdChgRecProd: " + isTableExtOfStdChgRecProd);

  	if (isTableExtOfStdChgRecProd)
  		return new GlideTemplate.getFromRecord(this.getGlideRecord().template.getRefRecord()).apply(changeRequestGr) === 0 ? true : false;

  	return false;
  },

  copyAttachments: function(changeRequestGr) {
  	// if two step enabled, Business Rule will copy the attachments
  	if (new global.StdChangeUtils().isChangeStandardAndTwoStepEnabled(changeRequestGr))
  		return true;

  	var sourceTable = StandardChangeTemplateSNC.CHANGE_RECORD_PRODUCER;
  	var sourceId = changeRequestGr.std_change_producer_version.std_change_producer + "";
  	var targetTable = changeRequestGr.getTableName();
  	var targetId = changeRequestGr.sys_id + "";

  	if (this._log.atLevel(GSLog.DEBUG))
  		this._log.debug("[copyAttachments] sourceTable: " + sourceTable + " sourceId: " + sourceId + " targetTable:" + targetTable + " targetId: " + targetId);

  	var attachmentsGr = new GlideSysAttachment().getAttachments(sourceTable, sourceId);
  	var attachmentCount = attachmentsGr.getRowCount();

  	if (this._log.atLevel(GSLog.DEBUG))
  		this._log.debug("[copyAttachments] attachmentCount: " + attachmentCount);

  	if (attachmentCount < 1)
  		return true;

  	var attachments = GlideSysAttachment.copy(sourceTable, sourceId, targetTable, targetId);

  	if (this._log.atLevel(GSLog.DEBUG))
  		this._log.debug("[copyAttachments] copied attachments size: " + attachments.size());

  	if (attachments.size() !== attachmentCount) {
  		if (this._log.atLevel(GSLog.ERROR))
  			this._log.error("[copyAttachments] failed to copy attachments to: " + changeRequestGr.getDisplayValue());

  		return false;
  	}

  	return true;
  },

  type: "StandardChangeTemplateSNC"
});

StandardChangeTemplateSNC.findById = function(sysId) {
  if (!sysId)
  	return null;

  var changeRecordProducerGr = new GlideRecordSecure(StandardChangeTemplateSNC.CHANGE_RECORD_PRODUCER);
  if (!changeRecordProducerGr.get(sysId))
  	return null;

  return new StandardChangeTemplate(changeRecordProducerGr);
};

StandardChangeTemplateSNC.findAll = function(orderBy, textSearch, encodedQuery) {
  orderBy = orderBy || ChangeProcess.NAME;

  var changeRecordProducerGr = new GlideRecordSecure(StandardChangeTemplateSNC.CHANGE_RECORD_PRODUCER);
  changeRecordProducerGr.addActiveQuery();
  changeRecordProducerGr.addQuery("retired", false);

  if (textSearch !== undefined && textSearch !== "undefined" && textSearch.trim() !== "")
  	changeRecordProducerGr.addQuery("name", "CONTAINS", textSearch).addOrCondition("short_description", "CONTAINS", textSearch);

  if (encodedQuery !== undefined && encodedQuery !== "undefined" && encodedQuery.trim() !== "")
  	changeRecordProducerGr.addEncodedQuery(encodedQuery);

  changeRecordProducerGr.orderBy(orderBy);
  changeRecordProducerGr.query();

  //Get a list of readable templates which might have user criteria in place if enabled
  if ((gs.getProperty("com.snc.change_request.standard_change.use_user_criteria", 'true') === 'true') && (gs.getProperty("glide.sc.use_user_criteria", 'true') === 'true')) {
  	var readableRecords = [];
  	while (changeRecordProducerGr.next()) {
  		var sysId = changeRecordProducerGr.getUniqueValue();
  		if (new sn_sc.CatItem(sysId).canView())
  			readableRecords.push(sysId);
  	}

  	changeRecordProducerGr = new GlideRecord(StandardChangeTemplateSNC.CHANGE_RECORD_PRODUCER);
  	changeRecordProducerGr.addQuery('sys_id', "IN", readableRecords.join());
  	changeRecordProducerGr.query();
  }

  return changeRecordProducerGr;
};

Sys ID

7b2c3918b713130096c3e4f6ee11a93d

Offical Documentation

Official Docs: