Name
sn_csm_workspace.RelatedListItemCandidateFilter
Description
Implements extension point global.RelatedListItemCandidateFilter
Script
var RelatedListItemCandidateFilter = Class.create();
RelatedListItemCandidateFilter.prototype = {
initialize: function(tableName, parentFieldName, parentRecordSysId, referencedFieldName) {
this.tableName = tableName;
this.parentFieldName = parentFieldName;
this.parentRecordSysId = parentRecordSysId;
this.referencedFieldName = referencedFieldName;
},
getFilterQuery: function() {
var caseGr = new GlideRecord("sn_customerservice_case");
caseGr.get(this.parentRecordSysId);
var installBaseFilter = {};
installBaseFilter['account'] = caseGr.getValue('account');
installBaseFilter['consumer'] = caseGr.getValue('consumer');
installBaseFilter['service_organization'] = caseGr.getValue('service_organization');
installBaseFilter['selectedIBs'] = this.getSelectedIBIds(this.parentRecordSysId);
installBaseFilter['soldProductId'] = caseGr.getValue('sold_product');
installBaseFilter['soldProductIbs'] = this.getIBForSoldItem(this.parentRecordSysId, installBaseFilter['selectedIBs'],
installBaseFilter['soldProductId']);
return this.getQueryHelper(installBaseFilter);
},
getSelectedIBIds: function(caseId) {
var affectedIB = new GlideRecord('sn_install_base_m2m_affected_install_base');
affectedIB.addQuery('csm_case', caseId);
affectedIB.query();
var result = [];
while (affectedIB.next()) {
result.push(affectedIB.getValue('install_base_item'));
}
return result;
},
getIBForSoldItem: function(caseId, selectedIBIds, soldProductId) {
if (!soldProductId)
return;
var installedProductGr = new GlideRecord('sn_install_base_m2m_installed_product');
var caseGr = installedProductGr.addJoinQuery('sn_customerservice_case', 'sold_product', 'sold_product');
installedProductGr.addQuery('install_base_item', 'NOT IN', selectedIBIds.join(','));
caseGr.addCondition('sys_id', caseId + '');
caseGr.addCondition('sold_product', soldProductId);
installedProductGr.query();
var result = [];
while (installedProductGr.next()) {
result.push(installedProductGr.getValue('install_base_item'));
}
return result;
},
getQueryHelper: function(installBaseFilter) {
var query = '';
if (installBaseFilter['soldProductId'])
return "sys_id IN" + installBaseFilter['soldProductIbs'].join(",");
if (installBaseFilter['account'])
query = "account=" + installBaseFilter["account"];
if (installBaseFilter['consumer'])
query = "consumer=" + installBaseFilter["consumer"];
if (installBaseFilter['service_organization'])
query = "service_organization=" + installBaseFilter["service_organization"];
if (installBaseFilter['selectedIBs'].length) {
if (query)
query = query + "^sys_idNOT IN" + installBaseFilter['selectedIBs'].join();
else
query = "sys_idNOT IN" + installBaseFilter['selectedIBs'].join();
}
return query;
},
handles: function(extensioPointType) {
return extensioPointType == "AFFECTED_INSTALL_BASE_FILTER";
},
type: 'RelatedListItemCandidateFilter'
};
Sys ID
9f34d2de773b3300d7159b71a9106108