Name

sn_install_base.AssetIBSynchronizer

Description

No description available

Script

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

  syncRecord: function(source, sourceBaseTable) {
  	var assetIBIntegrationUtils = new AssetIBIntegrationUtils();
  	if(!assetIBIntegrationUtils.canPerformSync(source, sourceBaseTable))
  		return;
  	var syncField = this._getSyncField(sourceBaseTable);
      var destinationSysId = source.getValue(syncField);
      if (!destinationSysId)
          return;
  var destinationBaseTable = this._getDestinationBase(sourceBaseTable);
      var destBaseGr = new GlideRecord(destinationBaseTable);
      destBaseGr.get(destinationSysId);
      var destination = new GlideRecord(destBaseGr.sys_class_name);
      destination.get(destinationSysId);
      var update = false;
  	var fieldMap = assetIBIntegrationUtils.getFieldMap(sourceBaseTable, destinationBaseTable);
  	for(var sourceField in fieldMap){
  		var destinationField = fieldMap[sourceField];
  		if(!source.isValid(sourceField) || !destination.isValid(destinationField))
  			continue;
  		var sourceValue = source.getValue(sourceField);
  		var destinationValue = destination.getValue(destinationField);
  		if(sourceValue != destinationValue){
  			if(gs.nil(sourceValue)){
  				destination.setValue(destinationField, '');
  			}
  			else{
  				destination.setValue(destinationField, sourceValue);
  			}
  			update = true;
  		}
  	}
      if (update) {
          this._setSkipSyncVariable(destination, destinationBaseTable);
  		try{
  			var result = destination.update();
  			if(result < 0){
  				gs.error('AssetIBSynchronizer: Unable to sync fields for install base record with sys_id ' + destination.getUniqueValue());
  			}
  		}
  		catch(e){
  			gs.error('AssetIBSynchronizer: Exception while performing sync for install base record with sys_id ' + destination.getUniqueValue() + ' ' + e);
  		}
      }
  },

  _getSyncField: function(baseTable){
  	if(baseTable == AssetIBIntegrationConstants.INSTALL_BASE_TABLE)
  		return AssetIBIntegrationConstants.ASSET_FIELD_ON_IB;
  	if(baseTable == AssetIBIntegrationConstants.ASSET_TABLE)
  		return AssetIBIntegrationConstants.IB_FIELD_ON_ASSET;
  },

  _setSkipSyncVariable: function(destination, destinationBaseTable){
  	if(destinationBaseTable == AssetIBIntegrationConstants.INSTALL_BASE_TABLE)
  		destination.skip_sync = true;
  	if(destinationBaseTable == AssetIBIntegrationConstants.ASSET_TABLE)
  		destination.skip_sync_to_ib = true;
  },

  _getDestinationBase: function(sourceBaseTable){
  	if(sourceBaseTable == AssetIBIntegrationConstants.INSTALL_BASE_TABLE)
  		return AssetIBIntegrationConstants.ASSET_TABLE;
  	if(sourceBaseTable == AssetIBIntegrationConstants.ASSET_TABLE)
  		return AssetIBIntegrationConstants.INSTALL_BASE_TABLE;
  },

  type: 'AssetIBSynchronizer'
};

Sys ID

911962ea874aa910d3230e19dabb358b

Offical Documentation

Official Docs: