Populate the multiple serial number in a single field based on selection of multiple Assets details

shubhamdubey
Mega Sage

I have two fields one field is Assets details which data type is list , refer to hardware table and another filed is serial number which data type is single text.

Suppose Some of the user has multiple assets , so we  want to populate the serial number respectively on selection of assets details in a single filed (like comma separated).

 

Solution :-  

 

1. OnChangeCatalog client script :-

  

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
g_form.clearValue('serial_number'); // backend name of custom field which is single line text
    var asset = newValue.split(',');
    var temp = ''   ;
    for (i = 0; i < asset.length; i++) {
 
        var ga = new GlideAjax('MyScriptInclude');
        ga.addParam('sysparm_name', 'getSerialNumber');
        ga.addParam('sysparm_ast', asset[i]);
      //  alert(asset[i]);
        ga.getXMLAnswer(function(answer) {
        //    alert(answer);
            if (answer != " ") {
                temp+= answer+',';
                g_form.setValue('serial_number', temp);
            }
        });
    }
}

 

 

2. Script Include :-

 

var MyScriptInclude = Class.create();
MyScriptInclude.prototype = Object.extendsObject(AbstractAjaxProcessor,{

 

  

getSerialNumber: function(){
var Ast = this.getParameter('sysparm_ast');
var gr = new GlideRecord('alm_hardware');
gr.addQuery('sys_id',Ast);
gr.query();
if(gr.next()){
var sNum = gr.serial_number;
return sNum;
}

 

 

},

 

 

 

 

 

 

 

 

3 REPLIES 3

chercm
Mega Sage

@shubhamdubey  do you perform lookup based on the user id to look up all the user asset ?

@chercm 

 

Can you please share the snapshot for better understanding .

 

@shubhamdubey  this is the script i am using but when the form loads nothing happens on the serial number. 

 

function onLoad() {

var openedForValue = g_form.getValue('opened_for'); // Replace 'opened_for' with the actual field name

 

    if (openedForValue) {

        var ga = new GlideAjax('MyScriptInclude');

        ga.addParam('sysparm_name', 'getSerialNumbers');

        ga.addParam('sysparm_opened_for', openedForValue); // Replace 'opened_for' with the actual field name

 

        ga.getXMLAnswer(function(answer) {

            if (answer) {

                g_form.setValue('serial_numbers', answer); // Replace 'serial_numbers' with the actual field name

            }

        });

    }

}

 

 

var MyScriptInclude = Class.create();

MyScriptInclude.prototype = Object.extendsObject(AbstractAjaxProcessor, {

 

    getSerialNumbers: function() {

        var openedForSysId = this.getParameter('sysparm_opened_for'); // Assuming 'opened_for' is a reference field to sys_user

 

        var gr = new GlideRecord('alm_asset');

        gr.addQuery('opened_for', openedForSysId); // Assuming 'opened_for' is a reference field to sys_user

 

        var serialNumbers = [];

 

        gr.query();

        while (gr.next()) {

            serialNumbers.push(gr.serial_number.toString());

        }

 

        return serialNumbers.join(', '); // Return a comma-separated list of serial numbers

    }

 

});