- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-16-2016 06:45 AM
Hi guys,
Im trying to write a Client Script so that if a Problem has any open Tasks, a pop up appears saying 'You cannot close a Problem with open Tasks', please close out the corresponding tasks first'.
Below is the onSubmit Client Script I wrote on the Problem table but I cant get it to work.
Has anybody achieved this?
function onSubmit() {
//Type appropriate comment here, and begin script below
var id = g_form.getValue('number');
var close = g_form.getValue('state');
//If state changes to Closed, check if there is a related article
if (close == '4') {
var pt = new GlideRecord("problem_task");
pt.addQuery('source', id);
pt.addQuery('state', '1');
pt.query();
if (pt.next()) {
alert("test");
}
}
return false;
}
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-16-2016 06:51 AM
Hi Gerard,
How about a BEFORE business rule. Much simpler and faster.
Condition:
State | changes To | Closed
Script:
// This code is untested
(function executeRule(current, previous /*null when async*/) {
var pt = new GlideAggregate('problem_task');
pt.addAggregate('COUNT');
pt.addQuery('problem', current.getValue('sys_id'));
pt.addQuery('active', true);
pt.query();
if (pt.next()) {
count = pt.getAggregate('COUNT');
if (count > 0) {
gs.addErrorMessage('You cannot close this problem. It has active tasks.');
current.setAbortAction(true);
}
}
})(current, previous);

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-16-2016 06:51 AM
Hi Gerard,
How about a BEFORE business rule. Much simpler and faster.
Condition:
State | changes To | Closed
Script:
// This code is untested
(function executeRule(current, previous /*null when async*/) {
var pt = new GlideAggregate('problem_task');
pt.addAggregate('COUNT');
pt.addQuery('problem', current.getValue('sys_id'));
pt.addQuery('active', true);
pt.query();
if (pt.next()) {
count = pt.getAggregate('COUNT');
if (count > 0) {
gs.addErrorMessage('You cannot close this problem. It has active tasks.');
current.setAbortAction(true);
}
}
})(current, previous);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-16-2016 07:11 AM

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-16-2016 07:18 AM
Gerard,
From your previous script, your closed state value is 4. So your business rule conditions should have been current.state.changesTo(4)
Thanks,
Abhinay
Please mark Helpful, Like, or Correct depending on the impact of the response

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-16-2016 07:22 AM
Gerard,
There is a typo on the second line. "pt.addAggreate('COUNT'); "
It should be pt.addAggregate('COUNT');
Thanks,
Abhinay
Please mark Helpful, Like, or Correct depending on the impact of the response