Code not working

suresh kaliappa
Tera Expert

Hi All , 

 

My requirement is if affected ci was selected then in the related list the selected affected ci will display in that there was one field called swapped ci. This swapped ci is a reference field. my requirement is if members click on the swapped ci field. then the reference field should display only the cis which have same model id present in configuration item field. 

 

So i have written script include and called that script include in advanced reference qualifier. but it seems it was not working. so i am pasting the code below. so kindly someone help what the mistake in the code and assist me in this. Thank you for your help!

 

script include :

var TaskCISwappedCIQualifier = Class.create();
TaskCISwappedCIQualifier.prototype = {
    initialize: function() {
    },
    getQualifier: function(taskSysId)
    {
        var qualifier = '';

        var taskGr = new GlideRecord('task_ci');
        if(taskGr.get(taskSysId))
        {
            if(taskGR.Asset.sys_class_name =='hardware')
            {
                var taskNumber = taskGr.getValue('task');
                if(taskNumber && taskNumber.indexOf(INC) !==-1)
                {
                    var affectedCI =taskGr.getValue('ci_item');
                    if(affectedCI)
                    {
                        var affectedCIGr = new GlideRecord('cmdb_ci');
                        if(affectedCIGr.get(affectedCI))
                        {
                            var modelId =affectedCIGr.getValue('model_id');
                            if(modelId)
                            {
                                qualifier = 'model_id=' +modelId;
                            }
                        }
                    }
                }
            }
        }
        return qualifier;
    },

    type: 'TaskCISwappedCIQualifier'
};
 
Advanced reference qualifier condition : javascript: TaskCISwappedCIQualifier.getQualifier(current.sys_id)
3 REPLIES 3

Anurag Tripathi
Mega Patron
Mega Patron

Hi,

Use this

 

var TaskCISwappedCIQualifier = Class.create();
TaskCISwappedCIQualifier.prototype = {
    initialize: function() {
    },
    getQualifier: function(taskSysId)
    {
        var qualifier = '';

        var taskGr = new GlideRecord('task_ci');
        taskGr.addQuery('task', taskSysId);
taskGr.query();
if(taskGr.next())
        {
            if(taskGR.Asset.sys_class_name =='hardware')
            {
                var taskNumber = taskGr.task.number;
                if(taskNumber && taskNumber.indexOf(INC) !==-1)
                {
                    var affectedCI =taskGr.getValue('ci_item');
                    if(affectedCI)
                    {
                        var affectedCIGr = new GlideRecord('cmdb_ci');
                        if(affectedCIGr.get(affectedCI))
                        {
                            var modelId =affectedCIGr.getValue('model_id');
                            if(modelId)
                            {
                                qualifier = 'model_id=' +modelId;
                            }
                        }
                    }
                }
            }
        }
        return qualifier;
    },

    type: 'TaskCISwappedCIQualifier'
};
-Anurag

Nicholas_Gann
Mega Guru

I've not validated the Script Include but there could well be an issue with how you're calling it in the reference qualifier.

Did you try using

 javascript:new TaskCISwappedCIQualifier().getQualifier(current.sys_id);

Instead of what you're currently using?

Bhavya11
Kilo Patron

hi @suresh kaliappa ,

i found few issue in your script like 

  1. taskGR.Asset.sys_class_name you are using taskGr original 
  2. vartaskNumber = taskGr.getValue('task'); it will give sysid but  you need number INCxxx so that you need to update taskGr.getDisplayValue('task');
  3. instead of this  taskNumber && taskNumber.indexOf(INC) use taskNumber.indexOf('INC')

 

 

Please update the code as follows

 

var TaskCISwappedCIQualifier = Class.create();
TaskCISwappedCIQualifier.prototype = {
    initialize: function() {
    },
    getQualifier: function(taskSysId)
    {
        var qualifier = '';

        var taskGr = new GlideRecord('task_ci');
        if(taskGr.get(taskSysId))
        {
            if(taskGr.ci_item.sys_class_name =='hardware')
            {
                var taskNumber = taskGr.getDisplayValue('task');
                if(taskNumber && taskNumber.indexOf('INC') !==-1)
                {
                    var affectedCI =taskGr.getValue('ci_item');
                    if(affectedCI)
                    {
                        var affectedCIGr = new GlideRecord('cmdb_ci');
                        if(affectedCIGr.get(affectedCI))
                        {
                            var modelId =affectedCIGr.getValue('model_id');
                            if(modelId)
                            {
                                qualifier = 'model_id=' +modelId;
                            }
                        }
                    }
                }
            }
        }
        return qualifier;
    },

    type: 'TaskCISwappedCIQualifier'
};

 

 

 

javascript : new TaskCISwappedCIQualifier().getQualifier(current.sys_id);

 

Please mark helpful & correct answer if it's really worthy for you.

 

 

Thanks,

BK