Name

sn_install_base.AssetIBIntegrationUtilsSNC

Description

Utility for asset and install base integration related functions. This class is extended by AssetIBIntegrationUtils. We are supposed to create object for AssetIBIntegrationUtils to support customer extensions.

Script

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

  /*
   * @return - List of table names that can be selected as IB class while creating model category
   */
  process: function() {
      return new sn_install_base.InstallBaseUtil().getIBClassesForModelCategory();
  },

  getFieldMap: function(sourceBaseTable, destinationBaseTable) {
      if (sourceBaseTable == AssetIBIntegrationConstants.INSTALL_BASE_TABLE && destinationBaseTable == AssetIBIntegrationConstants.ASSET_TABLE)
          return AssetIBIntegrationConstants.IB_TO_ASSET_FIELDMAP;
      if (sourceBaseTable == AssetIBIntegrationConstants.ASSET_TABLE && destinationBaseTable == AssetIBIntegrationConstants.INSTALL_BASE_TABLE)
          return AssetIBIntegrationConstants.ASSET_TO_IB_FIELDMAP;
  },

  canPerformSync: function(glideRecord, baseTable) {
      var ibGr, assetGr, modelCategoryGr;
      if (baseTable == AssetIBIntegrationConstants.INSTALL_BASE_TABLE) {
          ibGr = glideRecord;
          if (glideRecord.asset) {
              assetGr = glideRecord.asset.getRefRecord();
          }
      } else if (baseTable == AssetIBIntegrationConstants.ASSET_TABLE) {
          assetGr = glideRecord;
          if (glideRecord.install_base) {
              ibGr = glideRecord.install_base.getRefRecord();
              //sync to IB only if IB has same asset reference
              if (ibGr.getValue(AssetIBIntegrationConstants.ASSET_FIELD_ON_IB) != assetGr.getUniqueValue())
                  return false;
          }
      }
      if (ibGr && assetGr) {
          if (assetGr.model_category) {
              modelCategoryGr = assetGr.model_category.getRefRecord();
          } else {
              return false;
          }
          if (modelCategoryGr.getValue(AssetIBIntegrationConstants.ASSETCLASS_FIELD_ON_MODELCATEGORY) == assetGr.getValue('sys_class_name') &&
              modelCategoryGr.getValue(AssetIBIntegrationConstants.IBCLASS_FIELD_ON_MODELCATEGORY) == ibGr.getValue('sys_class_name'))
              return true;
      }
      return false;
  },

  /*
   * Method to perform sync from existing Install base records to associated asset records
   * @param ibClasses - list of table names that are extensions of Install base class
   */
  syncExistingInstallBaseRecordsToAsset: function(ibClasses) {
      var modelCategoriesGr = this._getModelCategoriesGrForIBClasses(ibClasses);
      if (gs.nil(modelCategoriesGr))
          return;
  	var syncedIBSysIds = [];
      while (modelCategoriesGr.next()) {
          var assetClass = modelCategoriesGr.getValue(AssetIBIntegrationConstants.ASSETCLASS_FIELD_ON_MODELCATEGORY);
          var ibClass = modelCategoriesGr.getValue(AssetIBIntegrationConstants.IBCLASS_FIELD_ON_MODELCATEGORY);
          var ibGr = new GlideRecord(ibClass);
          ibGr.addQuery('asset.sys_class_name', assetClass);
          ibGr.query();
          while (ibGr.next()) {
              new sn_install_base.AssetIBSynchronizer().syncRecord(ibGr, AssetIBIntegrationConstants.INSTALL_BASE_TABLE);
          }
      }
  },

  _getModelCategoriesGrForIBClasses: function(ibClasses) {
      if (!ibClasses || ibClasses.length < 1) {
          ibClasses = this.process();
      }
      if (ibClasses.length < 1)
          return null;
      var modelCategoryGr = new GlideRecord(AssetIBIntegrationConstants.MODEL_CATEGORY_TABLE);
      modelCategoryGr.addNotNullQuery(AssetIBIntegrationConstants.ASSETCLASS_FIELD_ON_MODELCATEGORY);
      modelCategoryGr.addNotNullQuery(AssetIBIntegrationConstants.IBCLASS_FIELD_ON_MODELCATEGORY);
      modelCategoryGr.addQuery(AssetIBIntegrationConstants.IBCLASS_FIELD_ON_MODELCATEGORY, 'IN', ibClasses);
      modelCategoryGr.query();
      return modelCategoryGr;

  },

  type: 'AssetIBIntegrationUtilsSNC'
};

Sys ID

bd9e7149878a6510d3230e19dabb352e

Offical Documentation

Official Docs: