- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-07-2016 06:49 AM
How to find all the task(sc_task) under ritm table whose state is say pending .I want this to be reflected in the parent(ritm )[the state of ritm also changes to pending] only if ALL are pending ,else ritm stays in the same state like previously it was.
piece of my code:
var tsk=new GlideRecord("sc_task"); |
tsk.addQuery('request_item',current.request_item);
tsk.query();
while(tsk.next()){ | ||
if(tsk.state=="6") | { | |
var itm= new GlideRecord("sc_req_item");
itm.addQuery('sys_id',current.request_item);
itm.addQuery('active',true);
itm.query();
if(itm.next()){
itm.state= '6';//also has the same value to avoid confusion.
itm.update();
gs.addInfoMessage(itm.number+itm.state.getDisplayValue());
} | |
} |
}
Solved! Go to Solution.
- Labels:
-
Scripting and Coding

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-07-2016 06:58 AM
here you go. This should be an after business rule on sc_task table.
var tsk=new GlideRecord("sc_task");
tsk.addQuery('request_item',current.getValue('request_item'));
tsk.addQuery('state','IN','6');
tsk.query();
if(tsk.hasNext()){
var itm= new GlideRecord("sc_req_item");
itm.get(current.getValue('request_item'));
itm.state= '6';//also has the same value to avoid confusion.
itm.update();
gs.addInfoMessage(itm.number+itm.state.getDisplayValue());
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-07-2016 06:56 AM
You can do this with a business rule on sc_task so when the state changes on any child record, it can check if it is time to update the parent record.
Standard disclaimer: The following code is untested, requires review and potential modifications.
(function () {
var count = -1;
var rec = new GlideAggregate('sc_task');
rec.addAggregate('COUNT');
rec.addQuery('state', '!=', 5); // Update this to be the value of YOUR pending state
rec.addQuery('request_item', parent.sys_id);
rec.query();
if (rec.next()) {
count = rec.getAggregate('COUNT');
if (count == 0) {
var parent = new GlideRecord('sc_req_item');
if (parent.get(parent.sys_id)) {
parent.state = -5; // Update this to be the value of YOUR pending state
parent.update();
}
}
}
})();

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-07-2016 06:58 AM
here you go. This should be an after business rule on sc_task table.
var tsk=new GlideRecord("sc_task");
tsk.addQuery('request_item',current.getValue('request_item'));
tsk.addQuery('state','IN','6');
tsk.query();
if(tsk.hasNext()){
var itm= new GlideRecord("sc_req_item");
itm.get(current.getValue('request_item'));
itm.state= '6';//also has the same value to avoid confusion.
itm.update();
gs.addInfoMessage(itm.number+itm.state.getDisplayValue());
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-07-2016 07:09 AM
current.getValue('request_item') doesnt helps

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-07-2016 07:13 AM
It sure does. What is the reason you feel it is not working? Can you post the code you are using?