catalog item, reference qualifier

Sharath807
Tera Contributor

@Sandeep Rajput  

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'

});

Screenshot (14).png 

2 REPLIES 2

Sandeep Rajput
Tera Patron
Tera Patron

@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.

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. 

Screenshot (17).png

 

 

Screenshot (16) (1).png