List collector variables to be made related lists on catalog task form

Community Alums
Not applicable

Hi,

I have a requirement. I had three list control variables "Incidents submitted by ITAM", "Requests submitted by ITAM", and "Change Requests submitted by ITAM" on the sc_task form of a catalog item. Once we select the values of these variables, and saved, the selected values will be on the "work notes". I am getting proper output until here. The requirement has changed now. The list collector variables, instead of being on the form, they want them as related lists. In the related lists, once I select the values for the corresponding list control variables and save, the selected values should be on the work notes, , I am not able to get the output.  I have updated the form to reflect the change, I am not able to get the required output. Kindly help.

 

5.PNG

 

The list control variables used to be like this.

 

1.PNG

 

Client Script

 

2.PNG

 

function onSubmit() {

    //Type appropriate comment here, and begin script below

    var inc = g_form.getUniqueValue("incident.parent");

    var rq_item = g_form.getUniqueValue("sc_request.parent");

	var chg = g_form.getUniqueValue("change_request.parent");

    /*Inc & Ritm both*/

    var ga = new GlideAjax("listCollectorWNClass");

    ga.addParam("sysparm_name", "listCollectorIncRitmFunction");

    ga.addParam("sysparm_ritmId", rq_item);

	ga.addParam("sysparm_changeID", chg);

    ga.addParam("sysparm_incId", inc);

    ga.getXMLWait();

    /*Set values*/

    /*Put some alerts- info messages to check what you are receiving from script include*/

  //  g_form.addInfoMessage('Response=' + JSON.parse(ga.getAnswer()));

    var answer = JSON.parse(ga.getAnswer());

    var setValues = "Incident(s) :" + answer.incident.toString() + '\n' + "Service Request(s) :" + answer.ritm.toString() + '\n' + "Change Request(s) :" + answer.change.toString();

    g_form.setValue("work_notes", setValues);

}

 

Script Include

 

6.PNG

 

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

    listCollectorIncRitmFunction: function() {

        var incArr = this.getParameter('sysparm_incId').toString().split(',');

        var ritmArr = this.getParameter('sysparm_ritmId').toString().split(',');

         var changeArr = this.getParameter('sysparm_changeID').toString().split(',');

        var newIncArray = [];

        var newritmArray = [];

        var newChangeArr = [];

        var object = {

            incident: '',

            ritm: '',

            change: ''

        };



        for (var i = 0; i < incArr.length; i++) {

            var inc1 = new GlideRecord('incident');

            if (inc1.get(incArr[i].toString())) {

                newIncArray.push(inc1.number);

            }

        }

        object.incident = newIncArray.toString();


        for (var i = 0; i < changeArr.length; i++) {

            var change1 = new GlideRecord('change_request');

            if (change1.get(changeArr[i].toString())) {

                newChangeArr.push(change1.number);

            }

        }

        object.change = newChangeArr.toString();

        gs.log('Suman', newChangeArr);


        for (var i = 0; i < ritmArr.length; i++) {

            var rq_itm = new GlideRecord('sc_req_item');

            if (rq_itm.get(ritmArr[i].toString())) {

                newritmArray.push(rq_itm.number);

            }

        }
        object.ritm = newritmArray.toString();
        return JSON.stringify(object);

    },

    type: 'listCollectorWNClass'
});

 

The related lists for the corresponding list collector looks like below. I have selected 10 incidents, Change Requests as 7, and Requests as 6. So, all these should be part of work notes.

 

3.PNG

 

Regards

Suman P.

0 REPLIES 0