Name
global.AssetUtilsAJAX
Description
No description available
Script
var AssetUtilsAJAX = Class.create();
AssetUtilsAJAX.prototype = Object.extendsObject(AbstractAjaxProcessor, {
isSerialNumberMandatory: function() {
if (gs.getProperty('glide.asset.create_ci_with_ire') === 'true') {
var modelCategory = this.getParameter('sysparm_model_category');
var tableName = this.getParameter('sysparm_table_name');
if (tableName != 'alm_consumable' && tableName != 'alm_license') {
var modelCategoryGr = new GlideRecord('cmdb_model_category');
if (modelCategoryGr.get(modelCategory)) {
var ciClass = modelCategoryGr.cmdb_ci_class;
if (!gs.nil(ciClass)) {
var res = SNC.CmdbMetadataScriptableApi.hasSerialNumberRuleWithNoRelationship(ciClass);
return res;
}
}
}
}
return false;
},
getQuantity: function() {
var model = this.getParameter('sysparm_model');
var stockroom = this.getParameter('sysparm_stockroom');
return (new AssetUtils()).getAvailableQuantity(model, stockroom);
},
needMore: function() {
var model = this.getParameter('sysparm_model');
return (new AssetUtils()).getStockRooms(model).toString();
},
findVendor: function() {
var model = this.getParameter('sysparm_model');
return (new AssetUtils()).getVendors(model).toString();
},
mergeLicenses: function() {
return (new AssetUtils()).mergeLicenses(this.getParameter('sysparm_licenseId'));
},
shouldMakeStatusSubstatusReadonly: function () {
var result = {
install_status: false,
substatus: false,
};
var assetGr = new GlideRecord('alm_asset');
assetGr.addQuery('sys_id', this.getParameter('sysparm_asset'));
assetGr.query();
if (assetGr.next()) {
// Check disposal order number
if (GlidePluginManager.isActive('com.sn_eam')
&& (sn_eam.EAMUtils.isEnterpriseClassAsset(assetGr) || sn_eam.EAMUtils.isEnterpriseModel(assetGr.model))) {
var out = new sn_eam.EAMDisposalUtils.shouldMarkFieldsReadOnly(assetGr, result);
out = new sn_eam.EAMRMAUtils.shouldMarkFieldsReadOnly(assetGr, out);
result.install_status = out.install_status;
result.substatus = out.substatus;
} else if (GlidePluginManager.isActive('com.sn_hamp')) {
var out = new sn_hamp.HampHWDisposalUtils().shouldMarkFieldsReadOnly(assetGr);
result.install_status = out.install_status;
result.substatus = out.substatus;
}
if (!result.install_status || !result.substatus) {
// Check if marked for disposal
if (assetGr.getValue('sys_class_name') === 'alm_consumable') {
var consumableGr = new GlideRecord('alm_consumable');
consumableGr.get(assetGr.getUniqueValue());
if (consumableGr.getValue('planned_for_disposal') === '1') {
result.install_status = true;
result.substatus = true;
}
}
}
if (!result.substatus) {
var status = assetGr.getValue('install_status');
if (status === '10' || status === '2' || status === '3' || status === '1') {
result.substatus = true;
}
}
// DEF0274026 - State field should be readonly for pre-allocated assets
if(!result.install_status){
var subStatus = assetGr.getValue('substatus');
if (subStatus === 'pre_allocated') {
result.install_status = true;
}
}
}
return JSON.stringify(result);
},
shouldUpdateDepreciationValues: function() {
var assetClass = this.getParameter('sysparm_class');
return AssetUtils.shouldUpdateDepreciationValues(assetClass);
},
isDomainDataSeparationEnabled: function() {
return GlideDomainSupport.isDataSeparationEnabled();
},
validateConsumables: function() {
var sysIds = this.getParameter('sysparm_ids');
var state = this.getParameter('sysparm_state');
var temp = new Array();
temp = sysIds.split(",");
for(var i = 0; i < temp.length; i++) {
var assetGr = new GlideRecord('alm_consumable');
assetGr.addQuery('sys_id', temp[i]);
assetGr.query();
if(state == '10') {
if(!assetGr.hasNext()) {
gs.addInfoMessage(gs.getMessage("Consumed is a valid state only for consumables, please select correct state"));
return false;
}
}
if(state == '1') {
if(assetGr.hasNext()) {
gs.addInfoMessage(gs.getMessage("In use is an invalid state for consumables, please select correct state"));
return false;
}
}
}
return true;
},
getCurrencyPropertyValue: function() {
var currencyProp = false;
new global.GlideQuery('sys_properties')
.where('name', 'glide.model.catalog_item_currency')
.selectOne('value')
.ifPresent(function (prop) {
currencyProp = prop.value;
});
return currencyProp;
},
getModelValues: function() {
var sysId = this.getParameter("sysparm_sysId");
var fields = this.getParameter("sysparm_fields");
var modelGr = new GlideRecordSecure('cmdb_model');
modelGr.get(sysId);
if (!modelGr.isValid()) {
this.setError("Invalid GlideRecord cmdb_model " + ":" + sysId);
return;
}
var result = {};
if (fields.includes('description')){
result.description = modelGr.getValue('description') || '';
}
if (fields.includes('cost')){
var field = modelGr.getElement("cost");
// If property is set, use Model currency if not use Reference currency
if (this.getCurrencyPropertyValue() === 'true') {
result.value = field.getCurrencyValue();
result.currency = field.getCurrencyCode();
}
else{
result.value = field.getReferenceValue();
result.currency = field.getReferenceCurrencyCode();
}
}
return JSON.stringify(result);
},
});
Sys ID
d069b817bf9130007a6d257b3f0739ce