Select the Devices into list collector based on Requested For field.

Rajesh Bandila
Tera Contributor

Hi Everyone,

 

Requiremnt: I have created the catalog item. Once the "Requested For" is selected, the "Assigned Asset" of this "Requested For" will be auto-populated in the "Test" field.

 

I have written the Below client callable script include and On-change Catalog Client script. However, it is not working as expected. Could you please help me on this?

 

Script Include:

var GetAssetDetails = Class.create();
GetAssetDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getAssets: function() {
        var requestedFor = this.getParameter('sysparm_requestedFor');
        var assetList = [];
        var gr = new GlideRecord('alm_asset');
        gr.addQuery('assigned_to', requestedFor);
        gr.query();
        while (gr.next()) {
            assetList.push(gr.sys_id.toString());
        }
        return new JSON().encode(assetList);
    },
    type: 'GetAssetDetails'
});
 
Catalog Client Script:
function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
var ga = new GlideAjax('GetAssetDetails');
    ga.addParam('sysparm_name', 'getAssets');
    ga.addParam('sysparm_requestedFor', g_form.getValue('requested_for'));
    ga.getXMLAnswer(function(response) {
        if (response) {
            var assetSysIds = JSON.parse(response);
            if (assetSysIds.length > 0) {
           g_form.setValue('test', assetSysIds.join(','));
            } else {
           g_form.setValue('test', '');
            }
        } else {
            alert('No response from server');
        }
    });
}
 
Thanks,
Rajesh