catalog item, reference qualifier
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-09-2024 04:07 AM
actually there is one more table sys_user_grmember here one list collector field (related company) in this field can add two companies to one user, and here there is one group field reference to group table.
so the use who as two companies will be member of (Agent cross ic access) group. so if selecting a user related to companies then asset belongs to two companies should also be listed
var getCompayDetails = Class.create(); getCompayDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, { getDisposalCompany: function(requestedBy) { var assetSysIds = []; if (requestedBy) { var userGr = new GlideRecord('sys_user'); if (userGr.get(requestedBy)) { var userCompany = userGr.getUniqueValue('company'); if (userCompany) { var assetGr = new GlideRecord('alm_asset'); assetGr.addQuery('company', userCompany); assetGr.query(); while (assetGr.next()) { assetSysIds.push(assetGr.sys_id.toString()); } } } } return 'sys_idIN'+assetSysIds.toString(); }, type: 'getCompayDetails' });

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-09-2024 05:41 AM - edited 07-09-2024 06:07 AM
@Sharath807 I have a very sketchy idea if what you would like to achieve. However, I have still given it shot, please see if the following script addresses your requirement.
var getCompayDetails = Class.create();
getCompayDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getDisposalCompany: function(requestedBy) {
var assetSysIds = [];
if (requestedBy) {
var userGr = new GlideRecord('sys_user');
var companyArray = [];
if (userGr.get(requestedBy)) {
var glideGRMember = new GlideRecord('sys_user_grmember');
glideGRMember.addQuery('user',userGr.getValue('sys_id'));
glideGRMember.query();
while(glideGRMember.next()){
if(glideGRMember.u_related_companies.length>0){//check if there is a value in u_related_companies
var relatedCompanies = glideGRMember.u_related_companies.toString().split(',');
for(var i=0;i<relatedCompanies.length;i++){
if(companyArray.indexOf(relatedCompanies[i])==-1){
companyArray.push(relatedCompanies[i]+'');
}
}
}
}
var userCompany = userGr.getValue('company');
if(companyArray.indexOf(userCompany)==-1){
companyArray.push(userCompany);
}
if (companyArray.length>0) {
var assetGr = new GlideRecord('alm_asset');
assetGr.addEncodedQuery('company.sys_idIN'+companyArray.toString());
assetGr.query();
while (assetGr.next()) {
assetSysIds.push(assetGr.sys_id.toString());
}
}
}
}
return 'sys_idIN' + assetSysIds.toString();
},
type: 'getCompayDetails'
});
Hope this helps.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-09-2024 10:10 PM
I tried this script, actually its taking company value from sys_user and filtering the asset.
In below screenshot you can see, i added 3 companies in related companies field. Here to note that only the user in this group( cross ic group) as two or more companies.