Client script to set assignment group automatically ... depending on type ?!

Zod
Giga Guru

Again I'm struggling with my poor developer knowhow and would appreciate some help.

I'd like to a client script on change of assigned_to that sets the assignment_group if the group is empty and the assigned_to to only belongs to ONE group with a specific group_type ...

client script.JPG

>>> this is what I get on change of assigned_to ...

onChange script error: ReferenceError: assignment_group is not defined function onChange_incident_assigned_to_4(control, oldValue, newValue, isLoading, isTemplate) { if (isLoading || newValue == '') { return; } if (assignment_group == '') { var gr = new GlideRecord("sys_user_grmember"); gr.addQuery('user',assigned_to); gr.addQuery('group.type','CONTAINS', "incident"); gr.query(); if (gr.getRowCount() == '1'); assignment_group = gr.group; } }

To clarify ... a group could belong to more than one type at a time ... and if the user belongs to more than one group with the specific type - nothing should happen.

1 ACCEPTED SOLUTION

Zod
Giga Guru

Final Version working now:



Script Include:


Get1GroupAjax:


Client callable true


var Get1GroupAjax = Class.create();



GetSingleGroupAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {


                              getAssignmentGroup: function() {


                                                            var assignedTo = this.getParameter('sysparm_a');


                                                            var typus = "97ff1cecdba462006b2ebc2ffe96xxx"; // incident type


                                                            var aGroup ="";


                                                            var gr = new GlideRecord('sys_user_grmember');


                                                            gr.addQuery('user',assignedTo);


                                                            gr.addQuery('group.type','CONTAINS', typus);


                                                            gr.query();


                                                            if (gr.getRowCount() == '1')   {


                                                                                            gr.next();


                                                                                            aGroup = gr.group;


                                                            }


                              return aGroup;


                              },


                              type: 'Get1GroupAjax'


});




****************************



Client Script: AutoSet1Group


Table Incident


On Change of assigned_to



function onChange(control, oldValue, newValue, isLoading, isTemplate) {


                              if (isLoading || newValue == '') {


                                                            return;


                              }


                              if(newValue != oldValue){


                                                            var ga = new GlideAjax('Get1GroupAjax');


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


                                                            ga.addParam('sysparm_a',g_form.getValue('assigned_to'));


                                                            ga.getXML(HelloWorldParse);


                              }


                              return;


}


function HelloWorldParse(response) {


                              var answer = response.responseXML.documentElement.getAttribute("answer");


                              g_form.setValue('assignment_group',answer);


                              g_form.showFieldMsg('assigned_to', +answer);


}



… still if you can manage to use Assignment Rules … u should … I was not able to get them work in this case …


View solution in original post

35 REPLIES 35

And also it should only "happen" in case of a change of that field (assigned_to) ... so ... does not fit so easily ...


Kannan Nadar
Tera Guru

Try changing your script include as below.



var Get1GroupAjax = Class.create();


Get1GroupAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {


getAssignmentGroup: function() {


var assignedTo = this.getParameter('sysparm_a');


var typus = "97ff1cecdba462006b2ebc2ffe96xxxx";   // sys_id of incident type


var aGroup ="";


var gr = new GlideRecord('sys_user_grmember');


gr.addQuery('user',assignedTo);


gr.addQuery('group.type','CONTAINS', typus);


gr.query();


if (gr.getRowCount() == '1')   {


gr.next(); //Move to first record


aGroup = gr.group; //Get the group not the sys_id


}


return aGroup;


},




      type: 'Get1GroupAjax'


});


not changing anything ;-(


No system log entries.


Sorry. Didn't see all changes!



This works!



Was the "gr.addQuery('user',assignedTo);"   ...instead of the assigned_to .... ;-/



Thanks a LOT!!!


Zod
Giga Guru

Final Version working now:



Script Include:


Get1GroupAjax:


Client callable true


var Get1GroupAjax = Class.create();



GetSingleGroupAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {


                              getAssignmentGroup: function() {


                                                            var assignedTo = this.getParameter('sysparm_a');


                                                            var typus = "97ff1cecdba462006b2ebc2ffe96xxx"; // incident type


                                                            var aGroup ="";


                                                            var gr = new GlideRecord('sys_user_grmember');


                                                            gr.addQuery('user',assignedTo);


                                                            gr.addQuery('group.type','CONTAINS', typus);


                                                            gr.query();


                                                            if (gr.getRowCount() == '1')   {


                                                                                            gr.next();


                                                                                            aGroup = gr.group;


                                                            }


                              return aGroup;


                              },


                              type: 'Get1GroupAjax'


});




****************************



Client Script: AutoSet1Group


Table Incident


On Change of assigned_to



function onChange(control, oldValue, newValue, isLoading, isTemplate) {


                              if (isLoading || newValue == '') {


                                                            return;


                              }


                              if(newValue != oldValue){


                                                            var ga = new GlideAjax('Get1GroupAjax');


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


                                                            ga.addParam('sysparm_a',g_form.getValue('assigned_to'));


                                                            ga.getXML(HelloWorldParse);


                              }


                              return;


}


function HelloWorldParse(response) {


                              var answer = response.responseXML.documentElement.getAttribute("answer");


                              g_form.setValue('assignment_group',answer);


                              g_form.showFieldMsg('assigned_to', +answer);


}



… still if you can manage to use Assignment Rules … u should … I was not able to get them work in this case …